后训练地图 (M5)
B10(Day 91-100)把「服务侧」量化运营拉通了——延迟分布、$/query、级联省钱、tau2 多轮 agent 评测,产出了一份可链接的能力-成本报告。从今天起 B11 转入一个新维度:不再只是评测和路由别人的模型,而是理解「如何把一个模型训得更对」。这是 B1→B18 能力曲线从「会用、会评、会算成本」迈向「会改模型本身」的关键跨越——一个 AI Solutions Architec
阶段: B11 · GRPO/后训练机理 + 首跑(Day 101-110) 标签: #post-training #grpo #rlvr #reward-model
今日导引(由浅入深)
B10(Day 91-100)把「服务侧」量化运营拉通了——延迟分布、$/query、级联省钱、tau2 多轮 agent 评测,产出了一份可链接的能力-成本报告。从今天起 B11 转入一个新维度:不再只是评测和路由别人的模型,而是理解「如何把一个模型训得更对」。这是 B1→B18 能力曲线从「会用、会评、会算成本」迈向「会改模型本身」的关键跨越——一个 AI Solutions Architect 必须能讲清后训练栈每一层存在的理由,才能在 build-vs-buy 里做出 RL 微调的取舍。今天先画一张全局地图:SFT→RM→PPO→DPO→GRPO 这条谱系到底差在哪。今天的「最小可判定产出」:跑通 3 道 agent eval 任务的 transcript,逐条标出「哪一步缺少可量化 reward 信号」,得到一张 reward 信号缺口表(确定性分析产出,eval 真跑需 key)。
1. 机理精读
后训练谱系 SFT→RM→PPO→DPO→GRPO 的核心差异,可压缩成三个问题:奖励信号从哪来、要不要 critic、算力如何分配。 这三问决定了每种方法的显存占用、训练稳定性和适用任务,是整条谱系的「坐标轴」。
**SFT(监督微调)**用人工/合成的「prompt→理想答案」对,最小化交叉熵。它直接模仿示范,没有「奖励」概念,也不需要探索;缺点是只能学到示范分布内的行为,无法超过示范者,也学不会「比示范更好」的策略。
**PPO + RM(强化学习人类反馈的经典实现)**最重:先训一个独立的 reward model(RM) 把人类偏好拟合成标量奖励,再用 PPO 在线优化策略。PPO 需要一个 value/critic 网络来估计每个 token 的优势(advantage),通常用 GAE(广义优势估计)。这意味着同时持有 policy、reference、reward、critic 四套网络参数,显存与不稳定性都是谱系里最高的——critic 训不好,advantage 就有偏,整个训练容易崩。
**DPO(直接偏好优化)**走捷径:用「优答 > 劣答」的偏好对,推导出一个闭式损失,隐式地绕开了显式 RM 和在线采样。它把「训 RM 再 RL」两步合成一步监督式优化,吞吐高、显存低、稳定,但代价是只能在已有偏好对的范围内学排序,没有在线探索,学不到偏好对里没覆盖的新策略。
GRPO(组相对策略优化)是本 block 的主角:它去掉 critic 网络,对同一 prompt 采样一组 rollout,用组内相对得分估计 advantage(详见 Day 102)。相比 PPO 它省下整个 critic 的显存与训练成本;相比 DPO 它保留了在线采样和探索能力。
为什么 R1 弃 RM 选 GRPO? 关键洞察是:对 math/code 这类有 ground truth 的可验证任务,reward 可以由一个确定性 grader(如正则提取答案 + 精确匹配)直接给出 0/1,根本不必再训一个 RM 去近似它。RM 本质是「学一个奖励函数的近似」,而可验证任务的奖励函数本就精确已知——用 RM 反而引入噪声和额外训练成本。这就是 RLVR(可验证奖励强化学习,Day 103 展开)的立足点,也是 GRPO 在 2026 开源 RL 后训练成为主线的根因。资源:GRPO 原论文(DeepSeekMath, arXiv:2402.03300, 2024-02)。
三个坐标轴逐一拆。
- 奖励信号从哪来:SFT 没有奖励(只有交叉熵标签);PPO 从训练的 RM 来;DPO 从偏好对隐式来(损失里没有显式标量奖励,但偏好排序等价于一个隐式奖励差);GRPO 从 grader/RM 显式来,但靠组内相对化使用。
- 要不要 critic:只有 PPO 需要——它要逐 token 的 advantage,必须有一个 value 网络去估「这个状态后续期望回报」。其余三种都没有 critic:SFT 无 RL,DPO 是闭式监督,GRPO 用组统计量替代 critic。
- 算力如何分配:SFT 算力全在前向+反向;PPO 把算力摊到 policy/critic/RM 三套网络的前向+训练;DPO 因无采样,算力≈监督微调;GRPO 把算力主要砸在在线采样 G 个 rollout上(生成是 LLM 最贵的操作),训练侧反而轻。
一句话区分 PPO 与 GRPO 的 advantage:PPO 的 advantage 是「相对一个学出来的 baseline(critic 预测)」;GRPO 的 advantage 是「相对一个采出来的 baseline(同组其他答案的均值)」。前者把 baseline 的质量寄托在 critic 训练上,后者把它寄托在采样组的代表性上——所以 GRPO 的 group size G 越大,baseline 越稳(Day 108 主题)。
这张地图通向本 block 的后续每一天(先建索引,避免后面迷路):
- Day 102 → 把「GRPO」那一格的 advantage 公式手算+对拍清楚。
- Day 103 → 把「奖励从哪来」回答成 RLVR(确定性 grader),引出 R1。
- Day 104 → 把「DPO vs GRPO」那两格的算力/探索权衡讲透,并第一次碰 GPU。
- Day 105 → 把「奖励设计」做成本仓 AML 任务的可验证
amlReward。 - Day 106-108 → 数据格式(prompt+verifier)、训练循环超参、三曲线诊断。
- Day 109-110 → adapter 评测对齐(同 harness + κ)、首跑复盘 + PPO/GRPO 的 TCO。
换言之:今天这张「三轴地图」就是 B11 的目录页,缺口表则是把目录落到本仓 AML 任务上的第一块拼图。
2. 推导 / 手算 / 代码走读
今天是「地图日」,用一张对比表把谱系坐标轴钉死(数字为定性量级,非实测):
| 方法 | 奖励来源 | 要 critic? | 在线采样? | 显存/稳定性 | 适用 |
|---|---|---|---|---|---|
| SFT | 无(监督标签) | 否 | 否 | 最低 | 冷启、格式对齐 |
| PPO+RM | 训练的 RM 标量 | 是(value 网络) | 是 | 最高/最不稳 | 开放式偏好对齐 |
| DPO | 偏好对隐式 RM | 否 | 否 | 低/稳 | 有成对偏好数据 |
| GRPO | 组内相对得分 | 否 | 是 | 中/较稳 | 可验证任务 + 探索 |
代码走读:本仓 src/agent/train/grpo.ts 已把 GRPO 的纯数学内核落成可测试函数,今天先确认它的边界——这是一个纯数学、无 GPU、无 key 的模块(文件头注释明确标注「Pure math — NO GPU, NO API key … This is the "speak credibly about training-data/reward design" artifact, not a training run」)。导出符号有:
groupRelativeAdvantage(rewards):组相对优势(Day 102 主角)。exactMatchReward(output, target)/formatReward(output, pattern):RLVR 的「V」——确定性 grader(Day 103/105 复用)。composeRewards(parts):多目标 reward 加权组合(Day 105 复用)。grpoScore(group):对一组样本附 advantage 并给reinforce: advantage > 0标记。
今天不动这些函数,只把它们登记进地图——它们是后面 9 天的事实底座。
把 3 道 eval 任务映射到「需要什么 verifier」(这是今日分析的骨架):
aml-structuring-classic(reference含 structuring/smurf,codeCheck = has(/structur|smurf/i))→ 可确定性判定:typology 命名可正则匹配,适合exactMatchReward风格的 RLVR 信号。aml-layering-chain(codeCheck = has(/layer/i))→ 同上,typology 命名可确定性 grade,但「解释为何是 layering」的叙述质量需 LLM-judge。aml-integration-realestate(codeCheck = has(/integrat/i))→ 阶段命名可确定性 grade;但「是否正确串联前序 layering」属语义推理,确定性 grader 判不了,是 reward 信号缺口。
由此得出缺口表的三类标签:已可确定性判定 / 需 LLM-judge(语义) / 需人工标(无 ground truth)——这正是后训练前必须先填的「奖励地图」。
显存量级直觉(为什么 GRPO 省,定性说明)。把「同时常驻的网络份数」当显存的粗代理:
- SFT:policy(1 份,含优化器状态可算 ~3-4 份等效)。
- PPO+RM:policy + reference + RM + critic = 4 份网络,且 critic 还要训。
- DPO:policy + reference = 2 份,无采样无 RM。
- GRPO:policy + reference(+ 可选 RM,可验证任务连 RM 都免)= 2-3 份,无 critic。
GRPO 相对 PPO 直接砍掉 critic 与(可验证任务下的)RM 两份,这就是小团队单卡能跑 GRPO、跑不动 PPO 的根因(Day 110 会把它写成 TCO 对比)。
「面试可讲版」一段话:后训练从 SFT 到 GRPO,是一条「奖励越来越便宜、网络越来越少」的路。SFT 靠示范、PPO 靠训出来的 RM+critic(最重)、DPO 靠偏好对绕开 RM(无探索)、GRPO 靠组内采样相对化绕开 critic(保留探索)。当任务可验证(math/code/合规字段),干脆用确定性 grader 取代 RM,这就是 RLVR,也是 R1 选 GRPO 的根因。
advantage 估计的两条路(极简对比):
- PPO:A_t = GAE(reward, V(s)),需 value 网络 V 给每个状态打分,A_t 衡量「实际回报 − 预测回报」。V 不准 → A 有偏 → 训练崩。
- GRPO:Â_i = (r_i − mean_group) / std_group,baseline 就是同组均值,无需任何网络预测。组采样有代表性 → Â 可靠。
这条对比是本 block 的「主线句」——后面 9 天所有内容都挂在「用采样统计替代 critic」这一根支柱上。
3. 今日实战
- 用 provider-agnostic runner(默认 deepseek)调
deepseek-v4-flash,跑src/agent/eval/tasks.ts中 3 道任务:pnpm eval:agent。 - 逐条读 transcript(建议从
AML_DETECT三道里挑:aml-structuring-classic/aml-layering-chain/aml-integration-realestate,它们有明确reference和codeCheck)。 - 对每条标注「哪一步缺少可量化 reward 信号」——即若要用 RL 优化它,需要什么 verifier:是精确匹配(typology 命名)?还是 rubric 打分(叙述质量)?还是约束检查(不越权自动执行)?
- 把结果整理成一张「reward 信号缺口表」:任务 → 当前可判定信号 → 缺口(需 LLM-judge / 需人工标 / 已可确定性判定)。
- 写入
docs/aipa/day101-posttrain-map.md。
4. 今日实测 / 产出
docs/aipa/day101-posttrain-map.md+ 3 任务 transcript。- eval runner 已建 + key 已配置;real 基线参考 V4-Flash completion 79.3%(judge=pass)。
- reward 信号缺口表为本日分析产出(确定性整理,不依赖额外 key 跑)。
- 状态如实:3 任务 transcript 需真实跑
pnpm eval:agent(需 key);缺口表是对 transcript 的人工分析产物。
缺口表三列模板(落进 day101-posttrain-map.md):
| 任务 id | 当前可判定信号 | reward 信号缺口 |
|---|---|---|
| aml-structuring-classic | codeCheck has(/structur|smurf/) 可判 typology 命名 | 「为何可疑」的解释质量 → 需 LLM-judge |
| aml-layering-chain | has(/layer/) 可判命名 | 链路推理正确性 → 需 LLM-judge |
| aml-integration-realestate | has(/integrat/) 可判命名 | 是否正确串联前序阶段 → 需人工标/语义 judge |
5. 常见误区 / 陷阱
- 把 PPO+RM 当默认后训练范式叙事:2026 可验证任务的主线是 GRPO+RLVR,开口就讲「先训 RM」会显得过时(SOTA 检查明确禁用)。
- 以为 DPO「更先进」所以全场景优于 PPO:DPO 无在线探索,学不到偏好对外的新策略;它和 GRPO 是不同权衡,不是替代升级。
- 混淆「奖励缺口」和「能力缺口」:transcript 里答错,可能是模型弱(能力缺口),也可能是任务根本没有可判定 reward(信号缺口)——后者才是后训练要先解决的。
- 用旧模型 id 跑:
deepseek-chat/-reasoner将于 2026-07-24 退役,统一改deepseek-v4-pro / deepseek-v4-flash。
6. 学习资源(每条带 YYYY-MM)
- DeepSeekMath《GRPO》原论文(arXiv:2402.03300,2024-02)——组相对优势、无 critic 的源头。
- DeepSeek-R1(arXiv:2501.12948,2025-01)——RLVR 弃 RM 选确定性 grader 的范式。
- 《Training language models to follow instructions with human feedback》InstructGPT(arXiv:2203.02155,2022-03)——PPO+RM 经典 RLHF 打底(仅作历史坐标,非主线)。
- 《Direct Preference Optimization》DPO(arXiv:2305.18290,2023-05)——隐式 RM 的闭式损失。
- 项目源码
src/agent/train/grpo.ts(本仓)——GRPO 纯数学内核,本 block 事实底座。
SOTA检查 (2026-06 更新)
- 当前主流:GRPO/R1 路线仍是 2026 开源 RL 后训练主线;可验证任务用确定性 grader 而非训 RM,是当周共识。
- 过时黑名单:禁止把 PPO+RM 当默认范式叙事;禁用 legacy
deepseek-chat/-reasoner(2026-07-24 退役),统一deepseek-v4-pro / deepseek-v4-flash。 - 下次复查点:DAPO/Dr.GRPO 等衍生改进是否已成新主线(Day 102 复查);DeepSeek 模型 id 退役进度执行当周重验。
衔接
- 昨天:Day 100 — Block 复盘 + SOTA 检查(B10 收尾:锁 p95/cascade/tau2 三里程碑,对接固定 baseline.json)
- 今天:画后训练全局地图,把 SFT→RM→PPO→DPO→GRPO 用「奖励来源/要不要 critic/算力分配」三轴对齐,跑 3 任务 transcript 标 reward 信号缺口
- 明天:Day 102 — GRPO 原论文精读(arXiv:2402.03300):手算组相对 advantage,对拍
groupRelativeAdvantage