跳转到主要内容

DPO 训练

直接偏好优化使模型与人类偏好对齐,无需奖励建模。

什么是 DPO?

DPO(Direct Preference Optimization)是 RLHF 的更简单替代方案。DPO 不是训练单独的奖励模型,而是直接优化模型以偏好选择的响应而非被拒绝的响应。

快速开始

DPO 需要 --prompt-text-column--rejected-text-column--text-column 默认为 "text",因此只有当您的选择列名称不同时才需要指定。

Python API

数据格式

DPO 需要偏好对:一个提示词和选择/拒绝的响应。

多轮对话

参数

Beta

beta 参数控制模型可以从参考模型偏离多少:
  • 0.01-0.05: 激进优化(可能过拟合)
  • 0.1: 标准(推荐)
  • 0.5-1.0: 保守(保持接近参考模型)

参考模型

model_refNone(默认值)时,DPO 使用初始模型作为参考。您可以指定不同的参考模型:

训练技巧

使用 LoRA

DPO 与 LoRA 配合良好:

较低学习率

DPO 对学习率敏感:

更少轮次

DPO 通常需要更少的轮次:

示例:有用助手

创建更有用的助手:

DPO vs ORPO

收集偏好数据

人工标注

  1. 为每个提示词生成多个响应
  2. 让标注员对响应进行排序
  3. 创建选择/拒绝对

LLM 作为评判者

下一步

ORPO Training

组合 SFT + 对齐

Reward Modeling

训练奖励模型