논문/NLP

논문 리뷰) LoRA: Low-Rank Adaptation Of Large Language Models

Dogun Kim 2025. 7. 22. 12:58

LoRA: Low-Rank Adaptation Of Large Language Models

https://arxiv.org/abs/2106.09685

 

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 fine-tuning, which retrains all model parameters, becomes le

arxiv.org

 

0. Abstract

  • Full fine-tuning의 문제점

 NLP의 중요한 패러다임은 일반 도메인 데이터에 대한 대규모 사전학습과, 이후 특정 Task나 도메인에 맞춘 적응 adaptation으로 구성된 전이 학습 Transfer Learning이다.

cf. 어쩌면 모든 인공지능 분야의 중요한 패러다임일 수도 있겠다.. CV, 로봇 뭐든 다 파운데이션 모델 가져와서 쓰려고 하니까..

 

 하지만 사전 훈련된 모델의 크기가 클수록, 모든 파라미터를 다시 학습하는 full fine-tuning은 현실적으로 불가능하다. 찾아보니까 Gemini 울트라를 학습시키는데 2656억, GPT-4를 훈련시키는데 1080억이 들었다고 한다. 이걸 다시 풀 파인튜닝 시킨다는 건 불가능에 가깝다.. 우리는 제한된 돈과 시간 속에서 모델을 만들어야 하기 때문이다. 

 

  • Full fine-tuning의 대안 제시: LoRA # 추가한 일부분만 학습하자 # Parameter-Efficient Tuning((PEFT))

 해당 논문은 사전학습된 모델 가중치를 고정한 채, Transformer 각 레이어에 훈련 가능한 저랭크 분해 행렬을 삽입함으로써, 하위 작업의 학습 파라미터 수를 대폭 줄인 Low-Rank Adaptation((LoRA))를 제안한다. 이는 Parameter-Efficient Tuning((PEFT)) 방법 중 지금까지도 주로 사용되는 방법론이다. 이때 완전 처음 본 파라미터를 추가하는게 아니라, 원본의 파라미터를 근사하는 작은 파라미터 부분 집합을 넣는다. 뒤에서 더  자세하게 설명하겠다.

 

 Adam으로 파인튜닝한 GPT-3 175B와 비교할 때, LoRA는 학습 파라미터 수를 1만 배 줄이고, GPU 메모리 요구사항을 3배 감소시킬 수 있다고 한다. 또한 모델 품질이 전체 파인튜닝과 동등하거나 더 우수하며, 파라미터는 적고, 학습 처리량은 높으며, adapter와 달리 추론 지연도 없다.

cf. Adapter: 파인 튜닝할 수 있는 적은 양의 가중치를 신경망의 특정 위치에 추가하는 구성 요소이다. 대부분의 가중치를 동결하고 일부분만 파인튜닝할 수 있게 된다. 하지만 모델의 레이어가 깊어져 추론 지연이 유발될 수 있다.

 


1. Introduction

  • Fine-tuning은 비효율적이고, 기존 PEFT 방법들도 완벽하지 않다.

 대형 모델에 대한 Full-tuning은 위에서 언급했듯이 현실적으로 불가능하다. 이에 많은 연구자들이 일부 파라미터만 적응시키거나, 새로운 task를 위한 외부 모듈을 학습하는 방법을 제안했었다. 하지만 기존 방법론들은 모델의 깊이를 늘려 추론 지연을 유발하거나, 사용 가능한 시퀀스 길이를 줄이는 등 문제들이 발생하게 된다.

 

 더 중요한 문제는 종종 fine-tuning baseline 성능을 따라가지 못해, 효율성과 품질 사이에서 트레이드오프를 발생시킨다는 점이다. 다. 즉 효율이 좋아봤자 기본 성능보다 떨어지면 소용이 없다.

 

 

  • 실제 훈련에 중요한 파라미터들은 저차원에 놓일 수 있다.

h ttps://arxiv.org/abs/1804.08838

 

Measuring the Intrinsic Dimension of Objective Landscapes

Many recently trained neural networks employ large numbers of parameters to achieve good performance. One may intuitively use the number of parameters required as a rough gauge of the difficulty of a problem. But how accurate are such notions? How many par

arxiv.org

 위 논문은 뉴럴 네트워크의 고유 차원을 측정한다. 뉴럴 네트워크는 정말 많은 수의 파라미터를 사용하지만, 실제로 훈련에 필요한 고유 차원 Intrinsic Dimenstion은 훨씬 낮다는 걸 보여준 논문이다. 고유 차원을 측정하는 방법론이 궁금하다면 저 논문을 한 번 읽어보면 좋을 듯하다. 나는 그냥 바로 결과부터 확인하겠다...

 전체 파라미터의 수가 약 20만개인 모델과, 4만개인 모델을 대상으로 학습 가능한 공간을 인위적으로 낮은 차원 d의 서브스페이스로 제한한 상태에서 모델을 훈련한 실험이다. 그 결과, 전체 성능의 90%를 달성하는 데 필요한 차원이 각각 750, 290에 불과하다는 사실을 보인다. 이는 전체 파라미터 공간의 0.4~0.6%에 해당하는 수준이다.

피라미터가 많을수록 중복성이 커지며, 네트워크가 커지더라도 고유 차원은 크기는 거의 변하지 않는다는 것을 알 수 있다.

 

 

이런 결과 때문에 실제 훈련에 필요한 고유 차원을 잘 건들면 굳이 풀 파인튜닝하지 않아도 전이 학습을 잘 할 수 있지 않을까 생각할 수 있다.  LoRA 논문은 이런 점에서 영감을 받아서 모델 적응 시 발생하는 가중치 행렬 변화 또한 낮은 Intrinsic rank을 가진다고 가정하고 Low-Rank Adaptation(LoRA)을 제안한다.cf. 전체 가중치 행렬이 10x10이라고 하자. 이 중에 실제 훈련에 쓰이는 중요한 부분은 3x3 정도의 즉 Rank <= 3의 낮은 Intrinsic rank을 갖는다 가정한 것이다. 

 

  • LoRA 개요

 LoRA는 사전학습된 weight는 고정한 채, 모델 적응 동안 dense layer의 '변화량'을 랭크 분해 행렬로 간접적으로 최적화함으로써 일부 dense layer를 학습할 수 있게 한다.  

cf1. W를 뭐 LU 분해 뭐 이런거 써서 진짜 분해하지는 않더라..
cf2. 변화량이라고 그래서 미분같은거 하나? 했는데, 그냥 뭔가 더하는 느낌이라 변화량이라고 하는 것 같다.
cf3. dense layer = FC layer -> 원래 있던 모델 가중치를 말한다.. 이거의 변화량을 뒤에서 정의할 것이다.

 

 제시한 방법론으로 GPT-3 175B을 파인튜닝하여 전체 랭크 d=12,288인 경우에도 매우 작은 랭크 r=1 또는 2로도 충분하다는 것을 보여줌으로써, LoRA가 저장공간과 계산 비용 측면에서 효율적임을 입증한다.

 


2. Problem Statement

이 파트는 LoRA를 왜 만들었는지에 대한 문제 정의이며, 기존 full fine-tuning 방식의 비효율성과 LoRA가 이를 어떻게 개선하는지를 수식적으로 공식화하는 첫 부분이다.

 

  • Language model Fine tuning

 해당 논문에서 제안한 방식은 general한 parameter-efficient tuning 기법이지만, 해당 연구에서는 언어 모델링 즉 언어 생성에 대한 걸 예시로 삼는다.

 

 언어 모델링은 task-specific 프롬프트가 주어졌을 때 조건부 확률을 최대화하는 문제에 중점을 둔다. 

 더 자세하게 말하면 context-target 쌍의 학습 데이터 Z를 갖고, 다음에 나와야할 target 토큰의 확률이 최대가 되도록 파라미터 Φ를 학습시킬 것이다. 이 때 사전 학습된 가중치 Φ0를 들고와 Full-finetuning을 하는 건 gradient descent로 반복 최적화하는 것이므로 다음과 같이 표현할 수 있다. 

gradient descent

 Full fine-tuning의 주요 단점 중 하나는 전체 파라미터 와 같은 크기의 변화량 △Φ를 새롭게 학습시켜야하는 것이다. 이 때 파라미터 수가 매우 많은 모델의 경우, 여러 fine-tuned 인스턴스를 저장하고 배포하는 것은 매우 어렵거나 사실상 불가능하다.

 해당 연구에서 제안하는 LoRA는 위 Full fine-tuning과 달리, task-specific한 변화량 ΔΦ훨씬 더 작은 파라미터 집합 Θ로 인코딩한다. 즉, 최적화 대상의 크기를 매우 매우 줄이는 것이다.

 

뒤에서 이 변화량을 어떻게 인코딩하는지에 대한 방법론이 소개되며, 결과적으로 GPT-3 같은 대형 모델에서도 전체 파라미터의 0.01% 수준의 작은 파라미터 집합만으로도 변화량을 학습할 수 있음을 보인다.

 


3. Aren't Existing Solutions Good Enough?

 해당 섹션에서는 기존의 두 가지 PEFT 방식들의 한계에 대해 언급한다.

 

  • Adapter 기반 PEFT ((1)) # 레이어를 연장·삽입하고, 연장한 부분만 파인 튜닝하자....

 Adapter는 많은 PEFT 기반 기법의 핵심 구성 요소이다. 이 방법은 트랜스포머 안에 원래의 모듈식 구성 요소를 추가하고, 이 요소들만 Fine-tuning하면서 모델의 전체 파라미터를 건드리지 않고도 모델 적응이 가능하다는 결과를 보인다. 

Transformer 블록들 두 개의 adapter를 삽입하거나, 각 블록에 하나의 adapter + LayerNorm을 사용하는 등 다양한 설계가 존재한다.

 

 문제점으로 다음과 같은 두 가지를 생각할 수 있다.

 i) Adapter layer가 추가적으로 계산을 필요하게 되는데, 이때 블록 내부에서 순차적 연산이 병렬성을 저해하게 된다.
-> 이는 특히 Inference 상황 중 batch가 1개 올라올 때  명확한 latency 증가가 발생한다.

ii) 모델을 GPU에 분산할 때 추가된 depth를 고려하는 동기화 연산이 필요해진다.

 

 

 

cf. 근데 LoRA나 Adapter나… 적은 수의 파라미터 추가하고 그것만 업데이트하는 건 같은 거 아닌가?

→ Adapter 기반 PEFT 기법들은 모델의 레이어가 추가된다.
→ 하지만 LoRA는 모델의 층이 추가되는 것이 아니다. 그렇기 때문에 Inference Latency가 발생하지 않는다.

 

 

  • Prompt tuning 기반 PEFT ((2))

 

 Prompt tuning 기반 PEFT 중 Prefix tuining을 예시로 보자. 모델 파라미터를 건드리지 않고 입력 앞에 학습 가능한 벡터를 삽입해 task 적응을 유도하는 방식이다. 이건 약간 어떻게 생각하면 좋냐면... 우리가 사용하는 프롬프트 앞에 학습 가능한 더미 프롬프트를 두고, 이 더미 프롬프트를 잘 조작해서 그 테스크에서 딱 잘 작동하도록 하는 트리거를 만들자!! 라는 느낌이다.

 

 다음과 같이 세 가지 문제점이 존재한다.

i) 실제로는 최적화가 어렵다.

ii) 학습 파라미터 수가 증가해도 성능이  일관되게 향상되지 않는 비단조적 경향을 보인다.

ii) prefix가 시퀀스 길이의 일부를 차지하므로 downstream task에 사용할 수 있는 시퀀스 길이가 줄어들게 되고, 이로 인해 성능 저하가 발생할 수 있다. 

 


4. Method

 LoRA의 설계와 실제적인 장점에 대해 알아볼 것이다. 2장에서도 말했지만 LoRA는 task-specific한 파라미터 변화량 ΔΦ을 훨씬 더 작은 파라미터 집합 Θ로 인코딩하여 여기만 학습하자는 것이다. 이 인코딩 방법에 대해 알아보자. 해당 방법론은 ransformer에만 국한된 아이디어가 아니며, FC layer가 있는 모든 모델에 일반화 가능하다.

cf. FC Layer = Dense Layer

 

 

4-1. Low-Rank-Parametrized Update Matrices

  • Dense layer의 weight 변화는 저차원 rank-deficient일 수 있다

 신경망은 일반적으로 다수의 FC Layer로 구성되며, 이들의 weight 행렬은 full-rank 구조를 가진다. 그러나 모델을 특정 작업에 적응시키는 과정에서 실제로 학습에 기여하는 파라미터 변화는 저차원(rank-deficient) 공간에 제한되어 있는 경우가 많다. 이에 따라 LoRA는 이러한 유효한 변화량만을 저랭크 행렬로 근사해 학습함으로써, 전체 weight를 직접 업데이트하지 않고도 효율적이고 표현력 있는 적응을 가능하게 한다.

cf. 저랭크에 존재하는걸 위 인트로에서 논문 실험 결과를 통해 보였다.

r은 d, k보다 매우 작게 준다

 위와 같이 근사할 수 있으며 학습 동안 W₀는 고정되며 gradient 업데이트를 받지 않고, A와 B만 학습 가능한 파라미터를 가진다.

cf. 왜 이걸 B, A로 쪼개는거지? ******* 랭크 제한 ********
 예를 들어, 원래 FC 레이어의 weight 행렬이 10×10 크기라고 해보자. 일반적인 fine-tuning에서는 이 전체 weight를 업데이트하며 학습한다. 이는 곧 weight에 변화량 ΔW을 더해가는 과정이라고 볼 수 있다.

 그런데 이 변화량도 10×10짜리 행렬이므로, 그대로 학습하면 결국 100개를 학습하는 셈이 된다. LoRA는 여기서 더 나아가, 이 변화량을 두 개의 작은 저차원 행렬의 곱으로 표현한다. 예를 들어 10×2, 2×10 크기의 행렬 두 개를 곱하면 10×10 크기의 변화량이 만들어진다. -> 여기서 랭크 성질에 의해 BA 행렬은 Rank가 2보다 작거나 같을 것이다.
-> B, A 행렬 곱으로 변화량을 쪼갠 이유는 즉 변화량이 Low Rank를 갖도록 제약을 주는 것이다.

이 방식이 중요한 이유는 다음과 같다. 우선, weight 행렬에 변화를 주려면 기존 행렬과 같은 크기를 유지해야 한다. 행렬 덧셈은 크기가 같아야 가능하기 때문이다. 하지만 LoRA는 전체 크기는 유지하면서도, 변화가 일어나는 방향은 제한한다. 즉, weight 변화가 일어나는 공간을 아주 제한된 저차원 공간으로 유도하는 것이다.
이렇게 하면 실제로 학습되는 파라미터 수는 전체 weight보다 훨씬 작아진다. 예를 들어 위 예시에서는 10×2 = 20, 2×10 = 20, 총 40개의 파라미터만 학습하면 된다. 기존의 100개보다 훨씬 적다.


 즉, LoRA는 변화량이 실제로는 저차원 공간 안에 있다는 가정을 바탕으로, 전체 파라미터를 학습하는 대신 저랭크 공간에서의 구조적 제약을 이용해 학습 효율성과 일반화 성능을 확보하는 방식이다. 결과적으로 학습 대상 파라미터 수가 크게 줄어든다.

 

 

  • LoRA Fine tuning 

각각 행렬곱해서 "가중합"

1) A 행렬을 랜덤 가우시안 분포로 초기화하고, B 행렬은 0으로 초기화한다. 이 때문에 학습 초기에 ΔW는 0이다.

 

2) 인풋이 들어왔을 때 ΔW 즉 BA에 곱해진 아웃풋을 스케일을 준다. # 가중합

-> α / r 로 스케일링하게되며, 이를 적절히 조정하는 것은 learning rate를 조정하는 것과 유사하다. 

-> 실험적으로 처음 시도한 r 값에 대해 적당한 α를 정해두면 이걸 계속 써도 된다고 논문은 말한다. 

ex. r = 2이고 이 때 α = 1로 두는게 성능이 좋았다면, r =4로 올렸을 때도  α = 1로 두는게 일반적으로 좋다는 것이다.

 

3) 아웃풋이 Task에 맞도록 B, A행렬을 학습한다. 이 때 기존 가중치는 건들지 않는다.

 #### LoRA는 weight 업데이트 자체를 r 저랭크 공간에 존재한다고 보고, 아예 그걸 low-rank 행렬 BA로 근사한다.  #####

뭐 요약하면 변화량을 저랭크 행렬 곱 BA로 표현해서 변화량 행렬 자체가 저차원에 위치하도록 제한하고, 기존 가중치와 BA 텀을 지나온 아웃풋을 가중합해서 쓴다 ㅇㅇ.. 이거다. 이렇게 나온 아웃풋이 테스크에 맞도록 기존 가중치는 건들지 않고 B, A 행렬을 학습시킬 것이다.

 

 위 방법론으로 인해 전체 파라미터를 전부 학습하지 않아도 모델을 적응시킬 수 있게 되었다. 이게 바로 메인 장점이다. 이외에도 다음과 같은 장점이 존재한다.

 

  • LoRA 장점: A Generalization of Full Fine-tuning # 확장 가능

 다른 PEFT 방법들과의 차이점은 LoRA는 확장가능하다는 점이 있다. Adapter는 파라미터 수를 늘리면 그냥 MLP 레이어가 되고, 프리픽스 방식은 Context window 제한에 의해 긴 입력 시퀀스를 처리할 수 없게 된다. 하지만 LoRA는 r을 기존 가중치 행렬의 랭크까지 증가시키면 Full fine-tuning과 비슷해진다. 그렇기에 LoRA는 Full fine-tuning의 일반화라고 할 수 있다.

 

 

  • LoRA 장점: No Additional Inference Latency # 추론 지연 X

 모델의 Layer가 커지지 않으며, 학습에만 작은 변화량을 이용하고, 실제 배포 시에는 기존 weight에 BA를 더한 형태로 저장하면 되므로 추론 지연이 전혀 생기지 않는다.

 

 


4-2. Applying LoRA To Transformer

  • Practical Benefits

 LoRA는 Dense Layer가 있는 어떤 모델에도 적용 가능하지만, 논문에서는 Transformer의 Attention 부분에 LoRA를 적용한다. Transformer의 Self-Attention에는 총 네 개의 weight 행렬 Wq, Wk, Wv, Wo이 있으며, 이 중에서 Wq, Wv에만 LoRA를 적용하는 것으로 제한해 실험을 진행한다. 이는 실용성과 파라미터 효율성을 고려한 것이다. MLP 모듈은 아예 학습 대상에서 제외된다.

 

 그 결과, 메모리와 저장 공간 사용량이 획기적으로 줄어든다. 예를 들어 GPT-3 175B 모델에 LoRA를 적용할 경우, 전체 VRAM 사용량을 약 1.2TB에서 350GB로 줄일 수 있고, 체크포인트 크기도 350GB에서 35MB로 1만 배 줄일 수 있다. 이는 BA만 학습하고 저장하면 되기 때문이다. 또한 압축된 파라미터 BA 만 스왑하면 되므로, 배포 후에도 빠르게 task를 전환할 수 있다.

cf. r=4, Wq/Wv만 학습할 때)

 

 또한 대부분의 파라미터가 고정되어 있으므로, 전체 학습에 필요한 연산량도 줄어들어 학습 속도 역시 향상된다. 실제로 GPT-3 175B에서 full fine-tuning 대비 약 25%의 속도 개선이 관찰되었다.

1) 학습 GPU VRAM 감소
2) 체크포인트 저장 크기 감소
3) 학습 속도 향상

 

  • Limitations

 물론 한계도 존재한다. 예를 들어 inference latency를 줄이기 위해 BA를 W에 합쳐버리면, 서로 다른 A, B를 사용하는 여러 task를 하나의 배치로 묶어 학습하는 것이 어렵다. 하지만 latency가 중요하지 않은 경우에는 LoRA module을 동적으로 선택하는 방식으로 유연하게 적용할 수 있다.

cf. B, A 보존안하고 기존 가중치랑 그냥 다 합쳐버리면 다른 Task로 갈 때 힘들다는 것이다. 

 

 


5. Expirical Experiments

 LoRA는 적은 수의 학습 가능한 파라미터로도 Full Fine-Tuning에 준하는 성능을 보임. 특히 RoBERTa large에서는 Full Fine-Tuning과 거의 동일하거나 더 나은 성능을 기록.

 

LoRA는 BLEU, ROUGE, METEOR, CIDEr 등 모든 NLG 지표에서 기존 Adapter 방식들보다 높은 성능을 보임. 학습 파라미터 수는 극히 적고, 성능은 Full Fine-Tuning보다 우수하거나 비슷함.

 

WikiSQL 논리 폼 정확도, MNLI-matched NLI 정확도, SAMSum 요약 성능

  LoRA는 Full Fine-Tuning보다 적은 파라미터로 모든 Task에서 동등하거나 더 나은 성능 달성. 특히 SAMSum에서는 ROUGE-1/2/L 지표에서 모든 방법 중 최고 성능을 기록.

 

LoRA는 파라미터 수를 늘릴수록 안정적으로 성능이 상승. 풀파인튜닝과 비슷해지기 때문임.

반면 Prefix 계열 방식은 특정 임계점(r=256 등) 이후 성능 하락 → 분포 왜곡 때문으로 추정됨

 

 


Conclusion and Future Work

 

  • LoRA는 적은 파라미터로도 높은 성능 유지 가능하며, 빠른 task switching에 적합

 

  • 향후 연구 방향:
    1. LoRA와 다른 PEFT 기법의 결합
    2. fine-tuning의 근본 메커니즘 분석
    3. 어떤 layer에 LoRA를 적용할지에 대한 이론적 기준 개발
    4. W 자체의 저랭크성 여부 분석