DPOTrainer — 직접 선호 최적화

DPOTrainer — 직접 선호 최적화

DPOTrainer는 직접 선호 최적화(Direct Preference Optimization) 로 언어 모델을 훈련하는 트레이너예요. 선호 쌍(preferred/rejected) 데이터로 명시적인 보상 모델 없이도 정책을 최적화하는 방법이죠. 원 논문은 Direct Preference Optimization: Your Language Model is Secretly a Reward Model이에요.

출처: TRL — DPO Trainer

퀵스타트

from trl import DPOTrainer
from datasets import load_dataset

trainer = DPOTrainer(
    model="Qwen/Qwen3-0.6B",
    train_dataset=load_dataset("trl-lib/ultrafeedback_binarized", split="train"),
)
trainer.train()

주요 파라미터

  • model: 훈련할 모델. 문자열, PreTrainedModel, 또는 PeftModel 모두 가능
  • ref_model: 참조(reference) 모델. None이면 기본
  • args: DPOConfig. None이면 기본 설정 사용

DPOConfig의 loss_type

가능한 값: 'sigmoid', 'hinge', 'ipo', 'exo_pair', 'nca_pair', 'robust', 'bco_pair', 'sppo_hard', 'aot', 'aot_unpaired', 'apo_zero', 'apo_down', 'discopop', 'sft', 'sigmoid_norm'.

  • discopop_tau (기본 0.05): DiscoPOP 논문의 τ/temperature, loss_type='discopop' 사용 시
  • use_weighting (기본 False): WPO 방식 가중치 적용 여부

더 알아보기