← 返回题库
第 109 题 · 训练与对齐 · 困难

GRPO 中 πθ、πold 与 Rollout 策略分别是什么,如何同步?

岗位专项 这代表什么?
✓ 资料核验 来源说明:用户提供的分级面试题单;公司归属未独立核验,技术答案依据论文或官方文档整理
GRPORollout策略陈旧
评论与补充 ↓
口述训练

先用自己的话答,再看参考说法

60 秒是练习上限,不是必须凑满。原理题讲清因果,设计题讲清约束,项目题只讲真实证据。

别照着背。参考说法只用于对照;直接回答问题,简单题说清楚就收尾。项目题只用自己的经历和数字。

面试时怎么答

先把三个版本对象说清:当前策略 \(\pi_\theta\) 被更新,\(\pi_{\mathrm{old}}\) 是产生或记录这批 Rollout 概率的冻结快照,组内多条回答由奖励中心化得到 Advantage。系统追问通常落在版本滞后:生成与训练太同步会互相等待,太异步又让数据 Off-policy。此时谈版本号、最大 Lag、概率比和 KL 监控。

可以这样答:

GRPO 中,当前策略 \(\pi_\theta\) 是正在优化的模型,\(\pi_{\mathrm{old}}\) 是生成这批 Rollout 或记录其对数概率时的冻结策略。对同一 Prompt 采样多条回答,奖励在组内中心化或标准化后形成相对 Advantage,再用新旧策略概率比和裁剪更新。生成过于落后会让数据偏离当前策略,因此系统要携带策略版本,并限制 Rollout 与训练版本的最大 Lag。

核心回答

\(\pi_\theta\) 是当前正在更新的策略;\(\pi_{\mathrm{old}}\) 是本批优化中固定的旧策略,用于构造重要性比率;Rollout 策略是实际执行生成的模型副本。在同步实现中会在生成前复制当前参数,但只有权重版本、Tokenizer、采样变换、数值精度和生成引擎语义都一致时,才可近似把 \(\pi_{\mathrm{rollout}}\) 与 \(\pi_{\mathrm{old}}\) 视为同一行为分布。否则应保存 Rollout log probability,并监控或校正训练—生成分布偏差;异步系统还会叠加 Rollout 副本参数滞后,因此三者必须用明确版本区分。

对同一 Prompt 采样回答 \(y_i \sim \pi_{\mathrm{rollout}}(\cdot \mid x)\),组内奖励可形成优势:

\[\begin{aligned} A_i &= \frac{r_i - \operatorname{mean}(r)} {\operatorname{std}(r) + \varepsilon}, \\ \rho_{i,t}(\theta) &= \frac{\pi_\theta(y_{i,t} \mid x, y_{i,<t})} {\pi_{\mathrm{old}}(y_{i,t} \mid x, y_{i,<t})} \end{aligned}\]

GRPO 再使用裁剪后的概率比更新 \(\pi_\theta\),并常加入相对参考策略的 KL 约束。参考策略 \(\pi_{\mathrm{ref}}\) 用于限制长期漂移,不等于 \(\pi_{\mathrm{old}}\)。

展开说明

经典同步循环是:冻结当前策略为行为快照、生成一批回答并保存旧 log probability、计算奖励和组内优势、对该批数据做有限次更新,然后重新同步。工程上把生成与训练放在不同进程或推理引擎,可以提高设备利用率,但参数复制、队列和大 Batch 会增加样本年龄。

当 \(\pi_{\mathrm{rollout}}\) 过旧时,采样分布与 \(\pi_\theta\) 的差距增大,概率比更容易落到裁剪区间,导致有效更新减少;严重时还会出现高方差、支持集不匹配和奖励分布漂移。重要性比率只能在有限分布差异下校正,不能把任意陈旧数据自动变成可靠的 on-policy 数据。还要区分两个层面:PPO/GRPO 的裁剪比率约束新旧训练策略更新,生成引擎修正比率处理 Rollout 与训练端 log probability 的实现偏差,它们不一定是同一个比率。

缓解方法包括提高同步频率、限制每批优化轮数、缩短 Rollout 队列、为样本记录 policy version、丢弃或降权过旧样本,以及监控 ratio、clip fraction 和样本年龄。GRPO 被称为 on-policy 还是 off-policy 不能只看算法名字:新鲜 Rollout 且少量复用时接近 on-policy,长时间复用或异步滞后会增加 off-policy 程度。

工程实践

每条轨迹保存生成模型版本、旧 token log probability、生成时间和更新消费时间。监控 policy lag、importance ratio 分布、clip fraction、KL、组内奖励方差和每个版本的样本量。同步时要保证所有 Rollout worker 完整切换到同一检查点后才标记新版本,避免同一 Batch 混入无法追踪的参数版本。

常见追问

  1. \(\pi_{\mathrm{old}}\) 与参考模型 \(\pi_{\mathrm{ref}}\) 是同一个模型吗? 不是;\(\pi_{\mathrm{old}}\) 是本批数据的行为快照,\(\pi_{\mathrm{ref}}\) 通常是长期冻结、用于 KL 约束的基准模型。
  2. 为什么 Rollout 模型要与训练模型解耦? 生成和反向传播的计算形态不同,解耦便于分别调度和提高利用率,但会引入同步与样本陈旧问题。
  3. Batch 很大为什么可能加重策略陈旧? 收集和消费整批数据耗时更长,前部样本在被更新时对应的行为策略可能已经落后多个优化步。
  4. GRPO 一定是严格 on-policy 吗? 不一定;取决于 Rollout 是否来自当前策略、数据复用次数和异步滞后程度。

一句话复习

\(\pi_\theta\) 负责学习,\(\pi_{\mathrm{old}}\) 定义本批行为概率,Rollout 副本负责生成;版本同步越滞后,GRPO 的 off-policy 风险越高。

参考资料

无需账号 · 原地交流

评论与补充

评论会直接显示在这道题下面。可以写自己的答法、继续追问或指出错误,不需要 GitHub 账号,也不会跳转到 Issue;内容会公开,请勿填写个人隐私、公司机密或受保密约束的材料。

正在加载评论…