C.W.K.
Stream
Lesson 05 of 06 · published

Alignment: DPO, ORPO, SimPO

~22 min · dpo, orpo, simpo, alignment, preference

Level 0관찰자
0 XP0/43 lessons0/11 achievements
0/120 XP to next level120 XP to go0% complete

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로 보고됨. CPOTrainerloss_type="simpo"로 사용.

메서드 비교

메서드데이터 포맷Reference 모델?적합한 경우
SFTinstruction → responseNo특정 행동 가르치기
DPOpreferred / rejected 쌍Yes응답 품질 개선
ORPOpreferred / rejected 쌍No단일 단계 alignment
SimPOpreferred / rejected 쌍No최고 품질, 효율적

Code

DPO training in TRL·python
from trl import DPOConfig, DPOTrainer

# Data format: {"prompt": "...", "chosen": "...", "rejected": "..."}
dpo_config = DPOConfig(
    output_dir="./dpo-results",
    beta=0.1,                    # KL penalty strength
    learning_rate=5e-5,
    num_train_epochs=1,
    per_device_train_batch_size=2,
    gradient_accumulation_steps=4,
    bf16=True,
)

trainer = DPOTrainer(
    model=model,                 # the SFT-fine-tuned model
    ref_model=None,              # None = use frozen base for KL
    args=dpo_config,
    train_dataset=preference_dataset,
    processing_class=tokenizer,
    peft_config=peft_config,
)
trainer.train()

External links

Exercise

이전 레슨의 SFT 파인튜닝 모델 가져와. 프롬프트당 다른 temperature로 응답 둘 생성하고 순위 매겨서 작은(50쌍) preference 데이터셋 구축. SFT 모델 위에 DPO 돌려. 10개 held-out 프롬프트에서 base, SFT, SFT+DPO 출력 비교.

Progress

Progress is local-only — sign in to sync across devices.
이 페이지에서 버그를 발견하셨거나 피드백이 있으세요?문제 신고

댓글 0

🔔 답글 알림 (로그인 필요)
로그인댓글을 남기려면 로그인해 주세요.

아직 댓글이 없어요. 첫 댓글을 남겨보세요.