LabHub

블로그

Fine-tuning 완전 가이드: SFT, DPO, LoRA/QLoRA, 합성 데이터, 한국어 모델 (2025)

Season 4 Ep 4 — Ep 1–3은 모델을 그대로 쓰는 세계였다. Ep 4부터는 모델 자체를 바꾼다. 언제, 왜, 어떻게 바꿀지의 경계선을 긋는다.

Prologue — 2025년에 Fine-tuning을 다시 꺼내는 이유

"GPT-4o가 웬만한 거 다 하는데 Fine-tuning 왜 함?" 맞는 말이다. 2023년식 "모든 태스크마다 파인튜닝하자"는 완전히 오래됐다.

하지만 2025년에도 Fine-tuning이 필요한 순간은 분명 존재한다.

즉 "모든 팀이 Fine-tuning할 필요는 없지만, 어떤 팀에겐 여전히 최선의 선택"이다. 이 글은 그 경계선과 실전 방법을 정리한다.


1장 · Fine-tuning의 종류

1.1 학습 단계의 계층

Pre-training            : 수조 토큰으로 기초 모델 학습
Supervised Fine-tuning  : 사람이 만든 지시-응답 쌍으로
Preference tuning       : 좋음/나쁨 비교 피드백 (RLHF/DPO)
   
(선택) Continual tuning  : 도메인 데이터로 추가 SFT

일반적으로 "Fine-tuning"이라고 하면 두 번째(SFT)와 세 번째(Preference)를 의미한다.

1.2 SFT (Supervised Fine-tuning)

입력: (prompt, response) 쌍 수백~수만 개. 목표: 모델이 "이런 입력에 이런 출력"을 내도록.

1.3 Preference tuning: RLHF, DPO, IPO, KTO

RLHF (Reinforcement Learning from Human Feedback):

DPO (Direct Preference Optimization, 2023):

IPO, KTO (2024):

ORPO, SimPO (2024):

1.4 언제 Preference까지 필요한가

실무 팁: 일단 SFT만 해보고, 결과 응답 중 품질 편차가 크면 Preference 단계 추가 검토.


2장 · LoRA / QLoRA — 소비자 GPU로도 가능한 이유

2.1 Full fine-tuning의 비용

2.2 LoRA (Low-Rank Adaptation)

아이디어: 기존 가중치 W는 그대로 두고, 작은 rank-r 행렬 A·B만 학습한다.

W_final = W_base + (A × B)  # r=8~64

2.3 QLoRA (Dettmers et al., 2023)

2.4 현실적 VRAM 가이드 (2025)

모델 크기Full SFTLoRA (bf16)QLoRA (4-bit)
3B약 40GB약 12GB약 8GB
7B약 100GB+약 24GB약 12GB
13B약 260GB약 40GB약 16–20GB
70B멀티노드약 140GB약 40–48GB

배치 크기·시퀀스 길이·optimizer(Adam vs Adafactor)에 따라 ±30% 변동. 정확한 수치는 직접 프로파일링.

2.5 LoRA/QLoRA 설정 시작점


3장 · 데이터가 전부다

3.1 양 vs 질

3.2 데이터 형태

SFT 포맷 (예: ChatML):

{"messages": [
  {"role": "system", "content": "..."},
  {"role": "user", "content": "..."},
  {"role": "assistant", "content": "..."}
]}

DPO 포맷:

{"prompt": "...", "chosen": "...", "rejected": "..."}

3.3 데이터 수집 3가지 길

(a) 기존 로그 재활용

(b) 사람이 작성

(c) 합성 데이터 (4장에서 자세히)

3.4 평가셋과 완전 분리


4장 · 합성 데이터 — 라벨 비용을 10분의 1로

4.1 기본 아이디어

큰 모델(GPT-4o, Claude 3.5/4 등)로 훈련 데이터를 생성해서 작은 모델을 파인튜닝.

[작은 시드 예시 1050][대형 LLM이 유사 예시 1000개 생성][필터링][SFT]

4.2 주요 기법

4.3 품질 관리

4.4 법적·윤리 고려

4.5 합성 + 실제 혼합

실제 데이터가 적을 때, 합성 데이터로 보강하되 실제 데이터에 더 높은 샘플링 가중치를 주면 성능 안정적.


5장 · Fine-tune vs RAG vs Prompt — 경계선 재점검

5.1 의사결정 트리

"모델이 지식을 몰라서 틀리는가?" 
  YESRAG
  NO"스타일/포맷/분류 정확도가 문제?"
         YESFine-tuning
         NO"그냥 프롬프트 수정으로 해결?"
                YESPrompt Engineering
                NO  → 문제를 다시 정의 (어쩌면 에이전트가 필요)

5.2 함께 쓰는 조합

5.3 자주 틀리는 사례

5.4 비용·운영 비교

접근초기 비용월 운영비변경 비용
Prompt거의 0호출당 API 비용매우 낮음
RAG중 (인덱스 구축)검색 인프라 + API낮음 (데이터 추가)
Fine-tuning중–고 (데이터+학습)자체 호스팅 or 파인튠 API중–고 (재학습)

6장 · 한국어 모델 파인튜닝

6.1 주요 오픈 모델 2025

모델크기한국어라이선스메모
Solar (Upstage)10.7B 등최상위Apache 2.0한국어 특화 SFT 모델 다수 공개
Qwen2.5 / Qwen30.5B–72B우수Apache 2.0 (일부)다국어·코드 강함
Llama 3.1 / 3.38B–405B양호Llama 라이선스광범위한 생태계
Mistral / Mixtral7B–8x22B양호Apache/EU 상업효율적 아키텍처
EXAONE (LG)7.8B 등우수연구용+일부 상업한국어 고품질 학습
Polyglot-Ko1.3B–12.8B우수Apache초기 한국어 오픈 모델
KoAlpaca / KoVicuna다양우수연구초기 한국어 Instruction

6.2 선택 가이드

6.3 한국어 SFT 팁

6.4 한국어 평가 벤치


7장 · 훈련 파이프라인 — Hugging Face TRL + Axolotl / Unsloth

7.1 TRL (Transformers RL)

Hugging Face의 공식 학습 라이브러리. SFTTrainer, DPOTrainer, PPOTrainer, ORPOTrainer 등 제공.

from trl import SFTTrainer

trainer = SFTTrainer(
    model=model,
    tokenizer=tokenizer,
    train_dataset=ds,
    args=training_args,
    peft_config=lora_config,
)
trainer.train()

7.2 Axolotl

YAML 설정 중심. 프로덕션용 파이프라인에 편리.

base_model: upstage/SOLAR-10.7B-v1.0
adapter: qlora
load_in_4bit: true
lora_r: 32
lora_alpha: 64
sequence_len: 4096
micro_batch_size: 4
num_epochs: 2

7.3 Unsloth

속도·메모리 최적화 라이브러리. LoRA/QLoRA 학습을 2–5배 빠르게. 소비자 GPU에 특히 유리.

7.4 LLaMA-Factory / torchtune

GUI/CLI 친화적 프레임워크. 빠른 실험에 유용. torchtune은 PyTorch 공식, 심플.

7.5 하드웨어 선택


8장 · 평가 — Fine-tune 전후를 비교하라

8.1 레이어

8.2 일반 능력 회귀

흔한 사고: "도메인 태스크는 잘하는데 일반 질문에 바보 됨." 과도한 데이터, 좁은 도메인에만 집중하면 생긴다.

예방:

8.3 회귀 테스트 CI


9장 · 배포 — vLLM, TGI, TensorRT-LLM, Ollama

9.1 옵션 비교

엔진용도강점
vLLM서버(중–대)PagedAttention, 높은 TPS, 오픈 표준
TGI (Hugging Face)서버Transformers 친화, 안정
TensorRT-LLM프로덕션 고성능NVIDIA 최적화, 최고 속도
SGLang서버최신, 라우팅·복합 요청 강력
llama.cpp로컬·저사양CPU·Apple Silicon 실행
Ollama개발자 로컬사용 편의성
LMDeploy서버중국계 모델 친화

9.2 vLLM 권장 설정

9.3 비용 계산


10장 · 실전 케이스 3

10.1 사내 분류기 치환

배경: 고객 지원 티켓 카테고리 분류 — GPT-4o로 API 호출 → 월 $500.

교훈: 스코프가 좁은 태스크는 작은 모델이 거의 항상 이긴다.

10.2 응답 포맷·톤 고정

배경: B2B SaaS의 AI 답변이 너무 친근/격식 왔다갔다.

교훈: Preference tuning은 "스타일의 평균"을 이동시키는 데 특히 효과적.

10.3 온프레미스 법률 어시스턴트

배경: 로펌, 데이터 외부 전송 금지.

교훈: 규제 환경에서 Fine-tuning + 자체 호스팅은 아직 유일한 길.


11장 · 운영 — 버저닝, 모니터링, 롤백

11.1 모델 버전 관리

11.2 카나리 배포

11.3 드리프트 감지

11.4 재학습 주기


12장 · 안티패턴 10선

12.1 RAG로 될 걸 Fine-tune으로

지식 주입은 RAG가 정답. 반복 강조.

12.2 데이터 1만 개 모으고 품질 검수 안 함

엉성한 1만보다 깔끔한 1천이 낫다.

12.3 평가셋과 훈련셋 섞임

Leakage 사고. CI로 해시 중복 체크.

12.4 일반 능력 회귀 체크 안 함

도메인만 잘하고 일반 질문엔 바보 되는 참사.

12.5 파인튜닝 한 번 하고 잊어버림

모델·데이터가 진화한다. 재학습 주기 설계.

12.6 rank·epoch 과도 설정

과적합, 일반화 손실. rank 16–32 / epoch 1–3 기본.

12.7 base 모델 라이선스 확인 안 함

상업 배포 후 경고 받음. Llama, Mixtral 조건 체크.

12.8 합성 데이터 품질 필터 없음

노이즈 섞여 모델이 이상한 습관 학습.

12.9 자체 호스팅 비용 계산 없이 시작

GPU 렌탈비가 외부 API보다 비쌌던 사례 흔함.

12.10 어댑터 병합·핫스왑 테스트 안 함

배포 시점에 디바이스 메모리 이슈 발견 → 지연.


13장 · 체크리스트 — Fine-tuning 프로젝트 킥오프 전 12가지


14장 · 다음 글 예고 — Season 4 Ep 5: "MCP (Model Context Protocol) 완전 해부"

Ep 3(에이전트)에서 잠깐 나왔던 MCP. 2024년 말 Anthropic이 공개하고 2025년 표준화가 빠르게 진행 중인 이 프로토콜은 LLM 툴 생태계의 USB-C가 될 가능성이 높다.

"모든 에이전트 프레임워크가 MCP를 말하게 된 2025년", 이 프로토콜을 이해하는 것은 필수가 됐다.

다음 글에서 만나자.


요약: Fine-tuning은 죽지 않았다. 2025년의 Fine-tuning은 좁은 태스크·작은 모델·LoRA/QLoRA·합성 데이터로 "돈 절약 + 속도 + 온프레미스"를 얻는 실용적 도구다. SFT 먼저, 필요 시 DPO, 합성 데이터로 라벨 비용을 줄이고, 일반 능력 회귀를 반드시 체크하며, vLLM으로 배포한다. "RAG로 될 것을 Fine-tune으로 하지 말 것"과 "작은 전문가 모델이 큰 일반가 모델을 이기는 경우가 많다"가 핵심 교훈.

댓글

아직 댓글이 없습니다.

로그인하면 댓글을 쓸 수 있습니다