본문 바로가기

Paper review

QLoRA: Efficient Finetuning of Quantized LLMs

* 논문상의 내용을 바탕으로 하고 있으며, 본인이 이해하고 해석한 흐름에 맞게 내용을 조정하였습니다.

 

Abstract

QLora는 65B 모델을 48GB single gpu에 올릴 수 있도록 하는, memory usage를 크게 줄일 수 있도록 도와주는 방법이다.그러면서도 16-bit 모델의 finetuning 성능을 유지한다.

 

Introduction

LLM을 사용하는 것은 task 성공적으로 해결하는 데에 많은 도움을 주는 것으로 드러나고 있는 상황이다.

하지만, 이름에서 드러나듯이 LLM을 사용하는 데에 있어서는 hardware, resource적인 비용이 크다.

즉, LLM을 finetuning 하여 task를 수행한다면 좋은 성과를 얻을 수 있지만 많은 사람들이 LLM을 사용하는 데에 있어서는 분명한 자원의 한계가 존재하며, 여러 가지 실험을 진행하는 것 또한 어려운 상황이다.

그래서 논문의 저자는 아래의 3가지 방법론을 소개하며 LLM을 constrained environment에서도 활용할 수 있도록 한다.

 

1) 4-bit NormalFloat(NF4)

2) Double Quantization

3) Paged Optimizer

 

위와 같은 방법론들을 통해서 저자는 LLM에 QLora를 적용시켜, regular finetuning에서는 memory overhead 때문에 불가능했던 LLM 연구가 활발히 진행될 수 있도록 한다.

 

Background

Quantization은 more information을 가지고 있는 representation을 less information을 가지는 representation으로 이산화시키는 과정이다. 보통은 more bits를 가진 data type에서 fewer bits를 가진 data type으로 converting 하는 것을 가리킨다.

(e.g. 32bit float -> 8bit float)

 

Block-wise k-bit quantization을 그림으로 묘사하자면 아래와 같다.

(32-bit -> 8-bit quantization으로 가정한다.)

Block size는 tunable하다.

Absmax는 block에 담긴 parameter 값 중 max 값을 찾는다는 의미이며, max 값을 찾을 때 절대값을 취한다는 의미이다.

그 absmax 값으로 파라미터 값들을 normalization 해준다. 그 식은 아래와 같다.

그렇게 normalization을 거친 파라미터 값들을 8-bit로 표현해준 후, 32-bit index value를 사용하여 저장 후 8-bit로 표현할 수 있도록 한다.

 

 

LoRA: Low-Rank Adaptation of large language models

* 논문상의 내용을 바탕으로 하고 있으며, 본인이 이해하고 해석한 흐름에 맞게 내용을 조정하였습니다. Abstract Transfer learning과 fine-tuning의 성능, 효율이 돋보이며 particular tasks를 해결하기 위해 p

onebyonebyone.tistory.com

 

QLoRA

NF4

논문의 저자는 QLora를 위해 NF4라는 새로운 data type을 만들어 모델의 parameter를 4-bit로 저장할 수 있게끔 하였다.

NF4는 quantile quantization을 진행한다. Quantile quantization을 사용하면, each quantization bin에 같은 개수의 수들이 담기게 되어 값들을 quantization 하여 표현하는 데에 있어 불균형이 발생하지 않게 된다고 주장한다. Quantile quantization을 사용하기 위해서는 파라미터 값의 quantile을 예측해야만 한다. 하지만, 이에 따른 여러 문제가 발생하게 되어 어떠한 알고리즘을 사용하기보다는 pretrained model들의 weights를 normal distribution으로 가정하고 진행한다고 밝힌다.

저자가 주장하는 Quantile quantization을 통해 NF4 data type을 만드는 과정은 아래와 같다.

(이와 같은 NF4 data type을 통해 quantization을 진행한다면 이론적으로 모든 bin에 균등하게 value들이 담긴다고 주장한다.)

1) data type value의 z-score를 계산한다.

2) 가운데 bin에 0을 추가하여 양쪽 set을 concatenation 한다.

3) absmax를 찾아 normalization을 진행한다.

 

+ Symmetric k-bit quantization은 정확히 0을 표현하는 것이 어려우므로, asymmetric k-bit quantization을 진행한다고 주장한다.

 

Double quantization

Double quantization을 통해 additional memory saving 효과를 누릴 수 있다고 주장한다.

Double quantization은 quantization된 값을 다시 source bit로 되돌릴 수 있도록 돕는 quantization constant를 quantization 하는 것이다.

Double quantization 과정을 그림으로 묘사하자면 아래와 같다. (16-bit -> 4-bit quantization 상황으로 가정한다.)

 

Paged Optimizer

Paged optimizer는 GPU의 OOM 발생 시, 자동적으로 optimizer state가 CPU RAM으로 이동할 수 있도록 하고, optimizer의 update step을 위해 GPU에서 optimizer state를 필요로 할 때에는 다시 자동적으로 optimizer state를 GPU로 옮기는 역할을 한다고 주장한다.

 

Results

Mean 5-shot MMLU accuracy

MMLU task에서 BF16, FP4, NF4 data type에 따른 모델 성능 비교를 확인할 수 있다.

Table에서 볼 수 있듯이, NF4이 BF16의 성능을 가장 비슷하게 재현해냄을 확인할 수 있다.

 

References


https://www.youtube.com/watch?v=y9PHWGOa8HA

https://arxiv.org/pdf/2110.02861.pdf

https://arxiv.org/pdf/2305.14314.pdf