DPOTrainer — 직접 선호 최적화
DPOTrainer — 직접 선호 최적화
DPOTrainer는 직접 선호 최적화(Direct Preference Optimization) 로 언어 모델을 훈련하는 트레이너예요. 선호 쌍(preferred/rejected) 데이터로 명시적인 보상 모델 없이도 정책을 최적화하는 방법이죠. 원 논문은 Direct Preference Optimization: Your Language Model is Secretly a Reward Model이에요.
퀵스타트
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 방식 가중치 적용 여부