LoRA : Low-Rank Adaptation of Large Language Models
Microsoft에서 발표한 LoRA 논문에 대해 알아보자
NLP의 추세가 large-scale pre-training으로 가기에 모델을 fine-tuning 할 때 소요되는 코스트가 너무 커지는 문제가 발생하였다.
그렇기에 이에 대한 해결책으로 LoRA를 제시한다.
이는 pre-trained model의 weight를 freeze한 뒤 Transformer 아키텍처의 layers에 trainable rank decomposition matrices을 inject하여 downstream tasks의 trainable parameters를 줄일 수 있었다.
GPT-3와 비교하여 LoRA는 trainable parameters를 약 10,000배 줄일 수 있었으며 GPU 메모리 요구량도 3배 줄일 수 있었다.
LoRA는 다양한 모델에서 기존 혹은 그 이상의 성능을 보여주었으며, 이는 적은 파라미터와 높은 training throughput의 장점을 가지고 있다.
또한 기존 adapters의 inference latency 문제 또한 LoRA에는 적용되지 않는다.
하나의 large-scale, pre-train 모델을 만들어 다양한 down stream applications를 만드는 기조가 이어졌다.
이는 주로 fine-tuning을 통해 이루어지는데 이는 모든 파라미터를 업데이트 해야하는 문제점이 존재한다.
그렇기에 조금의 파라미터만 학습을 하거나 외부 모듈을 추가하는 방식의 방법론들을 찾았지만 이는 종종 inference latency를 유발하였다.
더욱이 기존 모델 fine-tuning과 맞지 않는 부분과 효율성과 모델의 성능의 trade-off 문제도 존재했다.
연구진들은 Li et al. (2018a); Aghajanyan et al. (2020)의 low intrinsic dimension(데이터의 본질을 나타내는 내재적 차원)에서 해결방안을 착안하였다.
방안은 low "intrinsic rank"의 weight를 학습하는 것이다.
LoRA는 dense layers의 rank decomposition matrices를 optimizing 함으로써 기존 dense layers를 간접적으로 학습한다.
LoRA는 다음과 같은 advantages를 가진다.
pre-trained Autoregressive LM parametrized by 가 주어졌을 때 이를 다양한 Task에 downstream할 수 있다.
이 때 full fine-tuning을 한다면 pre-trained weights 가 로 변하며 이 때 의 dimension은 와 같다.
정리하자면, fine-tuning을 하면 기존 pre-train 모델의 큰 파라미터를 학습해야하기에 힘들다.
그렇기에 이처럼 큰 fine-tuning 모델들을 저장하고 배포하는 것은 쉽지 않다.
본 논문에서는 파라미터 효율적인 접근 즉, 해당 방식을 통해 적은 사이즈의 파라미터를 인코딩 한다. <<
그렇기에 저자들은 계산과 메모리에 효율적인 를 인코딩 하기위한 low-rank representation 방식을 제안한다.
이를 대표적으로 파라미터가 많은 모델인 GPT-3 175B에 적용을 한다면 의 0.01%의 파라미터 보다 를 줄일 수 있다.
태클이 들어올 문제는 이 방법이 새롭지 않다는 것이고 실제로도 많은 시도가 존재한다.
하지만 기존의 방법론들은 large-scale과 latency에 민감한 production들에 한계가 존재했다.
Adapter Layers Introduce Inference Latency
큰 모델에는 하드웨어 병렬화를 많이 사용했고 이는 adapter layer가 순서대로 처리되어야 하는 문제가 있다.
이로 인해 어뎁터를 사용할 때 latency가 존재하였다.
Directly Optimizing the Prompt is Hard
다른 방식으로는 prefix tuning이 있다.
하지만 이는 optimize하기 어려웠으며 성능이 trainable parameters에 따라 급변했다.
Low-Rank-Parameterized Update Matrices
pre-train 모델들은 많은 dense layers를 가지고 있으며 이러한 layers의 weight matrices는 일반적으로 full-rank(해당 행렬이 가질 수 있는 최대한의 rank)이다.
Aghajanyan et al.(2020)에 따르면 특정 task에 pre-train 모델을 적용할 때 해당 모델은 low "instrisic dimension"을 가진다.
또한 작은 subspace로 랜덤하게 투사되지만 잘 학습한다.
저자들은 이에 영감을 받아 adaptation 중 low "intrinsic rank"의 weights를 업데이트하는 방안을 고안했다.
정리하자면 일반적인 pre-train 모델들은 full-rank 즉 모든 특성들을 잘 가지고있다.
이 때 pre-train 모델을 downstream task에 적용하면 full-rank가 아닌 low "instrisic rank"만을 가져도 잘 학습하기에 low "instrisic rank"를 가진 adapter를 적용하고자 하였다.
이를 수식적으로 표현하면 다음과 같다.
pre-trained weight matrix 일 때 where 그리고 rank << min()
이 때 이 frozen 되었기에 만이 trainable parameters를 가지고 있다.
위의 그림에서 볼 수 있듯이 는 랜덤 가우시안 초기화, 는 0으로 초기값이 설정되어있다.
A Generalization of Full Fine-tuning
Adaptation 중 full-rank가 필요하지 않고 pre-train weight matrices의 rank 을 LoRA의 rank로 설정함으로써 충분한 표현력을 얻을 수 있었다.
No Additional Inference Latency
계산이 인데 과 둘다 에 속하기에 다른 task로 변경할 때 새로 불러들이는 것이 아닌 에 를 빼고 를 더함으로써 매우 적은 오버헤드로 계산할 수 있다.
또한 이는 inference latency를 생성하지 않음을 보장한다.
APPLYING LORA TO TRANSFORMER
해당 논문에서는 transformer의 모든 레이어를 다루지는 않고 4개의 self-attention module과 2개의 MLP module 중 self-attention module()만을 다룬다.
또한 비록 output dimension이 attention head로 나뉘어지지만 를 의 single matrix로 간주하였다.
MLP layers나 LayerNorm layers에 이를 적용하는 것은 추후의 연구 과제로 정하였다.
Practical Benefits and Limitations
가장 중요한 장점은 memory와 용량을 줄인 것이다.
큰 Transformer 모델의 경우 VRAM의 2/3 if << 정도로 줄였고 파라미터가 많은 GPT-3의 경우 1.2TB VRAM을 350GB까지 줄일 수 있었다.
또한 배포 중인 모델의 task를 변경하는 것도 LoRA weights를 변경함으로써 간단하게 가능하다.
마지막으로 학습 속도 또한 GPT-3 175B 기준 25% 빨라졌다.
GPT-3 175B 및 다양한 모델에서 상당히 좋은 결과를 가진다.
해당 챕터에서는 다음과 같은 질문을 해결함으로써 LoRA와 low-rank adaptation에 대해 알아본다.
WHICH WEIGHT MATRICES IN TRANSFORMER SHOULD WE APPLY LORA TO?
제한된 파라미터수를 가지고 어떠한 Weight Type이 가장 효과적인지를 분석하였다.
or 의 결과는 둘을 같이 적용했을 때 보다 떨어졌다.
이를 통해 큰 rank를 가진 single type weights보다 여러개의 weights를 adapt하는게 좋다라는 것을 알 수 있었다.
WHAT IS THE OPTIMAL RANK r FOR LORA?
{}, {}, 3 종류의 weight type과 rank를 가지고 어떠한 조합이 가장 효과적인지를 알아보았다.
실험 결과 굉장히 작은 rank가 잘 동작하는 것을 볼 수 있다.
이를 통해 matrix 가 업데이트될 때 굉장히 작은 "intrinsic rank"를 가지는 것을 알 수 있다.
또한 다른 조합과 의 subspaces overlap을 체크한 결과 을 높히는 것은 더 표현이 잘된 subspace를 의미하지는 않았다.
이는 low-rank adaptation matrix만으로 충분하다는 것을 의미한다.
해당 논문을 통해 다양한 장점을 가진 LoRA를 선보였고 앞으로 다양한 가능성이 열려있다고 한다.
정리하자면,
LLM을 fine-tuning 하는데에는 많은 리소스가 필요했으며 adaptation에는 사실 full fine-rank를 가지는 full fine-tuning 보다 효과적인 low-rank 즉 "intrinsic rank"를 학습하는 방법이 있다.
이를 LoRA는 를 로 변경함으로써 해결하였고 도 수학적으로 간단한 구조이기에 변경하기 쉽다.
이해하기 쉽게 설명해놓으셨네요 덕분에 잘 알고 갑니다 감사합니다!