Introduction
Introduction
기존의 fine-tuning은 모델 전체 파라미터에 대한 학습을 하다보니, 초거대 모델들을 fine-tune하기는 너무 cost가 많이 듦. 따라서 작은 Adapter를 달아서 그것만 fine-tune해보자.
가설은 모델을 실제 파라미터화하는 과정에서 현재 LLM들은 파라미터가 지나치게 많은 over-parameterizaed되어 있다고 주장. 이러한 가정 하, “fine-tune을 한다고 해도 파라미터가 업데이트되는 방향은 한정적일 것이며, 이를 matrix decomposition하여 근사할 수 있지 않을까?”가 Key idea.
실제로 모델이 fine-tune될 때 내부 업데이트 방향, intrinsic dimension은 생각보다 매우 낮다는 보고가 있음.
추가로, LoRA방식에서 모델 업데이트 방향을 강제로 저차원화 시키면서, regularization 효과도 같이 볼 수 있어서 catastrophic forgetting에 robust해지거나, generalization 역시 robust한 사례가 있다고 보고됨.
Core Contribution
메모리 및 저장 공간 효율성: Fine-tuning에 필요한 trainable 파라미터 수를 획기적으로 줄여(GPT-3 175B의 경우 10,000배 감소), GPU 메모리 요구 사항을 3배까지 줄인다. 옵티마이저 상태(optimizer states)를 저장할 필요가 없어 VRAM 사용량을 2/3까지 줄일 수 있음.
추론 지연 시간 없음: 배포 시 를 명시적으로 계산하고 저장할 수 있음. 추가적인 행렬 곱셈을 필요로 하지 않으므로, Fine-tuned 모델과 비교하여 추론 시 추가적인 지연 시간이 발생하지 않음.
빠른 작업 전환: 다른 다운스트림 작업으로 전환할 때 에서 를 뺀 후 새로운 를 더하는 방식으로 매우 적은 메모리 오버헤드로 신속하게 전환할 수 있습니다.
학습 처리량 향상: 대부분의 파라미터에 대한 그라디언트 계산이 필요 없어 GPT-3 175B의 경우 Fine-tuning 대비 25%의 학습 속도 향상을 보입니다.
Additional Info
- 더 용량을 줄이기 위해 quantiization을 적용한 Q-LoRA가 있음.
- 개별 파라미터들의 크기를 줄임.
- DoRA: 행렬에 대해 direction(sign), magnitude을 먼저 분해하고, 각각을 LoRA.
- 좀 더 fine-tune의 aim과 더 가깝고, 성능도 우수.
- 약간의 연산 overhead가 발생하긴 하지만, 감수할만 함.
Tip
실전에서는 DyLoRAf라는 걸 찾아서 사용한 것이 좋다고 함.
LoRA로 matrix decomposition할 때, 중간 dimension을 rank라 하는데, DyLoRA로 학습을 해두면, 그보다 작은 demension으로도 추론 가능.
- e.g. r=32로 학습을 해두면, 추론시 옵션으로 r=16, 8 같이 걸어서 추론 가능.(더 가볍게할 수 있다.)
Related Papers
Methods
Forward Pass
모든 layer들에 대해 parameter update를 담당하는 부분을 matrix decompposition
/assets/LoRA-design.png)
/assets/LoRA.png)