본 포스팅은 논문 LoRA: Low-Rank Adaptation of Large Language Models를 읽고 정리한 글입니다.
https://arxiv.org/abs/2106.09685
Abstract
- 문제 인식
- NLP의 중요한 패러다임은 1) large-scale pre-training on general domain data와 2) particular task 또는 domain으로의 adaption으로 구성된다.
- 하지만 점점 큰 모델을 pre-train하고 전체 parameter를 재학습하는 full fine-tuning을 하게 되어, 더 많은 비용을 필요로 하게 되었다.
- 해결책 제시
- 이에 Low-Rank Adaptation (LoRA)는 pre-train된 모델의 weight를 동결하고, Transformer architecture의 각 layer에 학습 가능한 rank decomposition matrices을 주입함으로써, fine-tuning 시 학습하는 parameter의 수를 줄인다.
- LoRA는 적은 parameter를 학습하고, 더 빠르게 학습하고, adapter와 달리 추가적인 inference latency가 없음에도 ReBERTa, DeBERTa, GPT-2, GPT-3의 fine-tuning에서 기존 이상의 성능을 보인다.
1. Introduction
- fine-tuning → 모델의 크기가 커지는 상황에서는 적합하지 않음
- NLP에서는 large-scale pre-trained model을 여러 downstream task에 adapt하는 방식의 응용이 많이 이루어지며, 특히 adaptation은 fine-tuning을 통해 이루어진다.
- fine-tuning은 새 모델이 기존 모델과 같은 수의 parameter를 가진다는 점에서 불리하다.
- 특히 하루가 다르게 모델의 크기가 커지는 상황에서, 이러한 점은 GPT-2나 RoBERTa large의 경우 불편한 정도에 그치겠지만, GPT-3 같은 모델에서는 심각한 문제가 될 수 있다.
- 일부 parameter만 adapt & 외부 module 학습 → fine-tuning과 비교했을 때 효율성을 높였지만, 모델 품질이 저하됨
- pre-trained model 외에 소수의 task-specific parameter만 저장하고 불러오면 되므로 효율성이 크게 개선된다.
- 하지만 이러한 기술들은 모델의 깊이를 확장하거나 시퀀스 길이를 줄이기 때문에 inference latency가 발생한다.
- 무엇보다, 이러한 기술들은 fine-tuning보다 저조한 성능을 보여, 효율성과 모델 품질 간 trade-off를 한 셈이 된다.
- LoRA: Low-Rank Adaptation
- 학습된 parameterized model은 낮은 본질적 차원 (intrinsic dimension)을 가진다.
- 그렇다면 모델의 adaptation 과정에서 weight의 변화도 낮은 본질적 rank (intrinsic rank)를 가지지 않을까?
- LoRA는 pre-trained weight는 고정시켜둔채로 dense layer의 rank decomposition matrix들을 최적화함으로써 간접적으로 dense layer를 학습시킨다.
- 학습된 parameterized model은 낮은 본질적 차원 (intrinsic dimension)을 가진다.
- LoRA의 장점
- pre-trained model은 고정시키고, 아래 사진의 matrix A와 B만 교체함으로써, 하나의 pre-trained model을 이용해 여러 task에 맞는 LoRA module을 만들 수 있다.
- adaptive optimizer를 사용해 low-rank matrix만 학습시키면 되기 때문에, 학습의 효율성을 높이고 하드웨어적인 진입 장벽을 3배 이상 낮출 수 있다.
- 배포 시 학습된 matrix를 고정된 가중치와 merge할 수 있기에, fully fine-tuned model과 달리 inference latency가 발생하지 않는다.
- 다른 방법들(ex. prefix-tuning)과 함께 사용 가능하다.
- Terminologies and Conventions
- \(d_{model}\): Transformer layer의 input 및 output 차원
- \(W_{q}\): self-attention에서의 query projection matrix
- \(W_{k}\): self-attention에서의 key projection matrix
- \(W_{v}\): self-attention에서의 value projection matrix
- \(W_{o}\): self-attention에서의 output projection matrix
- \(W\), \(W_{o}\): pre-trained weight matrix
- \(\Delta W\): adaptation과정에서의 accumulated gradient update
- \(r\): LoRA 모듈의 rank
2. Problem Statement
- \(\Phi\)를 parameter로 하는 pre-trained autoregressive language model \(p_{\Phi_0}\left(y \mid x\right)\)이 주어졌다고 하자. (ex. GPT)
- 이 model을 하위 task에 adapt하려 하고, 각각의 task에 대한 context-target pair (\(Z=\left\{\left(x_i, y_l\right)\right\}_{i=1, \ldots, N}\))가 주어졌을 때, full-finetuning 과정에서 model의 가중치는 pre-trained weights \(\Phi_0\)로 초기화 되고, 다음 language modeling objective를 최대화하는 gradient \(\Phi_0 + \Delta \Phi\)로 업데이트 된다.
- \(\max {\Theta} \sum{(x, y) \in z} \sum_{t=1}^{|y|} \log \left(p_{\Phi_0}\left(y_t \mid x, y_{<t}\right)\right)\)
- 따라서 본 논문에서는 \(\Delta \Phi=\Delta \Phi(\Theta)\)를 더 작은 parameter 집합 \(\Theta\)로 인코딩하는, 보다 parameter-efficient approach를 적용한다.
- \(\max {\Theta} \sum{(x, y) \in z} \sum_{t=1}^{|y|} \log \left(p_{\Phi_0+\Delta \Phi(\Theta)}\left(y_t \mid x, y_{<t}\right)\right)\)
3. Aren’t Existing Solutions Good Enough?
- transfer learning이 도입된 이래로, parameter-efficient 및 compute-efficient한 model adaptation을 위한 연구는 계속되어왔고, language modeling에서는 다음 두 가지 방식이 국룰이었다.
- adapter layer를 추가하거나 (Parameter-Efficient Transfer Learning for NLP)
- input layer activation의 형태를 최적화한다. (Prefix-Tuning: Optimizing Continuous Prompts for Generation)
- Adapter Layers Introduce Inference Latency
- adapter에는 Transformer Block 당 2개의 adapter layer를 가지는 방법과, Transformer Block 당 1개의 adapter layer를 가지고 + 추가적인 LayerNorm을 가지는 방법 등이 있는데,
- 이들은 layer를 쳐내거나 multi-task 설정을 통해 latency를 줄일 수는 있지만, adapter layer에서의 추가적인 연산을 피할 방법은 없다.
- 어쨌든 adapter는 기존 모델의 1% 미만의 적은 수의 parameter를 가지기 때문에 문제가 아닌 듯 싶었으나,
- 대규모 모델은 latency를 낮게 유지하기 위해 병렬 처리를 하는 반면 adapter layer는 직렬로 진행되어야 하기 때문에 latency가 눈에 띄게 증가한다는 문제가 발생했다.
- Directly Optimizing the Prompt is Hard
- prefix tuning은 최적화가 어렵고, parameter의 학습이 단조적으로 이루어지지 않는다.
- 보다 근본적으로, adaptation을 위해서는 prefix가 sequence 길이의 일부를 차지하게 되어, 가용 sequence 길이가 줄어들게 된다.
4. Our Method
4.1 Low-Rank-Parametrized Update Matrices
- 신경망의 weight matrix는 주로 full-rank인데, 특정 task에 adapt 되는 pre-trained model은 낮은 intrinsic dimension을 가지며, 작은 subspace로 사영되어도 효과적으로 학습될 수 있음이 밝혀졌다.
- 이에 본 논문에서는 adaptation 과정 중 weight의 update에도 낮은 intrinsic rank가 있을 것이라 가정한다.
- pre-trained weight matrix \(W_0 \in \mathbb{R}^{d \times k}\)를 low-rank decomposition인 \(W_0+\Delta W=W_0+B A\)로 업데이트한다.
- \(W_0\)은 고정됨
- \(B \in \mathbb{R}^{d \times r}\), \(A \in \mathbb{R}^{r \times k}\), \(r <min(d, k)\)
- \(A\): Gaussian initialization으로 초기화
- \(B\): 0으로 초기화
- → \(\Delta W = BA\): 학습 시작 시 0
- \(\Delta Wx\)를 \(\frac{\alpha}{r}\)로 scaling
- Adam으로 최적화할 때, 초기화가 적절히 이루어졌다는 전제 하에 \(\alpha\)를 튜닝하는 것은 learning rate를 튜닝하는 것과 같음 → \(\alpha\)를 초기 \(r\)로 고정함으로써 \(r\)의 변화에 따른 하이퍼파라미터 튜닝의 필요성을 줄임
- A Generalization of Full Fine-tuning
- fine-tuning의 일반화된 형태는 pre-trained parameter의 일부분만을 학습하는 것을 허용한다.
- LoRA는 한 발 더 나아가, adaptation 과정에서 weight matrix에 대한 accumulated gradient update가 full-rank일 필요가 없도록 한다.
- No Additional Inference Latency
- production단에 올릴 때 \(W = W_0 + BA\)는 명시적으로 계산되고 저장될 수 있다.
4.2 Applying LoRA to Transformer
- 원칙적으로 LoRA는 신경망의 모든 weight matrix에 적용될 수 있지만, 본 논문에서는 Transformer의 attention weight으로만 한정한다.
- Practical Benefits
- 고정된 parameter의 optimizer state를 저장하지 않아도 되기 때문에, 적은 수의 GPU를 사용하고 I/O 병목 현상을 피하면서 효과적으로 학습할 수 있다.
- 모든 parameter를 바꾸는 것이 아닌, LoRA weight만 바꿈으로써 task를 넘나들 수 있다.
- Limitations
- inference latency를 없애기 위해 \(A, B\)를 \(W\)에 병합하기로 한 경우, 한 번의 forward pass에서 다른 \(A, B\)를 가지는 다른 task를 batch input으로 줄 수 없다.
- inference latency가 상관 없고 \(A, B\)를 \(W\)로 병합하지 않는 경우에는, 동적으로 LoRA 모듈을 선택할 수 있다.
5. Empirical Experiments
6. Related Works
- Transformer Language Models
- Transformer은 self-attention을 기반으로 한 seq2seq 구조이다.
- GPT-1은 Transformer의 decoder로 autoregressive language modeling을 진행하였고,
- BERT와 GPT-2는 방대한 양의 data로 학습한 커다란 Transformer 기반 model로, 단순히 task에 맞는 data로만 냅다 학습시키는 것에 비해 pre-training과 fine-tuning을 거치는 것이 가지는 효용을 보여주었다.
- Prompt Engineering and Fine-Tuning
- GPT-3은 몇 개의 학습 sample로 task에 잘 적응하면서도 그 결과물이 input prompt에 크게 영향을 받기에, 모델의 성능을 극대화할 수 있는 prompt를 구성하는 경험적인 실험인 Prompt Engineering이 요구된다.
- fine-tuning은 general-domain data로 pre-train된 모델을 task-specific data로 재학습하는 것인데, 이 때 전체 parameter를 재학습할 수도 있고, 일부 parameter만 재학습할 수도 있다.
- GPT-3같이 큰 모델은 하드웨어적인 장벽이 다소 높아서 일반적인 방법으로 fine-tuning을 하기 쉽지 않다.
- Parameter-Efficient Adaptation
- 신경망의 기존 layer 사이에 adapter layer를 추가하는 방식은 많이 제안되어왔고, weight update 시 low-rank constraint를 부과하기 위해 bottleneck 구조를 만드는 본 논문의 구조와 유사하다.
- 하지만 LoRA 모듈은 원래 weight와 merge가 가능하지만, adapter는 그렇지 않다는 차이를 가진다.
- Low-Rank Structures in Deep Learning
- 기계학습에서 low-rank structure는 많이 사용되지만, downstream task로의 adaptation 과정에서 low-rank constraint를 부과하는 방법은 전례가 없다.
- 이론적으로 low-rank structure를 가진 신경망이 다른 전통적인 방법에 비해 성능이 좋으며, 적대적 훈련에 유용하다는 것이 제안되었다는 점에서 본 연구는 유의미하다고 볼 수 있다.
7. Understanding the Low-Rank Updates
downstream task로 학습시킨 low-rank adaptation은 pre-trained weight와 update weight가 어떻게 연관이 있는지에 대한 더 나은 해석 가능성을 제공한다. 이에 아래 세 질문에 대한 경험적인 연구를 진행했다.
7.1 Which Weight Matrices in Transformer Should We Apply LoRA to?
- GPT-3 175B의 parameter budget을 18M으로 설정했을 때, 한 종류의 attention weight에 적용하려면 \(r=8\)이고, 두 종류의 경우에는 \(r=4\)이다.
- 어떤 weight에 LoRA를 적용하는 것이 가장 효과적인지에 대한 경험적인 실험을 진행한 결과, \(W_q\)와 \(W_v\)에 적용하는 것이 가장 성능이 좋았고, 한 종류의 weight에만 적용한 \(W_q\), \(W_k\)의 성능이 현저히 떨어진다는 점에서, 높은 \(r\)값과 적은 종류의 weight 보다는, 낮은 \(r\)값과 많은 종류의 weight에 LoRA를 적용하는 것이 더 좋다고 볼 수 있다.
7.2 What is the Optimal Rank r for LoRA?
- Is the “optimal” adaptation matrix \(\Delta W\)really rank-deficient? If so, what is a good rank to use in practice?
7.3 How Does the Adaptation Matrix Compare to W?
- What is the connection between \(\Delta W\) and \(W\)? Does \(\Delta W\) highly correlate with \(W\)? How large is \(\Delta W\) comparing to \(W\)?
8. Conclusion and Future Work
- conclusion
- 거대 언어 모델을 여러 task에 맞게 fine-tuning하는 것은 많은 hardware 비용을 필요로 하는 반면,
- LoRA는 inference latency나 input sequence length의 감소 없이도 모델 성능을 유지하며, 대부분의 model parameter를 공유함으로써 빠르게 task 간을 오갈 수 있다.
- 또한 본 논문에서는 Transformer를 예시로 들었으나, 원론적으로는 dense layer를 가진 어떤 신경망에도 적용 가능하다.
- future work
- LoRA는 다른 효과적인 adaptation 방법론들과 결합될 수 있다.
- fine-tuning 또는 LoRA에서 pre-training과정에서 학습된 feature들이 downstream task에서 잘 작동하도록 변화하는 mechanism은 불분명하다.
- LoRA를 적용할 matrix을 경험적으로 선택했다.
- \(\Delta W\)의 rank-deficiency (낮은 rank로도 잘 표현됨)은 \(W\)의 rank-deficiency를 의미할 수 있어, 추후 새로운 연구 대상이 될 수 있다.
댓글