현대 NLP 응용은 하나의 대규모 사전학습(pre-trained) 언어모델을 다양한 다운스트림 과제에 맞춰 fine-tuning하는 방식을 채택합니다.
하지만 fine-tuning은 모델의 모든 파라미터를 업데이트하므로, 과제별로 모델 전체를 저장·배포해야 해 비용 및 관리 측면에서 비효율적이며, GPT-3(175B)와 같은 극대화된 모델에서는 현실적인 장애가 됩니다.
그니까 정리하면,
범용 덱스트로 미리 커다란 모델 학습 -> 각 모델에 맞춰 추가 학습할 때, 원래 학습된 모델의 모든 파라미터를 그 도메인 데이터에 맞춰 파인튜닝 진행
여기서 문제 ! 모델 크기가 수십억 ~ 수백억 파라미터이다보니, 파인튜닝하다 모델 전체를 새로 저장하고 관리하는 데에 문제가 생김
기존 파라미터 효율적 적응 기법의 한계
Adapter 삽입: 과제별 작은 모듈만 학습하지만, 네트워크 깊이를 늘려 추론 시 추가 지연(latency)이 발생합니다.
Prompt/Prefix 튜닝: 소수의 토큰만 학습하지만, 시퀀스 길이가 줄어들어 표현력이 제한되고,
기타 저파라미터 학습 기법: full fine-tuning 성능에 근접하지 못하는 경우가 많아 “효율”과 “품질” 간 트레이드오프가 존재합니다.
LoRA 제안 동기
선행 연구(예: Li et al. 2018; Aghajanyan et al. 2020)는 과대파라미터화된 모델이 실제로는 낮은 차원(intrinsic dimension) 위에서 동작함을 보여주었습니다.
본 논문은 “적응(adaptation) 중 모델 가중치 변화분(∆W) 역시 저(低)랭크 구조를 가질 것”이라 가정하고, 이를 효율적으로 학습하는 Low-Rank Adaptation (LoRA) 기법을 제안합니다.
LoRA 핵심 아이디어
사전학습된 가중치 W0W_0W0는 고정(frozen)하고, 모델 업데이트 ΔW\Delta WΔW를 두 개의 저랭크 행렬 B∈Rd×rB \in \mathbb{R}^{d\times r}B∈Rd×r, A∈Rr×kA \in \mathbb{R}^{r\times k}A∈Rr×k의 곱으로 표현:ΔW=B A,r≪min(d,k) \Delta W = B\,A,\quad r \ll \min(d,k)ΔW=BA,r≪min(d,k)
초기화: B=0B=0B=0, A∼N(0,σ2)A\sim\mathcal{N}(0,\sigma^2)A∼N(0,σ2)로 설정해 학습 초기에 ΔW=0\Delta W=0ΔW=0이 되도록 함.
순전파 시:h=W0x+ΔW x=W0x+B (Ax) h = W_0 x + \Delta W\,x = W_0 x + B\,(A x)h=W0x+ΔWx=W0x+B(Ax)
과제 전환 시 A,BA,BA,B만 교체하면 되어 저장·로드 비용이 극히 작고, 배포 시 W0+BAW_0 + BAW0+BA로 병합(merge)해 추론 지연 없이 사용할 수 있습니다.
LoRA의 주요 장점
극소수 파라미터 학습: 전체 파라미터의 0.01%∼1%만 최적화
저장 공간 절감: 과제별 모듈(A,B)만 저장 → 디스크 사용량·전송 비용 감소
추론 효율 유지: 학습된 저랭크 행렬을 사전학습 가중치에 병합하여 추가 지연 없이 사용
학습 자원 절감: adaptive optimizer 사용 시 최적화해야 할 파라미터가 작아 GPU 메모리·연산량 최대 3배 절감
기타 기법과의 병행성: prefix-tuning 등 여타 parameter-efficient 방법과 결합 가능