Abstract
NLP 의 중요한 패러다임 중 하나가, 일반적인 domain의 data를 large-scale pretraining하고 이를 특정 task 혹은 domain에 적용하는 과정을 포함한다. 우리가 더 큰 모델을 pre-traing할수록 full fine-tuning(모든 파라미터를 fine tuning하는 것)하는 것은 실현하기가 어려워진다.
가령 GPT-3을 예시로 들 수 있다. fine-tuned model의 독립적인 예시들(각각이 175B의 파라미터를 가짐)을 배치하는 것은 엄두도 못 낼 정도로 비요이 많이 든다.
그래서 우리는 Low-Rank Adaption 즉 LoRA를 제안한다. 이는 pre-trained model의 weight를 고정하고, trainable rank를 가진 decomposition matrix들을 transformer 구조의 각 layer에 inject한다. 그러면 downstream task에 대하여 trainable parameter의 수를 많이 줄일 수있다.
- downstream task: 구체적으로 내가 풀고 싶은 문제들. (해당 field에서 pre-trained model 혹은 component를 유용하게 하는 supervised-learning task를 부르는 말임: Pretrained Language Model - 4. Downstream Task (tistory.com))
GPT-3(Adam으로 fine-tuned됨)과 비교하였을 때, loRA는 trainable parameter의 수를 1000배나 줄이고 GPU 용량을 3배나 줄일 수 있었다. LoRA는 RoBERTa, DeBERTa, GPT-2, GPT-3 등보다 model quality를 fine-tuning하는 것에 대해 더 나은 performance를 보임. traininable parameter은 더 적으면서도 training throughput은 더 높았다.
또한 adapter과 다르게 additional inference latency도 없었음(LoRA의 효력(?)을 더 빛내주는 특징).
1. Introduction
NLP에 있어서, 하나의 large-scale pre-trained language model을 여러 downstream application에 적용하는 기조가 이어졌다. 그러한 적용은 보통 pre-trained model의 모든 parameter을 업데이트하는 fine-tuning을 통해 이루어진다. fine-tuning의 주된 단점은 새로운 모델이 원래 모델에서만큼 많은 파라미터를 포함한다는 것이다.
많은 연구에서 몇 개의 parameter만을 이용하여 혹은 새로운 업무에 대한 외부의 모듈을 학습함으로써 위처럼 파라미터의 수가 많은 문제를 완화해보려고 노력했다. 이런 방법의 일환으로, 우리가 제안하는 방법은 적은 수의 task-specific parameter만을 각 task에 대한 pre-trained model에 추가하여 저장하고 로딩하면 된다. 효율성이 매우 상승. 기존의 다른 방법들은 inference latency를 유발시키는 문제를 해결하지 못했지만 (모델의 depth를 확장시키거나, 모델의 사용가능한 sequece length를 줄이거나..하는 문제가 남아있었다. 몇 가지 예시를 들어줌) 더 중요한 것은, 이런 방법은(inference latency를 해결하지 못한 방법들) fine-tuning baseline을 match하지 못했다. 즉 효율성과 모델의 quality 사이의 trade-off를 발생시킴.
연구진들은, ~~논문의 low intrinsic dimension을 이용하여 parameter도 줄이고 trade-off도 발생시키지 않는 방법을 착안함: low intrinsic rank의 weight를 train한다.

이 그림처럼, NN의 dense layer들의 rank decomposition matrix들을 최적화함으로써 간접적으로 NN의 desne layer들을 train. 이때 pre-trained weight는 고정. (figure1 참고) ; 파란 부분은 고정하고 빨간 부분을 학습한다는 의미인 듯.
GPT-3을 예시로 들어 살펴보면 LoRA가 storage와 compute에 있어 효율적임을 확인할 수 있다.
LoRA는 다음과 같은 장점을 가짐:
- 하나의 pre-train모델의 downstream task를 여러개의 작은 LoRA 모듈로 처리 가능. 기존의 pre-trained model을 고정하고 효율적으로 task들을 행력 A와 B로 대체하여 switch. 그러면 저장 공간 줄일 수.
- 작은 low-rank matrix들만을 optimize함으로써 학습을 효율적으로 하고 하드웨어 베리어를 3배까지 낮출 수 있다.
- 간단한 linear design을 사용함으로써 inference latency 없다. (fully fine-tuned model과 비교했을 때)
- 기존의 많은 모델이나 방법에 적용 가능
2. Problem Statement
language modeling 문제와 특히, task-specific prompt가 주어졌을 때 conditional probability의 maximization에 대한 간단한 description.

가 주어졌다고 해보자.(수식 입력하기 귀차나서,, 나중에 채워넣겠음) 이 모델은 가령 GPT-3같은 포괄적인 muli-task learner임. 이 pretrained model을 downstream conditional text generation task(summarization같은)에 적용한다고 해보자. 그러면 각 downsream task는 training dataset에 의해 나타내어질 것:

여기서 xi와 yi는 token sequence임.
full fine-tuning을 한다면, 이 모델은 pre-trained weight 로 초기화된 후 로 update됨. 근데 update된 weight에서 추가된 부분의 dimension은, 초기화된 weight의 dimension과 동일 -> parameter 수가 엄청 커짐. 그래서 저장 및 배포가 어렵다.그래서 update된 weight의 추가된 부분을, 또다른 parameter(theta)의 수식으로 보고 theta를 최적화하여 이 문제를 해결. theta의 크기는 update된 weigh의 추가된 부분의 크기보다 더 작기 때문에, parameter의 크기를 줄일 수 있게 되는 것.
이를 low-rank representation이라 함. 이 방법을 이용하면, 초기화된 parameter weight의 0.01%의 크기의 파라미터만을 학습시키면 되는 문제로 바뀐다.

3. Aren't exsiting solutions good enough?
이미 많은 시도가 존재했었다. 기존의 방법론들은 어떤 한계가 있었는지 설명해주는 챕터. 대표적인 한계는 large-scale, latency와 관련됨.
4. Our method
LoRA의 간단한 디자인과 그것의 실용적인 면에서의 benefit에 대한 설명. 여기서 나타내진 원리들은 deep learning model의 어떤 dense layer에서 드러나는 것. transformer model의 특정 weight에 집중했음에도.
4.1 Low-Rank-Parameterized update matrices
NN은 matrix multiplication을 수행하기 ㅜ이한 많은 dese layer들을 포함한다. 이 layer들의 weight matrix들은 보통 full-rank를 가짐. 특정 task를 적용할 때 ~~논문은 pre-trained language model들이 low instrisic dimension을 가짐을 보였다.
이에 영감을 받아, 연구진은 weight에 대한 update가 adaption 중에 low intrinsic rank를 가짐을 가정한다. pre-trained weight matix W0에 대하여 그것의 update matrix를 low-rank decomposition을 이용하여 다시 표현할 수 있다.
training하는 동안 W0는 고정되고 gradient update를 받지 않으며 A와 B는 traininable parameter들을 가진다. h=W0x역시 같은 방법으로 표현해볼 수 있다.
figure1에서 나타내었듯 A는 가우시안으로, B는 0을 초기화하므로 ∆W = BA 역시 초기에는 0이다.
∆Wx를 scale하기도 하는데 이런 scalining은 r이 다를 때마다 hyperparameter을retune할 필요성을 줄여준다.

4.1,1 Generaliation of full fine-tuning
더 일반적인 형태의 fine-tuning일수록 pre-trained parameter들의 subset의 training이 가능. LoRA는 adaption중 full-rank를 가지도록 weight matrix를 gradent upgrade할 필요가 없다. 즉 LoRA는 full rank가 필요하지 않으며, pre-train matrix들의 rank r을 LoRA의 rank로 설정해도 충분한 표현력을 얻ㅇ르 수 있다는 거 것을 의미한다.
4.1.2 No additional inference latency
단순히 upgrade weight matrix를 BA로 바꾸고, 그 BA만 다른 task로 변경 시 빼고 새로운 B'A'을 더해주면 되기 때문에 memory overhead가 매우 적으며 계산이 빠르다. 이것은 어떤 additinal latency가 inference 중에 발생하지 않음을 보장한다.
4.2 Applying LoRA to transformer
transformer에서 weight matrix는 self-attention module에 네 개, MLP module에 두 개가 있다. 해당 논문에서는 모든 layer을 다루지 않고 self-attention module의 weight matrix들만 다룬다. MLP 모듈의 weight matrix들은 고정: simplicity, parameter-efficiency를 위해.
또한 비록 output dimension이 여러 attention head로 나누어지지만, Wq, Wk, Wv를 dxd(model dimension)의 single matrix로 취급한다.
MLP layer, Layernorm layer, bias에 관한 것은 추후의 연구 과제로 남겨둔다.
4.2.1 Practical benefits and Limitations
가장 중요한 장점을 메모리와 저장 공간 감소임. 큰 transformer 모델에 대하여 연구진은, 고정된 parameter들에 대하여 optimizer state들을 저장하지 않아도 되므로, VRAM의 사용을 r이 model의 dimension보다 훨씬 작다면 2/3까지 줄이 ㄹ수 있었다.GPT-3의 경우 1.2TB VRAM을 250GB까지 줄이 수 있었다.
또한 GPT-3 175B를 기준으로 했을 때 학습 속도 또한 25% 빨라짐.
한계도 당연히 존재함. additional inference latency를 제거하기 위해 A와 B를 W로 흡수시킨다면, single forward pass로 다른 A와 B를 가지는 다른 task들에 input을 batch하는 것은 쉬운 일이 아니다. 그러나 weight을 병합하지 않고 scenario에 대한 batch의 sample들을 사용하기 위해 동적으로(?) LoRA를 선택하는 것은 가능함. latency가 중요하지 않을 떄
5. Emperical experiments
LoRA의 RoBERTa, DeBERTa, GPT-2, GPT-3에 대한 downstream task performance를 비교함.
그 결과 GPT-3 175B 등 다양한 모델에서 좋은 성능을 보임.

6. Related works
Transformer Language Models, Prompt Engineering and Fine-tuning, Parameter-efficient Adaption, Low-Rank structures in deep learning
7. Understanding the low-rank updates
LoRA의 장점이 주어졌을때, 연구진은 다음 질문에 답하면서 downstream task에서 학습된 low-rank adaption의 장점들에 대해 더 설명하고 싶음.
7.1 Which weight matrices in transformer should we apply LoRA to?
한정된 parameter 수를 가지고, 어떤 weight 종류를 LoRA에 적용하는 것이 downstream task에 최고의 성능을 보이게 할까? 4.2에서 언급하였듯 연구진은 self-attention module의 weiht matrix들만을 도려한다. parameter 수를 GPT-3 175B에서 18M으로 셋팅하였다. 결과는 아래와 같다.

∆Wq 혹은 ∆Wk의 모든 paramter을 사용하는 것이, 둘 다 사용했을 때 가장 좋은 결과를 보이는 것과는 다르게 상당히 더 안 좋은 성과를 보였다. 이것은 네 weight가 ∆W의 정보를 충분히 capure하더라도, 큰 rank를 가진 한 종류의 weight를 적용하는 것보다 여러 개의 weight matrix를 적용하는 것이 더 낫다는 것을 보임.
7.2 What is the optimal Rank r for LoRA?
{Wq, Wv}, {Wq, Wk, Wv, Wc}, Wq 이 세 개로 모델 성능에 rank r이 미치는 영향을 살펴보자. 결과는 다음과 같다.

LoRA가 작은 r로도 추분히 좋은 결과를 보인다는 것을 알 수 있다. 즉 update matrix ∆W가 매우 작은 intrinsic rank를 가질 수 있다는 것을 시사함.
더 자세히 살펴보기 위해 r을 다르게 항 그리고 random seed를 다르게 하여 subspace의 overlap을 확인함. low-rank adaption matrix로도 충분하다(큰 r이 꼭 필요하지 않다)고 주장.
7.3 How does the adaption matrix ∆W compare to W?
∆W와 W의 관계성이 클까?
low-rank adaption matrix가, 학습되었지만 pre-training model에서 강조되지는 않은 특정 downstream task의 중요한 특징들을 증폭시킬 수 있음을 시사.
8. Conclusion, future work
장점이 많은 LoRA.
full fine-tuning을 나타나는 문제점들에 대해 intrisinc rank가 해결책이었음.
upgrade matrix를 BA로 나타내는, 수학적 구조를 변경하는 방법이라 어렵지도 않음