INNER 07 / MODEL / 05 · ENGINE v1
人类偏好对⻬ DPO、ORPO 与 GRPO(Scientist 5: Preference Alignment)
本关练习:构建去“AI 说教味”的 DPO 偏好数据集与训练配置。
30 SECONDS / 30 秒看懂
这一关只解决一件事:经过 SFT 微调后的模型虽然学会了指令格式,但往往还存在“爹味说教、冗余罗嗦、容易被诱导输出有害内容或推理不够严密”的问题。mlabonne/llm-course 第 5 章(Preference Alignment) 详解了三大现代对⻬算法: DPO(Direct Preference Optimization,直接偏好优化):无需像传统 RLHF 那样训练独立的奖励模型 (Reward Model),直接传入三元组数据 (prompt, chosen_response, rejected_response),最大化优质回答相对劣质回答的对数概率比,显存开销小且极其稳定,最适合打磨对话文⻛与去 AI 腔。
- 编写一条标准的 DPO 训练数据 JSON 样本,包含 prompt、chosen(干脆利落直奔主题的回答)与 rejected(充满 AI 套话与端水说教的回答);
- 说明为什么 DPO 的学习率(如 5e-6)必须比 SFT 阶段(2e-4)小一到两个数量级,并解释温度超参数 beta(通常取
- 1)的作用(
3 MINUTES / 3 分钟拆解
先看来源里的例子:PDF 本关任务(来源)
你的客服微调模型每次回答前总喜欢写一大段“作为一个人工智能语言模型,我很理解您的心情,让我为您从以下几个方面娓娓道来......”,你想用 DPO 彻底根除这种腔调。
发生了什么
来源要求:编写一条标准的 DPO 训练数据 JSON 样本,包含 prompt、chosen(干脆利落直奔主题的回答)与 rejected(充满 AI 套话与端水说教的回答); / 说明为什么 DPO 的学习率(如 5e-6)必须比 SFT 阶段(2e-4)小一到两个数量级,并解释温度超参数 beta(通常取 / 1)的作用(
输出
参考答案:参考答案:去“AI 说教腔”DPO 偏好样本与超参数规范 { "prompt": "请问把 Python 列表里的重复元素去掉,同时保持原来的先后顺序不变,怎么写最简洁?", "chosen": "直接使用 `dict.fromkeys()` 最简洁且保持原序(Python 3.7+ 字典默认保序): \n```python\nitems = [3, 1, 2, 1, 3, 4]\nunique_items = list(dict.fr
术语拆开
- DPO
- 直接用偏好对优化模型,不需要独立奖励模型。
- beta
- DPO 的温度参数,常取 0.1。
- GRPO
- 用组内相对优势和规则奖励优化推理。
为什么有效
来源核心原理:经过 SFT 微调后的模型虽然学会了指令格式,但往往还存在“爹味说教、冗余罗嗦、容易被诱导输出有害内容或推理不够严密”的问题。mlabonne/llm-course 第 5 章(Preference Alignment) 详解了三大现代对⻬算法: DPO(Direct Preference Optimization,直接偏好优化):无需像传统 RLHF 那样训练独立的奖励模型 (Reward Model),直接传入三元组数据 (prompt, chosen_response, rejected_response),最大化优质回答相对劣质回答的对数概率比,显存开销小且极其稳定,最适合打磨对话文⻛与去 AI 腔。 ORPO(Odds Ratio Preference Optimization):将 SFT 监督微调与偏好对⻬合并为单阶段完成,无需先做 SFT 再做 DPO,节省一半算力。 GRPO(Group Relative Policy Optimization):DeepSeek-R1 等推理模型的核心强化学习算法——针对同一道数学或代码题采样生成一组(Group)回答,用确定性规则(如代码能否跑通测试、数学答案是否正确)打分并计算组内相对优势,无需 Critic 价值网络即可激发出强大的长思维链自我反思能力。
结构长什么样
编写一条标准的 DPO 训练数据 JSON 样本,包含 prompt、chosen(干脆利落直奔主题的回答)与 rejected(充满 AI 套话与端水说教的回答); 说明为什么 DPO 的学习率(如 5e-6)必须比 SFT 阶段(2e-4)小一到两个数量级,并解释温度超参数 beta(通常取 1)的作用( 5 分); 对比说明什么场景该选 DPO、什么场景该选基于规则奖励的 GRPO。
什么场景更适合 GRPO 而不是 DPO?
SOURCE READING / 来源精读
经过 SFT 微调后的模型虽然学会了指令格式,但往往还存在“爹味说教、冗余罗嗦、容易被诱导输出有害内容或推理不够严密”的问题。mlabonne/llm-course 第 5 章(Preference Alignment) 详解了三大现代对⻬算法: DPO(Direct Preference Optimization,直接偏好优化):无需像传统 RLHF 那样训练独立的奖励模型 (Reward Model),直接传入三元组数据 (prompt, chosen_response, rejected_response),最大化优质回答相对劣质回答的对数概率比,显存开销小且极其稳定,最适合打磨对话文⻛与去 AI 腔。
逐点读懂
- 编写一条标准的 DPO 训练数据 JSON 样本,包含 prompt、chosen(干脆利落直奔主题的回答)与 rejected(充满 AI 套话与端水说教的回答);
- 说明为什么 DPO 的学习率(如 5e-6)必须比 SFT 阶段(2e-4)小一到两个数量级,并解释温度超参数 beta(通常取
- 1)的作用(
怎么对应本关练习
先读 30 秒与 3 分钟拆解,再读本关原文与实验,最后做客观题和实操题;答案在下方。
例子在哪
本关任务与参考答案见页面下方;来源为本册 PDF 对应关卡。
本关先记住:编写一条标准的 DPO 训练数据 JSON 样本,包含 prompt、chosen(干脆利落直奔主题的回答)与 rejected(充满 AI 套话与端水说教的回答);
核心原理
经过 SFT 微调后的模型虽然学会了指令格式,但往往还存在“爹味说教、冗余罗嗦、容易被诱导输出有害内容或推理不够严密”的问题。
mlabonne/llm-course 第 5 章(Preference Alignment) 详解了三大现代对⻬算法: DPO(Direct Preference Optimization,直接偏好优化):无需像传统 RLHF 那样训练独立的奖励模型 (Reward Model),直接传入三元组数据 (prompt, chosen_response, rejected_response),最大化优质回答相对劣质回答的对数概率比,显存开销小且极其稳定,最适合打磨对话文⻛与去 AI 腔。
ORPO(Odds Ratio Preference Optimization):将 SFT 监督微调与偏好对⻬合并为单阶段完成,无需先做 SFT 再做 DPO,节省一半算力。
GRPO(Group Relative Policy Optimization):DeepSeek-R1 等推理模型的核心强化学习算法——针对同一道数学或代码题采样生成一组(Group)回答,用确定性规则(如代码能否跑通测试、数学答案是否正确)打分并计算组内相对优势,无需 Critic 价值网络即可激发出强大的长思维链自我反思能力。
第 5 关实操练习题:构建去“AI 说教味”的 DPO 偏好数据集与训练配置
任务背景
你的客服微调模型每次回答前总喜欢写一大段“作为一个人工智能语言模型,我很理解您的心情,让我为您从以下几个方面娓娓道来......”,你想用 DPO 彻底根除这种腔调。
通关硬性要求(满分 12.5 分)
1. 编写一条标准的 DPO 训练数据 JSON 样本,包含 prompt、chosen(干脆利落直奔主题的回答)与 rejected(充满 AI 套话与端水说教的回答)(5 分);
2. 说明为什么 DPO 的学习率(如 5e-6)必须比 SFT 阶段(2e-4)小一到两个数量级,并解释温度超参数 beta(通常取
0.1)的作用(
4.5 分);
3. 对比说明什么场景该选 DPO、什么场景该选基于规则奖励的 GRPO(3 分)。
PRACTICE / 本关练习 · 本地规则 + 覆盖检查
构建去“AI 说教味”的 DPO 偏好数据集与训练配置
本地检查在你的浏览器里完成,不上传。覆盖检查需要先登录(免费注册),并把这段答案发送到服务器计算一次,算完即弃、不存档,需你点同意;只核对本关评分项覆盖的方向,不在评分项里的题目不会被检查。
评分项
结构分 — / 12.5 分
查看参考答案与得分点 先自己写,再打开+
参考答案与得分要点
参考答案:去“AI 说教腔”DPO 偏好样本与超参数规范 { "prompt": "请问把 Python 列表里的重复元素去掉,同时保持原来的先后顺序不变,怎么写最简洁?", "chosen": "直接使用 `dict.fromkeys()` 最简洁且保持原序(Python 3.7+ 字典默认保序): \n```python\nitems = [3, 1, 2, 1, 3, 4]\nunique_items = list(dict.fromkeys(items)) # 输出: [3, 1, 2, 4]\n```\n时间复杂度为 O(n),比用 `list(set(items))` 更稳妥,因为 `set` 会打乱原有顺序。", "rejected": "你好!这是一个非常棒的 Python 编程问题!在日常开发中,列表去重确实是一个经常遇到的需求。作为一个 AI 助手,我很乐意为你从多个角度详细剖析这个问题。首先,让我们来看看什么是列表......(以下省略 300 字废话寒暄)" } // DPO 训练核心参数规范: // 1. learning_rate = 5e-6(必须在已收敛 SFT 模型上做微幅概率偏移,学习率过大会瞬间破坏语言连贯性导致模型崩溃输出乱码) // 2. beta = 0.1(KL 散度惩罚系数:控制新策略偏离原 SFT 参考模型的幅度,beta 越大越保守,beta 越小对 chosen 偏好强化越激进) // 3. 选型对比:主观文⻛对⻬、安全拒答与礼貌度优化选 DPO/ORPO;具备确定性验证器(如数学算式对错、代码能否编译通过)的复杂逻辑推理增强选 GRPO。 得分要点拆解:构建对比鲜明的 `prompt / chosen / rejected` 三元组(5 分);解释极低学习率(`5e-6`) 与 KL 惩罚系数 `beta=0.1` 的防崩坏原理(4.5 分);准确区分主观偏好(DPO)与可验证推理强化(GRPO) 选型(3 分)。 第 6 关
网页永久免费。完整 PDF 会按顺序发给留邮箱的读者,不转售、不群发广告。
留邮箱,获取完整 PDF ↗