한국어/전문화 코퍼스로 응답 품질 향상, 사내 톤/포맷 표준화.
파인튜닝 (Fine‑tuning)
LLM(예: Llama/Mistral/Qwen 등)과 임베딩 모델을 도메인 지식과 스타일에 맞게 학습합니다. SFT(감독학습), LoRA/QLoRA 어댑터, 지시어 튜닝과 도구 사용 패턴까지 지원. 데이터 보안과 비용 절감 우선 설계, 요금은 별도문의입니다.
LoRA/QLoRA로 VRAM/시간 절감, 필요 시 전체 SFT 지원.
런/하이퍼파라미터/체크포인트 이력, 자동 백테스트/샘플 비교.
프라이빗 스토리지, 접근제어(IAM) 연동, 감사로그/삭제 정책.
언제 파인튜닝이 유리한가?
| 과제 | 권장 | 비고 |
|---|---|---|
| 사내 양식/톤 고정 응답 | 지시어 SFT 또는 LoRA | 프롬프트 길이/비용 절감 |
| 전문화 Q&A/요약 | 도메인 SFT + 검증셋 | RAG와 병행 권장 |
| 툴 사용 패턴(함수 호출) | 대화/툴콜 포맷 SFT | 샘플 다양성 중요 |
| 최신 사실 반영 | RAG 우선 + 경량 튜닝 | 코퍼스 주기적 업데이트 |
데이터셋 포맷
JSONL 권장. 지시어-응답 또는 대화 메시지 구조를 사용합니다.
예시: 지시어/응답(SFT)
{"input":"반품 정책 요약해줘","output":"주요 요건은 … 1) … 2) …"}
{"input":"간단한 환불 절차 안내문 작성","output":"안내문 템플릿: …"}
예시: 대화(messages)
{"messages":[{"role":"system","content":"고객센터 에이전트"},{"role":"user","content":"AS 접수 도와줘"},{"role":"assistant","content":"성함과 연락처를 알려주세요."}]}
- 노이즈 제거/중복 제거, PII 마스킹 권장
- 길이 분포/평균 토큰 수 체크, 최대 길이(예: 4k~8k) 설계
- 훈련/검증/테스트 분할(예: 8:1:1)
샘플 규모 가이드(권장)
| 과제 | 스몰 | 미디엄 | 라지 |
|---|---|---|---|
| 스타일/톤 맞춤 | 1k~5k | 10k~50k | 100k+ |
| 도메인 Q&A | 5k~20k | 50k~200k | 300k+ |
방법 비교
| 방법 | VRAM/시간 | 품질 | 특징 | 권장 용도 |
|---|---|---|---|---|
| 전체 SFT | 높음 | 높음 | 모델 전량 미세조정 | 대규모/정밀 튜닝 |
| LoRA | 중간 | 중~높음 | 어댑터 가중치만 학습 | 일반 업무/스타일 |
| QLoRA | 낮음 | 중~높음 | 저정밀(4bit)+어댑터 | 자원 제한 환경 |
권장 하이퍼파라미터(출발점)
lr 5e-6 ~ 2e-5
batch 64~256(ACC 포함)
epochs 1~3(SFT), 3~5(LoRA)
warmup 3~8%
max_len 2k~4k
lora_r/α 8~16 / 16~32
훈련 스크립트(개념 예시)
# pseudo CLI (예시) finetune \ --base llama-3-8b \ --method qlora \ --train data/train.jsonl --eval data/val.jsonl \ --lr 1e-5 --epochs 3 --batch 128 --max-len 4096 \ --save out/llama3-8b-helpdesk-qlora
평가 지표/프로세스
| 단계 | 내용 | 출력 |
|---|---|---|
| 정량 | EM/F1(추출), ROUGE/ BLEU(요약/번역), 길이/독해도 등 | 스코어 대시보드 |
| 정성 | 샘플 페어 비교, 다수 룰/가드레일 체크 | 페어 승률/코멘트 |
| 온라인 | A/B 트래픽 분할, 오류/지연/전환율 모니터링 | 릴리즈 게이트 |
배포/서빙
서빙 엔진 — 가온IT 호환 엔진(vLLM/TGI 범주)로 어댑터/머지 서빙
아티팩트 — safetensors/adapter_weights, gguf(옵션)
스케일 — 자동 스케일아웃/버전 라우팅(카나리)
롤백 — 이전 체크포인트/아티팩트로 즉시 전환
디도스보호(프록시) — 엣지 보호 연동(옵션)
관측 — 로그/메트릭/트레이싱 연계
예시: 어댑터 로딩(Python)
from transformers import AutoModelForCausalLM, AutoTokenizer
from peft import PeftModel
base = AutoModelForCausalLM.from_pretrained("llama-3-8b")
model = PeftModel.from_pretrained(base, "out/llama3-8b-helpdesk-qlora")
tok = AutoTokenizer.from_pretrained("llama-3-8b")
print(model.generate(**tok("안내문 작성", return_tensors="pt")).shape)
예시: API 서빙(cURL)
curl -X POST https://api.example.com/v1/chat/completions \
-H "Authorization: Bearer $TOKEN" \
-H "Content-Type: application/json" \
-d '{
"model": "llama3-8b-helpdesk-qlora",
"messages": [{"role":"user","content":"반품 안내문 작성"}],
"temperature": 0.2
}'
보안/비용 팁
데이터 보호 — 전용 VPC+스토리지, 접근은 IAM/정책 기반, 감사로그 유지
비용 절감 — LoRA/QLoRA 우선, 짧은 시퀀스/적절한 batch, 조기 중단
데이터 품질 — 중복/모순 제거, 컨텍스트 최소화로 프롬프트 비용↓
지식 최신화 — RAG로 최신성 보완, 튜닝은 스타일/패턴에 집중
라이선스 — 베이스 모델 사용조건 점검(상업/배포)
가드레일 — 안전정책/컨텐츠 필터와 함께 운영
요금 안내
요금: 별도문의
데이터 규모/방법(SFT, LoRA/QLoRA)/GPU 사양/실험 횟수/보관 기간에 따라 산정됩니다.
당신의 데이터로 더 똑똑한 모델을
샘플 100건만 있어도 시작할 수 있어요. 요구사항을 알려주세요.