Fine-tuning
파인튜닝
사전 학습 모델을 특정 작업에 맞게 추가 학습. LoRA로 효율화.
파인튜닝
사전 학습 모델을 특정 작업에 맞게 추가 학습. LoRA로 효율화.
Fine-tuning(파인튜닝)은 대규모 사전 학습 모델을 특정 도메인이나 태스크에 맞게 추가 학습시키는 기법입니다. GPT-4나 Llama 같은 Foundation Model을 의료, 법률, 금융 등 전문 분야에 특화시킬 때 사용합니다.
전체 파라미터를 재학습하는 Full Fine-tuning은 비용이 높아, LoRA(Low-Rank Adaptation), QLoRA 같은 효율적 기법이 등장했습니다. LoRA는 원본 가중치를 고정하고 작은 어댑터 행렬만 학습해 GPU 메모리를 90% 이상 절감합니다.
OpenAI는 GPT-3.5 Turbo, GPT-4o mini 파인튜닝을 지원하며, 학습 비용은 토큰당 $0.008~$0.025입니다. 오픈소스에서는 Hugging Face Transformers + PEFT 라이브러리로 Llama, Mistral 등을 파인튜닝할 수 있습니다.
RAG vs Fine-tuning 선택이 중요합니다. 실시간 지식 업데이트가 필요하면 RAG, 특정 스타일/포맷 학습이 필요하면 Fine-tuning이 적합합니다. 실무에서는 둘을 함께 사용하는 경우가 많습니다.
# LoRA를 이용한 Llama 파인튜닝 (PEFT 라이브러리)
from transformers import AutoModelForCausalLM, AutoTokenizer, TrainingArguments
from peft import LoraConfig, get_peft_model, prepare_model_for_kbit_training
from datasets import load_dataset
from trl import SFTTrainer
# 모델 로드 (4비트 양자화로 메모리 절약)
model = AutoModelForCausalLM.from_pretrained(
"meta-llama/Llama-2-7b-hf",
load_in_4bit=True,
device_map="auto"
)
tokenizer = AutoTokenizer.from_pretrained("meta-llama/Llama-2-7b-hf")
# LoRA 설정: rank 16, alpha 32가 일반적인 시작점
lora_config = LoraConfig(
r=16, # LoRA rank
lora_alpha=32, # 스케일링 팩터
target_modules=["q_proj", "v_proj"], # 어텐션 레이어만 학습
lora_dropout=0.05,
bias="none",
task_type="CAUSAL_LM"
)
model = prepare_model_for_kbit_training(model)
model = get_peft_model(model, lora_config)
# 학습 가능 파라미터 확인
model.print_trainable_parameters()
# Output: trainable params: 4,194,304 || all params: 6,738,415,616 || 0.06%
# 데이터셋 & 학습
dataset = load_dataset("your-dataset")
trainer = SFTTrainer(model=model, train_dataset=dataset["train"], ...)
trainer.train()
# 어댑터만 저장 (수 MB)
model.save_pretrained("./lora-adapter")
2025년 1월 기준 OpenAI 파인튜닝 비용 정보입니다.
| 모델 | 학습 비용 (1M tokens) | 추론 입력 | 추론 출력 |
|---|---|---|---|
| GPT-4o 파인튜닝 | $25.00 | $3.75 | $15.00 |
| GPT-4o-mini 파인튜닝 | $3.00 | $0.30 | $1.20 |
| GPT-3.5 Turbo 파인튜닝 | $8.00 | $3.00 | $6.00 |
비용 계산: 총 학습 토큰 = 학습 데이터 토큰 x 에포크 수. 1만 건 데이터(약 500K 토큰) 3 에포크 시 GPT-4o-mini는 약 $4.5. 데이터 공유 옵션 활성화 시 추론 할인 적용.
"고객사 톤앤매너에 맞추려면 파인튜닝이 필요합니다. QLoRA로 Llama 7B 파인튜닝하면 A100 한 장으로 가능하고, 학습 데이터 1만 건에 2~3시간이면 됩니다. 비용은 클라우드 GPU 기준 $30 정도예요."
"LoRA는 원본 가중치 W에 저랭크 행렬 BA를 더하는 방식입니다. rank 16이면 학습 파라미터가 0.1% 미만으로 줄어 메모리 효율이 극대화됩니다. 실제로 법률 QA 챗봇 프로젝트에서 LoRA 파인튜닝으로 도메인 정확도를 40% 개선했습니다."
"실시간 업데이트되는 제품 정보는 RAG로, 고객 응대 스타일 학습은 파인튜닝으로 분리하는 게 좋습니다. 파인튜닝된 모델에 RAG를 붙이면 두 장점을 모두 가져갈 수 있어요."
"Garbage in, garbage out" - 노이즈가 많은 데이터는 모델 성능을 오히려 저하시킵니다. 1만 건의 정제된 데이터가 10만 건 노이즈 데이터보다 낫습니다.
파인튜닝이 과하면 기존 지식을 잊습니다. Learning rate를 낮게(1e-5~5e-5), epoch을 적게(2~3) 유지하세요.
고품질 데이터셋 구축에 투자하고, LoRA rank와 learning rate를 실험으로 튜닝하세요. 파인튜닝 전후 벤치마크 비교는 필수입니다.