파인튜닝의 정의
파인튜닝은 특정 작업이나 도메인에 높은 적합성을 확보하기 위해서, 이미 훈련된 대규모 언어 모델에 특정 데이터셋을 사용하여 추가적인 학습을 수행하는 작업을 말합니다.
파인튜닝의 핵심 아이디어는 머신러닝 모델이 초기 학습에서 사용된 데이터의 논리와 이해력만을 반영할 수 있다는 점에서 비롯됩니다. 이에 따라 모델은 초기 학습 단계에서 다루지 않은 새로운 데이터 샘플을 이해하는 데 어려움을 겪을 수 있으며, 이는 특정 시나리오에서 정확한 답을 생성하는 대규모 모델에서 두드러집니다.
파인 튜닝하는 방법
사전 학습된 모델 전체를 조정한 정도에 따라 Full Fine-tuning과 Repurposing 두 가지 방법으로 분류할 수 있습니다.
파인튜닝 전략 전체 지도 (Taxonomy)
- 전통형(전체/부분 미세조정)
- Full Fine-tuning (전체 가중치 업데이트)
- Partial Fine-tuning (일부 레이어만 업데이트)
- Linear/Head-only(=Feature Extractor)
- Discriminative LR (레이어별 서로 다른 학습률)
- Gradual Unfreezing (점진적 언프리징)
- PEFT(파라미터 효율) 계열
- LoRA / qLoRA
- Adapter / Prompt-tuning(P-tuning, Prefix-tuning, Soft Prompt)
- BitFit(바이어스만), LayerNorm-tuning, IA³(게이팅 스케일만)
- 사전학습 연장/적응(Pretraining Adaptation)
- DAPT(도메인 적응 사전학습) / TAPT(태스크 적응 사전학습)
- 대규모 LLM/생성형 특화
- SFT(감독 미세조정) → 선호 학습(RLHF/RAIF/DPO 등)
- 안전/가드레일 튜닝(금칙어·정책 데이터로 후속 파인튜닝)
- 멀티태스크/멀티모달/확장
- 멀티태스크 파인튜닝, 모듈러 튜닝(분리형 어댑터)
- 확산모델(Diffusion): DreamBooth, Textual Inversion, LoRA-U-Net
1) Full Fine-tuning (전체 미세조정)
무엇을/어떻게
- 모든 레이어 가중치 업데이트. 기존 지식을 유지하되 새로운 태스크에 맞게 전역적으로 재형상화.
- LLM/CV/ASR 등 전 영역에서 사용.
언제
- 데이터가 충분(수만~수십만 이상)하고, 원 태스크와 새 태스크 차이가 큼.
- 최상 성능이 목표, 인프라(GPU 메모리/시간) 여유가 있을 때.
핵심 하이퍼파라미터
- LR: 사전학습보다 작게(예: 1e-5~5e-5 for LLM, CV는 1e-4 근방)
- Schedule: Warmup + Cosine/Linear decay
- Regularization: Weight decay, Dropout, Label smoothing
- Tricks: Gradient clipping, Mixed precision, Grad. checkpointing
장단점/주의
- (+) 최고 성능 잠재력, 도메인 격차 큰 문제에 강함
- (–) 비용 큼, Catastrophic forgetting 위험 → 작은 LR/얼리스톱 필수
2) Partial Fine-tuning (부분 미세조정)
2-A) Head-only/Feature Extractor(=Linear Probe)
무엇을/어떻게
- 백본(Backbone)은 Freeze, 마지막 레이어(분류기 등)만 랜덤 초기화 후 학습.
- CNN: GAP → Linear classifier / LLM: [CLS] → Linear head 등.
언제
- 데이터 적고, 도메인 차이가 크지 않을 때.
- 신속한 프로토타이핑, 경량 기기 배포 전 1차 확인.
핵심 하이퍼파라미터
- Head LR는 상대적으로 크게(1e-3~1e-2), Epoch 수는 짧게.
장단점/주의
- (+) 빠르고 싸다, 과적합 위험 낮음
- (–) 표현력 한계. 성능 상한이 낮을 수 있음
2-B) Discriminative LR (레이어별 상이한 LR)
무엇을/어떻게
- 하위 레이어 LR 작게, 상위 레이어 LR 크게. (예: bottom 1e-6, top 5e-5)
- “일반적 특성” 보존 + “태스크 특성” 신속 적응.
언제
- 원/새 태스크가 중간 정도로 다를 때. Full FT 대비 안정적 수렴 원할 때.
주의/장단점
- LR 그룹 설계가 관건(블록 단위로 묶음).
- (+) 안정성/성능 균형, (–) 튜닝 복잡도 증가.
2-C) Gradual Unfreezing (점진적 언프리징)
무엇을/어떻게
- Head만 학습 → 상위 블록부터 순차적으로 Unfreeze → 전체 혹은 일부까지 확장.
- ULMFiT 계열에서 유명.
언제
- 데이터가 점진적으로 늘거나, 과적합 위험을 통제하며 적응시키고 싶을 때.
주의/장단점
- (+) 안정 수렴, 과적합/망각 완화
- (–) 스케줄 설계·운영 복잡
3) PEFT (Parameter-Efficient Fine-Tuning)
3-A) LoRA (Low-Rank Adaptation)
무엇을/어떻게
- 큰 가중치 (W)를 고정하고, 저랭크 행렬 (A,B)만 학습(ΔW=AB).
- 주로 **Attention( Wq, Wk, Wv, Wo )**에 삽입. 추론 시 병합(merge) 가능.
언제
- LLM/비전대형모델에서 GPU 메모리/시간 절약이 필요할 때.
- 도메인·스타일 적응(의학/법률, 브랜드 톤, 화풍 등).
핵심 하이퍼파라미터
- rank(r): 4~64 사이가 흔함, α(스케일), target modules(어디에 적용할지)
- LR: 5e-4~5e-5(상황별), Epoch: 짧게도 효과 큼
장단점/주의
- (+) 적은 VRAM, 빠른 튜닝, 어댑터 파일만 배포 가능
- (–) r/삽입 위치에 민감, 전역 구조 수정이 어려울 수 있음
3-B) qLoRA
무엇을/어떻게
- 베이스 가중치를 4비트 등 저정밀로 로드하고 LoRA만 FP16/FP32로 학습.
- VRAM 극저감(한 장 GPU로도 LLM 파인튜닝 가능).
언제
- 소형 GPU 환경(Colab T4/consumer GPU)에서 LLM 도메인 적응.
주의
- 양자화 에러로 수렴/최종 성능 민감 → 데이터 정제·학습률 관리 중요.
3-C) Adapter (확장 블록 삽입)
무엇을/어떻게
- 각 Transformer 블록에 작은 병목(Down→Nonlin→Up) 모듈 추가, 그것만 학습.
- 여러 태스크용 어댑터 동시 보관/스왑 용이.
언제
- 멀티태스크/다도메인 서비스에서 모델 하나로 여러 어댑터 돌릴 때.
주의/장단점
- (+) 유지보수/버저닝 용이, 합성도 가능
- (–) 추론 그래프가 커질 수 있어 지연/메모리 체크
3-D) Prompt/Prefix/Soft-Prompt Tuning
무엇을/어떻게
- 가중치 고정, 학습 가능한 프롬프트 벡터(토큰/키-밸류)를 입력/어텐션에 주입.
- Prefix-tuning: 각 레이어의 KV에 고정 길이 prefix 추가.
언제
- 데이터 적음, 빠른 맞춤화 필요, 다수 태스크를 경량 파일로 관리하고 싶을 때.
주의/장단점
- (+) 초경량, 충돌↓, 빠른 배포
- (–) 태스크 난이도에 따라 성능 상한 존재
3-E) BitFit / LayerNorm-tuning / IA³
무엇을/어떻게
- Bias만 학습(BitFit), LayerNorm의 γ/β만, IA³: 어텐션/FFN의 스칼라 게이팅만 업데이트.
- 최소 파라미터로 분포 셋팅만 재조정.
언제
- 극저자원(GPU·데이터) 환경에서 베이스 지식 최대 활용.
주의/장단점
- (+) 파라미터 몇 만~수십 만 수준, 관리 쉬움
- (–) 복잡한 태스크에는 성능 한계
4) DAPT/TAPT (사전학습 연장)
무엇을/어떻게
- DAPT: 대규모 도메인 비라벨 텍스트로 마스크드 LM 등 사전학습을 이어감.
- TAPT: 태스크 도메인 코퍼스로 경량 사전학습 후, 소량 레이블로 SFT.
언제
- 도메인 언어/스타일 격차가 매우 클 때(의학, 법률, 금융, 특수 문체).
주의/장단점
- (+) “언어/특징 분포” 적응으로 파인튜닝 기반 성능 상향
- (–) 사전학습 시간/비용 추가, 데이터 라이선스/품질 중요
5) LLM 특화: SFT → 선호학습(RLHF/RAIF/DPO)
SFT(감독 미세조정)
- 지시/응답 페어로 지도학습. → 모델을 “말 잘 듣게” 조정.
- Loss: Cross-entropy, 거절/정책 데이터 포함 가능.
선호학습(Alignment)
- RLHF: RM(보상모델) 학습 → PPO 등으로 정책 업데이트
- DPO/IPO: 파생 분포 매칭 방식, RL 없이 선호 반영
- RAIF: 자동 선호 라벨링 활용
언제
- 대화형/생성형에서 유용성·안전성 향상 필수.
주의
- 편향/과거 지식 왜곡, 과도한 거절 등 행동 품질 평가와 안전 가드레일 동반 필요
6) 멀티태스크/모듈러/멀티모달
멀티태스크 파인튜닝
- 여러 태스크를 합쳐 공유 백본 + 태스크 전용 헤드/어댑터.
- 태스크 간 샘플링 비율/손실 가중 중요.
모듈러 튜닝
- 태스크·도메인별 어댑터 군집을 플러그앤플레이로 스왑.
- 실서비스에서 라우팅 기반 동적 조합.
멀티모달(이미지+텍스트)
- CLIP/BLIP 계열: 텍스트/비전 어댑터 동시 조정.
- 확산모델: LoRA-U-Net, Text-Encoder LoRA, DreamBooth(개체 정체성), Textual Inversion(스타일 토큰).
실전 설계 가이드
전략 선택 체크리스트
- 데이터 규모: 적음 → PEFT/Head-only, 많음 → Partial/Full
- 도메인 격차: 큼 → DAPT+Partial/Full, 작음 → Head/LoRA
- 리소스: 적은 VRAM → qLoRA/Adapters/Prompt, 충분 → Full/Partial
- 배포/운영: 다태스크/고객별 모델 → 어댑터/LoRA 스왑이 유리
공통 하이퍼파라미터 팁
- LR: 베이스보다 작게 시작, Discriminative LR 고려
- Warmup: 3~10% 스텝
- Batch/SeqLen: 늘리면 수렴 안정 ↑(메모리 한계 주의)
- 정규화: Weight decay(0.01 근방), Label smoothing(0.1), Dropout
- 스케줄: Cosine/Linear decay, Plateau 감소
- 검증: Dev set 고정, 1~3 seed 평균
흔한 실패/대응
- Catastrophic forgetting → 작은 LR, Partial, Distillation, Replay(혼합 데이터)
- 과적합 → 더 강한 증강/드롭아웃, 얼리스톱, 규제 ↑
- 성능 정체 → DAPT/TAPT 뒤에 SFT, LoRA 타깃 모듈 확장(Wqkv→MLP 포함)
- 추론 지연↑(PEFT) → LoRA 병합(merge) 또는 어댑터 경량화, INT8/FP16 추론
평가/검증
- 오프라인: 정확도/F1/BLEU/ROUGE/MMLU 등 태스크 지표
- 제로샷/퓨샷 vs FT 성능 비교로 진짜 효과 점검
- 온라인: A/B 테스트(응답 품질, 클릭/전환, CS·세이프티 이슈)
배포/버저닝
- Base + Adapters(LoRA/Adapter) 분리 저장 → 고객/태스크별 조합
- LoRA 사전 병합 가중치 빌드(온디바이스/엣지 최적)
- 모델 카드에 데이터·권리·제약 명시
상황별 추천 레시피
- 소형 데이터·빠른 커스터마이징: Head-only → 필요 시 LoRA(r=8~16) 추가
- 중간 데이터·도메인 중간 격차: Partial(Top-k 블록만), Discriminative LR, Gradual Unfreezing
- 대규모 데이터·고성능 목표: DAPT → Full FT(또는 Partial+Discr. LR)
- 저자원 LLM 파인튜닝: qLoRA(4bit) + LoRA on Attention/MLP, Grad. Accumulation
- 다태스크 운영: Adapter/LoRA 스왑 구조 + 태스크 라우터
한 줄 요약
- 파인튜닝은 “얼마나/어디를/어떻게” 업데이트하느냐의 선택 문제입니다.
- 데이터/도메인/리소스/운영 요구에 따라 **Full ↔ Partial ↔ PEFT(DAPT/TAPT 포함)**를 조합하면 됩니다.
필요하시면, 지금 상황(데이터 크기, 모델 종류, 목표 지표, 장비)을 알려 주시면 최적 전략 조합과 구체 하이퍼파라미터까지 바로 제안해드릴게요.