返回 AICAP-180
B11 · Day 101GRPO/后训练机理 + 首跑

后训练地图 (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-classicreference 含 structuring/smurf,codeCheck = has(/structur|smurf/i))→ 可确定性判定:typology 命名可正则匹配,适合 exactMatchReward 风格的 RLVR 信号。
  • aml-layering-chaincodeCheck = has(/layer/i))→ 同上,typology 命名可确定性 grade,但「解释为何是 layering」的叙述质量需 LLM-judge
  • aml-integration-realestatecodeCheck = 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. 今日实战

  1. 用 provider-agnostic runner(默认 deepseek)调 deepseek-v4-flash,跑 src/agent/eval/tasks.ts 中 3 道任务:pnpm eval:agent
  2. 逐条读 transcript(建议从 AML_DETECT 三道里挑:aml-structuring-classic / aml-layering-chain / aml-integration-realestate,它们有明确 referencecodeCheck)。
  3. 对每条标注「哪一步缺少可量化 reward 信号」——即若要用 RL 优化它,需要什么 verifier:是精确匹配(typology 命名)?还是 rubric 打分(叙述质量)?还是约束检查(不越权自动执行)?
  4. 把结果整理成一张「reward 信号缺口表」:任务 → 当前可判定信号 → 缺口(需 LLM-judge / 需人工标 / 已可确定性判定)。
  5. 写入 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-classiccodeCheck has(/structur|smurf/) 可判 typology 命名「为何可疑」的解释质量 → 需 LLM-judge
aml-layering-chainhas(/layer/) 可判命名链路推理正确性 → 需 LLM-judge
aml-integration-realestatehas(/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