LLM 后训练全景:SFT、RM、RLHF、RLVR 各在什么位置
把你听过的一堆缩写排进一张流程图,知道 GRPO 训的是哪一段、前后各接什么。
学完这节你能做到
- 画出 预训练 → SFT → 偏好对齐 / 可验证奖励 的完整链路
- 说清 RLHF 与 RLVR 的区别,以及为什么新手该从 RLVR 起步
- 判断一个任务该用 SFT、DPO 还是 GRPO
把缩写排进一张图
SFT、RM、RLHF、PPO、DPO、GRPO、RLVR、RLAIF……这些词经常混在一起出现,但它们不在同一个层级上。先把层级分清:
【阶段】
预训练 ──→ 继续预训练 ──→ SFT ──→ 偏好/奖励对齐 ──→ 蒸馏、量化…
知识 领域知识 格式与指令 取舍与偏好
└──────┬──────┘
│
【这一段的两条路】
│
┌────────────────────┴────────────────────┐
│ │
RLHF 系 RLVR 系
奖励来自「人的偏好」 奖励来自「能不能验证」
│ │
┌──────────┴──────────┐ ┌─────────┴─────────┐
│ │ │ │
在线(要采样) 离线(不采样) 数学/代码/结构化 本路径走这条
PPO, GRPO, GSPO DPO, IPO, KTO GRPO, PPO…
- 阶段:预训练 → SFT → 对齐。这是流水线。
- 奖励来源:人标偏好(RLHF)还是规则可验证(RLVR)。这是选择题。
- 算法:PPO / GRPO / DPO 等。这是实现方式。
三个层级经常被混着说,比如「我们做了 RLHF」既可能指整个流程,也可能只指用了 PPO。听到时问一句「奖励从哪来」通常就清楚了。
每个阶段在教什么
| 阶段 | 数据形态 | 教给模型什么 | 单卡 5090 可行性 |
|---|---|---|---|
| 预训练 | 海量无标注文本 | 世界知识、语言能力 | ❌ 完全不可能 |
| SFT | (指令, 理想回答) | 格式:怎么应答、什么风格 | ✅ 小模型可以 |
| 偏好/奖励对齐 | (指令, 打分器) 或偏好对 | 取舍:多个可行答案里选哪个 | ✅ 本路径要做的 |
一句话总结常见的说法:
预训练给的是知识,SFT 给的是格式,RL 给的是取舍。
SFT 的损失函数是「照抄这条答案」。它只能告诉模型「这样答是对的」,无法告诉它「这样答比那样答更好」。
而现实中大量问题是比较级的:这两个回答都通顺,哪个更有帮助?这段代码都能跑,哪个更好维护?
要表达「A 比 B 好」,你需要一个能给不同答案打不同分的信号 —— 这就是 reward 的作用。
RLHF:三段式
这是 InstructGPT 那篇论文确立的经典流程,也是「RLHF」这个词最初的意思:
① SFT
在人写的高质量回答上微调,先把格式教会
② 训 Reward Model
收集人的偏好对 (prompt, 回答A, 回答B, 人更喜欢哪个)
训一个模型来预测「人会更喜欢哪个」
→ 得到一个能对任意回答打分的 RM
③ PPO
用 RM 当打分器,跑强化学习
同时用 KL 惩罚拴住 SFT 模型,别跑太远
代价很明显:
- 第②步需要大量人工标注,几万到几十万条偏好对
- RM 本身会被钻空子(模型学会生成「RM 喜欢但人不喜欢」的东西)
- 第③步显存里要住四个模型:actor、critic、reference、RM
训一个可用的 RM 需要偏好数据,而收集偏好数据需要人。单卡个人项目里,这一步基本走不通。
而且它会引入一层额外的不确定性:模型效果不好,你分不清是 RL 的问题还是 RM 不准。
RLVR:奖励来自可验证的答案
Reinforcement Learning with Verifiable Rewards。核心思路:跳过 RM,直接用规则判分。
① (可选)SFT
② 直接跑 RL,reward = 规则判分
前提是任务得有「能自动验证对错」的性质:
| 任务 | 怎么验证 | 好不好用 |
|---|---|---|
| 数学题 | 抽出答案和标准答案比对 | ✅ 最好用 |
| 代码 | 跑单元测试 | ✅ 好用,但要沙箱 |
| 结构化输出 | 校验 JSON schema / 正则 | ✅ 好用 |
| 翻译 | BLEU?质量与指标不完全对齐 | ⚠️ 勉强 |
| 「写得更好」 | 无法自动判定 | ❌ 得回到 RM |
RLVR 对新手的三个决定性优势:
- 不需要标注。GSM8K 自带标准答案。
- reward 是可信的。答案对不对是客观事实,不是另一个模型的猜测。
- 少一个模型。显存少一份 RM,单卡场景下这很关键。
不是因为数学重要,而是因为它的 reward 干净。
你能百分之百确定「这条回答对不对」,于是当训练出问题时,你知道问题一定在算法或超参上,而不是「RM 打分不准」。对新手来说,排除一个不确定性来源比什么都值。
在线与离线:DPO 为什么便宜
RLVR / RLHF 说的是奖励来源,在线还是离线说的是另一件事:训练时要不要现场采样。
| 在线(on-policy) | 离线(offline) | |
|---|---|---|
| 代表 | PPO、GRPO、GSPO | DPO、IPO、KTO |
| 数据 | 当前模型现场生成 | 事先准备好的偏好对 |
| 每步开销 | 要先生成,慢 | 只有前向+反向,快 |
| 显存 | 要推理引擎 + 参考模型 | 只要参考模型 |
| 效果上限 | 更高 | 受限于数据集里已有的答案 |
DPO 把「偏好对」直接变成一个监督式的损失函数,绕开了采样。所以它便宜、稳定、好复现——很多团队的第一步就是 DPO。
但它有个天花板:模型只能从已有数据里学,不能探索出新解法。 如果数据集里没有一条「先分步推理再给答案」的样本,DPO 永远教不出这个行为。
而 RL 可以:模型自己采样时偶然生成了一次分步推理、恰好答对了、拿到高分、这个行为被强化——新行为是探索出来的,不是数据里给的。
DeepSeek-R1 证明了一件事:足够强的 base 模型 + 干净的可验证奖励 + 足够多的 RL 步数,能长出「反思」「验算」「换个思路」这类没人教过的行为。
对我们的意义是:这条路子在小模型上也成立,只是幅度小得多。你在 0.6B 上大概不会看到「等一下,我重新想想」,但会看到回答变长、格式变规整、错误率下降 —— 机制是同一个。
决策树:你的任务该用什么
你的任务有标准答案 / 能自动验证吗?
├── 有 ──→ RLVR。用 GRPO,reward 写成规则
│ (本路径走这条)
└── 没有
├── 有现成的偏好数据?
│ ├── 有 ──→ 先试 DPO,便宜且稳
│ └── 没有 ──→ 先做 SFT。数据不够时 RL 帮不了你
└── 能用更强的模型来打分?
└── 能 ──→ RLAIF / LLM-as-judge,本质是把 RM 换成一个大模型
一个常见误区:模型效果不好,上 RL。
实际上如果模型连基本格式都做不对,先做 SFT。RL 的作用是在「模型已经能生成好几种可行答案」的前提下帮它挑更好的那个。如果它生成的东西全是错的,采样出来一组全 0 的 reward,RL 无事可做(这正是 GRPO 里「整组优势归零」的场景)。
顺序是:SFT 让它会做,RL 让它做得更好。
RLVR 相比经典 RLHF 最主要的简化是什么?
下面哪些说法是对的?(多选)
这节课的落点
- 三个层级要分清:阶段(预训练/SFT/对齐)、奖励来源(RLHF/RLVR)、算法(PPO/GRPO/DPO)
- 预训练给知识,SFT 给格式,RL 给取舍;SFT 表达不了「A 比 B 好」
- RLVR 省掉 RM,换来「不用标注 + reward 可信 + 少一个模型」
- 在线方法能探索出数据里没有的新行为,离线方法(DPO)不能
- 模型连格式都做不对时先 SFT;RL 的前提是它已经能生成几种可行答案
- 本路径选 GSM8K,是为了让 reward 干净,从而排除一个不确定性来源