Unpacking DPO and PPO: Disentangling Best Practices for Learning from Preference Feedback

Hamish Ivison, Yizhong Wang, Jiacheng Liu, Zeqiu Wu, Valentina Pyatkin +4 more
2/3/2026

No official code found. Best implementation: allenai/open-instruct (3,881 stars, Apache-2.0, last commit 2026-04-28). 1 more below.

Abstract

Learning from preference feedback has emerged as an essential step for improving the generation quality and performance of modern language models (LMs). Despite its widespread use, the way preference-based learning is applied varies wildly, with differing data, learning algorithms, and evaluations used, making disentangling the impact of each aspect difficult. In this work, we identify four core aspects of preference-based learning: preference data, learning algorithm, reward model, and policy training prompts, systematically investigate the impact of these components on downstream model performance, and suggest a recipe for strong learning for preference feedback. Our findings indicate that all aspects are important for performance, with better preference data leading to the largest improvements, followed by the choice of learning algorithm, the use of improved reward models, and finally the use of additional unlabeled prompts for policy training. Notably, PPO outperforms DPO by up to 2.5% in math and 1.2% in general domains. High-quality preference data leads to improvements of up to 8% in instruction following and truthfulness. Despite significant gains of up to 5% in mathematical evaluation when scaling up reward models, we surprisingly observe marginal improvements in other categories. We publicly release the code used for training (https://github.com/hamishivi/EasyLM) and evaluating (https://github.com/allenai/open-instruct) our models, along with the models and datasets themselves (https://huggingface.co/collections/allenai/tulu-v25-suite-66676520fd578080e126f618).

View on arXivView PDF

Code Implementations(2)

Apache-2.0

AllenAI's post-training codebase

3,881591CSS, HTMLJun 9, 20235 months agoApache-2.0
hamishivi/EasyLMCommunity100%
Apache-2.0

Large language models (LLMs) made easy, EasyLM is a one stop solution for pre-training, finetuning, evaluating and serving LLMs in JAX/Flax.

7815Shell, PythonApr 7, 20232 years agoApache-2.0

Similar Papers

Cite this paper

@article{ivison2026unpacking,
  title  = {Unpacking DPO and PPO: Disentangling Best Practices for Learning from Preference Feedback},
  author = {Hamish Ivison and Yizhong Wang and Jiacheng Liu and Zeqiu Wu and Valentina Pyatkin and Nathan Lambert and Noah A. Smith and Yejin Choi and Hanna Hajishirzi},
  year   = {2026},
  eprint = {2406.09279},
  archivePrefix = {arXiv},
  doi    = {10.48550/arXiv.2406.09279},
  url    = {https://arxiv.org/abs/2406.09279},
  journal = {NEURIPS 2024 2024}
}

Add a badge to your README

Shows whether official code is linked for this paper.

Code of Paper badge
[![Code of Paper](https://codeofpaper.com/badge/2406.09279.svg)](https://codeofpaper.com/paper/2406.09279)

Discussion