쪼꼬만 노트/AI 개발 상자
Full Fine-Tuning 이란 무엇인가요?
jet132
2025. 7. 2. 11:55
728x90
반응형
여기서는 클래식한 Full Fine-tuning의 전체 단계를 A부터 Z까지 정리해드립니다.
이 방식은 사전학습 모델 전체의 파라미터를 모두 업데이트하는 방식이며, 강력한 GPU를 사용할 때 특히 효과적입니다.
🧭 Full Fine-tuning의 전체 단계 요약
1. 목적 설정 및 모델 선정
2. 데이터 수집 및 전처리
3. 사전학습 모델 로딩
4. 입력 데이터 토크나이징
5. 데이터셋 포맷 변환
6. 학습 하이퍼파라미터 설정
7. Trainer 또는 커스텀 학습 루프 구성
8. 전체 모델 학습 (Fine-tuning)
9. 검증 및 평가
10. 저장 및 서빙 (API or WebUI)
🔍 각 단계 상세 설명
1. 🎯 목적 설정 및 모델 선정
- Task: 분류 / 요약 / 번역 / QA / 챗봇
- 모델 선택:
- 텍스트: BERT, GPT-2, T5, Mistral, LLaMA 등
- 번역/요약: T5, Mistral, Gemma, LLaMA 3
2. 📦 데이터 수집 및 전처리
- 데이터셋 구조 정의:
{"text": "This is a movie review", "label": 1}
{"prompt": "요약: 창세기 1장", "completion": "하나님이 천지를 창조하셨다"}
- 전처리: 정제, 중복 제거, 라벨 정렬
3. 🧠 사전학습 모델 로딩
from transformers import AutoModelForSeq2SeqLM, AutoTokenizer
model = AutoModelForSeq2SeqLM.from_pretrained("t5-base")
tokenizer = AutoTokenizer.from_pretrained("t5-base")
- 번역/요약: AutoModelForSeq2SeqLM
- 분류: AutoModelForSequenceClassification
- 생성: AutoModelForCausalLM
4. ✂️ 입력 데이터 토크나이징
tokenized = tokenizer("Translate English to Korean: Hello", return_tensors="pt")
- truncation, padding, max_length 설정 포함
5. 📁 데이터셋 포맷 변환
from datasets import Dataset
dataset = Dataset.from_pandas(df) # 또는 JSONL 사용
dataset = dataset.map(lambda x: tokenizer(x["text"], truncation=True, padding="max_length"), batched=True)
6. ⚙️ 학습 하이퍼파라미터 설정
from transformers import TrainingArguments
args = TrainingArguments(
output_dir="./finetuned",
per_device_train_batch_size=4,
num_train_epochs=3,
learning_rate=5e-5,
logging_steps=100,
save_strategy="epoch",
evaluation_strategy="epoch"
)
7. 🏋️ Trainer 또는 Custom Trainer 구성
from transformers import Trainer
trainer = Trainer(
model=model,
args=args,
train_dataset=tokenized_dataset["train"],
eval_dataset=tokenized_dataset["validation"]
)
또는 PyTorch 기반 커스텀 학습 루프 사용 가능
8. 🔁 전체 모델 학습 (Full Fine-tuning)
trainer.train()
- 이 단계에서 모델의 모든 파라미터가 업데이트됩니다.
9. 📈 검증 및 평가
- evaluate 라이브러리 사용 (BLEU, ROUGE 등)
from evaluate import load
rouge = load("rouge")
results = rouge.compute(predictions=preds, references=labels)
10. 💾 저장 및 서빙
model.save_pretrained("./finetuned_model")
tokenizer.save_pretrained("./finetuned_model")
- WebUI 배포: Gradio, FastAPI, Flask, Hugging Face Spaces
✅ 부록: GPU 권장 사양
모델 최소 VRAM Full Fine-tuning 가능 여부
BERT | 8GB | ✅ |
GPT-2 | 12GB | ✅ |
T5-base | 16GB | ✅ |
Mistral-7B | 24GB 이상 | ⚠️ (Colab+불가, A100급 필요) |
💬 마무리 요약
Full Fine-tuning은 전체 모델을 특정 작업에 맞게 완전하게 재학습시키는 강력한 방식입니다.
하지만 자원 소모가 크기 때문에, 목적에 따라 LoRA 등 경량 기법과 비교하여 선택하는 것이 좋습니다.
728x90
반응형