LoRA의 작동 원리(행렬 분해)부터 QLoRA와의 차이, 실무에서 겪는 Rank/Alpha 설정 실패 사례까지 심층 분석합니다. 비용 효율적인 AI 커스터마이징 전략을 확인하세요.
당신의 GPU가 비명을 지르는 이유: OOM과의 전쟁
최신 Llama 3나 Mistral 모델을 다운로드 받아 Trainer.train()을 실행하자마자 CUDA out of memory라는 절망적인 에러 로그를 마주한 적이 있으실 겁니다. 수십 기가바이트(GB)에 달하는 거대 언어 모델(LLM)의 모든 파라미터를 업데이트(Full Fine-Tuning)하려면, 모델 크기의 수 배에 달하는 VRAM이 필요하기 때문입니다.
기업용 A100 GPU 클러스터가 없다면 포기해야 할까요? 바로 여기서 LoRA(Low-Rank Adaptation)가 등장합니다. LoRA는 단순한 ‘경량화’ 기술이 아닙니다. 거대한 댐의 수문을 전부 교체하는 대신, 작은 바이패스 밸브 하나만 달아서 물길을 바꾸는 전략입니다.
오늘은 LoRA가 어떻게 수천억 개의 파라미터를 단 1% 미만의 연산량으로 제어하는지, 그 수학적 원리와 실무 전략을 파헤칩니다.

LoRA 기술 분석: 3가지 핵심 요약
- 원리: 사전 학습된 모델의 가중치($W$)는 고정한 채, 변화량($\Delta W$)을 나타내는 두 개의 작은 저랭크 행렬($A, B$)만 학습시킵니다.
- 효용: 전체 파라미터의 0.1% ~ 1%만 학습하므로 VRAM 사용량이 획기적으로 줄고, 결과물(어댑터) 용량이 수십 MB 수준으로 작아집니다.
- 확장성: 베이스 모델 하나에 여러 개의 LoRA 어댑터를 갈아 끼우며 다중 페르소나 서비스를 운영할 수 있습니다.

작동 원리: 거인을 쪼개는 ‘행렬 분해’의 미학
LoRA의 핵심은 거대 모델의 변화량은 사실 랭크(Rank)가 낮다는 가설에서 출발합니다. 이를 수식으로 이해하면 LoRA의 본질이 보입니다.
$W = W0 + \Delta W = W0 + BA$
기존의 파인튜닝이 거대한 행렬 $W$ 전체를 갱신하는 것이라면, LoRA는 이를 $W_0$(고정된 원본 가중치)와 $BA$(학습 가능한 두 개의 작은 행렬)의 합으로 표현합니다.
- $W_0$ (Freeze): 원본 모델의 지식입니다. 절대 건드리지 않습니다. 따라서 역전파(Backpropagation) 시 이 부분에 대한 미분값을 저장할 필요가 없어 메모리가 절약됩니다.
- $B \times A$ (Train): $W$가 $d \times d$ 크기라면, $B$는 $d \times r$, $A$는 $r \times d$ 크기를 가집니다. 여기서 $r$(Rank)은 $d$보다 현저히 작은 수(예: 8, 16, 64)입니다.
비유하자면 이렇습니다: 두께 1,000페이지짜리 전공 서적($W_0$)을 수정해야 합니다. 책의 모든 페이지를 지우개로 지우고 다시 쓰는 것(Full Fine-Tuning)은 미친 짓입니다. 대신, 중요한 페이지에 투명한 포스트잇($BA$)을 붙여서 내용을 덧붙이는 것과 같습니다. 우리는 포스트잇에 적힌 내용만 학습하면 됩니다.

전략적 가치: 왜 ‘어댑터 경제’가 뜨는가?
기술적 효율성은 곧 비즈니스 경쟁력으로 직결됩니다. LoRA를 도입했을 때 얻을 수 있는 전략적 이점은 다음과 같습니다.
1. 스토리지 다이어트와 배포 혁신
70B 모델을 풀 파인튜닝하면 체크포인트마다 140GB가 넘는 파일이 생성됩니다. 반면, LoRA 어댑터는 100MB 내외입니다. 이는 하나의 베이스 모델을 띄워놓고, 사용자 요청에 따라 실시간으로 어댑터만 교체(Hot-Swapping)하는 아키텍처를 가능하게 합니다.
- 사용자 A: 법률 상담 봇 (LLaMA 3 + 법률 LoRA)
- 사용자 B: 코딩 도우미 (LLaMA 3 + 파이썬 LoRA)
2. 치명적 망각(Catastrophic Forgetting) 방지
모델 전체를 흔들어버리는 풀 파인튜닝은 종종 모델이 기존에 알고 있던 일반 상식을 까먹게 만듭니다. LoRA는 원본 가중치($W_0$)를 보존하므로, 모델의 기초 지능이 붕괴될 위험이 훨씬 적습니다.

현장에서 마주할 병목과 기술적 해법
이론은 완벽해 보이지만, 막상 peft 라이브러리를 돌려보면 예상치 못한 문제에 부딪힙니다. 제가 실제로 겪고 해결했던 주요 이슈들을 정리했습니다.
문제 1: “학습이 전혀 안 되는 것 같아요” (Underfitting)
가장 흔한 원인은 Rank($r$)를 너무 낮게 잡았거나, 타겟 모듈을 한정적으로 설정했기 때문입니다.
- 증상: Loss가 줄어들지 않거나, 결과물이 베이스 모델과 차이가 없음.
- 진단: 초기 LoRA 논문에서는
qproj,vproj(Attention 메커니즘의 일부)만 학습해도 충분하다고 했지만, 최신 LLM(Llama 3 등)에서는 모든 선형 레이어(All Linear Layers)를 타겟팅해야 성능이 제대로 나옵니다.
- 솔루션:
targetmodules = ["qproj", "kproj", "vproj", "oproj", "gateproj", "upproj", "downproj"]처럼 대상을 확대하세요. Rank도 8에서 시작해 64, 128까지 늘려보며 실험해야 합니다.
문제 2: Alpha 값의 함정 (Hyperparameter Chaos)
lora_alpha는 학습률(Learning Rate)과 유사한 스케일링 팩터입니다. 많은 분들이 이 값을 간과합니다.
- 원칙: 통상적으로 Alpha는 Rank의 2배로 설정하는 것이 국룰(Rule of Thumb)입니다. (예: $r=64$이면 $\alpha=128$).
- 주의: $r$을 높였는데 $\alpha$를 그대로 두면, 가중치 업데이트가 너무 미미하게 반영되어 학습 효과가 사라집니다. 스케일링 수식 $\frac{\alpha}{r}$을 기억하세요.
문제 3: 4-bit 양자화와 병행 시 속도 저하 (QLoRA)
메모리를 더 아끼려고 LLM 양자화 기술를 활용한 QLoRA(Quantized LoRA)를 쓰면, BitsAndBytes 라이브러리의 연산 오버헤드로 인해 학습 속도가 오히려 느려질 수 있습니다.
- 현실적 조언: VRAM이 허용한다면 4-bit QLoRA보다는 16-bit LoRA(bf16)가 학습 속도 면에서는 훨씬 빠릅니다. 시간과 메모리 중 무엇이 더 비싼 자원인지 판단해야 합니다.
이것만은 주의하세요: LoRA의 한계 (Devil’s Advocate)
LoRA가 만능열쇠는 아닙니다. 다음과 같은 상황에서는 AI 모델 파인튜닝을 고려해야 합니다.
- 지식 주입(Knowledge Injection)의 한계: LoRA는 주로 모델의 말투’, ‘형식’, ‘태스크 수행 방식을 바꾸는 데 탁월합니다. 전혀 새로운 언어를 가르치거나, 방대한 도메인 지식(예: 의학 서적 10만 권)을 통째로 주입하기에는 파라미터 용량이 부족할 수 있습니다.
- 추론 속도 오버헤드: 학습된 어댑터를 베이스 모델에 병합(Merge)하지 않고 별도로 로드해서 쓸 경우, 미세하지만 추론 시 추가적인 연산 비용이 발생합니다. 프로덕션 배포 시에는 반드시
mergeandunload()를 통해 가중치를 하나로 합치는 과정을 거쳐야 합니다.
기술의 진화: LoRA를 넘어 DoRA로
최근에는 LoRA의 성능을 뛰어넘는 DoRA(Weight-Decomposed Low-Rank Adaptation)가 주목받고 있습니다. DoRA는 가중치를 크기(Magnitude)와 방향(Direction)으로 분리하여 학습함으로써, 풀 파인튜닝에 더 가까운 성능을 내면서도 LoRA의 효율성을 유지합니다. 이제 막 LoRA에 익숙해지셨다면, 다음 단계로 DoRA 논문을 일독해보시길 권합니다.
LoRA는 이제 선택이 아닌 AI 엔지니어링의 기본 소양입니다. 지금 바로 Hugging Face를 열고, 멈춰있던 여러분의 프로젝트에 ‘포스트잇’을 붙여보세요.
—
LLM 경량화 및 최적화 심화 학습
LoRA 외에도 AI 모델의 효율성을 높이고 성능을 극대화하는 다양한 기술과 개념들이 있습니다. 다음 글들을 통해 더 깊이 있는 지식을 탐색해 보세요.
LoRA Rank(r)가 높을수록 무조건 성능이 좋은가요?
아닙니다. Rank가 높으면 학습할 파라미터가 많아져 과적합(Overfitting) 위험이 커지고 VRAM 사용량도 늘어납니다. 보통 8~64 사이에서 시작하며, 복잡한 추론이 필요한 경우 128 이상을 테스트합니다.
QLoRA와 LoRA의 결정적인 차이는 무엇인가요?
QLoRA는 베이스 모델을 4-bit로 양자화(Quantization)하여 메모리 사용량을 극단적으로 줄인 상태에서 LoRA를 적용하는 기술입니다. VRAM이 부족한 환경(소비자용 GPU)에서 유리하지만, 연산 속도는 일반 LoRA보다 느릴 수 있습니다.
학습된 LoRA 어댑터는 다른 모델에도 사용할 수 있나요?
불가능합니다. LoRA 어댑터는 학습 시 사용한 특정 베이스 모델의 가중치($W_0$)에 종속됩니다. 같은 Llama 3라도 파라미터 사이즈(8B, 70B)나 버전이 다르면 호환되지 않습니다.







