논문 링크: https://arxiv.org/abs/2106.09685
ABSTRACT
- Low-Rank Adaptation, LoRA
- 사전 학습 모델의 파라미터는 freeze시키고, downstream tasks를 위한 tranable rank decomposition matrices를 학습시킨다.
- GPT-3 175B 모델에서 LoRA는 학습하는 파라미터의 수를 10,000배 줄였으며, 필요한 GPU 메모리도 3배 줄였다.
- RoBERTa, DeBERTa, GPT-2, GPT-3을 파인튜닝하는 것보다, LoRA가 같거나 그 이상의 성과를 냈다.
INTRODUCTION
- NLP에서의 응용은 하나의 거대한 사전학습 모델을 adapting하면서 여러 downstream에 적용한다.
- 이러한 adaptation은 보통 fine-tuning(사전 학습 모델의 모든 파라미터를 업데이트)으로 진행된다.
- 하지만 최근 너무나도 커진 모델들을 이런식으로 파인튜닝하기에는 어려움이 있다.
- 오직 몇 파라미터만 adapt하거나 새로운 작업을 위한 추가적인 모듈을 학습시키면서 이를 완화하려고함.
- 그러나 이전의 방법들은 inference latency가 생기거나 모델의 usable sequence length를 감소시켰다.
- 특히 이러한 기법들은 파인튜닝만큼의 성능이 나오지 않았다.
- efficiency와 model quality의 trade-off
- learned over-parametrized models은 사실 low intrinsic dimension에 있다고 발표한 이전의 논문에서 영감을 얻었다.
- 본 논문에서는 model adaptation 중에서의 weight의 변화 또한 low inrinsic rank를 가진다고 가정한다.
- 그림1과 같이, RoLA는 사전학습된 weight는 frozen 시키고, 그 변화를 rank decomposition matrices을 최적화하면서 학습한다.
- LoRA의 장점
- 사전훈련 모델은 그대로 두고, 그림 1의 A,B만 바꿔가면서 여러가지 task에 적용가능.
- 모든 파라미터를 학습하는 것이 아니라 더 효율적이며, 하드웨어의 장벽을 낮춘다.
- inference latency가 없다.
- LoRA는 이전 방법들과 orthogonal하기에 그것들과 합쳐서 활용할 수 있다.
- 본 논문에서는 Transformer architecture을 기준으로 설명이 진행된다.
PROBLEM STATEMENT
- 언어 모델의 간단한 표현
- P는 GPT같은 transformer기반의 일반적인 multi-task learner
- downstream tasks는 context-target pairs(x,y→sequence of tokens)의 데이터셋으로 학습됨. ⇒ 예를들면 요악 task에 있어서 x는 기사, y는 그의 요약본이라고 볼 수 있다.
- full fine-tuning에서는 모델은 아래 식을 objective로 작동한다.
- full ft의 단점으로는 모델 전체 파라미터의 차원과 모델의 변화량의 차원이 같다는 것 ⇒ 거대한 모델에 있어서는 큰 단점
- 본 논문에서는 더 효율적인 파라미터 사용을 위해, 기존 전체 파라미터의 변화량을 그보다 훨씬 적은 파라미터를 이용한 것으로 표현한다. ⇒ 이를 low-rank representation이라고 한다.
- 기존 크기보다 0.01%로 설정할 수 있다.
AREN’T EXISTING SOLUTIONS GOOD ENOUGH?
- full ft에 대한 문제를 해결하기 위한 방법들은 이전에도 있었다.
- adding adapter layer
- optimizing some forms of the input layer activations
- 그러나 두 방법 모두 한계를 가지고 있었다.
Adapter Layers Introduce Inference Latency
- adapter layer에서의 extra compute를 피할 수 없다.
- 큰 신경망은 하드웨어 병렬화에 의존하는데 adapter는 sequential하다.
Directly Optimizing the Prompt is Hard
- prefix tuning은 최적화하기 어렵고 그 결과가 non-monotonical하게 변한다.
- 근본적으로, adaptation을 위한 sequence 길이 때문에, downstream task가 사용가능한 sequence length가 제한된다.
OUR METHOD
- LoRA는 어느 dense layer에나 적용이 가능하지만, 본 논문에서는 Transformer 기반 언어모델로 실험하였다.
Low-Rank-Parameterized update matrices
- 신경망은 행렬곱을 수행하는 많은 dense layer를 포함한다.
- 구체적인 task에 adapting을 할때, 사전학습된 언어모델은 낮은 “instrisic dimension”을 가지며, 더 작은 subspace로 projection을 해도 효과적으로 학습했다.
- 이에 영감을 받아, 가중치의 업데이트 또한 낮은 “intrinsic rank”를 가진다고 가정했다.
- 본 논문은 가중치의 업데이트를 low-rank decomposition으로 표현한다.
- 학습 중 W_0은 frozen되고 A와 B만 학습된다.
- W_0와 BA는 같은 인풋을 받고, 그들의 output 벡터는 coordinate-wise로 더해진다.
- A는 랜덤 가우시안으로, B는 0로 초기화한다.
- alpha/r로 scale한다.
- A Generalization of Full Fine-tuning
- 파인튜닝의 일반적인 형태는 사전 훈련된 파라미터의 부분만 학습하는 것이다.
- LoRA는 이에 더나갔으며, accumulated gradient update를 필요로 하지 않는다.
- 학습해야하는 파라미터의 개수가 많아질수록, adapter 기반 방법은 MLP처럼 수렴하고, prefix 기반 방법은 long input sequence를 받지 못하는 반면, LoRA는 기존 모델로 수렴한다.
- No Additional Inference Latency
- inference할 때, 그냥 W=W_0+BA로 두고 원래처럼 inference하면된다.
- 그냥 더하는 것이기 때문에, W_0를 복원하려면 그냥 BA를 빼면되고, 다른 task에 있어서는 BA만 다시 학습시키면 된다.
Applying LoRA to Transformer
- 이론적으로 LoRA는 신경망의 어느 가중치 행렬이든지 적용할 수 있다.
- Transformer 구조에서는 self-attention module에서 4개의 weight matrices(쿼리,키,밸류,아웃풋)가 있으며, 그리고 MLP 모듈에서 2개가 있다.
- 단순함과 효율성을 위해 MLP 모듈은 그대로두고 attention weight에만 LORA를 적용했다.
- 장점
- 가장 큰 장점은 memory와 storage usage의 감소
- GPT-3 175B에서 필요한 VRAM의 크기를 1.2TB에서 350GB로 줄임
- LoRA를 교체하는 것만으로, 다른 downstream task에서도 적용가능하다.
- training speed도 full ft보다 25% 빨라졌다.
- 가장 큰 장점은 memory와 storage usage의 감소
EMPIRICAL EXPERIMENTS
- RoBERTa → BERT에서 파생된 것
- DeBERTa → RoBERTa보다 더 최신이며, 더 큰 모델
- BERT계열 모델 실험 결과을 보면 NLU에서 좋은 성능을 보인 다는 것을 볼 수 있고, GPT-2의 실험 결과를 보면 NLG에서도 좋은 성능이라는 것을 확인할 수 있다.
GPT-3 175B
- LoRA가 FT보다 좋거나 비슷한 성능을 낸다.
- Trainable Parameter가 많다고 무조건 좋은건 아니다.
RELAED WORKS
Transformer Language Models
- self-attention을 사용하는 seq2seq architecture
- 트랜스포머 디코더의 stack을 사용하여 autoregressive language modeling에 적용
- large Transformer 언어 모델인 BERT와 GPT-2 등장 이후로, 먼저 언어모델을 대규모 데이터셋으로 사전훈련 시키고, 이를 파인튜닝하여 구체적인 task에 적용하는 분위기
- 모델이 더 클수록 더 좋은 성능
Prompt Engineering and Fine-Tuning
- 프롬프트에 따라 결과의 질에 차이가 남
- 모델 성능을 더 올리기위해 프롬프트를 구성하는 prompt engineering 등장
- 파인튜닝은 구체적인 task를 위해서 사전학습된 모델을 재학습하는 것이다.
- 전체 파라미터를 재학습하기도하고, 일부 파라미터만 재학습하기도 한다.
- 하지만 기하급수적으로 커지는 LLM의 크기 때문에 이러한 파인튜닝 방법은 실질적으로 어려워지고 있다.
Parameter-Efficient Adaptation
- 많은 연구는 존재하는 layer 사이에 adapter layers를 삽입하는 방식으로 진행한다.
- 본 논문은 가중치 업데이트에 low-rank constraint를 도입하기 위해 bottleneck structure를 사용한다.
- 중요한 차이는 LoRA로 학습된 weight는 원래 weight에 그냥 더해질 수 있으므로 inference latency를 발생하지 않는다는 점이다.
- 또 다른 방법인 prompt engineering은 사용 가능한 sequence length를 가져다 쓴다는 단점이 있다.
Low-Rank Structures in Deep Learning
- 많은 기계학습 모델이 Low-rank structure을 가진다.
- 하지만 low-rank update에 대해서는 본 논문이 처음
UNDERSTANDING THE LOW-RANK UPDATES
WHICH WEIGHT MATRICES IN TRANSFORMER SHOULD WE APPLY LORA TO?
- 결과를 살펴보면 Wq, Wv 두 가중치 파라미터에 LoRA를 적용하는 것이 업데이트하는 가중치의 종류를 최대한 적게 가지면서 좋은 성능을 냈다. 이를 통해 알 수 있는 것은 rank를 4로 해도 충분히 ΔW의 정보를 담을 수 있다는 것이다.
WHAT IS THE OPTIMAL RANK r FOR LORA?
- 매우 작은 rank로도 준수한 성능을 내는 것을 확인할 수 있다. (ΔW 업데이트 시, 매우 작은 'intrinsic rank'를 이용할 수 있다.)
CONCLUSION AND FUTURE WORK
- Large Language Model을 finetuning하는 것은 많은 비용과 시간이 드는 작업이다.
- 본 논문에서 제시한 LoRA 방법론을 통해 얻을 수 있는 장점은 inference latency 줄일 뿐만아니라 input sequence 길이를 줄이지 않고도 finetuning이 가능하다는 것이 있다.
- 또한 다양한 downstream task에서 단순히 적은 수의 LoRA 파라미터만 바꾸면 되기에 효율적이다고 할 수 있다.
- Future works에는 다음과 같은 것이 있다.
- LoRA와 다른 adaptation 방법론과 결합할 수 있지 않을까
- LoRA의 원리가 명확하게 밝혀지지는 않았음
- LoRA의 weight matrices를 고를 때 휴리스틱한 방법에 의존
- ΔW의 rank 축소가 가능하다면 W도 rank를 축소해도 되지 않을까 하는 의문