后训练主线:从 SFT 到 GRPO,三种监督信号决定你能走到哪一档

T4-1模块 4 · 微调与对齐面试权重 更新于 2026-08-19
关联题目Q4-01Q4-02Q4-03

这篇学完你能回答什么

  1. SFT、RLHF、DPO 分别在做什么?能不能用一条主线把后训练串起来,而不是背三个缩写?
  2. DPO 为什么能绕开奖励模型?它相比 RLHF/PPO 省了什么、赔上了什么?
  3. GRPO 是什么?为什么推理模型的训练里到处是它?它自己有什么已知毛病?

从一个真实故障讲起

一个内部写作助手的团队收到反馈:模型回答太啰嗦。他们做了一件在 2026 年门槛很低的事——收集了 6000 组偏好对(同一个问题下两个候选答案,标注员选出更好的那个),跑了一轮 DPO(Direct Preference Optimization,直接偏好优化,一种不需要训练奖励模型的偏好对齐方法)。

上线后指标很好看:平均回答长度从 480 字降到 210 字,"回答冗长"的负反馈掉了七成。团队开香槟。

两周后,另一类投诉起来了:"问复杂问题它就敷衍。"

具体表现是,用户问"帮我对比一下这三个方案的风险",模型给一段两行的泛泛结论就收尾了;追问细节,它还是短。而同样的问题喂给微调前的版本,答案虽然啰嗦,但三个方案是逐条比过的。

复盘的时候他们抽查了标注数据,发现一件事:在那 6000 组偏好对里,标注员选中的答案平均比落选答案短 40%。标注指引写的是"选更好的那个",但标注员在没有明确判准时,系统性地倾向于选更简洁的。

模型学到的不是"更好",是"更短"。

这个故障不是 DPO 的 bug,它是后训练这件事的本质暴露:后训练是把某个信号压进权重。你压进去的是你实际标注的那个东西,不是你心里想要的那个东西。 而这一整条主线上的每一步——SFT、RLHF、DPO、GRPO——区别只在于你能拿到什么形态的信号,以及这个信号有多容易被钻空子

模型学到的不是「更好」,是「更短」
6000 组偏好对、负反馈掉七成,两周后换来一句「问复杂问题它就敷衍」

  1. 「回答太啰嗦」的反馈

    收 6000 组偏好对,跑一轮 DPO

  2. 标注指引只写「选更好的」断点

    没给判准,全靠标注员当场感觉

  3. chosen 平均短 40%

    系统性偏置被原样压进权重

  4. 上线指标很好看

    480 字降到 210 字,负反馈掉七成

  5. 两周后另一类投诉

    问复杂问题它就敷衍,追问还是短

平均回答长度480 字210 字
「回答冗长」负反馈上线前的量掉了七成
问「对比三个方案」微调前逐条比过两行泛泛结论就收尾
标注指引写的 vs 学到的选更好的选更短的
这不是 DPO 的 bug,是后训练的本质暴露:压进权重的是你实际标注的那个东西,不是你心里想要的那个东西。补丁很朴素 —— 开训前先给 chosen / rejected 做一次长度体检。

核心概念:先打比方,再给定义

把训练一个模型类比成培养一个新人。

预训练(pre-training):这个人把公司的所有文档、所有代码、所有邮件都读完了。他知道的东西极多,但你问他问题,他会接着你的话往下写,而不是回答你——因为他学的是"下一个词是什么",不是"该怎么应答"。

监督微调(SFT,Supervised Fine-Tuning):你给他看几万份"问题—标准答案"的范文,让他照着写。他很快学会了"这类问题该长成什么样"。SFT 学的是形式。

但范文教不了一件事:两个都合规、都像模像样的答案,哪个更好?你写不出标准答案,因为"更好"本身没有唯一形式。这时候你能给的只有比较——把两份答案摆在一起,说这份比那份好。

偏好对齐(RLHF / DPO):靠成对比较来教。学的是偏好。

再往上还有一层。有些任务的对错是能用程序判定的:这段代码跑不跑得过测试?这道数学题答案对不对?这个 JSON 抽取的字段和标注是否一致?这时候你不需要人来比较,你有一个客观判分器,而且可以判无数次。

可验证奖励强化学习(RLVR,Reinforcement Learning with Verifiable Rewards):靠自动判分器来教,主流算法是 GRPO。学的是能力。

于是整条主线可以压成一句话:

形式 → 偏好 → 能力,对应「给标准答案 → 给两两比较 → 给可判定的对错」三种监督信号。你手上能拿到哪种信号,决定了你的后训练能走到哪一档。

这句话是本章后面所有选型判断的地基,也是面试里最容易一句话拉开差距的地方。

写得出范文就照着教,写不出就摆两份让他比
同一个新人,你能给出什么形态的指导,决定了他能被教到哪一档

给他看几万份范文

照着写,很快学会这类问题该长成什么样

两份都合规、都像模像样时,他说不出哪份更好

对应
SFT · 监督微调

继续做下一个 token 预测

训练数据换成(指令,回答)对,掩掉 prompt 部分,只在回答上算交叉熵

(x, y*)掩掉 prompt交叉熵
把两份答案摆一起

说这份比那份好,靠成对比较来教

教得出取向,教不出他原本就不会的那件事

对应
偏好对齐 · RLHF / DPO

在成对比较上做优化

同一件事的两种工程实现;天花板是标注员的判断力,偏置照单全收

(x, y_win, y_lose)Bradley-Terryβ
再往上还有一档:对错能用程序判定时,你根本不需要人来比较,判分器可以判无数次 —— 那一档叫 RLVR,学的是能力。形式 → 偏好 → 能力,三级台阶的名字就是这么来的。

原理拆解

决定你能走到哪一档的,是信号形态
每一档只回答一件事:你手上能拿到什么形态的监督信号

给标准答案 → SFT数据 (x, y*),掩掉 prompt 的 loss,只在回答上算交叉熵 —— 学的是形式成本:标注一份好答案很贵|上限:只知道「这样对」,永远不知道「那样错」;只给正例,压不住你不想要的行为
给两两比较 → RLHF / DPO数据 (x, y_win, y_lose),走 RM + PPO 或直接偏好损失 —— 学的是偏好成本:比较比写答案便宜,但标注偏置会被原样学走|上限:天花板是标注员的判断力,不会凭空长出新本事
给可判定的对错 → RLVR数据 (x, verify(y) → 0/1),组内相对优势,主流是 GRPO —— 学的是能力成本:判分器本身要写,采样极贵|上限:判分器判不了的东西,一律学不到;硬凑「大模型当判分器」通常更脆
GRPO 的一整代变体(截至 2026-08),每个修上面一个毛病
变体修的是什么
Dr. GRPO优势归一化里的长度偏置
DAPO动态采样过滤掉零方差组 + 解耦 clip 上下界,训练更稳(报告 Qwen2.5-32B 在 AIME 2024 达到 50)
GSPO / DHPOtoken 级更新与序列级奖励的错配
ARPO多轮 agentic 场景下的信用分配
VPOtest-time 采样多样性(best@k 场景)

DPO 凭什么绕开奖励模型:「最大化奖励 + KL 惩罚」的最优策略与奖励函数存在闭式对应,于是奖励能用策略本身表达出来、代入 Bradley-Terry 消掉。显存里只剩 π_θπ_ref;RLHF 那边要同时住四个:策略、参考、RM、critic。

GRPO 把 critic 换成同学的平均分:同题采 G = 8 ~ 16 份,用组内均值标准化当基线,省下一个和策略同规模的网络。代价是采样贵、零方差塌缩(整组全对或全错,优势全为 0)、长度偏置。

三档的上限都由信号本身封死,而不是由算法封死。所以「换个更强的算法」救不了信号形态选错 —— 拿不到可判定的对错,就别指望这条线上任何一档给你长出新能力。

三种信号的形态

原文示意
                       监督信号的三种形态
 ┌────────────────────────────────────────────────────────────────┐
 │ 形态 1  给标准答案         →  SFT              学「形式」      │
 │   数据: (x, y*)                掩掉 prompt 的交叉熵            │
 │   成本: 标注一份好答案很贵                                     │
 │   上限: 只知道「这样对」,永远不知道「那样错」                 │
 ├────────────────────────────────────────────────────────────────┤
 │ 形态 2  给两两比较         →  RLHF / DPO       学「偏好」      │
 │   数据: (x, y_win, y_lose)     RM+PPO  或  直接偏好损失        │
 │   成本: 比较比写答案便宜,但标注偏置会被原样学走               │
 │   上限: 天花板是标注员的判断力                                 │
 ├────────────────────────────────────────────────────────────────┤
 │ 形态 3  给可判定的对错     →  RLVR(GRPO 系)  学「能力」      │
 │   数据: (x, verify(y) → 0/1)   组内相对优势                    │
 │   成本: 判分器本身要写;采样极贵                               │
 │   上限: 判分器判不了的东西,一律学不到                         │
 └────────────────────────────────────────────────────────────────┘

第一档:SFT 在做什么

SFT 就是继续做下一个 token 预测,只不过训练数据换成了(指令,回答)对,并且把 prompt 部分的 loss 掩掉——只在回答部分计算交叉熵。模型因此学会:看到这种输入,就产出这种形态的输出。

SFT 有个根本局限值得记牢:它只提供正例。 每一条样本都在说"这样答是对的",从来没有一条在说"那样答是错的"。所以 SFT 能把格式、语气、领域行话教得很好,却很难压住一个你不想要的行为——你没法用"给更多正例"的方式告诉模型"别这么干"。

这就是为什么需要第二档。

第二档 A:RLHF 的四步和四个模型

RLHF(Reinforcement Learning from Human Feedback,人类反馈强化学习)的经典链路:

原文示意
① SFT 得到初始策略 π_sft
② 收集偏好对,训练奖励模型 RM:
     loss = -log σ( RM(x, y_win) - RM(x, y_lose) )       ← Bradley-Terry
③ PPO 优化策略,最大化 RM 打分,同时用 KL 拴住不许跑太远:
     objective = E[ RM(x, y) ] - β · KL( π_θ ‖ π_ref )
④ 训练时显存里同时住着四个模型:
     π_θ (策略) │ π_ref (冻结参考) │ RM (奖励) │ V (critic 价值网络)

这里两个概念要给人话解释:

  • KL 惩罚(Kullback-Leibler divergence,衡量两个概率分布差多远):拴狗绳。不加它,策略会为了骗高分把语言模型的基本能力搞坏。
  • critic / 价值网络:PPO 需要知道"这个状态下平均能拿多少分"来做基线,否则每次更新方差极大。这个基线由一个和策略同规模的网络估计——这也是 PPO 最贵的地方。

三段式评价 RLHF:

  • 解决什么:能用"比较"这种廉价信号做优化;在线采样,策略更新后重新采样,没有分布偏移问题。
  • 代价是什么:四个模型的显存与调度,工程复杂度是所有方法里最高的;奖励模型本身会被奖励攻击(reward hacking,模型找到让 RM 给高分但人类并不满意的捷径,比如疯狂加免责声明、疯狂列小标题)。
  • 什么时候不该用:你没有专职训练团队、也没有稳定的偏好数据流水线时。截至 2026-08,在推理类任务上它基本已被 GRPO 系取代;它还活着的地方主要是有稠密奖励模型、且需要在线纠偏的通用对齐。

第二档 B:DPO 凭什么绕开奖励模型

DPO 的核心是一个数学观察:RLHF 那个"最大化奖励 + KL 惩罚"的目标,其最优策略与奖励函数之间存在闭式对应关系。既然如此,就可以把奖励函数用策略本身表达出来、代入 Bradley-Terry 损失里消掉,得到一个直接在偏好对上算的普通损失函数

# π_θ = 待训模型;π_ref = 冻结的 SFT 模型;β 控制离参考模型能跑多远
def dpo_loss(x, y_win, y_lose, beta):
    # 每一项是「当前模型相对参考模型,对这个回答的偏好增量」
    delta_w = logprob(pi_theta, x, y_win)  - logprob(pi_ref, x, y_win)
    delta_l = logprob(pi_theta, x, y_lose) - logprob(pi_ref, x, y_lose)
    return -log_sigmoid(beta * (delta_w - delta_l))

一句人话:让"模型相对参考模型更偏爱 win 而非 lose"这件事的对数几率变大。 训练形态和 SFT 几乎一样——一个 loss、一个反向传播,显存里只需要 policy 和 ref 两个模型。

三段式评价 DPO:

  • 解决什么:把 RLHF 的工程复杂度砍掉一个数量级。不训 RM、不做在线采样、不要 critic。截至 2026-08,它是离线偏好优化的默认基线
  • 代价是什么:三条。第一,离线——偏好数据是固定的,不随策略更新重新采样,训到后期会有分布偏移(模型已经不产出那些样本了,还在用它们学)。第二,对偏好数据质量极度敏感,标注里的任何系统性偏置会被原样学进权重(开头那个故障就是这么来的)。第三,一个已知的实现级现象:DPO 常常在拉开 win/lose 差距的同时把两者的似然一起压低,表现为模型整体变得"不敢说话"、更容易拒答。
  • 什么时候不该用:偏好数据是众包来的、没做过一致性检查时;以及你真正想要的是能力提升而不是风格取舍时——DPO 帮不了你把一道原本做不出来的题做出来。

第三档:GRPO 把 critic 换成了同学的平均分

GRPO(Group Relative Policy Optimization,组相对策略优化)的想法一句话说得清:PPO 需要一个 critic 网络来告诉它"这题平均能拿多少分",那我们干脆对同一道题多采几份答案,用这几份的平均分当基线。

for x in prompts:
    ys = sample(pi_theta, x, n=G)                 # 同题采 G 份,典型 G = 8 ~ 16
    rs = [verify(y) for y in ys]                  # 可验证奖励:跑测试 / 对答案 / 比字段
    A  = (rs - mean(rs)) / (std(rs) + eps)        # 组内标准化,就是「优势」
    update(pi_theta, clipped_ratio * A - beta * KL(pi_theta, pi_ref))

于是 critic 网络没了——省下一个和策略同规模的模型。这就是 GRPO 在推理模型训练里迅速铺开的直接原因:同等效果下算力更省,而推理训练本来就极贵。

它和 RLVR 是天生一对:GRPO 需要 reward 被便宜地算很多次(每个 prompt 至少 G 次),而可验证奖励恰好是"跑一下就知道"的、几乎免费的。

三段式评价 GRPO:

  • 解决什么:在有自动判分器的任务上,用比 PPO 低得多的成本拿到真实的能力增量。
  • 代价是什么:采样成本高(每题生成 G 份,训练时间的大头在生成而非反向传播);零方差塌缩(一组答案全对或全错时,标准化后优势全是 0,这一组白跑);长度偏置(归一化方式会让长/短回答被系统性偏爱)。
  • 什么时候不该用:你的任务写不出自动判分器时。硬凑一个"用大模型当判分器"的方案,本质上是把 reward hacking 的靶子从人换成了另一个模型,通常更脆。

这里是本章最好的进阶加分点:截至 2026-08,GRPO 已经被修补了一整代变体,每个变体对应上面一个毛病——

变体 修的是什么
Dr. GRPO 优势归一化里的长度偏置
DAPO 动态采样过滤掉零方差组 + 解耦 clip 上下界,训练更稳(报告 Qwen2.5-32B 在 AIME 2024 达到 50)
GSPO / DHPO token 级更新与序列级奖励的错配
ARPO 多轮 agentic 场景下的信用分配
VPO test-time 采样多样性(best@k 场景)

工程实践(截至 2026-08)

选型速查

你手上有 该走哪档 典型成本量级
几百到几千条(指令,好答案) SFT(多半是 LoRA SFT) 单卡到几卡,小时级
几千组人工比较过的偏好对 DPO 比 SFT 贵一档,形态相同
稳定的偏好数据流水线 + 训练团队 RLHF / PPO 四模型,工程最重
能写出自动判分器的任务 GRPO 系(RLVR) 采样为主,最贵
都没有 别微调,回去做 prompt 和评测集 ——

厂商侧现状(易变,务必现场核对)

  • OpenAI:SFT 与 DPO 支持 gpt-4.1 / mini / nano(2025-04-14 版);强化微调 RFT 仅支持 o4-mini(2025-04-16 版)。更关键的是,OpenAI 已在官方弃用页宣布收缩自助微调:2026-05-07 起新组织不能创建微调任务,2026-07-02 起 60 天无推理的组织被关闭,2027-01-06 起存量客户也不能再创建新任务(已训好的模型可继续推理,直到基座下线)。
  • Google:Vertex AI 的 SFT 仍在,但 Gemini 3.x 系尚未开放 SFT,而 2.5 Pro 已于 2026-06-17 下线。
  • Anthropic:只有 Amazon Bedrock 上的 Claude 3 Haiku 微调这一条路径。
  • 开源权重 + 国内云平台(百炼 / 方舟 / PAI 等):后训练全链路健在,是国内团队的实际主战场。

避坑清单

  1. 偏好数据先做一次"长度体检"。把 chosen 和 rejected 的平均长度、平均小标题数打出来。如果两组有系统性差异,你训出来的是那个差异,不是"好"。这是开头故障的直接补丁。
  2. DPO 的 β 不是可有可无的旋钮。β 太小 = 放任模型跑离参考模型,容易崩;太大 = 几乎没变化。先用默认值跑通,再在验证集上扫。
  3. SFT 之后一定要留一份 checkpoint 当参考模型。DPO 和 PPO 都要拿它当 π_ref,也是你回滚的锚点。
  4. 不要指望偏好对齐提升能力。DPO/RLHF 是在模型已有的输出分布里重新分配概率质量,不会凭空长出新本事。想提升能力,要么换基座,要么走 RLVR。
  5. GRPO 先看零方差比例。开训后统计"整组全对/全错"的 prompt 占比,超过一半说明题目难度和当前模型能力不匹配,这时候该换数据集而不是调超参。
先盘手上有什么数据,再挑方法
这张表按「你手上有什么」排,不按方法的先进程度排

选型速查
你手上有该走哪档典型成本量级
几百到几千条(指令,好答案)起步这一档SFT(多半是 LoRA SFT)单卡到几卡,小时级
几千组人工比较过的偏好对DPO比 SFT 贵一档,训练形态相同
稳定的偏好数据流水线 + 训练团队RLHF / PPO四个模型,工程最重
能写出自动判分器的任务GRPO 系(RLVR)采样为主,最贵
都没有别微调,回去做 prompt 和评测集——
厂商现状与避坑
OpenAI 在收缩
SFT/DPO 支持 gpt-4.1 系,RFT 仅 o4-mini;2027-01-06 起存量客户也不能再建新任务
另外三家
Gemini 3.x 尚未开放 SFT、2.5 Pro 于 2026-06-17 下线;Anthropic 仅 Bedrock 的 Claude 3 Haiku
偏好数据先做长度体检
把 chosen 与 rejected 的平均长度、小标题数打出来;有系统性差异,训出来的就是那个差异
β 不是可有可无的旋钮
太小 = 放任跑离 π_ref 容易崩,太大 = 几乎没变化;先跑默认再在验证集上扫
SFT 后留一份 checkpoint
DPO 和 PPO 都要拿它当 π_ref,它也是你唯一的回滚锚点
GRPO 先看零方差比例
整组全对/全错的 prompt 超过一半,说明题目难度不匹配,该换数据集而不是调超参
厂商那一栏易变,务必现场核对;不变的是「都没有」那一格 —— 正确动作是回去做 prompt 和评测集,而不是为了上 DPO 硬凑一批偏好对。

面试视角

送分题,也是筛人题:有没有一条主线
Q4-01 进门,算法背景的面试官会一路追到 DPO 取舍和 GRPO 毛病

  1. 别按缩写平铺改用能拿到什么信号串一条线
  2. 三档各给一句标准答案→形式,两两比较→偏好,可判定对错→能力
  3. 落回自己的项目「我们属于第 X 档,因为……」
  4. 主动否掉那条错答案偏好对齐不长能力,只重排概率质量
只读过:这些回答会暴露你
  • 「DPO 就是简化版的 RLHF,效果差不多」—— 三个缩写背一遍,没有线
  • 「GRPO 就是去掉了 critic」—— 说不出去掉之后赔了什么
  • 「我们做了 DPO,效果提升明显」—— 没体检过偏好数据就敢下结论
  • 「RLHF 就是用人类反馈训练」—— 答不出显存里住着几个模型
  • 「我们想用 DPO 提升推理能力」—— 2026 年的高频错误答案
真做过:这些细节骗不了人
  • DPO 是离线的,训到后期有分布偏移,还容易把两侧似然一起压低
  • 去掉 critic 换来采样贵、零方差塌缩、长度偏置,所以才有 Dr. GRPO 和 DAPO
  • 上线前先体检偏好数据的长度分布 —— 标注员会系统性偏好短答案
  • 说得出 RLHF 训练时显存里同住策略、参考、奖励、价值四个模型
  • 偏好对齐只重新分配已有分布的概率质量;要提能力得有可验证奖励
最锋利的是最后一行。「用偏好对齐提能力」是 2026 年一个高频的错误答案,能主动否掉它的候选人,基本可以判定真跑过训练 —— 因为这个认知只在跑完一轮、发现分数没动的时候才长出来。

面试官怎么问

一面二面通常从 Q4-01"SFT、RLHF、DPO 分别在做什么"进,这是送分题但也是筛人题——绝大多数人会把三个缩写背一遍,很少有人能给出一条主线。算法背景的面试官会顺势追到 Q4-02(DPO 凭什么绕开 RM),再往上是 Q4-03(GRPO)。

答题结构建议

不要按"SFT 是……RLHF 是……DPO 是……"平铺。用监督信号串:

"我一般按能拿到什么信号来分。给得出标准答案就 SFT,学的是形式;给不出标准答案但能两两比较,就走偏好对齐,RLHF 和 DPO 是同一件事的两种工程实现,学的是偏好;如果对错能用程序判,就能上 RLVR,主流是 GRPO 系,这一档学的才是能力。我们的项目属于第 X 档,因为……"

这个结构的好处是,它自带一个"我判断过我属于哪一档"的信号,面试官会立刻往你的项目上追。

分水岭信号

只读过 真做过
"DPO 就是简化版的 RLHF,效果差不多" "DPO 是离线的,训到后期有分布偏移;而且它容易把 chosen 和 rejected 的似然一起压低,模型会变得不敢说话"
"GRPO 就是去掉了 critic" "去掉 critic 的代价是采样变贵,而且会遇到零方差塌缩和长度偏置,所以后面才有 Dr. GRPO 和 DAPO"
"我们做了 DPO,效果提升明显" "我们上线前先体检了偏好数据的长度分布,因为标注员会系统性偏好短答案"
"RLHF 就是用人类反馈训练" "RLHF 训练时显存里要同时放策略、参考、奖励、价值四个模型,这是它工程上最难的地方"
"我们想通过 DPO 提升模型的推理能力" "偏好对齐不长能力,只重新分配已有分布的概率质量;要提能力得有可验证奖励"

最后一行是本篇最锋利的一条。"用偏好对齐提能力"是 2026 年一个高频的错误答案,能主动否掉它的候选人,基本可以判定真跑过训练。

小结与延伸

  • 后训练不是三个并列的缩写,是一条按监督信号形态排列的阶梯:给标准答案(SFT,学形式)→ 给两两比较(RLHF/DPO,学偏好)→ 给可判定的对错(RLVR/GRPO,学能力)。
  • SFT 只给正例,所以压不住不想要的行为;这是偏好阶段存在的理由。
  • DPO 用一个闭式推导把奖励模型消掉,换来工程上的巨大简化,代价是离线、对数据偏置极敏感、易压低整体似然。
  • GRPO 用组内平均分替代 critic,是推理模型训练的当前中心;它的三个已知毛病(采样贵、零方差塌缩、长度偏置)各自催生了一代变体。
  • 本篇最该记住的一句:后训练把你实际标注的那个东西压进权重,而不是你心里想要的那个东西。

延伸:下一篇 T4-2 讲这条主线在工程上真正落地的形态——参数高效微调(LoRA / QLoRA),以及那个几乎每场算法工程面都会问的显存估算。选型判断(什么时候根本不该走这条线)在 T4-3

关联题目Q4-01(后训练主线)、Q4-02(DPO 取舍)、Q4-03(GRPO)

继续深入

本篇归属第 4 章「微调与对齐」,去做这一章的题