목차
반응형
1. 개요
이번 포스팅에서는
HuggingFace에서 제공하는
프레임워크에 대해 소개하겠다.
라이브러리 | 역할 | 주요 기능 |
Transformers | 모델, 토크나이저 | AutoModel, AutoTokenizer 등 |
Trainer | 지도학습 (SFT) | Trainer, TrainingArguments |
TRL | 강화학습 (RLHF) | PPOTrainer, SFTTrainer |
DeepSpeed | GPU 메모리 최적화 | ZeRO Stage, Hugging Face Trainer와 연동 |
Accelerate | 분산 학습 최적화 | 여러 GPU/TPU 환경에서 Trainer 가속화 |
PEFT (Parameter Efficient Fine-Tuning) | 파라미터 효율적 파인튜닝 기법 지원 | LoraConfig, get_peft_model |
Evaluate | 모델 평가 | load_metric("bleu"), compute() |
2. Trainer
2.1. Trainer 설명
transformers.Trainer는 Hugging Face의 transformers 라이브러리에서 제공하는 학습 도구로, 모델 학습을 편리하게 관리할 수 있다.
세가지 단계에 걸쳐 학습을 진행한다.
- 학습 설정
- Trainer 설정
- 학습 실행
2.2. 기본 사용법
학습 설정 (TrainingArguments 설명 출처 링크)
from transformers import TrainingArguments
training_args = TrainingArguments(
output_dir="./results", # 모델 저장 경로
evaluation_strategy="epoch", # 평가 주기 (매 epoch마다 평가)
save_strategy="epoch", # 체크포인트 저장 주기
per_device_train_batch_size=8, # 학습 배치 크기
per_device_eval_batch_size=8, # 평가 배치 크기
num_train_epochs=3, # 학습 epoch 수
weight_decay=0.01, # L2 정규화 (Weight Decay)
logging_dir="./logs", # 로그 저장 경로
logging_strategy="epoch", # 로그 저장 주기
save_total_limit=2, # 저장할 체크포인트 개수 제한
push_to_hub=False, # 모델을 Hugging Face Hub에 업로드할지 여부
)
Trainer 설정 (Trainer 설명 출처 링크)
trainer = Trainer(
model=model,
args=training_args,
train_dataset=tokenized_datasets["train"],
eval_dataset=tokenized_datasets["test"],
)
학습 실행
trainer.train()
2.3. 추가 옵션
체크포인트에서 다시 학습하기
trainer.train(resume_from_checkpoint=True)
모델 저장 및 로드
trainer.save_model("./my_model") # 모델 저장
model = AutoModelForSequenceClassification.from_pretrained("./my_model") # 저장된 모델 로드
커스텀 metric 추가
- datasets.load_metric 에서 기본 metric 제공
- compute_metrics 에 평가 함수 추가
import numpy as np
from datasets import load_metric
metric = load_metric("accuracy")
def compute_metrics(eval_pred):
logits, labels = eval_pred
predictions = np.argmax(logits, axis=-1)
return metric.compute(predictions=predictions, references=labels)
trainer = Trainer(
model=model,
args=training_args,
train_dataset=tokenized_datasets["train"],
eval_dataset=tokenized_datasets["test"],
compute_metrics=compute_metrics, # 평가 함수 추가
)
datasets.load_metric()에서 지원되는 metric 종류
- accuracy (정확도)
- f1 (F1-score)
- precision (정밀도)
- recall (재현율)
- roc_auc (ROC AUC)
- bleu (BLEU - 번역 성능 평가)
- wer (Word Error Rate - 음성 인식 평가)
- mse (Mean Squared Error - 회귀 문제)
3. TRL
3.1. 설명
TRL (Transformer Reinforcement Learning)은
Hugging Face가 제공하는 강화학습(Reinforcement Learning) 기반 언어모델 트레이닝 라이브러리이다.
다양한 trainer를 제공하고 있으며, 사용방법은 간단하기 때문에
불러와서 사용하면 되겠다.
아래 경로로 가서 확인해 보자
- 왼쪽 목차 > API > Trainers > 원하는 trainer 클릭
TRL - Transformer Reinforcement Learning
huggingface.co
trainer를 선택해 들어가면 아래와 같이
실행할 수 있는 코드와
파라미터를 정리해둔 문서가 있다.
deepSpeed 부터는 다음 포스팅에서 설명하겠다.
반응형
'자연어처리 > LLM을 위한 코딩' 카테고리의 다른 글
[LLM] 모델 학습 with HuggingFace (DeepSpeed) (7) (0) | 2025.02.20 |
---|---|
[LLM] 모델 학습 with HuggingFace (Accelerate) (6) (0) | 2025.02.15 |
[LLM] 데이터 준비하기 with datasets (4) (0) | 2025.02.10 |
LLM 모델 불러오기 실행하기 (Huggingface Transformers) (3) (2) | 2025.01.28 |
Pytorch Transformers 설치 (2) (0) | 2025.01.28 |