쪼꼬만 노트/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
반응형