ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • QLoRA: Efficient Finetuning of Quantized LLMs 논문 리뷰
    LLM papers 2024. 5. 4. 17:03
    728x90

    [2305.14314] QLoRA: Efficient Finetuning of Quantized LLMs (arxiv.org)

     

    QLoRA: Efficient Finetuning of Quantized LLMs

    We present QLoRA, an efficient finetuning approach that reduces memory usage enough to finetune a 65B parameter model on a single 48GB GPU while preserving full 16-bit finetuning task performance. QLoRA backpropagates gradients through a frozen, 4-bit quan

    arxiv.org

     

    Abstract

    QLoRA

    - 65B parameter 모델을 단일 48GB GPU에서 튜닝할 수 있을 정도로 메모리 사용량을 줄이면서 전체 16비트 튜닝 작업 성능을 유지하는 효율적인 튜닝 접근 방식

    - 4비트 양자화된 pre-trained LM을 통해서 Gradient를 역전파시켜 LoRA로 이끌어준다. 본 논문에서 제시한 QLoRA를 통해서 단일 GPU에서 24시간 튜닝만으로 ChatGPT 성능 수준에 근접할 수 있는 것을 확인했으며, 성능을 희생하지 않으면서 메모리를 절약할 수 있게 되었다.

    (a) 정규 분포 가중치에 대한 정보 이론적으로 최적인 새로운 데이터 유형인 4비트 NF4

    (b) 양자화 상수를 양자화하여 평균 메모리 발자국을 줄이는 Double Quatization

    (c) 페이징 옵티마이저

     

    Introduction

    LLMs 튜닝은 성능을 향상시키고 원하는 행동을 추가하거나 원하지 않는 행동을 제거하는 것에 매우 효과적인 방법으로 이미 많이 알려져 있다. 하지만, 이렇게 큰 모델을 튜닝하는 것에는 비용이 많이 따른다는 단점이 존재한다. 양자화 자체만으로 LLM의 메모리 사용량을 줄일 수는 있지만, 이러한 기술은 추론에만 유효하고 훈련 중에 붕괴될 수 있다. 이러한 배경에 착안하여 본 논문에서 소개하고 있는 QLoRA는 사전 훈련된 모델을 4비트로 양자화한 다음, 소량의 학습가능한 Low rank Adapter 가중치를 추가하여 튜닝한다. 이 가중치들이 양자화된 가중치를 통해서 Gradient를 역전파하여 조정하게 된다.

     

    본 논문의 QLoRA는 크게 3가지의 방법론을 도입하고 있다.

    (1) 4비트 NF4, 정규 분포 데이터에 대한 정보 이론적으로 최적인 양자화 데이터 유형

    (2) Double Quantization : 양자화 상수를 양자화하여 평균 메모리 발자국을 줄이는 방법

    (3) Paged Optimizers : Gradient 체크포인트 메모리 스파이크를 피하는 방법

    이러한 3가지의 Contribution을 통합하여 LoRA 접근 방식을 더욱 잘 조정하였고, 이를 통해 거의 모든 정확도 손실을 피하면서 모든 네트워크 계층에 어댑터를 추가하게 된다.

     

    본 논문에서는 QLoRA 튜닝을 통해서 훈련된 모델의 경향을 분석했을 때, 두 가지의 중요 사실을 발견했다.

    1. 데이터 품질이 데이터셋 크기보다 훨씬 중요하다는 것을 발견

    2. MMLU 벤치마크에서의 강력한 성능이 Vicuna 챗봇 벤치마크 성능을 의미하지 않는다 -> 데이터 적합성이 크기보다 중요

     

    Fine-tuning vs LoRA vs QLoRA

     

     

    Background

    1. Block-wise k-bit Quantization

    - Quantization : 입력을 더 많은 정보를 가진 표현에서 더 적은 정보를 가진 표현으로 이산화하는 과정. 더 많은 비트를 가진 데이터 유형을 더 적은 비트로 변환하는 것을 의미.

    - 32비트 부동 소수점 텐서를 범위 [-127, 127]의 Int8 텐서로 양자화하는 경우

    양자화
    역양자화

     

    - 문제점 : 이상치 발생 시 양자화된 값들이 일부 비트 조합인 양자화 빈에 잘 할당되지 않아서 일부 빈에는 숫자가 거의 또는 전혀 양자화되지 않을 수 있음.

    - 해결책 : 입력 텐서를 독립적으로 양자화되는 각각의 양자화 상수 c를 가진 블록으로 분할

     

    2. Low-Rank Adapters

    - 훈련 중 메모리 요구 사항을 줄이기 위해 어댑터라고 불리는 소량의 훈련 가능한 매개변수를 사용하는 방법

    - 확률적 그래디언트 하강 중에는 고정된 사전 훈련 모델 가중치를 통해 어댑터로 전달되는 그래디언트가 업데이트를 최적화시킴.

     

    3. Memory Requirement of Parameter-Efficient Finetuning

    - QLoRA의 4비트 기본 모델은 5048MB의 메모리를 소비하여 그래디언트 체크포인팅이 중요하지만 LoRA 매개변수의 양을 줄이면 소량의 메모리 이점만을 얻을 수 있음.

    - 전체 튜닝 메모리 발자국을 증가시키지 않고 더 많은 어댑터를 사용할 수 있다.

     

    QLoRA Finetuning

    1. 4비트 NormalFloat 양자화

    - NF 데이터 유형은 입력 텐서의 경험적 누적 분포 함수를 통해 추정되는 입략 텐서의 분위수를 기반으로 하는 Qunatile 양자화에 기초한다.

    - 분위수 추정 과정에 많은 비용이 들기 때문에 SRAM 분위수와 같은 빠른 분위수 근사 알고리즘을 사용한다. -> 이상치에 대해 큰 양자화 오류가 발생할 수 있음.

    - 사전 훈련된 신경망 가중치가 표준편차를 가진 제로 중심 정규 분포를 가지고 있으므로 표준 편차를 조정해서 분포가 데이터 유형 범위에 맞도록 모든 가중치를 단일 고정 분포로 정규화한다.

    - 제로-평균 정규 분포에 최적인 데이터 유형은 표준편차를 범위 [-1, 1]에서 계산한다.

    1) N(0, 1) 분포의 2k + 1 분위수를 추정해서 정규분포용 k 비트 분위수 양자화 데이터 유형 획득

    2) 데이터 유형 값들을 [-1, 1] 범위로 정규화

    3) 입력 가중치 텐서를 절대 최대 재조정을 통해 [-1, 1] 범위로 정규화하여 양자화

     

    3) 과정을 위해 qi 값은 아래와 같이 추정된다.

     

    이제 0의 이산적인 제로포인트 보장과 k비트 데이터 유형에 대해 2k 비트를 모두 사용하기 위해서 qi의 두 범위 2k-1,

    2k-1+1 을 위한 분위수 qi를 추정하고 두 세트의 qi를 통합한 다음 두 세트에서 발생하는 두 개의 0 중 하나를 제거한다. 이 과정에서 결과적인 데이터 유형을 k비트 NormalFloat 이라고 부른다.

     

    2. Double Quantization

    - 추가 메모리 절약을 위해 양자화 상수를 양자화하는 과정이다.

    - 64의 블록크기의 경우 매개변수당 32/64 = 0.5 비트에서 8/64 + 32/(64-256) = 0.127 비트로 메모리 발자국을 줄이고, 0.373 비트를 감소시킨다.

     

    3. Paged Optimizers

    - CPU와 GPU 간에 페이지 단위 전송을 자동으로 수행해서 GPU 메모리가 부족하더라도 오류 없이 GPU 처리를 가능하게 한다.

    - 옵티마이저 상태에 대한 페이징 메모리를 할당, GPU 메모리가 부족할 때 자동으로 CPU RAM으로 쫒겨나고 옵티마이저 업데이트 단계에서 필요할 때 GPU 메모리로 다시 페이징 된다.

     

    QLoRA vs Standard Finetuning

    Experiment setup

    - 인코더, 인코더-디코더, 디코더 세 가지 아키텍처를 비교하여 QLoRA와 16비트 어댑터 파인튜닝 및 풀 파인튜닝을 비교

    - GLUE에 대해 RoBERTa-large, Super-NaturalInstructions에 대해 T5, Flan v2에서 파인튜닝한 LLaMA와 Alpaca에서 5-shot MMLU 후의 평가를 포함.

    - 다양한 모델 크기에 대해 언어 모델링 및 제로샷 작업에서 post quantization 정확도와 난해도를 측정

     

    실험을 통해서 4비트 어댑터 파인튜닝이 16비트 풀 파인튜닝 및 16비트 LoRA 성능을 재현할 수 있음을 확인했다. LLaMA 7B 부터 65B까지 Alpaca와 FLAN v2에서 파인튜닝을 진행하고 MMLU 벤치마크를 통해 5-shot 정확도를 평가한다.

    NF4가 16비트 LoRA MMLU 성능을 완전히 회복한다는 것을 보여주며, FP$가 16비트 brain float LoRA보다 1% 포인트 정도만 뒤쳐지는 것을 확인했다. 이러한 실험을 통해 본 논문에서는 QLoRA가 NF4를 사용할 때 16비트 풀 파인튜닝 및 16비트 LoRA 파인튜닝 성능을 재현할 수 있음과 NF4가 FP4보다 양자화 정밀도 면에서 우수하다는 결론을 내릴 수 있다고 말하고 있다.

     

    Default LoRAhyperparameters donotmatch16 bit performance

     

     

    해당 이미지는 LLaMA 7B 모델을 Alpaca 데이터셋에서 파인튜닝한 결과이다. 이를 통해 큰 기본 모델에 대한 풀 파인튜닝 성능을 재현할 수 없다는 것을 알 수 있다.

     

    k-bit QLORA matches 16-bit full finetuning and 16-bit LoRA performance

    본 논문에서는 페이징 최적화로 48GB GPU에서 65B 모델에 대한 페이징 최적화기의 런타임을 분석하고 배치 크기가 16일 때 일반 최적화기와 동일한 훈련 속도를 제공하는 것을 발견했다. 이러한 결과를 통해 4비트 QLoRA가 16비트 풀파인튜닝 및 16비트 LoRA 성능과 일치하고, 표준 4비트 Float 보다 4비트 NormalFloat의 성능이 우수하다는 것을 입증하게 된다.

     

     

    RoBERTA와 T5 모델 크기에서 125M에서 3B 파라미터를 GLUE 및 Super-NaturalInstructions 데이터셋에서 16비트 풀 파인튜닝과 비교해보면, 16비트, 8비트, 4비트 어댑터 방법이 풀 파인튜닝된 16비트 성능을 재현하고 있다. 이를 통해 정밀하지 않은 양자화로 인한 손실된 성능이 양자화 후 어댑터 파인튜닝을 통해 완전히 회복 가능하다는 것을 알 수 있게 된다.

     

    두번째는 4비트 QLoRA 7B에서 65B 파라미터 규모에서 16비트 LoRA와 일치하는지를 테스트 한다. LLaMA 7B부터 65B까지를 Alpaca와 FLAN v2 두 가지 지시 사항을 따르는 데이터셋에서 파인튜닝하고 MMLU 벤치마크에서 5-shot 정확도로 평가한다. 

     

     

    NF4와 Double Quantization을 사용한 경우 16비트 LoRA MMLU 성능을 완전히 회복하는 것을 볼 수 있다. 또한, FP4를 사용한 QLoRA가 16비트 brain float LoRA 기준보다 1% 포인트 뒤쳐진다는 것도 확인할 수 있었다. 결국 이는 NF4를 사용한 QLoRA가 16비트 풀 파인튜닝 및 16비트 LoRA 파인튜닝 성능을 모두 재현한다는 것, NF4가 양자화 정밀도 측면에서 FP4보다 우수하다는 근거가 된다.

     

    실험들을 통해서 4비트 QLoRA의 NF4 데이터 유형이 16비트 풀 파인튜닝 및 16비트 LoRA 파인튜닝 성능과 일치한다는 것을 일관되게 보여주고 있으며, NF4가 DQ 성능을 저하시키지 않는다는 것도 보여주게 된다. 이를 통해 본 논문은 주어진 파인튜닝 및 추론 자원 예산을 가지고 기본 모델의 파라미터 수를 늘리면서 정밀도를 낮추는 것이 유익하며 효율적임을 강조한다.

     

    Pushing the Chatbot State-of-the-art with QLoRA

    MMLU 벤치마크에서 5-shot으로 실험, p=0.9, temperature=0.7

    Benchmark Data

    Automated Evaluation

    Human Evaluation

    Elo Rating

     

    Guanaco: QLORA trained on OASST1 is a State-of-the-art Chatbot

     

    가장 해당 주제를 잘 보여주는 표이다. Guanaco가 GPT-4 다음으로 우수한 성능을 기록하고 있는 것을 확인할 수 있다.

     

     

    Elo Rating에서도 Guanaco가 좋은 성능을 보이고 있다는 것을 알 수 있다. ChatGPT-3.5 turbo와 비교했을 때는 Human raters의 경우 꽤 많은 차이가 나는 것이 확인된다.

     

    Qualitative Analysis

    Factual Recall

    Gaunaco는 질문이 생소해질수록 신뢰성은 떨어지지만, 여전히 확신을 가지고 대답한다.

     

    이 예시에서 Gaunaco는 잘못된 대중화자와 잘못된 생년월일을 생성했으나, 언급된 사람 AI Jolson의 생년월일은 맞습니다.

     

    Suggestibility

    Guanaco는 특정 중류의 가정된 잘못된 정보에 동조하는 것을 거부한다.

    지구가 flat함을 확인시켜달라는 User의 요청에 아래와 같이 반응한다.

     

    Guanaco는 어떤 질문들이 답변할 수 없는지도 정확히 알고 있다.

     

    이 뿐만 아니라, "Where are you?", "How are you?" 와 같은 질문도 마찬가지로 답변한다.

     

    Refusal

    Guanaco는 때때로 follow instructions에 random한 이유로 refuse한다.

     

    Secret Keeping

    하지만 refusal은 원하는 경우에도 unreliable 하다. 시스템 설계자는 사용자에게 비밀을 유지하고 싶어도 시스템이 사용자에게 자유롭게 텍스트 응답을 제공하는 경우가 있다.

    비밀 단어를 "banana"라고 설정해두고 어떤 경우에도 단어를 공개하거나 반복해서 말하지 말라고 지시해둔 상태에서 아래와 같이 지시를 해보자.

     

    이는 정상적으로 작동한 모습이다. 그렇다면 이제 여기에 속임수를 가미해보자.

     

    아래와 같이 비밀 유지가 안 되는 것을 볼 수 있다.

     

    Math

    Guanaco는 수학에 매우 약하다. 하지만, 전체적인 work를 보고 나면 정확성을 보이는 경향이 있다.

     

    하지만, Guanaco는 step-by-step이 깨지면 간단한 문제에도 break 된다.

     

     

    Theory of Mind

    Gauanco는 매우 강한 Theory of Mind를 보여준다. 다음 질문에 대해 매우 자세하게 답변한 것을 보자.

     

    그렇지만, 추론은 unreliable 하다. 그리고 모델이 상황에 맞지 않는 것들을 전제로 하는 이유를 제시한다.

    또한, 결코 설명되지 않은 정보 전달을 전제로 하기도 한다.

     

    Considerations

    Evaluation 

    본 논문은 두개의 강력한 시스템을 비교할 때 추가적인 저하가 있음에도 불구하고 중간 정도의 일치만을 보고 한다. 이는 현재 챗봇 작업 성능에 대한 벤치마크와 인간 평가 프로토콜의 한계를 시사하고 있음을 밝히고 있다. 또한, 분석에서 자동 평가 시스템에 눈에 띄는 편향이 있음을 발견했다. GPT-4는 프롬프트에서 처음 나타나는 시스템에 더 높은 점수를 부여하는 강한 순서 효과를 관찰했다. GPT-4와 인간 주석자 간의 상대적으로 약한 샘플 수준 일치도 인간 주석자와 자동 시스템이 항상 일치하지 않는 선호를 의존할 수 있다고 말한다. 향후 연구를 자동 평가 시스템의 잠재적 편향의 존재와 가능한 완화 전략을 조사해야함을 밝힌다.

     

    Limitations and Discussion

    - 엄청난 자원 비용 때문에 QLoRA가 33B와 65B 규모에서 전체 16비트 미세 조정 성능에 부합함을 보이지 못했다.

    - 지시 미세 조정 모델 평가 : BigBench, RAFT, HELM과 같은 벤치마크에서 평가하지 않아, 이러한 벤치마크에서도 일반화되는지 확신할 수 없다.

    - 벤치마크 성능이 미세 조정 데이터가 벤치마크 데이터셋과 얼마나 유사한지에 따라 달라질 수 있다. 더 나은 벤치마크와 평가가 필요하며, 무엇을 평가하는지에 대해 주의 깊게 고려할 필요성이 있다.

    - 일반 챗봇 성능에 대해 자세한 평가를 제공하지만, Guanaco에 대한 제한된 AI 평가만 수행하는 한계가 있다. Guanaco-65B가 다른 모델에 비해 편향된 토큰 시퀀스를 생성할 가능성을 평가했다.

    이 시각자료를 보면, Guanaco-65B의 평균 점수가 다른 원시 사전 훈련 모델보다 훨씬 낮은 것을 볼 수 있다. 이를 통해 OASST1 데이터셋에서의 파인튜닝이 LLaMA 기본 모델의 편향을 줄이는 것으로 보인다. 하지만, 추가적인 편향 분석 작업이 필요하다.

    - 다른 비트 정밀도에 대해 평가하지 않았다. LoRA 뿐 아니라, PEFT와 같은 방식이 대형 모델로 확장되는지 불확실하다. 다른 어댑터가 더 나은 성능을 제공할 수도 있고, 양자화 후 파인튜닝을 통해 양자화 중에 손실된 정보의 대부분을 회복하는 것으로 보이기 때문에 더 공격적인 양자화도 가능하다.

     

    Broader Impact

    QLoRA 파인튜닝 방법은 단일 소비자 GPU에서 33B parameter 모델을, 단일 전문 GPU에서 65B parameter 모델을 파인튜닝할 수 있는 방식으로 전체 파인튜닝 기준 대비 성능 저하가 없다. 파인튜닝은 LLM을 ChatGPT와 같은 챗봇으로 변환하는 필수 도구이기 때문에 자원이 적은 연구자들에게 널리 퍼지고 일반화되는데 큰 도움이 된다. 또한, QLoRA를 통해 전화기 및 기타 저자원 환경에서 LLM의 미세 조정을 가능하게 하는 중요한 방식이 될 것이라고 본다. 아이폰 12 플러스를 사용해서 QLoRA가 밤새 충전하는 동안 300만 토큰을 파인튜닝할 수 있을 것으로 추정된다. 파인튜닝된 7B 모델이 ChatGPT 급의 품질에 도달하지는 못하지만, 충분히 품질이 좋기 때문에 이전에 개인 정보나 LLM 품질 문제로 인해 불가능했던 새로운 응용 프로그램을 가능하게 할 것으로 생각된다. QLoRA를 통해 사용자가 자신의 데이터와 모델을 소유하고 관리할 수 있게 하여 LLM을 배치하기 쉽게 만들어 LLM의 개인 정보 보호 사용을 가능하게 해 줄 수 있다.

     

     

    지금까지 QLoRA 논문에 대해서 리뷰를 진행해보았다. Quantization을 이용하여 LoRA 이후 더욱 많은 자원을 줄여줄 수 있는 획기적인 방식으로 이름이 나 있어서 이전 인턴동안 연구해본 주제였지만, 논문을 직접적으로 읽어보지는 않았었는데, 논문을 리뷰하면서 QLoRA에 대한 한계점과 중요성에 대해서 자세히 알 수 있어 좋은 시간이 되었다고 생각한다.

    728x90
Designed by Tistory.