파인튜닝과 LoRA (기술 심화)
:::note 전제 04. 어떻게 학습되나와 09. 파인튜닝 vs RAG의 큰 그림 위에서, 이 문서는 파인튜닝이 실제로 가중치를 어떻게 바꾸는지, 그리고 왜 LoRA가 효율적인지를 다룹니다. :::
1. 파인튜닝이란 — 가중치 갱신
사전학습된 모델의 가중치 W를, 새 데이터의 손실을 줄이도록 경사하강법으로 조정하는 것입니다.
W_new = W - η · ∇W(Loss) # η: 학습률, ∇: 기울기
전체 파인튜닝(Full fine-tuning) 은 모든 파라미터를 갱신합니다. 문제:
- 70B 모델이면 수백 GB의 옵티마이저 상태·기울기 저장 → 막대한 GPU 메모리
- 태스크마다 전체 모델 사본이 생김 → 저장·배포 부담
2. PEFT — 일부만 효율적으로
PEFT(Parameter-Efficient Fine-Tuning) 는 소수의 파라미터만 학습해 비용을 줄입니다. 대표가 LoRA입니다.
3. LoRA (Low-Rank Adaptation)
핵심 아이디어: 가중치 변화량 ΔW가 사실 저차원(low-rank) 으로 근사된다는 관찰.
원래 가중치는 그대로 얼리고(freeze), 변화량만 두 개의 작은 행렬 곱으로 학습합니다.
기존 : h = W · x # W: d×d (고정)
LoRA : h = W · x + (B · A) · x # A: r×d, B: d×r, r ≪ d
ΔW = B · A (rank = r, 예: r=8,16)
- 학습하는 건
A,B뿐 → 파라미터가 수백 분의 1~수천 분의 1 - 추론 시
B·A를W에 합쳐(merge) 추가 지연 없이 사용 가능 - 초기화:
A는 랜덤,B는 0 → 학습 시작 시 ΔW=0(원모델과 동일)에서 출발
왜 되는가: 특정 태스크 적응에 필요한 "방향"은 전체 차원이 아니라 몇 개의 저차원 부분공간이면 충분하다는 것.
4. QLoRA — 양자화 + LoRA
더 적은 메모리로:
① 기반 모델을 4비트로 양자화(NF4)해 메모리 ↓
② 그 위에 LoRA 어댑터(고정밀)만 학습
→ 단일 GPU에서도 수십B 모델 파인튜닝 가능
5. 비교
| 방식 | 학습 파라미터 | 메모리 | 특징 |
|---|---|---|---|
| Full FT | 전체(100%) | 매우 큼 | 최대 성능, 비용 큼 |
| LoRA | 작음 | 어댑터만 저장·교체, 가성비 | |
| QLoRA | 가장 작음 | 양자화로 단일 GPU 가능 |
:::tip 어댑터의 장점 태스크별로 작은 어댑터 파일(수 MB~수백 MB)만 저장·교체하면 됩니다. 하나의 기반 모델에 여러 어댑터를 갈아끼우는 운영이 가능합니다. :::
6. 언제 파인튜닝인가 (vs RAG·프롬프트)
| 목적 | 적합 |
|---|---|
| 최신·내부 "지식" 주입 | RAG (심화) |
| 형식·말투·태스크 "행동" 고정 | 파인튜닝 |
| 가벼운 조정 | 프롬프트/few-shot |
→ 지식은 RAG, 행동은 파인튜닝이 일반 원칙. 둘을 함께 쓰기도 합니다.
7. 정렬(Alignment) 학습 — 한 줄
사전학습 후 모델을 "지시를 잘 따르고 안전하게" 만드는 단계:
- SFT(지도 미세조정) → RLHF(사람 선호 기반 강화학습) 또는 DPO(선호쌍 직접 최적화)
8. 요약
Full FT : W 전체 갱신 (비쌈)
LoRA : W 고정 + ΔW=B·A (저차원)만 학습 (가성비)
QLoRA : 4비트 양자화 + LoRA (단일 GPU)
- 이전: RAG 내부 동작 (심화) · 다음: 추론 최적화 (심화)