Supervised fine-tuning 너머
SFT는 모델한테 뭘 말할지 가르쳐. Alignment는 좋은 응답을 나쁜 것보다 선호하게 가르쳐. 데이터가 instruction → response 아니라 preference 쌍(preferred / rejected)일 때 alignment 사용.
DPO (Direct Preference Optimization)
(preferred, rejected) 응답 쌍으로 학습. RLHF보다 단순 — 별도 reward 모델 불필요. KL 제약 위해 reference 모델(freeze된 베이스) 필요.
ORPO (Odds Ratio Preference Optimization)
SFT랑 alignment를 한 학습 단계로 결합 — reference 모델 X. DPO보다 빠르고 메모리 효율적. TRL v1.0에선 trl.experimental.orpo 아래.
SimPO (Simple Preference Optimization)
평균 log 확률을 implicit reward로 사용(reference 모델 X). AlpacaEval 2에서 DPO 대비 ~6.4점 더 좋고 20% 적은 compute로 보고됨. CPOTrainer에 loss_type="simpo"로 사용.
메서드 비교
| 메서드 | 데이터 포맷 | Reference 모델? | 적합한 경우 |
|---|---|---|---|
| SFT | instruction → response | No | 특정 행동 가르치기 |
| DPO | preferred / rejected 쌍 | Yes | 응답 품질 개선 |
| ORPO | preferred / rejected 쌍 | No | 단일 단계 alignment |
| SimPO | preferred / rejected 쌍 | No | 최고 품질, 효율적 |