끄적 46

Large Audio Language Models의 시간적 추론 능력 강화: 오디오 질문 응답 시스템(AQA)을 위한 논문 리뷰

논문 링크: [2409.06223v3] Enhancing Temporal Understanding in Audio Question Answering for Large Audio Language Models  0. AbstractAQA 작업에는 오디오 이벤트 분류, 오디오 캡션 및 추론이 포함된다. 최근 AQA는 LALM(Large Audio Language Model)의 등장으로 주목을 받고 있다. 현 문헌에서는 projection module을 통해 오디오 인코더를 텍스트 전용 대규모 언어 모델과 통합하여 LALM을 구성하는데 중점을 뒀다. LALM은 일반적인 오디오 이해에는 탁월한 반면, 시간적인 추론이 제한되어 상용 애플리케이션과 장치 배포에 방해가 될 수 있다. 본 논문은 오디오 시간 추론의 이런..

끄적 2025.01.24

QLoRA 논문 리뷰

1. Abstract본 논문은 16비트 finetuning task 수행을 보존하면서도 65B 파라미터 모델을 48 GP GPU를 사용해서 효율적으로 finetuning할 수 있는 접근 법인 QLoRA를 제안한다.QLoRA는 동결된 4비트 양자화된 사전 학습 언어 모델을 통해 LoRA로 역전파한다.이 모델은 단일 GPU로 24시간의 finetuning만으로 이런 성과에 도달하면서도 성능을 희생하지 않고, 메모리를 절약할 수 있다. 아래가 QLoRA에서 메모리 절약을 위해 도입된 혁신 기술들이다.정규 분포 가중치에 대해 정보 이론적으로 최적인 새로운 데이터 유형, 4-bit NormalFloat(NF4),양자화 상수를 다시 양자화하여 평균 메모리 사용량을 줄이는 Double Quantizationmemor..

끄적 2025.01.17

LLM의 Knowledge Update

1. Temporal MisalignmentLLM이 새로운 지식을 배우지 못해 발생하는 문제들 LLM은 최신 정보를 모른다.고정된 데이터에 대해서 학습된 모델이기 때문에 시간에 따른 새로운 지식을 학습하지 못한다. 과거 데이터로 학습한 모델이 현재 정보를 모른다는 것은 실제 정확도에 얼마나 영향을 끼칠까?Temporal alignment가 존재하며, 시간이 지날수록 틀어진다. 그렇다면 매번 새로운 데이터를 학습하면 안될까?Catastrophic forgetting 문제가 있다. Catastrophic forgetting란?단순하게 여러 태스크를 순차적으로 배울 경우, 앞선 태스크에서 학습한 정보를 잊어버리는 것이다.따라서 최신 지식을 학습하면서 과거 정보를 기억하는 것 또한 중요하다.(ex 역사적 사실이..

끄적 2025.01.09

JARVIS

Visaul ChatGPT의 경우 한가지 문제점이 있었다.사전에 정의 및 구현된 모델 외의 것을 호출하는데 문제가 있다는 것이다. JARVIS는 언어를 AI 모델들을 연결하는 매개체로 삼자! 는 아이디어다. 좀 더 자세히 말하자면, ML 커뮤니티 (예: Github, HuggingFace, 등)의 모델 설명을 가져와서 ChatGPT가 적절한 모델을 선택하여 복잡한 태스크를 수행하도록 하자! 라는 아이디어다.  JARVIS의 진행과정(1) Task Planning유저의 요구 의도를 이해하고, 문제를 풀이 가능한 task들로 나누는 과정이다. (2) Model Selectiontask 별로 필요한 모델을 HuggingFace에서 선택한다. (3) Task Execution각 모델 실행 후, 그 결과를 수합한..

끄적 2025.01.07

LLM 응용 : LLM Agent, Visual ChatGPT

LLM Agent주어진 요청을 처리하기 위해 계획을 수립한다.해당 상황에 적절한 도구를 사용하고, 과거 대화 기억이나 관련 기록을 참고하여 복잡한 과제를 차례대로 수행한다. System Prompt : 이 LLM 자체가 무엇인가에 대한 정의Commands : 우리가 쓸 수 있는 도구들을 정의Your Task : 이 LLM이 풀어야 하는 문제 정의Response strictly witth a JSON Object : LLM이 실제로 출력해야 하는 포맷 여기서 ' Commands'은 web_serch나 calculator 등이 될 수 있다. gpt가 web_serch를 통해 인터넷 검색을 하고 그에 대한 결과값을 받은 다음, calculator 를 호출하는 등, 어려운 Task 를 단계별로 수행할 수 있다...

끄적 2025.01.07

Self-Consistency

이는 앞서 말했던, Zero shot으로 여러 예시를 만들어서 Few shot을 주면 성능이 향상된다는 것과 유사하다. CoT의 문제점은 사고의 흐름 도중, 근거 도출 과정에서 실수가 발생한다면, 그 결과가 완전히 틀리는 경우가 발생한다.하지만 Greddy decoding을 통한 생성 과정에서 그 실수를 알아낼 수 없다. 그렇다면 어떻게 하면 이런 문제를 보완할 수 없을까를 고민할 것이다. 이에 대한 해결책이 Self-Consistency이다.  Self-Consistency사고의 흐름이 하나가 틀릴 수 있다면, 사고 흐름을 여유롭게 뽑은 다음에 다수결 투표를 하면 안될까? 하는 아이디어다.CoT의 경우, 사고 흐름을 한번만 생성하고, Self-Consistency는 사고의 흐름을 생성할 때 Temper..

끄적 2025.01.06

CoT와 Zero-Shot CoT

Chain of Thought사고하는 과정을 프롬프트에 넣어보자! 라는 아이디어에서 출발한다. 우리가 예시를 줄 때, 결과를 도출하는 과정 자체를 프롬프트에 넣는 것이다. ex일반 : 답은 10개다.CoT : 6개의 공과 2개의 공이 들어 있는 캔 2개가 있으므로, 답은 10개다.  이렇게 과정을 출력하기 위해서 스탭을 밟는다.사고의 흐름을 모사하다보니, 자신의 논리를 쌓다보니 생성된 논리에 의해서 좀 더 정답률이 오르게 되고, 복잡했던 문제도 풀 수 있다는 것을 확인할 수 있다.  주의점 (1) CoT는 자연어 형태일 때 가장 효과적이다.LLM 자체가 자연어 기반으로 사전 학습하다 보니 수식으로 푸는 것보다는 말로 설명하면서 푸는 것이 LLM에게 좀 더 친숙한 형태다.따라서 '식만 입력'하거나 '변수 ..

끄적 2025.01.06

데이터 병렬화

1. 정의데이터 병렬화는 3가지 단계로 나뉜다. (1) 초기화 모든 모델을 GPU에 복제해서 넣어주는 과정즉 우리가 처리해야하는 데이터를 각 GPU의 개수에 맞게 더 작은 단위로 나눠서 할당하는 과정 모델을 모든 GPU에 복제하고, 데이터셋을 각각에 나눠 할당 (2) Forward Pass각 GPU가 모델도 받았고 데이터도 받았으니, 그에 대한 각각의 연산을 병렬적으로 진행하는 과정각 GPU들은 할당받은 데이터에 대해 병렬적으로 연산을 수행 (3) Backward PassGradient를 구하고 모델을 업데이트하는 과정결과적으로 Forward 과정에서 얻은 결과들을 합치는 것이 필요하다.그리고, 모델을 업데이트 해야 한다.각 GPU에서 계산된 Gradient를 하나의 Gradient로 합치고, 모델 업데..

PEFT 1 : 개요

Fine - tuning은 모델이 갖고 있는 파라미터 전체를 학습하는 과정이다.하지만 우리는 일부만 학습을 해서 좋은 모델을 만들 것이다.  PEFT 방법론 (1) 프롬프트 튜닝 방식원래 모델 파라미터나 구조는 변경하지 않는다.대신, 우리가 입력하려는 텍스트 문장이 있을텐데 이곳에 특별한 토큰들(특정한 목적을 가진)을 앞에 붙여준다.이 토큰들이 Transformer 안에 있는 아키텍쳐에 들어가면, 이들이 자연스럽게 input Text들과 교류를 하게 된다. 이를 통해 토큰들이 영향을 끼쳐서 특정 출력을 내뱉도록 학습을 하는 것이다. 즉, 안의 모델은 학습을 하지 않고, 조금의 프롬프트들(단어라고 생각하면 된다.)을 학습해서 input이 우리가 원하는 방식으로 출력하도록 유도하는 방식이다. ex : Pro..

Quantization 2 : Quantization Mapping 기법들

Quantization Mapping 기법들에 대해 알아보자.  Absmax QuantizationScale factor에 해당하는 s와 Zero - point 에 해당하는 z만 구하면 모든 값들을 양자화 및 역양자화를 할 수 있다.(X : 원본 값, X_quant : 양자화 결과, X_dequant : 역양자화 결과) 데이터에서 절댓값의 최댓값이 우리가 표현하려는 값으로 계산한다.우리들의 목표는, 만약 int8이라면 -127 ~ 127의 범위가 되도록 하는 것이다.(단, 0은 그대로 0이어야 한다.)   양자화를 끝낸 뒤, 결과를 확인해보면, 부동 소수 없이 모두 정수로 저장되어 있는 것을 확인할 수 있다. 이제 이 데이터들을 역양자화를 통해 복원을 할 수 있고, 약간의 오차가 있는 것도 확인할 수 있..