RRLforge
完整主线 路线8 / 27 · L1 认料退出路线
原理预计 30 分钟

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 给的是取舍

i为什么 SFT 教不了「取舍」

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 不适合作为入门路径

训一个可用的 RM 需要偏好数据,而收集偏好数据需要人。单卡个人项目里,这一步基本走不通。

而且它会引入一层额外的不确定性:模型效果不好,你分不清是 RL 的问题还是 RM 不准。

RLVR:奖励来自可验证的答案

Reinforcement Learning with Verifiable Rewards。核心思路:跳过 RM,直接用规则判分。

① (可选)SFT
② 直接跑 RL,reward = 规则判分

前提是任务得有「能自动验证对错」的性质:

任务怎么验证好不好用
数学题抽出答案和标准答案比对✅ 最好用
代码跑单元测试✅ 好用,但要沙箱
结构化输出校验 JSON schema / 正则✅ 好用
翻译BLEU?质量与指标不完全对齐⚠️ 勉强
「写得更好」无法自动判定❌ 得回到 RM

RLVR 对新手的三个决定性优势:

  1. 不需要标注。GSM8K 自带标准答案。
  2. reward 是可信的。答案对不对是客观事实,不是另一个模型的猜测。
  3. 少一个模型。显存少一份 RM,单卡场景下这很关键。
所以本路径选 GSM8K 数学题

不是因为数学重要,而是因为它的 reward 干净

你能百分之百确定「这条回答对不对」,于是当训练出问题时,你知道问题一定在算法或超参上,而不是「RM 打分不准」。对新手来说,排除一个不确定性来源比什么都值。

在线与离线:DPO 为什么便宜

RLVR / RLHF 说的是奖励来源,在线还是离线说的是另一件事:训练时要不要现场采样。

在线(on-policy)离线(offline)
代表PPO、GRPO、GSPODPO、IPO、KTO
数据当前模型现场生成事先准备好的偏好对
每步开销要先生成,慢只有前向+反向,快
显存要推理引擎 + 参考模型只要参考模型
效果上限更高受限于数据集里已有的答案

DPO 把「偏好对」直接变成一个监督式的损失函数,绕开了采样。所以它便宜、稳定、好复现——很多团队的第一步就是 DPO。

但它有个天花板:模型只能从已有数据里学,不能探索出新解法。 如果数据集里没有一条「先分步推理再给答案」的样本,DPO 永远教不出这个行为。

而 RL 可以:模型自己采样时偶然生成了一次分步推理、恰好答对了、拿到高分、这个行为被强化——新行为是探索出来的,不是数据里给的。

iR1 的启示

DeepSeek-R1 证明了一件事:足够强的 base 模型 + 干净的可验证奖励 + 足够多的 RL 步数,能长出「反思」「验算」「换个思路」这类没人教过的行为。

对我们的意义是:这条路子在小模型上也成立,只是幅度小得多。你在 0.6B 上大概不会看到「等一下,我重新想想」,但会看到回答变长、格式变规整、错误率下降 —— 机制是同一个

决策树:你的任务该用什么

你的任务有标准答案 / 能自动验证吗?
├── 有 ──→ RLVR。用 GRPO,reward 写成规则
│           (本路径走这条)
└── 没有
    ├── 有现成的偏好数据?
    │   ├── 有 ──→ 先试 DPO,便宜且稳
    │   └── 没有 ──→ 先做 SFT。数据不够时 RL 帮不了你
    └── 能用更强的模型来打分?
        └── 能 ──→ RLAIF / LLM-as-judge,本质是把 RM 换成一个大模型
×RL 不是万能的第一步

一个常见误区:模型效果不好,上 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 干净,从而排除一个不确定性来源

延伸资料