파인튜닝 — LoRA, RLHF, PEFT
사전학습된 LLM을 특정 태스크나 도메인에 맞추는 기술
1. 파인튜닝이란
사전학습 모델(Base Model)은 범용적이지만 특정 태스크에 최적화되어 있지 않음. 파인튜닝은 소규모 태스크 데이터로 모델을 추가 학습하여 성능을 높이는 과정.
2. Full Fine-tuning vs PEFT
| Full Fine-tuning | PEFT (Parameter-Efficient) | |
|---|---|---|
| 학습 파라미터 | 전체 (수십억~수조) | 0.1~1%만 |
| GPU 메모리 | 매우 많음 (A100 여러 대) | 적음 (단일 GPU 가능) |
| 학습 시간 | 길음 | ✅ 짧음 |
| 성능 | 최고 | Full의 90~95% |
| 실전 | 대기업/연구소 | ✅ 대부분의 실무 |
3. LoRA (Low-Rank Adaptation)
3.1 핵심 원리
가중치 행렬 W를 직접 수정하지 않고, 저차원 분해 행렬(A, B)을 추가하여 학습.
기존: y = W · x (W는 고정)
LoRA: y = W · x + B·A · x (A, B만 학습)
W: d×d 행렬 (예: 4096×4096 = 16M 파라미터)
A: d×r 행렬 (예: 4096×8 = 32K)
B: r×d 행렬 (예: 8×4096 = 32K)
r(rank) = 8이면 64K 파라미터만 학습 → 원래의 0.4%
| 항목 | 설명 |
|---|---|
| rank (r) | 저차원 크기. 보통 4~64. 클수록 표현력 ↑, 비용 ↑ |
| alpha | 스케일링 팩터. 보통 rank의 2배 |
| target modules | 어떤 레이어에 LoRA를 적용할지. Q, K, V, O 프로젝션이 일반적 |
3.2 QLoRA
LoRA + 양자화. 모델을 4-bit로 양자화한 상태에서 LoRA 학습.
- 7B 모델을 **단일 24GB GPU(RTX 4090)**에서 파인튜닝 가능
- 성능은 Full Fine-tuning의 90%+ 수준
- ✅ 개인/소규모 팀의 실전 표준
4. 기타 PEFT 방법
| 방법 | 원리 | 특징 |
|---|---|---|
| Adapter | 레이어 사이에 작은 네트워크 삽입 | LoRA 이전의 PEFT |
| Prefix Tuning | 입력 앞에 학습 가능한 가상 토큰 추가 | 프롬프트 수준 |
| Prompt Tuning | Soft Prompt를 학습 | 가장 가벼움 |
| LoRA | 저차원 분해 행렬 추가 | ✅ 현재 표준 |
5. RLHF (Reinforcement Learning from Human Feedback)
5.1 왜 RLHF인가
SFT(Supervised Fine-tuning)만으로는 모델이 **"정확하지만 유해한 답변"**이나 **"형식은 좋지만 내용이 틀린 답변"**을 생성할 수 있음. RLHF는 인간의 선호도를 학습하여 더 유용하고 안전한 모델을 만듦.
5.2 RLHF 파이프라인
단계:
- SFT: 질문-답변 쌍으로 지시를 따르도록 학습
- Reward Model: 같은 질문에 대한 여러 답변을 인간이 순위 매김 → 보상 모델 학습
- PPO: 보상 모델의 점수를 최대화하도록 정책 최적화
5.3 DPO (Direct Preference Optimization)
RLHF의 단순화 버전. Reward Model과 PPO 단계를 건너뛰고, 선호도 데이터로 직접 모델을 최적화함.
| RLHF | DPO | |
|---|---|---|
| 단계 | SFT → RM → PPO (3단계) | SFT → DPO (2단계) |
| 복잡도 | 높음 (PPO 불안정) | ✅ 낮음 |
| 성능 | 높음 | RLHF와 유사 |
| 현재 추세 | 연구/대기업 | ✅ 실전 표준 전환 중 |
6. Instruction Tuning
"지시를 따르는 모델"을 만드는 파인튜닝. ChatGPT의 기반.
| 데이터 형태 | 예시 |
|---|---|
| (지시, 입력, 출력) | ("요약해줘", "긴 문서...", "요약 결과") |
| (질문, 답변) | ("파이썬 리스트 정렬 방법은?", "sorted() 또는...") |
대표 데이터셋: Alpaca, Dolly, OpenAssistant, LIMA
7. 파인튜닝 데이터셋 구축
| 원칙 | 설명 |
|---|---|
| 품질 > 양 | LIMA 논문: 1,000개 고품질 데이터로도 충분 |
| 다양성 | 같은 유형 반복보다 다양한 태스크/난이도 |
| 일관성 | 포맷과 스타일이 일관되어야 함 |
| 도메인 특화 | 목표 태스크와 유사한 데이터가 가장 효과적 |
8. 파인튜닝 vs RAG vs 프롬프트 엔지니어링
| 파인튜닝 | RAG | 프롬프트 엔지니어링 | |
|---|---|---|---|
| 비용 | 높음 (GPU) | 중간 (Vector DB) | ✅ 낮음 |
| 지식 업데이트 | 재학습 필요 | ✅ DB 업데이트만 | 프롬프트 수정 |
| 행동 변경 | ✅ 가장 효과적 | — | 제한적 |
| 도메인 특화 | ✅ | ✅ | 약간 |
| 추천 순서 | 3순위 | 2순위 | ✅ 1순위 (먼저 시도) |