本文目录
📊 学习时长:60-75 分钟 🎯 完成后能力:比较Agentic CPT、SFT与GRPO在一条调研Agent训练路线中的作用、选择条件与边界,理解组内优势及长轨迹奖励风险;本章不实际运行训练 🔗 关联面试题:5 道(覆盖 5 个角度,见 Part 3)
🧭 这一章怎么读:训练流程为什么分阶段、每阶段解决什么、GRPO 的直觉和关键技巧的原理,本章都会讲,并带一个零依赖小实验帮你理解 GRPO 的核心。训练本身要 GPU、跑起来慢,所以这一章不真的跑训练,而用「概念小实验 + 原理讲解」让你把机制看懂、面试讲清。
这一章你会学到什么
- ✓ 想清一个根本问题:何时值得加入CPT、SFT或RL;CPT → SFT → GRPO是一条示例路线,并非必选三件套
- ✓ 搞懂三个阶段各自的分工:CPT 注入「Agent 偏置」、SFT学习示范中的任务行为与输出格式、GRPO 在实战反馈里优化策略
- ✓ 理解 GRPO 的核心直觉:为什么它能去掉 PPO 里那个笨重的「价值网络」,用「组内相对优势」替代(配可跑小实验)
- ✓ 理解长轨迹奖励风险:不区分截断原因直接惩罚,可能引入噪声并破坏训练稳定性
- ✓ 建立对奖励设计、动态采样的判断,以及能在面试里讲清「多阶段训练为什么这么排」
本章按三段式组织:
段落 给谁看 内容 占比 🚀 Part 1 · 主线实战 零基础,想先看懂 为什么分三阶段 + 三阶段分工 + GRPO 优势小实验 ~45% 🎯 Part 2 · 面试深度 想讲透、备战面试 CPT / SFT / GRPO 逐阶段 + 负样本坑 + 奖励设计 + 动态采样 + 私货 ~45% 🏆 Part 3 · 验收串题 检验学到位没 关联面试题 + 自检清单 ~10%
🚀 Part 1 · 主线实战 | ~45% 这部分先想清「为什么要分三阶段」,再用一个零依赖小实验,看懂 GRPO 到底在算什么。
先讲个训练选型场景(这是本章的「为什么」)
上一章我们讲了训练数据怎么造。现在的问题是:怎么把这些数据喂进去,把一个通用模型训练成会做调研的 Agent?
SFT可以学习任务策略与格式,也可能满足部分应用;但有限示范可能覆盖不足。是否需要额外CPT或RL,应由留出任务、工具环境、奖励可靠性与资源预算决定,不能断言只做SFT一定训不出来。
本章借鉴Tongyi/AgentFounder公开工作,讨论一条CPT → SFT → GRPO示例路线,像培养一个调研员:
- 先打底子(Agentic CPT):大量泛读,在脑子里建立「Agent 该怎么动」的直觉偏置。
- 再学规矩(SFT 冷启动):照着优质范例临帖,学会规范的输出格式和工具调用。
- 最后实战打磨(GRPO 强化学习):真刀真枪做调研,根据「做得好不好」的反馈,自己优化策略。
这三步并非所有Agent的必要条件。选定这条路线后要核对阶段依赖,也可选择SFT单独部署或其它后训练方案;本章讲各阶段怎样衔接和验证。
三阶段总览:各自解决什么
把三个阶段摆在一起看,分工就清楚了:
| 阶段 | 解决什么 | 输入 | 产出 |
|---|---|---|---|
| Agentic CPT | 注入「Agent 偏置」,让模型对「该怎么动」有直觉 | 上一章的 CPT 合成数据(FAS / HAS) | 有 Agent 底子的基座 |
| SFT 冷启动 | 学习示范任务行为、推理与工具调用格式 | 上一章的优质轨迹数据 | 需要留出评测的SFT策略 |
| GRPO 强化学习 | 根据可靠反馈优化策略,监控reward hacking | 调研环境 + 奖励信号 | 需要独立评测的RL策略 |
概念:为什么 SFT 叫「冷启动」
在后续还要做RL的方案中,SFT可作为冷启动(cold start),给策略提供较好的初始行为;SFT本身也能提升任务能力并独立部署,不是只能学格式。
强化学习是「在试错里学」的。初始策略若很少产出有效轨迹,奖励稀疏会让RL难学,SFT常可改善起点;但这不是所有RL必须先SFT的定理。DeepSeek-R1-Zero给出了基座直接RL的推理任务案例,同时也暴露可读性等问题,不能把其结果直接等同于长程调研Agent。
回扣上一章:SFT 阶段会用到 Loss Mask(只对模型该生成的 Thought/Action/Final 算 loss,mask 掉 observation)。忘了的话翻第 5 章的 Loss Mask 小实验。
🛠️ 跟着做:一个零依赖的 GRPO「组内相对优势」小实验
GRPO 是三阶段里最难懂的一环。它的核心思想其实一句话能说清:同一个问题,采样一组答案,谁比这组的平均水平好,就强化谁;谁比平均差,就抑制谁。 这个「比平均好多少」就叫优势(advantage)。
它最妙的地方:不需要像 PPO 那样单独训一个价值网络(value model)去估计基准,直接用这组答案的平均分当基准。减少critic的参数、状态和计算开销;总显存仍依policy/reference/reward、rollout、激活、分片和实现,不能固定说省一半。
下面这段零依赖代码,演示 GRPO 怎么算优势。新建 grpo_advantage_demo.py:
# 零依赖,直接 python grpo_advantage_demo.py
# GRPO 核心:同一个问题采样一组答案,用「组内平均分」当基准,算每条的相对优势
# 不需要单独的价值网络(value model),这正是 GRPO 比 PPO 省的地方
group = [
("轨迹A: 逐个查全3个候选,结合约束给建议、格式对", 0.9),
("轨迹B: 只查1个就给建议、格式对", 0.6),
("轨迹C: 查了2个但建议方向错", 0.2),
("轨迹D: 超长被截断,没给出建议", 0.0),
]
rewards = [r for _, r in group]
mean = sum(rewards) / len(rewards)
std = (sum((r - mean) ** 2 for r in rewards) / len(rewards)) ** 0.5
print(f"组内平均分(基准) = {mean:.3f} 标准差 = {std:.3f}\n")
print(f"{'轨迹':<34}{'reward':>7}{'优势A':>9} 怎么更新")
print("-" * 68)
for desc, r in group:
adv = (r - mean) / (std + 1e-8) # 组内相对优势 = (自己 - 组均值) / 组标准差
arrow = "↑ 强化(多往这条学)" if adv > 0 else "↓ 抑制(少这么做)"
print(f"{desc:<34}{r:>7.2f}{adv:>9.2f} {arrow}")运行
python grpo_advantage_demo.py你应该看到(确定性输出):
组内平均分(基准) = 0.425 标准差 = 0.349
轨迹 reward 优势A 怎么更新
--------------------------------------------------------------------
轨迹A: 逐个查全3个候选,结合约束给建议、格式对 0.90 1.36 ↑ 强化(多往这条学)
轨迹B: 只查1个就给建议、格式对 0.60 0.50 ↑ 强化(多往这条学)
轨迹C: 查了2个但建议方向错 0.20 -0.64 ↓ 抑制(少这么做)
轨迹D: 超长被截断,没给出建议 0.00 -1.22 ↓ 抑制(少这么做)这个示例的标准化优势比较的是同一问题组内reward相对位置。奖励定义仍决定哪些轨迹好坏;不能把“组内比较”理解成不需要可靠奖励。 好的(优势为正)就让模型多产出这种,差的(优势为负)就压下去。基准是「组内平均」,完全不用额外的价值网络。
🐛 跑不通看这里:纯标准库,不该报错。注意这只是优势计算的示意,真实 GRPO 还要乘上策略比率、加 KL 约束、做 clip,这些在训练框架里。
📌 说清楚:这是教学示意。这个实验只演示 GRPO 最核心的「组内相对优势」怎么算。真实训练里还需要:一个能让 Agent 真正跑调研、调真实工具的训练环境、一套给每条轨迹打分的奖励函数,以及完整的 GRPO 训练循环(采样、算优势、更新、KL 约束),工程上复杂得多;这个小实验只为让你把机制和直觉看透。
🧭 你刚才看到的,等于真实系统的什么? 你算的「优势A」= 真实 GRPO 里指导每个 token 梯度方向的 advantage。真实系统里 reward 不是手填的,而是由奖励函数(看答案对不对、格式对不对、过程合不合理)自动算出;一个「组」是同一个问题采样出的 N 条轨迹。理解了「用组内平均当基准」,你就抓住了 GRPO 区别于 PPO 的最关键一点。
🎯 Part 2 · 面试深度 | ~45% 这部分逐阶段讲透,外加 Agent RL 里最容易踩的坑。这些是大模型训练岗面试的硬核考点。
🔒 关于「讲到哪」:本节把三阶段的原理、衔接、关键坑讲透,面试足够用。但真正能跑起来的「配方级」细节——奖励函数每一项的具体权重与公式、完整的 GRPO 训练配置(组大小、KL 系数、clip、学习率等)、调研训练环境的工程实现、负样本筛选的判定规则,以及真实可训练的数据——是训练营的实战内容。看完你会懂「为什么这么训、每阶段在治什么」,面试讲得清;要亲手把训练跑通,还需要那一层。本节不灌水,讲到的原理都是真的。
2.1 何时需要多阶段:单阶段的边界
把各阶段拆开问用途,才能判断自己是否需要它们;下面是可能的限制,而非必然失败:
- 只做CPT:可能仍需指令/工具格式对齐,但是否可用要看基座、CPT数据与目标接口,不能预设一定解析不了。
- 只做SFT:可学习任务策略并泛化,但数据覆盖与分布偏移可能限制效果;是否够用需评测,不等于只能背格式。
- 直接GRPO/RL:有效轨迹稀少、奖励不可验证时可能难学;基座直接RL也有公开成功案例,需按任务验证,不能称无SFT就学不动。
本章示例路线:CPT学习行为先验、SFT学习任务示范、GRPO利用奖励优化;它不是唯一顺序或固定生产流水线,是否增加、跳过或迭代某阶段由消融决定。
2.2 Agentic CPT:注入 Agent 偏置
CPT(持续预训练)用的是上一章讲的 FAS / HAS 合成数据。它的目标不是教具体任务,而是让模型在参数里先有「Agent 该怎么动」的直觉:看到信息缺口会想到检索、看到多个来源会想到交叉验证。
为什么值得单独做这一步?通用基座已有预训练能力,并非白纸。AgentFounder在其具体任务和预算下报告了Agentic CPT收益;自己的项目应比较有/无CPT的成本、收敛与留出质量,不能保证加入后都更高效或上限更高。这也是近两年 Agent 训练的一个重要进展:把「Agent 偏置」提前到预训练阶段注入。
2.3 SFT 冷启动:学格式,给 RL 搭好起点
SFT 用上一章的优质轨迹数据,核心任务是让模型学会规范的输出:Thought / Action / Observation / Final 的结构、工具调用的格式。
两个关键点:
- Loss Mask:只对模型该生成的部分算 loss,mask 掉 observation(回扣第 5 章)。漏了它,模型会学着背搜索结果。
- 冷启动定位:若随后做RL,SFT是初始化阶段;它也学习任务能力,可以是最终部署策略。RL是否进一步改善,应以独立评测而非阶段名称判断。
2.4 GRPO 是什么:去掉价值网络的策略优化
GRPO(Group Relative Policy Optimization,组相对策略优化)是这两年大模型 RL 的主流方法之一。理解它,最好的方式是对比 PPO:
- PPO 需要训练一个额外的价值网络(critic / value model),去估计「当前状态大概能得多少分」当作基准。LLM PPO常采用与policy规模相近的critic,也存在共享骨干等设计;资源开销依具体实现。
- GRPO 的洞察:同一个问题采样一组(比如 8 条)答案,直接用这组的平均分当基准,省掉价值网络。谁高于平均就强化、谁低于平均就抑制(就是你刚才小实验里算的优势)。
对长程调研任务,GRPO 这种「省一个大模型」的特性尤其香,因为调研轨迹很长、显存本就紧张。
说得更精确一点:GRPO 不是「不要基准、不估计价值」,而是把 PPO 里那个需要单独训练的价值网络(可学习的 critic),换成了一个基于组内统计量(平均、标准差)算出来的基准。基准还在,只是从「学出来的」变成了「现算的」。另外,真实的 GRPO 目标函数里还有策略比率、KL 散度约束、clip这些组件(见上方 🐛),小实验只演示了最核心的优势计算。面试时讲清这两点,比笼统说「GRPO 去掉了 value model」更显功底。
业内行话:面试聊到 RL 方法,能讲清「GRPO 相比 PPO 省掉了 value model,用 group 内的相对 reward 当 baseline」,比只会背「PPO 是 on-policy」要值钱得多。再说明总显存和采样成本怎样测量;理解原理不能替代亲自训练的证据。
2.5 Agent RL 最容易踩的坑:负样本筛选
这是本章最值钱的一个实战经验。GRPO 里,低于平均的轨迹会被当负样本「抑制」。但 Agent 训练里有个陷阱:
调研任务轨迹很长,经常有轨迹因为太长被截断,还没来得及给出最终答案,reward 就是 0(失败)。若不区分原因就惩罚截断轨迹,可能鼓励过早结束等非预期行为;是否出现此类捷径,应通过输出长度、完成度、格式与任务质量验证。这可能引入奖励噪声并破坏训练稳定性;Tongyi报告过格式坍塌,DAPO也研究了过长样本的奖励处理,但不是每种设置必然出现同一结果。
正确做法的方向:对「因截断而失败」的轨迹要特殊处理(筛掉、或不简单当负样本),把负样本的「锅」精准地扣在「真正做错」的轨迹上,而不是「没做完」的轨迹上。
讲师私货:这个坑是 Agent RL 和普通 RLHF 最不一样的地方之一。长推理和多轮工具任务都可能触及长度限制,这并非Agent独有;应明确输入/生成预算、截断原因与评测口径。讨论时应区分“做错”和“因长度限制没做完”,说明过滤/长度奖励的依据与代价;没有运行过训练,就把它表述为理解或实验计划。
🔒 至于具体怎么判定一条轨迹是「截断失败」还是「真做错」、用什么规则筛、筛多狠,是反复调出来的实战细则。方向上通常会综合「有没有产出最终答案、轨迹完成度、工具调用是否有效」这类信号来区分,而不是只看 reward 是不是 0——但具体怎么组合、阈值定多少,训练营里给可直接用的判定逻辑。本节你要带走的是这个区分意识——这一点讲清楚,面试就赢了。
2.6 奖励设计与动态采样(简述)
奖励设计是GRPO的关键条件之一,不能给出“一大半”的固定贡献比例。调研 Agent 的奖励通常综合几个方面:
- 答案正确性:最终答案对不对(对照参考答案,或用模型判)。
- 格式合法性:工具调用、标签结构是否规范(防止为了答对而乱来)。
- 过程合理性:有没有合理使用工具、有没有无意义的重复或死循环。
还有一个常用技巧叫动态采样(dynamic sampling):若组内总reward完全相同,这个示例的标准化优势为0,奖励驱动的策略梯度项没有区分信号;KL等其它项仍可能非零。“全对/全错”只有在二元同奖等条件下才等价于同reward,多项格式/过程奖励可能仍有差异。DAPO的动态采样会过采样并过滤指定同奖组,以维持有效样本;它增加采样工作,最终训练时间要实测。Tongyi公开方案则明确没有采用动态采样,不能把它视为所有GRPO的必需步骤。
🔒 设防点:奖励每一项怎么量化、权重怎么配、怎么防止模型钻奖励的空子(reward hacking),是整套训练里最吃经验、最值钱的部分。方向上,正确性通常是主项、占大头,格式与过程更多作为约束项(防止模型为了答对而乱来);但具体权重、怎么防 reward hacking,是训练营重点带的实战。本节讲清「奖励要综合正确性 / 格式 / 过程」这个框架,面试已经够用。
🧭 这一章到这儿:多阶段训练的为什么、每阶段分工、GRPO 直觉、负样本坑、奖励与采样思路都讲透了——你已经能在面试里把「Agent 怎么训出来的」讲到点子上。要把这套训练真正跑通(奖励配方、GRPO 完整配置、训练环境),那是亲自下场时要翻的山,也是训练营实战要带你走的。下一章回到工程视角,讲怎么把训练好的模型送上线。
🏆 Part 3 · 验收串题 | ~10%
关联面试题(5 道,覆盖 5 个角度)
- 【SFT vs 预训练】 监督微调(SFT)和预训练在目标、数据、训练方式上有什么区别?
- 【PPO vs GRPO】 比较 PPO 与 GRPO 在目标函数、优势估计方式上的区别。
- 【奖励函数设计】 在强化学习或 Agent 系统中,如何设计一个有效的奖励函数?
- 【长视界信用分配】 长视界任务里奖励稀疏、信用分配困难,怎么应对?
- 【基于环境的训练】 「基于环境(environment-based)」的训练方法和监督式训练有什么不同?
自检清单
- 能比较CPT、SFT、RL的用途与选择条件,不把本章示例路线当必选顺序
- 能说明SFT何时作为RL冷启动、何时可独立部署,并区分任务能力与格式
- 能讲清 GRPO 的核心:用组内平均当基准、省掉价值网络,优势为正就强化、为负就抑制
- 能说明截断奖励噪声风险与处理候选,不把某个失败模式当作必然结果
- 能区分相同正确性和相同总reward,说明动态采样的有效信号、额外成本与可选性
学完这一章,你建立了“数据 → 训练”的认知框架并运行了优势计算示例;尚未完成模型训练或证明调研质量。真实训练还要验证数据、奖励、环境、损失与资源预算。下一章,我们回到工程视角,讲这套系统怎么从「训练出来的模型」变成「能扛真实流量的线上服务」:推理优化、并发、成本与监控。