LoRA 논문 리뷰입니다.

논문 : LoRA: Low-Rank Adaptation of Large Language Models
저자 : Edward J. Hu, Yelong Shen, Phillip Wallis, Zeyuan Allen-Zhu, Yuanzhi Li, Shean Wang, Lu Wang, Weizhu Chen
[1] Introduction
자연어 처리(NLP) 분야에서는 하나의 대규모 언어 모델을 다양한 하위 태스크에 적용하기 위해 파인튜닝(fine-tuning)을 수행하는 것이 일반적입니다.
하지만 최근처럼 GPT-3처럼 수십억~수천억 개의 파라미터를 가진 모델이 등장하면서, 모든 파라미터를 업데이트하는 기존 방식은 비효율적이고, 실제 운영 환경에서 부담이 큽니다.

파인튜닝의 비용 문제
기존 파인튜닝 방식은 다음과 같은 문제를 안고 있습니다.
- 새로운 태스크에 맞게 전체 모델을 다시 학습하므로, 모델 하나당 수십~수백 GB의 저장 공간이 추가로 필요
- 여러 태스크를 동시에 운영해야 하는 경우, 매번 전체 모델을 불러오거나 저장하는 비용이 큼
- 특히 GPT-3(175B) 같은 모델에서는 단순한 실험조차 고가의 하드웨어와 대규모 자원이 필요
해결 시도와 기존 접근의 한계
이러한 부담을 줄이기 위해 기존 연구에서는 일부 파라미터만 학습하거나 외부 모듈만 학습하는 방법을 제안해 왔습니다.
대표적으로 Adapter, Prefix-Tuning, Prompt-Tuning 등이 있습니다.
하지만 이들 방법은 다음과 같은 한계가 존재합니다:
- 모델의 깊이를 늘리거나 입력 공간을 변형하여 추론 속도가 느려지거나 기존 fine-tuning 방식과 비교해 성능 손실이 발생하는 경우가 많았음
- 게다가 일부 방식은 시퀀스 길이를 줄이는 부작용도 동반
LoRA: 저랭크 기반의 새로운 적응 방식
LoRA(Low-Rank Adaptation)는 이 문제를 해결하기 위한 새로운 관점에서 출발합니다.
핵심 아이디어는 다음과 같습니다:
"모델 파라미터 전체를 직접 바꾸는 대신, 변경된 부분만 저랭크 행렬로 근사하여 학습한다."
즉, 사전학습된 가중치는 고정(frozen)된 상태로 유지하고, 그 변화량을 표현하는 저차원의 행렬(A와 B)만 학습하는 구조입니다.
이 방식은 수학적으로 효율적이고, 저장 공간도 매우 작게 유지할 수 있습니다.
예를 들어, GPT-3에서 12,288차원의 파라미터 공간도 랭크 1~2의 행렬만으로 적절히 표현이 가능하다는 것이 논문에서 실험적으로 증명되었습니다.
LoRA의 주요 장점
1. 저장 효율성
- 동일한 사전학습 모델을 여러 태스크에 공유하고, LoRA 모듈(A, B)만 교체하면 됨
- 수십 MB 단위로 각 태스크를 분리 저장할 수 있어 운영 효율이 매우 높음
2. 학습 효율성
- 대부분의 파라미터는 고정되어 있기 때문에, 학습에 필요한 메모리와 연산량이 3배 이상 감소
- 특히 Adam 등의 옵티마이저를 사용할 때, 옵티마이저 상태를 거의 유지하지 않아도 됨으로써 하드웨어 장벽이 낮아짐
3. 추론 속도 유지
- 추론 시에는 학습된 A와 B를 원래 파라미터에 병합할 수 있으므로, 추론 속도나 시퀀스 길이에 영향을 주지 않음
4. 기존 기법과의 호환성
- LoRA는 Prefix-Tuning, Adapter 등 다른 PEFT 기법과도 결합이 가능하여 확장성이 뛰어남
[2] 문제 정의
기존 파인튜닝 방식에서는 다음과 같은 절차로 모델을 학습합니다.
1. 사전학습된 파라미터 $Φ_0 $를 초기값으로 사용
2. 각 down stream task 마다 전체 파라미터를 업데이트하여 $Φ_0+ΔΦ$로 만듦
3. 아래의 조건부 언어 모델링 목적 함수를 최적화

하지만 위의 목적 함수를 최적화하는 방식에는 치명적인 단점이 존재하는데,
1. Down stream task 하나당 새로운 $ΔΦ$를 학습해야 함
2. $ΔΦ$의 차원은 원래 모델 크기인 $|Φ_0|$와 동일
3. GPT-3의 경우 작업당 수십~수백 GB의 저장 공간이 필요해 여러 작업을 병렬로 운영하거나 배포하는 것이 거의 불가능
따라서, LoRA는 위 문제를 해결하기 위해 기존 파인튜닝을 다음과 같이 재구성합니다.
1. 모델 전체를 업데이트하는 대신, 파라미터 변화량 $ΔΦ$를 작은 저차원 파라미터 $Θ$로 재표현
2. 즉 $ΔΦ = ΔΦ(Θ)$로 두고, 학습 대상은 전체 파라미터가 아닌 $Θ$가 됨
3. 최적화 목표는 다음과 같이 변경

이를 통해 LoRA는 학습 대상 파라미터인 $Θ$의 크기를 전체 모델의 0.01% 수준까지 줄일 수 있고 저장 공간, 학습 자원, 배포 효율성 측면에서 이점을 가집니다.
[3] 기존 방법론
1) Adapter 방식
어댑터란, Transformer 블록 사이에 작은 병목 (bottleneck) 구조의 네트워크를 삽입해, 원래 모델은 고정한 채로 어댑터만 학습하는 방식입니다.
적은 파라미터만으로 성능 향상을 기대할 수 있고, 여러 태스크 간 공유가 용이하다는 장점이 있습니다.
그러나 어댑터 방식은 다음과 같은 추론 시간 증가 문제를 동반합니다. (Inference Latency)
- 어댑터는 Transformer 블록 사이에 새로운 연산 경로를 추가하므로, 연산량은 적더라도 순차적인 처리 단계가 추가됨
- 특히 실시간 추론 (online inference) 상황에서는 배치 크기가 작고 병렬화가 제한되기에 단순한 구조 변화도 latency로 연결됨
- 아래의 실험 결과 작은 어댑터 구조만 추가해도 단일 GPU 환경에서 추론시간 지연이 뚜렷하게 드러남
즉, 어댑터 방식은 학습 효율성 측면에서는 좋을 수 있으나, 실제 배포나 운영 환경에서는 추론속도 저하 문제를 야기할 수 있습니다.

2) Prefix Tuning
프롬프트 튜닝 (prefix tuning)은 기존 입력 앞에 학습 가능한 가상 토큰인 prefix를 삽입해 모델의 응답을 조절하는 방식입니다.
모델 본체는 고정하고, 일부 입력값만 학습함으로써 메모리 효율성이 뛰어난 기법이라고 알려져 있습니다.
하지만 프롬프트 튜닝도 다음과 같은 단점이 존재합니다.
- 최적화가 어렵고 민감함
- 학습가능한 파라미터 수가 증가해도 성능이 단조롭게 향상되지 않는(non-monotonic) 현상을 보임
- 실질적으로 모델 성능 개선에 있어 불확실성을 증가시킴
- 시퀀스 길이 손실 문제를 야기함
- 프롬프트 토큰이 입력 앞에 추가되면 모델의 총 입력 길이 한도 내에서 실제 Task 입력 길이는 줄어들게 됨
- 이는 특히 긴 문서 요약, 대화, MRC와 같은 Task에서 성능 저하를 초래할 수 있음
즉, 프롬프트 튜닝 방식은 이론적으로는 좋을 수 있으나, 최적화 난이도 + 입력 길이 감소의 현실적인 제약이 존재합니다.
[4] LoRA Methods
위에서도 언급했듯이 LoRA의 핵심 개념은 low lank 행렬 분해를 통한 파라미터 업데이트입니다.
Dense Layer의 업데이트를 low lank 행렬로 근사하는 개념인데, 구체적으로는 다음과 같이 파라미터를 재구성합니다.
- 기존 가중치 행렬 $W_0∈ R^{d * k}$를 고정
- 여기에 학습 가능한 low lank 행렬 $ ΔW = BA$를 추가
- $B ∈ R^{d*r}, A ∈ R^{r*k}$, 단 $r << min(d,k)$
- forward pass : $h = W_0x + BAx$
즉, 기존 가중치는 학습하지 않고, 소형 행렬 두 개만 학습함으로써 파라미터 수와 메모리 사용량을 획기적으로 감소시킵니다.
학습 초기에 B는 0, A는 무작위로 초기화되며 학습 도중 $α/r$ 스케일링으로 안정적 수렴을 도모합니다.
이러한 LoRA는 학습 가능한 파라미터 수를 늘리기 위해 rank $r$을 충분히 높이면, full fine-tuning 과 동일한 표현력을 가질 수 있어 가변성과 확장성 측면에서도 매우 우수합니다.
그리고 LoRA는 추가적인 레이어를 삽입하지 않기 때문에, 추론 시에는 다음과 같이 처리할 수 있습니다.
$W = W_0 + BA$
이 연산은 미리 계산해서 저장할 수 있으므로 추론 속도는 full fine-tuning과 동일합니다.
다른 Task로 전환할 때는 $BA$만 교체하면 되므로 빠른 Task 전환도 가능합니다.
저장 공간과 메모리 오버헤드도 거의 나타나지 않는다고 합니다.
추가로, LoRA는 이론적으로 모든 Dense Layer에 적용할 수 있지만, 본 논문에서는 다음과 같이 제한해 효율을 극대화했습니다.
- 적용 대상 : Transformer 내 self-attention의 query, key, value, output 행렬 ($W_q, W_k, W_v, W_o$)
- 적용 제외 : MLP 모듈, LayerNorm, Bias (단순성과 효율성을 위해 제외)
위와 같이 구성해도 대부분의 성능 개선 효과를 얻을 수 있으며 추후 LayerNorm이나 MLP까지 확장할 수 있습니다.
[5] Experiments & Results
LoRA 논문에서는 다음과 같은 모델과 Task를 통해 LoRA의 효과를 검증하였습니다.
- 실험에 사용한 사전학습 모델
- RoBERTa Base (125M)
- RoBERTa Large (355M)
- DeBERTa XXL (1.5B)
- GPT-2 Medium (355M)
- GPT-2 Large (774M)
- GPT-3 (175B)
- Benchmark 및 Task
- MNLI, SST-2, MRPC, CoLA, QNLI, QQP, RTE, STS-B 등 다양한 자연어 이해 (NLU) Task
- E2E NLG Challenge 등 텍스트 생성 Task
- WikiSQL 등 자연어 -> SQL 변환 Task
- SAMSum 등 대화 요약 Task
그 외 모든 실험은 동일한 batch size, sequence length 128로 고정하여 실행되었으며
실험에는 V100 GPU가 사용되었다고 합니다.
1) RoBERTa, DeBERTa 실험

- RoBERTa Base (125M) 실험 결과 요약
- LoRA는 전체 파라미터의 0.24%만 학습하면서도 Full fine-tuning에 가까운 성능을 기록함
- Full fine-tuning (86.4) vs LoRA (85.7)
- RoBERTa Large (355M) 실험 결과 요약
- 동일한 세팅 기준으로 Adapter와 동일한 성능을 보이나, LoRA는 더 단순한 구조
- Full fine-tuning (88.9) vs Adapter (88.6) vs LoRA (88.6)
- DeBERTa XXL (1.5B) 실험 결과 요약
- 1.5B 파라미터 중 약 0.3%만 학습하면서도 거의 동일한 성능을 기록, 효율성과 확장성 측면에서 우수
- Full fine-tuning (91.9) vs LoRA (91.3)
2) GPT-2 Medium / Large 실험

- GPT-2 Medium (355M) 실험 결과 요약
- LoRA는 학습 파라미터 수를 대폭 줄였음에도 Full fine-tuning 보다 BLEU, ROUGE-L, CIDEr 의 모든 벤치마크에서 높은 점수를 기록
- 특히, Adapter 방식보다도 더 높은 생성 품질을 보임
- GPT-2 Large (774M) 실험 결과 요약
- GPT-2 Large 실험에서도 가장 높은 BLEU 점수와 ROUGE-L 점수를 기록
- Adapter, PreLayer 방식과 비교해 우수한 자연어 생성 품질을 보임
3) GPT-3 실험


- GPT-3 실험 결과 요약
- LoRA는 GPT-3 실험에서도 Full fine-tuning 보다 적은 파라미터 수로 더 높은 성능을 기록
- 뿐만 아니라 Adapter, PreLayer 등 다른 방식보다도 높은 성능을 기록
- 우측 그래프 설명
- LoRA의 경우 파라미터 수가 증가함에 따라 성능이 점진적으로 향상되는 경향을 보임
- 다른 방식(Prefix, Adapter 등)들은 일정 파라미터 이상이 되면 오히려 성능이 하락하는 문제를 보임
- 이는 입력 분포가 사전학습 분포와 달라지기 때문일 것이라고 언급
[6] Understanding the Low Rank Updates
LoRA는 위에서 계속 언급하고 있지만 굉장히 효율적으로 설계된 파인튜닝 기법입니다.
특히 전체 파라미터의 1/10000 수준만 학습해도 성능 저하 없이 우수한 결과를 보이는 점이 주목되는데,
이 부분은 이러한 LoRA에 대해 좀 더 자세한 실증적인 분석 파트입니다.
1) 어떤 가중치 행렬에 LoRA를 적용해야 하는지

Transformer 구조에서 LoRA는 Self-Attention 모듈 내부의 가중치 행렬에만 적용합니다.
특히 Query, Key, Value, Output 행렬 중 어느 조합에 적용하느냐에 따라 성능이 달라질 수 있습니다.
실험 결과 $W_q$와 $W_v$를 동시에 학습했을 때 가장 좋은 결과를 얻었습니다.
반면 $W_q$나 $W_k$만 단독으로 학습하면 성능이 크게 떨어졌습니다.
동일한 학습 파라미터에서는 하나의 행렬을 높은 랭크로 학습하는 것보다, 여러 행렬을 낮은 랭크로 나누어 학습하는 것이 더 효과적이라고 합니다.
2) LoRA의 최적 Rank는 얼마인지

LoRA의 핵심 하이퍼파라미터 중 하나는 rank $r$입니다.
이는 학습할 low rank 행렬의 차원을 의미하고, r이 작을수록 학습해야 할 파라미터 수가 적어집니다.
실험 결과 $r=1$만으로도 WikiSQL과 MNLI 데이터셋에서 매우 우수한 성능을 달성하였습니다.
특히 $W_q$와 $W_v$를 함께 학습했을 때에는 극단적으로 낮은 rank로도 충분히 정보를 학습할 수 있었습니다.
반면, $W_q$를 단독으로 학습할 경우에는 더 높은 rank를 필요로 했습니다.
3) Rank 간의 하위공간 유사도 분석
본 논문에서는 rank가 다른 두 LoRA 행렬 ($r=8$ vs $r=64$)이 얼마나 비슷한 방향성을 가지고 있는지를 분석하기 위해 SVD를 적용했습니다.
SVD를 통해 얻은 우직교 행렬 (U)을 기반으로 두 rank 간 하위공간이 얼마나 겹치는지를 정규화된 하위공간 유사도 ($ϕ$)값으로 측정했습니다.
* 해당 유사도는 0 ~ 1 사이의 값을 가지며, 1에 가까울수록 두 하위공간이 유사함을 의미합니다.
* 여기서 하위공간이란 두 행렬이 포함하고 있는 벡터 공간을 의미하며, 모델이 어떤 feature나 의미를 "어떤 방향으로" 학습했는지를 나타내는 개념입니다.
LoRA는 기존 모델의 weight 행렬에 대해 $ΔW$라는 작은 low-rank 행렬을 추가로 학습합니다.
이 때 $ΔW$가 어떤 방향으로 정보를 학습했는지, rank 또는 실험 조건이 달라져도 비슷한 방향을 학습하는지를 확인하는 것이 LoRA가 진짜 의미있는 정보를 담고 있는지 판단하는 기준이 됩니다.
즉, 두 rank 간 학습한 하위공간이 비슷하다면, LoRA가 일관된 방식으로 중요한 정보를 학습했다는 증거가 됩니다.

위 설명에 대한 실험 결과, 상위 1~2개의 singular vector는 두 rank 간 유사도가 0.5 이상으로 높은 편입니다.
하지만 그 외의 방향은 유사도가 급격히 떨어지며 추가적인 방향은 대부분 노이즈로 추정됩니다.
이를 통해, rank를 높여도 성능이 크게 향상되지 않음을 알 수 있고
모델이 실제로 유의미하게 활용하는 정보는 몇 개의 주요 방향에 집중되어 있으며 낮은 rank 만으로도 높은 성능을 낼 수 있다는 인사이트를 제공합니다.

다음은 동일한 rank 설정에서 서로 다른 random seed로 학습한 $ΔW_q$와 $ΔW_v$의 하위공간 유사도를 측정한 실험입니다.
실험 결과, $ΔW_q$는 $ΔW_v$보다 유사도가 높게 나타났으며, 이는 $ΔW_q$가 더 내재적인 구조임을 의미합니다.
비교를 위해 생성한 무작위 가우시안 행렬들은 거의 0에 가까운 유사도를 보여, LoRA가 단순한 노이즈가 아님을 추가로 증명합니다.
[7] Conclusions
- 등장 배경
- LLM 파인튜닝은 높은 비용과 메모리를 요구함
- 이를 보완하기 위해 Adapter, Prefix tuning 등 여러 방식이 고안되었지만 단점들이 존재
- 위와 같은 문제를 해결하기 위해 LoRA (Low-Rank Adaptation) 가 제안됨
- LoRA 방법론
- 기존 사전학습 모델 weight 행렬 $W$에 대해, 작은 크기의 행렬 $ΔW = A+B$ (여기서 A, B는 저랭크 행렬)를 추가해 조정
- 모델 구조를 바꾸지 않고 덧셈 연산만 추가되므로 속도에 영향 X
- Prefix 등 추가하지 않아 입력 길이에 영향 X
- 모델 본체는 고정하고 LoRA 파라미터만 교체하면 되므로 여러 Task 간 전환 용이성 ▲
- 실험 결과
- LoRA를 다양한 모델, Task에 적용하며 효율성을 입증
- 특히, GPT-3 모델에서 파라미터 수를 10,000배 이상 줄이면서도 성능 저하 없이 Task를 수행할 수 있음을 보임
- $W_q$, $W_v$와 같은 self-attention weight를 저랭크로 조정하는 것이 성능 향상에 효과적
- rank 값이 매우 낮아도 성능 유지 가능
'논문리뷰' 카테고리의 다른 글
| [논문리뷰] DPO 논문 리뷰 (11) | 2025.08.13 |
|---|---|
| [논문리뷰] Alpaca 논문 리뷰 (8) | 2025.07.26 |
| [논문리뷰] CoT 논문 리뷰 (11) | 2025.07.22 |
| [논문리뷰] ChinChilla 논문 리뷰 (6) | 2025.07.15 |
| [논문리뷰] RAG 논문 리뷰 (9) | 2025.06.30 |
| [논문리뷰] GAN 논문 리뷰 (0) | 2025.05.24 |
| [논문리뷰] VAE 논문 리뷰 (0) | 2025.02.17 |
| [논문리뷰] Mask R-CNN 논문 리뷰 (1) | 2025.02.17 |