Paper
https://arxiv.org/pdf/2402.09353
Abstract
LoRA는 inference cost를 발생시키지 않고 적은 수의 파라미터로 pre-trained 모델을 좋은 성능으로 튜닝할 수 있는 방법론이다. 그러나, LoRA와 full fine-tuning 사이의 accuracy gap은 여전히 존재한다. 본 논문은 FT의 학습 양상을 모방하는 DoRA (Weight-Decomposed Low-Rank Adaptation)을 제시한다. DoRA는 pre-trained 모델의 가중치를 magnitude와 direction component로 decompose한 뒤, 두 요소를 모두 학습시키되 많은 파라미터를 업데이트해야 하는 direction만 LoRA로 업데이트 + magnitude는 따로 tuning함으로써 trainable parameter의 수를 줄인다. DoRA를 활용함으로써 LoRA의 learning capacity (성능)과 training stability (더 쉽고 간단하게 최적화 가능)을 향상시켰다. DoRA는 NLP 태스크부터 vision-language 태스크까지 일반화 가능성을 보인다.
Introduction
fine-tuning은 대규모의 일반 corpus로 '언어' 자체를 학습한 pre-trained 모델을 특정 downstream task에 특화시키는 작업이다. 그러나, 모델의 파라미터 수와 필요한 데이터의 크기가 매우매우 커짐으로써 pre-trained 모델을 완전히 fine-tuning한다는 것은 매우 어려워졌다.
이런 문제를 다루기 위해 parameter-efficient fine-tuning (PEFT) 기법 (e.g., LoRA)가 제시되어 적은 수의 파라미터로도 모델을 tuning시키고자 했다. 그러나, LoRA는 훈련 파라미터 수에 제한이 있기 때문에 FT와의 성능 차이는 여전히 존재한다.
본 논문은 새로운 weight decomposition (가중치를 magnitude와 direction으로 쪼개는 기법)을 도입하여 LoRA와 FT의 학습 양상이 어떻게 다른지를 보이고, 적은 가중치로도 FT의 학습 양상을 모방할 수 있는 DoRA를 제시했다.
Related Works
PEFT 기법은 아래와 같이 세 가지 카테고리로 분류된다.
- Adapter-based method: original frozen backbone에 additional trainable modules (parameters)를 추가한다. 그러나 어쨌든 새로운 layer를 추가해 모델의 깊이를 깊게 하기 때문에 inference latency가 발생한다.
- Prompt-based method: initial input에 fine-tuned embedding vector(prefix)를 추가함으로써 모델의 파라미터 업데이트 없이도 어떤 downstream task에 대해 모델이 옳은 답변을 생성할 수 있도록 유도하는 기법이다.
- LoRA and its variants: tuning된 low-rank matrices의 가중치만 pre-trained 가중치에 추가함으로써 추가적인 inference latency를 발생시키지 않는 기법이다.
Pattern Analysis of LoRA and FT
Low-Rank Adaptation (LoRA)
fine-tuning할 때, 업데이트되는 가중치가 low intrinsic rank를 가진다는 가정으로 성립된 기법이다. 즉, 실제로 tuning되어야 할 중요한 가중치는 소수라는 것이다. LoRA에 대한 자세한 설명은 이전 게시글을 참고하길 바란다. https://minair.tistory.com/75
Weight Decomposition Analysis
LoRA 논문에서는 rank r을 크게 할수록 LoRA의 expressiveness (표현력)이 FT와 비슷해진다고 한다. (LoRA can be considered a general approximation of full fine-tuning)
- m: 가중치 행렬 \(W_0\)의 각 열 벡터의 norm으로, magnitude이다. 각 열마다 하나의 값이 나올 것이므로 차원은 (1, k)이다.
- V/||V||: 가중치 행렬 \(W_0\)의 각 열 벡터를 그 크기가 1이 되도록 normalization한 것이다. 각 열의 값을 바꾸는 것뿐이므로 차원은 (d, k)이다.
pre-trained weights로부터 LoRA, FT를 적용했을 때의 가중치가 얼마나 변했는지를 측정하고자 한다. pre-trained weights를 위 weight decomposition을 이용해 magnitude와 direction으로 나눈 뒤, 아래 식을 이용해 pre-trained 모델의 query/value projection 가중치 (magnitude/direction)와 LoRA/FT로 업데이트된 query/value projection 가중치(magnitude/direction) 사이의 차이를 정량화한다.
- \(\Delta M_{FT}^t\): t번째 training step에서 \(W_0\)와 \(W_{FT}\) 사이의 magnitude 변화량
- \(\Delta D_{FT}^t\): t번째 training step에서 \(W_0\)와 \(W_{FT\) 사이의 direction 변화량
- k: query/value projection matrix의 차원
- n: 행렬의 n번째 열 벡터
- \(m_{FT}^{n,t}\): t번째 training step에서 n번째 열 벡터의 magnitude
- \(V_{FT}^{n, t}\): t번째 training step에서 n번째 열 벡터
논문은 training step에서 4개의 checkpoint를 설정해 그 checkpoints에서의 \(\Delta M\)과 \(Delta D\)를 측정했다.
아래 그림에서 서로 다른 도형은 different training step을, 서로 다른 색은 different layer를 의미한다. 같은 색 같은 도형이 2개씩 있는 것은 query/value projection matrix를 나타낸 듯하다.
- LoRA (b): 일관적으로 magnitude 변화량과 direction 변화량이 양의 상관관계를 보인다. 이는 LoRA가 subtle adjustments 능력이 부족함을 의미한다. 즉, direction 변화량이 커지면 magnitude 변화량도 따라 커지는 학습 양상을 갖기 때문에, 작은 direction 변화와 큰 magnitude 변화 (혹은 큰 direction 변화와 작은 magnitude 변화)를 동시에 할 수 있는 미세한 컨트롤 능력이 부족하다는 것이다.
- FT (a): magnitude 변화량과 direction 변화량이 음의 상관관계를 보인다.
- DoRA (c): FT와 유사한 학습 양상 (magnitude/direction 업데이트 양상)을 보인다.
Method
Weight-Decomposed Low-Rank Adaptation
논문의 intuition은 크게 2가지다.
- magnitude보다 direction을 업데이트하는 데 더 많은 파라미터가 필요하기 때문에 direction component만 LoRA로 업데이트함으로써 더 간단하고 효율적인 fine-tuning을 진행한다.
- weight decomposition을 통해 direction component를 업데이트하는 과정은 optimization을 더 안정적으로 만든다.
Weight normalization은 DoRA와 마찬가지로 가중치를 magnitude와 direction component로 분해하여 reparameterization하지만, magnitude와 direction component를 처음부터 훈련시키기 때문에 initialization에 민감하다. 그러나 논문의 weight decomposition은 pre-trained 모델의 가중치로 (\(m = ||W_0||_c, V = W_0\))부터 출발하므로 초기화 문제에 덜 민감하다. 아래는 DoRA의 fine-tuned 가중치 식이다. m은 trainable parameters, V는 frozen parameters, \(\Delta V\)는 direction component의 ipdated weight로, LoRA (BA)를 통해 업데이트된다. DoRA는 fine-tuned된 가중치 W'를 계산에 이용하면 되므로 LoRA와 마찬가지로 추가적인 inference latency를 발생시키지 않는다.
Figure 2 (c)를 보면 DoRA 역시 FT와 비슷하게 magnitude 변화량과 direction 변화량 사이에 음수 기울기를 갖고 있다. FT가 음의 기울기를 갖는 것은, pre-trained 가중치는 이미 대규모의 언어 데이터셋으로 학습되어 다양한 downstream task에 대한 substantial knowledge를 갖고 있기 때문이라고 해석한다. 이미 pre-trained 모델이 충분한 learning capacity를 갖기 때문에 magnitude와 direction 중 하나만 업데이트해도 어떤 downstream adaptation하기에 충분하다. 따라서 magnitude와 direction 모두 크게 업데이트되지 않는 것이, 좋은 성능을 보이는 FT의 학습 양상이다. 따라서 FT와 DoRA는 significant direction/magnitude update with minimal changes in magnitude/direction (미세한 조정)가 가능하다.
Gradient Analysis of DoRA
chain-rule을 이용하면 아래와 같이 V', m에 대한 loss gradient를 구할 수 있다.
Eq. (6)은 W'에 대한 loss gradient \(\nabla_{W'}L\)이 m/||V'||로 scaling되고 가운데 항으로 인해 현재 가중치로부터 멀어짐을 의미한다. 이 두 효과는 gradient의 공분산 행렬이 identity matrix와 비슷하게 되어 optimization에 도움을 준다. 즉, weight decomposition을 통해 direction만 업데이트하는 것은 optimization (학습 안정성)에 기여한다. V' = V + \(\Delta V\)이고 V는 frozen parameter이므로 \(\nabla_{V'} L\)은 \(\nabla_{\Delta V} L\)와 같다. 따라서 V'를 이용했을 때 얻을 수 있는 optimization 장점이 \(\Delta V\)에게도 똑같이 적용된다.
또한 Eq. (7)을 통해 유도한 결과, DoRA는 작은 direction 변화가 일어나면 큰 magnitude 변화를, 큰 direction 변화가 일어나면 작은 magnitude 변화를 학습한다는 점에서 FT와 유사한 학습 양상을 띤다는 것을 증명했다. (FT와 DoRA는 pre-trained 상태에서 magnitude와 direction 중 하나만 업데이트하는 미세한 조정 가능함을 의미)
Reduction of Training Overhead
LoRA에서 \(\Delta W\)와 W'의 loss gradient는 같지만, DoRA의 경우 LoRA를 direction에만 적용하기 때문에 direction에 대한 업데이트가 W'로부터 벗어난다. (Eq. (6)처럼 W'에 대한 loss gradient가 원래 행렬로부터 멀어진다) 이러한 divergence는 backpropagation 과정에서 extra memory를 필요로 한다. 따라서 ||V'||을 상수 취급함으로써 Eq. (5)를 V'에 대해 편미분할 때 Eq. (6)과 같은 중간항이 (추가적 연산이)생기지 않도록 (gradient graph memory consumption을 줄이도록)한다. 즉, Eq. (6)이 Eq. (11)이 되는 것이다. 이 방법을 쓰면 memory usage는 줄이면서 성능은 without일 때와 비슷하다. (negligible)
Experiments
Settings
- fine-tuned LLaMA-7B/13B, LLaMA2-7B, LLaMA3-8B on commonsense reasoning tasks (single modality)
- multi-task image/video-text understanding tasks w/ LoRA using VL-BART and LLaVA-1.5-7B (multimodality)
- LoRA vs VeRA used in DoRA
- DoRA: direction component (weight)만 선택적으로 업데이트함으로써 더 적은 수의 파라미터로 LoRA보다 더 높은 accuracy를 기록함.
Commonsense Reasoning
- Baseline: prompt engineering (prefix-tuning), series adapter, parallel adapter로 튜닝한 LLaMA-7B/13B
- 태스크: commonsense reasoning task; 8개의 sub tasks로 이루어져 있다.
- evaluation metric: accuracy
- fairness를 위해 DoRA를 적용할 때 LoRA configuration에 따랐다. (same rank w/ LoRA; DoRA는 magnitude parameter도 튜닝해야 하기 때문에 LoRA보다 필요한 파라미터가 조금 더 많다)
- \(\dagger\): rank를 절반으로 줄여 DoRA를 적용한 것.
결과는 \(DoRA^{\dagger}\)와 DoRA가 LoRA를 비롯한 다른 baseline보다 높은 accuracy를 갖는다는 것으로, DoRA가 rank를 절반으로 낮춰도 LoRA의 학습 능력을 끌어 올릴 수 있다는 것이다.
또한, 앞에서 이미 pre-trained 모델은 충분한 능력을 갖고 있기 때문에 magnitude든 direction이든 하나만 업데이트되어도 충분하다는 내용을 주장했다. Figure 3는 LoRA/DoRA로 pre-trained 모델을 튜닝한 후의 (a) magnitude difference와 (b) direction difference를 나타낸 것이다. DoRA는 pre-trained 가중치로부터 크게 벗어나지 않는 한편 LoRA는 많이 벗어났다. 그럼에도 Table 1의 결과를 보면 DoRA가 모든 태스크에 대해 LoRA를 surpass한다. 따라서, robust foundation model (a.k.a pre-trained model)은 downstream adaptation할 때 significant alternation이 필요 없음과 magnitude와 direction에 대한 미세한 조정 능력이 성능에 중요함을 설명한다.
Image/Video-Text Understanding
DoRA가 multimodality fine-tuning 태스크에서도 먹히는지 실험한다.
- vs. LoRA
- vs. full fine-tuning VL-BART which comprises of vision encoder and an encoder-decoder language model)
- image-text 태스크: VQA, GQA, NLVR, MSCOCO
- video-text 태스크: VALUE benchmark (TVQA, How2QA, TVC, YC2C)
Visual Instruction Tuning
visual instruction tuning이란 어떤 이미지와 그에 맞는 설명, "다음 이미지에 맞는 적절한 설명을 생성하시오"와 같은 instruction을 한 쌍의 training set으로 하여 모델을 튜닝하는 방법이다.
FT가 LoRA보다 낮은 성능이 나와서 FT를 따라가는 DoRA도 그럴 것이라 예측했지만 DoRA는 FT와 LoRA를 모두 뛰어넘는 성능을 내었다.
Compatibility of DoRA with other LoRA variants
DoRA에서 direction update할 때 LoRA variants (e.g., VeRA)를 사용할 수 있다. 이 실험을 통해 DoRA의 compatibility (호환성)을 검증한다. 결과는, DoRA에 LoRA를 사용하든 VeRA를 사용하든 DoRA가 LoRA와 VeRA보다 더 뛰어난 성능을 보였다는 것이다. Scores는 GPT-4한테 0부터 10사이로 점수를 매겨달라고 했다.
Robustness of DoRA towards different rank settings
rank가 달라져도 DoRA는 LoRA보다 높은 성능을 보였다.
Etc.
QLoRA framework에 LoRA 대신 DoRA를 적용해도 좋은 성능을 보였다. 또, text-to-image generation도 DoRA가 LoRA보다 좋은 성능을 보였다.
Conclusion
새로운 weight decomposition (가중치를 magnitude와 direction으로 분해하는 기법)을 도입해 FT와 LoRA의 학습 양상을 비교해 왜 FT가 LoRA에 비해 더 성능이 높은가를 증명했다. (정확도가 덜한) LoRA는 magnitude/direction의 변화량이 커지면 direction/magnitude 변화량도 커지는 positive slope를 보인 반면, (정확도가 더 높은) FT는 magnitude 또는 direction 중 하나만 변화하는 negative slope를 보였다. 이는 pre-trained 모델은 이미 충분한 능력을 갖고 있기 때문에 파라미터를 많이 업데이트하지 않아도 됨을 의미한다. 즉, fine-tuning을 잘 하려면 기존 pre-trained 파라미터를 많이 업데이트하지 않는 것이 좋다 (발산하지 않는 것이 좋다)는 의미로 해석 가능하다. 또한 DoRA가 이러한 학습 양상을 보이기 때문에 LoRA보다 tuning을 잘 하는 것이다. 라는 내용으로 정리 가능하다.
DoRA가 잘 동작하는 원인의 핵심은 weight decomposition이다. weight decomposition을 통해 1) V' gradient의 공분산 행렬을 identity matrix에 가깝게 함으로써 optimization의 안정성을 높이며 2) magnitude과 direction 중 하나만 significant하게 업데이트되는 식으로 학습이 (FT와 비슷한 양상의 학습이) 이루어지게 할 수 있다.
DoRA는 commonsense task (single modality), image-to-text, video-to-text task (multimodality) 등의 다양한 태스크에 대해서 LoRA를 비롯한 다른 baseline의 성능을 능가했다.