One recipe, many logos
DPO started a small industry. Skip the reward model and the reinforcement-learning loop, train the policy directly on preference pairs, and alignment becomes a supervised objective. Dozens of successors followed, each modifying the loss and claiming an edge: IPO, SimPO, NCA, Cal-DPO, APO-Zero, and the one-stage odds-ratio family of ORPO and ASFT. Reading their results side by side is nearly impossible, because each method arrives with its own training protocol, its own hyperparameter conventions, and its own favorite benchmark.
We wanted the comparison the literature kept not making: fix the pipeline, fix the search budget, and ask which design choices actually move alignment quality. Two axes organize every method we tested, and the axis nobody advertises turned out to be the one that matters.
Two axes hide inside every loss
The first axis is the scalar score a method optimizes. The DPO family scores a completion by how far the policy has moved from a frozen reference, . ORPO and ASFT instead use the odds of generating the sequence, , with no reference policy at all.
The second axis is how the score enters the loss. Pairwise objectives, DPO, IPO, SimPO, ORPO, optimize the gap between chosen and rejected, in the classic form . Pointwise objectives, APO-Zero, NCA, Cal-DPO, ASFT, push each side independently: raise , lower , no comparison required. Learning-to-rank research treats this split as fundamental; DAA papers rarely mention it.
Where each method actually lives
The design spacePutting every method on the same footing
Two obstacles blocked a clean comparison. ORPO and ASFT are one-stage recipes: they bolt an alignment term onto the SFT loss and train straight from the base model. And they ship without the temperature that every DPO-family method tunes. Neither trait is essential. The alignment terms already contain the SFT signal, ASFT's is exactly a binary cross-entropy, and , so the explicit SFT term is redundant.
So we unify. Train SFT first, then apply only the alignment term, tempered: for ASFT, and for ORPO. Setting recovers the originals, so nothing is lost, and every method now lives in the same two-stage pipeline and the same hyperparameter space.
From one-stage folklore to one protocol
The unificationAn explicit SFT stage is worth ten points
The conversion is not a formality. On Llama 3.1 8B with UltraFeedback, one-stage ORPO trained from the base model reaches 14.8 length-controlled win rate on AlpacaEval 2. The same objective, run as alignment-only on top of an SFT checkpoint, reaches 24.1, right next to DPO's 23.4. Keeping the combined loss but merely starting from SFT is worse than either at 13.4, so the separation itself does the work, not the initialization.
Same objective, three recipes
AlpacaEval 2 LC win rate, %ASFT follows the same pattern at a lower level, 14.5 to 16.4. The SFT stage itself is also cheaper than folklore suggests: across every method we tested, training the SFT checkpoint on just 5 to 10 percent of UltraChat already delivers at least 95 percent of the full-data alignment score.
The temperature they shipped without
Tempering is the second missing piece. On the Reddit TL;DR setup the effect is dramatic: a tuned lifts ASFT by 43.4 GPT-4 win-rate points, from 43.8 to 87.2, and ORPO by 7.0. On the harder 8B UltraFeedback setup the gains are 8.27 and 3.46 length-controlled points. A knob the original methods did not expose turns out to be a first-order control on their quality.
What tuning β buys the odds-ratio methods
AlpacaEval 2 LC, Llama 3.1 8BThe axis that survives unification
With everything unified, we ran the comparison properly: at least six values times four learning rates per method, 651 GPU-days in total. The advertised differences between scalar scores dissolve; and methods land on top of each other. What separates the field at 8B is the ranking axis: every pairwise method beats every pointwise method on both AlpacaEval 2 and ArenaHard.
Eight methods, two clusters
ArenaHard win rate, %The split is statistically real and robust. Permutation tests over all 70 pairwise-versus-pointwise group assignments give on every 8B metric, and ranking by each method's top three configurations instead of its single best preserves the ordering, so no lucky hyperparameter is responsible. Mistral 7B reproduces the separation, and on Qwen 2.5 math reasoning it reappears at 14B, including under AlphaPO and forward-KL score families.
Llama 3.1 8B UltraFeedback, best configuration per method
| Method | Ranking | AlpacaEval 2 LC % | ArenaHard WR % |
|---|---|---|---|
| ORPO | pairwise | 28.25 | 20.9 |
| IPO | pairwise | 28.18 | 19.1 |
| SimPO | pairwise | 27.65 | 21.5 |
| DPO | pairwise | 26.82 | 19.0 |
| NCA | pointwise | 23.21 | 15.1 |
| Cal-DPO | pointwise | 23.19 | 15.2 |
| APO-Zero | pointwise | 23.15 | 17.3 |
| ASFT | pointwise | 20.82 | 13.5 |
| SFT only | none | 10.27 | 2.6 |
Why ranking style matters more than the score
Every score family defines a per-prompt average , a bias the model inherits from its data. Pointwise losses keep pushing chosen scores up and rejected scores down even on pairs they already order correctly, which amounts to spending capacity unlearning . Pairwise losses are structurally indifferent to such uniform shifts, their total score gradient per prompt is zero, so the same capacity goes to the examples that still need it.
That account predicts where the gap should live: nowhere at the easy or hopeless extremes, and squarely at intermediate difficulty. It is exactly what we observe. On easy TL;DR summarization every method wins roughly 90 percent of GPT-4 comparisons, ASFT trailing at 87.2. At 3B on UltraFeedback the methods blur into overlapping confidence intervals. At 8B, where capacity suffices to unlearn bias but not to also master the hard examples, the families separate.
The scope is deliberate: offline alignment on static binary preference pairs, with judge-based results cross-checked on verifiable math benchmarks up to 14B. Online preference optimization may behave differently. Within that scope our advice is blunt: before believing a new direct alignment algorithm is better, check whether it changed the ranking objective or just redrew the logo.
Put direct alignment algorithms on one protocol and the brand differences blur; whether the loss ranks pairs or pushes points is what moves quality.