MiniMind 新手教程

第 8 章:强化学习

SFT 之后用反馈继续打磨。新手先分清 RLHF / RLAIF,再决定要不要上 DPO 或 GRPO。

1两条反馈路

类型谁打分优点代价
RLHF人类偏好更贴近真人口味贵、慢
RLAIF模型 / 规则 / 环境能自动放大规模可能偏离人类真实偏好

本质都是:看好的回答提高概率,看差的压下去。差别在于分从哪来、能不能在线试错、奖励是即时还是整轮结束才结算。

2DPO:最适合先尝试的 RLHF

SFT 之后模型会接龙,但还不知道什么叫「好答案」。DPO 用现成的 chosen / rejected 对,直接优化「好的比差的更可能」,不必再训 Reward / Value 模型。

  • 只要 actor + 固定的 ref,显存低、实现简单
  • 离线吃静态偏好数据,可多 epoch
  • 强项是偏好 / 安全对齐,不是「把数学做对」
cd trainer
python train_dpo.py

产出 out/dpo_*.pth。数据是 dataset/dpo.jsonl。

3RLAIF:在线采样再打分

数据格式像 SFT,但 assistant 内容无意义——训练时由当前策略现场生成 1 条或多条回答,再用奖励模型或规则打分。

仓库实现了被广泛验证的 PPO、GRPO,以及实验性的前沿算法(如 CISPO)。数据用 rlaif.jsonl(约 20MB+)。

默认演示走 Reward Model:InternLM2-1.8B-Reward。下载后放在与 minimind 同级的目录:

root/
├── minimind/
└── internlm2-1_8b-reward/
64M 模型做高考数学会「全员零分」——奖励全是 0,梯度消失。所以 MiniMind 用连续分数的奖励模型,区分「更差」和「没那么差」,而不是 0/1 对错。

4Agentic RL:多轮工具再结算

train_agent.py 做多轮 Tool-Use 上的 GRPO / CISPO。奖励常常在整条任务链路结束才给(代码有没有跑通、答案对不对),和单轮对话即时打分不一样。

数据:agent_rl.jsonl、agent_rl_math.jsonl。官方对比里,agent 权重在 20 道工具数学题上 17/20,full_sft 是 12/20。

工具任务变强,开放问答往往更爱编。这叫对齐税:盯着一条奖励把能力拉高,通用性和事实性常会掉一块。要稳的日常聊天,继续用 full_sft;要可验证的工具题,再用 agent 权重。

5新手什么时候再碰这一章

  1. 已经独立跑通 Pretrain + SFT,并能对话
  2. 读过 train_dpo.py 或 train_grpo.py,能指出奖励从哪来
  3. 接受「RL 之后通用能力可能变差」

只想体验完整链路:先 DPO(数据现成、不用奖励模型),再视显存决定要不要 GRPO。