Natural Language Processing

[논문 리뷰] LoRA: Low-Rank Adaptaion of Large Language Models

NGC3132 2023. 6. 18. 23:57

이 글에서는 2022년 ICLR에서 발표된 논문인 LoRA: Low-Rank Adaptaion of Large Language Models에 대해 간략히 살펴볼 예정이다.

본 논문은 Microsoft로부터 발표되었으며, 논문 링크와 Github 링크는 다음과 같다.

논문 링크: https://openreview.net/forum?id=nZeVKeeFYf9 

 

LoRA: Low-Rank Adaptation of Large Language Models

An important paradigm of natural language processing consists of large-scale pre-training on general domain data and adaptation to particular tasks or domains. As we pre-train larger models, full...

openreview.net

Github 링크: https://github.com/microsoft/LoRA

 

GitHub - microsoft/LoRA: Code for loralib, an implementation of "LoRA: Low-Rank Adaptation of Large Language Models"

Code for loralib, an implementation of "LoRA: Low-Rank Adaptation of Large Language Models" - GitHub - microsoft/LoRA: Code for loralib, an implementation of "LoRA: Low-Rank Adaptati...

github.com

 

 

 

0. Abstract

(1) 최근 자연어처리에서 가장 중요한 패러다임은 대규모의 데이터로 language model을 사전학습 시킨 뒤, 특정 도메인이나 task에 finetuning 시키는 것이다.

 

(2) 그러나 finetuning시에, 전체 파라미터를 모두 업데이트 하는 것은 매우 비효율적이다.

 

(3) 따라서 본 논문에서 제시하는 것은 Low-Rank Adaptation, 또는 LoRA라고 부르는 방법론이다. 

 

(4) LoRA는 사전 학습된 모델의 weight들은 고정시킨 뒤, 학습 가능한 rank decomposition matrices를 트랜스포머 각 레이어에 붙여 finetuning시 이들만 업데이트 하는 것이다.

 

(5) GPT-3 175B를 finetuning시, LoRA를 이용할 경우 기존의 방식보다 10000배 더 적은 파라미터를 업데이트하고, GPU 메모리 요구량도 3배 더 적어진다고 논문에서 밝히고 있다.

 

(6) 또 LoRA가 더 적은 수의 파라미터 업데이트임에도 불구하고 기존의 방식으로 RoBERTa, DeBERTa, GPT-2, GPT-3를 finetuning하는 것보다 더 좋은 성능을 보여주었다고도 밝히고 있다.

 

 

 

1. Introduction

(1) 큰 모델이면 큰 모델일수록 사전 학습 후에 finetuning을 할 때 많은 파라미터를 학습시켜야 하기 때문에 시간도 오래 걸릴 뿐더러 비효율이 발생한다.

 

(2) 모든 파라미터를 업데이트 하는 것이 아닌, 일부의 파라미터만 업데이트 하는 방식들이 제시되어 왔다.

 

(3) 그렇지만 이런 방식은 inference latency가 발생할뿐만 아니라 모델의 성능도 하락하는 경우가 많다고 밝히고 있다.

*여기서 inference latency란, 직역하면 '추론 지연'인데 모델을 이용해 추론할 경우 시간적으로 더 오래걸리는 것을 의미한다고 판단했다.

 

(4) 본 연구진들은 이전의 연구들에서 영감을 받아, 많은 파라미터를 가지는 모델들을 실제로는 저차원에 놓을 수 있다 주장한다. (The learned over-parametrized models in fact reside on a low intrinsic dimension.)

 

(5) 즉, 저차원의 intrinsic rank를 이용해 finetuning하는 방법론인 Low-Rank Adaptation (LoRA)를 제시한다.

 

(6) 이를 통해 사전 학습한 모델의 weight들은 업데이트 하지 않고, LoRA의 rank decomposition matrices의 weight들만 업데이트 하는 것이다.

 

LoRA only train A and B (reparametrization)

 

(7) 예를 들어 GPT-3 175B의 경우 rank-1, rank-2 (위 그림에서 r=1, r=2인 경우)와 같은 low rank로도 full rank (rank-d, d는 model의 hidden dimension)를 대체할 수 있음을 증명했다고 밝히고 있다. 

 

 

 

2. Problem Statement (문제 설명)

(1) 기존의 finetuning 방식인 모델의 모든 파라미터를 업데이트하는 최대우도법 목적식은 다음과 같다.

 

 

(2) 즉, 최대우도법을 이용해 모델의 전체 파라미터 $\Phi$를 업데이트 해나가는 것이다.

 

(3) 문제는 이 업데이트가 사전 학습에도 적용되고, finetuning 시에도 전체 파라미터 $\Phi$를 모두 업데이트 하는 것이다. 

 

(4) 따라서 본 논문에서 제시하는 방법은 각 downstream task마다 다른 LoRA layer를 사용해 효율적으로 파라미터를 업데이트 할 수 있도록 하는 것이다. 

 

(5) 기존의 model 파라미터인 $\Phi$를 이용해 forward를 진행한 뒤 얻어지는 $\Delta \Phi$ ($\Phi$의 gradient)를 이용해 backpropagation을 진행할 때, LoRA의 파라미터 $\Theta$를 이용하는 것이다.

 

(6) LoRA를 이용해 일부분의 파라미터만 업데이트하는 목적식은 다음과 같다.

 

 

(7) 논문에서는 LoRA로 업데이트하는 파라미터 $\Theta$의 크기인 $|\Theta|$가 기존의 finetuning으로 업데이트하는 파라미터 $\Phi$의 크기인 $|\Phi|$의 0.01%라고 말한다. (훨씬 효율적으로 파라미터를 업데이트하고, task-specific하다.)

 

 

 

3. Aren't Existing Solutions Good Enough?

(1) 현재 본 연구에서 해결하고자 하는 finetuning 시의 문제를 해결하기위한 다양한 시도들이 있어왔다.

*이러한 방법들을 통틀어 Parameter-Efficient Fine-Tuning (PEFT)라 부른다.

 

(2) 다양한 시도들을 크게 두 가지 흐름으로 나눌 수 있는데, 다음과 같다.

- adding adapter layers : adapter라는 layer를 transformer block에 추가해주어 이 부분만 학습하는 것으로 기존 finetuning을 대체하는 것

- optimizing some forms of the input layer activations : language model의 입력으로 들어갈 input vocab embedding에 prompt embedding을 추가하고, prompt embedding을 다양한 학습 방법으로 학습시키는 것으로 기존 finetuning을 대체하는 것 

 

(3) 그러나 두 가지 방법 모두 문제가 있다.

 

(4) Adapter Layers Introduce Inference Latency (adding adapter layers)

- transformer를 이용한 기존 대규모 신경망은 하드웨어의 병렬 처리가 가능하다는 것이 장점이었는데, adapter를 적용하면 추가적인 컴퓨팅 작업이 들어가기 때문에 작업 시간이 눈에 띄게 증가하는 것을 볼 수 있다.

- 파라미터를 높일수록, 즉 연산량이 많아질수록 확연하게 시간이 증가했다.

 

 

(5) Directly Optimizing the Prompt is Hard (optimizing some forms of the input layer activations)

- 이 방법에 해당하는 대표적인 예시로는 prefix tuning이 있는데, 최적화하는 것 자체가 어렵고, 그 성능이 단조적으로 증가하지 않고 진동하는 경우도 있다고 논문에서 밝히고 있다. (its performance changes non-monotonically in trainable parameters)

- 더하여 이 방법을 사용하게 되면, sequence input을 넣을 때 prompt 자리를 미리 만들어놓아야 하기 때문에 downstream task를 처리하는데 사용할 수 있는 sequence length의 길이가 줄어드는 것도 한계라 밝히고 있다.

 

 

 

4. Our Method

(1) 앞으로 소개할 LoRA의 방법론은 본 논문에서는 트랜스포머에서만 적용되었지만, 다른 딥러닝 구조에서도 적용될 수 있을 것이라 논문에서 밝히고 있다.

 

4.1 Low-Rank-Parametrized Update Matrices

(2) 신경망의 많은 레이어들은 행렬곱으로 이루어져 있는데, 대부분의 가중치 레이어들은 full-rank이다.

 

(3) 기존의 연구에서 밝힌 바로는, 모든 사전 학습된 언어 모델은 "low intrinsic rank" 를 가질 수 있다는 것이다.

*(Intrinsic Dimensionality Explains the Effectiveness of Language Model Fine-Tuning, Aghajanyan et al., 2021)

 

(4) 예를 들어 기존 모델의 가중치 매트릭스가 $d*k$ 크기를 가질 때, 이를 $d*r$ 매트릭스 B와 $r*k$ 매트릭스 A로 나타낼 수 있다(여기서 $r$차원은 $d$, $k$보다 작은 차원). 기존의 파라미터 업데이트 과정과, A & B 매트릭스를 이용한 foward pass 과정을 수식으로 나타내면 다음과 같다.

 

 

(5) 가중치 초기화 시 A 매트릭스는 가우시안 분포를 따르는 랜덤 변수로 초기화하고, B 매트릭스는 0으로 초기화한다.

 

(6) A Generalization of Full Fine-tuning.

- LoRA 방법론을 통하면 차원 수는 감소하지만(full-rank -> r-rank), 원래 모델과 관련된 가중치만, 효율적으로 학습가능하다. 

- 반면 두 가지 기존의 방법론의 경우 한계점이 존재하는데 다음과 같다.

- adapter-based 방법론의 경우엔 추가적으로 MLP 레이어를 학습해야 하며, prefix-based 방법론의 경우 input에 prompt embedding을 추가해야하기 때문에 long input sequences 추가하는데 한계가 있다고 언급한다.

 

(7) No Additional Inference Latency.

- 특정 task를 위해 LoRA 방법론으로 BA 가중치 매트릭스를 이용해 파인튜닝을 한 뒤 다른 downstream task에 적용하고 싶은 경우, 단순히 $BA$ 매트릭스를 $B'A'$ 매트릭스로 바꾸는 식으로 효율적인 학습이 가능하다.

 

4.2 Applying LoRA to Transformer

(8) 트랜스포머 한 블럭에는 여러 개의 가중치 매트릭스가 있는데, self-attention module에 4개의 가중치 매트릭스가 있고($W_q, W_k, W_v, W_o$) 인코더, 디코더 각각에 MLP module이 있다.

 

(9) 이 중에서 본 논문이 LoRA를 적용하는 가중치 매트릭스는 attention 가중치 매트릭스로만 제한한다. (MLP module의 가중치 매트릭스는 적용하지 않는다.)

*논문에서는 그 이유를 'freeze the MLP modules both for simplicity and parameter-efficiency'라 밝히고 있다.

 

(10) Practical Benefits and Limitations.

- LoRA의 가장 큰 이점은 메모리와 저장 공간을 효율적으로 사용할 수 있다는 것이다. 

- 특히 GPT-3 175B의 경우, VRAM의 사용량을 1.2TB에서 350GB로 줄일 수 있었다.

- 또 rank=4로 $W_q$, $W_v$ 매트릭스만 adapt 할 경우 35MB까지 줄일 수 있었다.

- 이를 통해 25%의 속도 향상을 관찰할 수 있었다.

 

- 반면 LoRA의 한계로 다른 downstream task를 진행할 때마다 다른 AB 매트릭스들을 사용해야 하는 것을 언급하였다.

 

 

 

5. Empirical Experiments

(1) 본 논문에서는 LoRA를 RoBERTa, De-BERTa 그리고 GPT-2에 적용시켜보고 크기를 키워 GPT-3 175B에도 적용시켜 보았다고 말한다.

 

(2) natural language understanding(NLU), natural language generation(NLG),  GLUE benchmark, NL to SQL queries, SAMSum 등 다양한 downstream task에서 성능을 평가했다고 언급한다.

- 모든 실험은 NVIDIA Tesla V100을 이용해 진행되었다.

 

5.1 Baselines

 

(3) * 표시는 이전 연구의 방법론을 의미하며, † 표시는 공정한 비교를 위해 Parameter-Efficient Transfer Learning for NLP, Houlsby etal., (2019)의 설정을 따라 실험한 결과를 나타낸다.

 

 

(4) RoBERTa, De-BERTa, GPT-2를 이용한 대부분의 task에서 LoRA를 적용한 방법론이 가장 좋은 성능을 낸다는 것을 알 수 있다.

 

 

(5) GPT-3를 이용한 task에서도 LoRA를 적용한 방법론이 가장 좋은 성능을 낸다는 것을 알 수 있다. 

 

 

 

6. Understanding the Low-Rank Updates

(1) 본 연구에서 진행한 실험들을 바탕으로, 세 가지 토픽에 관해 연구진들이 조사한 내용을 밝히고자 한다.

- 어떠한 가중치 매트릭스에서 LoRA를 이용해야 가장 높은 성능 향상을 기대할 수 있을까?

- LoRA의 최적의 rank는 무엇일까?

- Adaptation matrix $\Delta W$와 $W$ 사이에는 어떤 관계가 있을까?

 

6.1 Which Weight Matrices in Transformer Should We Apply LoRA To?

(2) 앞서 언급한 것처럼, self-attention module에 있는 가중치 매트릭스들($W_q, W_k, W_v, W_o$)만 고려했으며, 전체 파라미터 수가 18MB(FP16인 경우 35MB)을 넘지 않도록 설정했다.

- 업데이트하는 파라미터의 용량을 제한하기 위해 예를 들어 한 가지 종류의 가중치 매트릭스를 사용한다면 rank=8이며, 두 가지 종류의 가중치 매트릭스를 사용한다면 rank=4로 하는 것이다.

 

 

(3) 결과를 살펴보면 $W_q$, $W_v$ 두 가중치 파라미터에 LoRA를 적용하는 것이 업데이트하는 가중치의 종류를 최대한 적게 가지면서 좋은 성능을 냈다. 이를 통해 알 수 있는 것은 rank를 4로 해도 충분히 $\Delta W$의 정보를 담을 수 있다는 것이다.

 

6.2 What is the Optimal Rank $r$ for LoRA?

 

(4) 놀랍게도, 매우 작은 rank로도 준수한 성능을 내는 것을 확인할 수 있다. ($\Delta W$ 업데이트 시, 매우 작은 'intrinsic rank'를 이용할 수 있다.)

 

(5) Subspace similarity between different $r$.
- 똑같은 사전 학습 모델에서 rank 크기가 각각 8, 64인 LoRA를 적용해 학습한 뒤 만들어진 각각의 LoRA 매트릭스를 $A_{r=8}$, $A_{r=64}$라 할 때, 이들의 singular value decomposition(SVD)를 구한 뒤, $U$ 값과 Grassmann distance를 이용해 두 매트릭스의 유사도를 계산한다.

-  그 결과 $A_{r=8}$, $A_{r=64}$의 1차원에서 유사도가 제일 높게 나왔으며 차원이 커질수록 유사도가 감소하였다.

 

 

- 즉, 이것은 LoRA의 rank를 매우 저차원으로 했을 때도(심지어 rank가 1일때도) LoRA를 적용한 GPT-3가 downstream task에서 좋은 성능을 낼 수 있는 이유를 보여준다.

 

 

 

7. Conclusion and Future Work

(1) Large Language Model을 finetuning하는 것은 많은 비용과 시간이 드는 작업이다.

 

(2) 본 논문에서 제시한 LoRA 방법론을 통해 얻을 수 있는 장점은 inference latency 줄일 뿐만아니라 input sequence 길이를 줄이지 않고도 finetuning이 가능하다는 것이 있다.

 

(3) 또한 다양한 downstream task에서 단순히 적은 수의 LoRA 파라미터만 바꾸면 되기에 효율적이다고 할 수 있다.

 

(4) Future works에는 다음과 같은 것이 있다.

- LoRA와 다른 adaptation 방법론과 결합할 수 있지 않을까

- LoRA의 원리가 명확하게 밝혀지지는 않았음

- LoRA의 weight matrices를 고를 때 휴리스틱한 방법에 의존

- $\Delta W$의 rank 축소가 가능하다면 $W$도 rank를 축소해도 되지 않을까 하는 의문

 

 

 

지금까지 LoRA: Low-Rank Adaptation of Large Language Models 논문에 대해 간략히 요약해 보았다.

특히 최근에는 LoRA가 Stable Diffusion 분야에서 실제로 많이 쓰이는데, LoRA 레이어를 교체해주는 것을 통해 다양한 화풍의 그림을 그릴 수 있게 해주는 것이다.

구현이 다른 방법에 비해 간단하면서도 성능은 좋다고 알려져 있어 실제로도 많이 쓰이는만큼 한 번쯤은 읽어볼만한 논문이라 생각한다.