반응형
1. 파인튜닝이란?
파인튜닝(fine-tuning)은 사전학습(pretrained)된 Transformer 모델을 내 데이터에 맞게 미세 조정하는 과정입니다.
처음부터 학습하는 것보다 적은 데이터와 자원으로 원하는 작업 성능을 얻을 수 있습니다
2. 전체 워크플로우 요약
- 데이터셋 로드 및 전처리
- 모델 로드 및 분류 헤드 구성
TrainingArguments
설정Trainer
인스턴스 생성trainer.train()
실행- (선택) Hub에 모델 업로드
3. 실습: IMDB 영화 리뷰 감정 분석
3‑1) 라이브러리 설치
pip install transformers datasets evaluate
3‑2) 데이터 로드 및 토크나이징
from datasets import load_dataset
from transformers import AutoTokenizer
raw = load_dataset("imdb") # train/test
tokenizer = AutoTokenizer.from_pretrained("bert-base-cased")
def tokenize_fn(ex):
return tokenizer(ex["text"], padding="max_length", truncation=True)
ds = raw.map(tokenize_fn, batched=True)
small_train = ds["train"].shuffle(seed=42).select(range(1000))
small_eval = ds["test"].shuffle(seed=42).select(range(1000))
- 데이터를 최대 길이로 패딩/토큰화해
Dataset.map
으로 처리했습니다.
3‑3) 모델 로드
from transformers import AutoModelForSequenceClassification
model = AutoModelForSequenceClassification.from_pretrained(
"bert-base-cased", num_labels=2
)
- 사전학습된 BERT 모델에 임의로 초기화된 분류 헤드를 붙입니다.
3‑4) 평가 함수 정의
import numpy as np
import evaluate
metric = evaluate.load("accuracy")
def compute_metrics(eval_pred):
logits, labels = eval_pred
preds = np.argmax(logits, axis=-1)
return metric.compute(predictions=preds, references=labels)
evaluate
라이브러리를 사용한 간단한 정확도 계산 함수입니다.
3‑5) Trainer 설정 및 실행
from transformers import TrainingArguments, Trainer
training_args = TrainingArguments(
output_dir="hf-finetuned-imdb",
evaluation_strategy="epoch",
push_to_hub=True
)
trainer = Trainer(
model=model,
args=training_args,
train_dataset=small_train,
eval_dataset=small_eval,
compute_metrics=compute_metrics
)
trainer.train()
trainer.push_to_hub()
TrainingArguments
로 체크포인트, 평가 단위(epoch), Hub 업로드 포함 설정을 지정합니다.
4. 커스터마이징 팁
일부 레이어만 학습시키기
for param in model.bert.encoder.parameters(): param.requires_grad = False
- 특정 계층만 업데이트할 때 활용 .
파라미터 효율적 튜닝(LoRA, PEFT)
- LoRA는 적은 수의 변수만 학습해 리소스를 줄입니다.
- Hugging Face
peft
패키지 참고.
5. 결과 활용 및 재사용
from transformers import pipeline
clf = pipeline("text-classification", model="내허브/모델명")
print(clf("This movie was fantastic!"))
trainer.push_to_hub()
후, 허브 모델명으로pipeline
에서 불러 사용 가능합니다.
요약
- 파인튜닝은 적은 리소스로 빠르게 성능 좋은 모델을 얻는 방법입니다.
Trainer/API
사용으로 몇 줄 코드로 학습·평가·배포가 가능합니다.- 레이어 고정, LoRA/PEFT 통해 비용을 줄이는 방법도 활용할 수 있습니다.
반응형
'개발 창고 > AI' 카테고리의 다른 글
Kanana: 카카오의 한국어 특화 쌍언어 AI 모델 완벽 해부 (2) | 2025.06.21 |
---|---|
Gradio vs Streamlit: AI 모델 데모와 대시보드, 어떤 도구가 맞을까? (3) | 2025.06.20 |
Hugging Face 입문: 개발자를 위한 AI 시작 가이드 (1) | 2025.06.18 |
Streamlit 앱을 Hugging Face Spaces에 배포하는 가이드 (3) | 2025.06.17 |
AI 모델 성능을 좌우하는 데이터 전처리, 어떻게 해야 할까? (1) | 2025.06.17 |