GAGAR:面向代码 Agent 强化学习的分组智能评分与优势再分配
- 关联论文:2609.32577
- 作者:flyP
- 更新:2026-09-30
一句话结论
GAGAR 在代码 Agent RL 训练中引入一个 SFT 训练的「智能评分员」,对通过测试的轨迹按实现质量重排序后做优势再分配,让 GRPO 不再把所有"过了测试"的轨迹一视同仁。
解决什么真问题
当前代码 Agent 的强化学习几乎都遵循一个套路:用可执行测试当奖励源(binary reward),再用 GRPO 做组内相对策略优化。问题在于——
- 测试通过 = 1,测试失败 = 0,二值奖励
- GRPO 在同一 rollout 组内把所有"通过测试"的轨迹赋相同优势
- 但通过测试≠实现质量好。可能这条轨迹用 50 行精准命中需求,另一条塞了 200 行无关改动还过了测试。两者拿到的策略梯度完全一样。
后果:策略学不到"写得更干净"的信号,反而学到"能用就行"。长尾表现就是轨迹长度失控膨胀(trajectory-length growth),以及训练不稳定。
GAGAR(Groupwise Agentic Grading and Advantage Redistribution)就是补这块缺:让"过了测试"不再铁板一块,按质量再分配优势。
核心方法
GAGAR 的设计可以拆成三步:
1. 动态采样:保留混合组
GAGAR 用 dynamic sampling——只保留同时包含通过与失败轨迹的 rollout 组。如果一组全过或全不过,组内没有相对比较的意义,直接丢掉。这保证后续评分有"对照组"。
2. 共享工作空间 + SFT 评分员
Rollout 组 G = {τ_1, ..., τ_n}(含通过/失败)
↓
全部放入共享工作空间
↓
SFT 训练的智能评分员(agentic grader)
联合检视所有轨迹,对通过测试的子集排序
↓
ranking: τ_pass^(1) > τ_pass^(2) > ... > τ_pass^(k)
评分员本身是用 SFT 训练的 Agent,不是规则。它能看到所有候选实现、做相对比较、产出排名——这比单纯的"代码风格打分"或"静态指标"更接近人类审阅。
3. 优势再分配(sum-preserving redistribution)
排序拿到之后做两件事:
- 对低排名轨迹做 downweight(降低它们的优势)
- 按比例 rescale 所有通过轨迹的优势,恢复原始总和
最后这一步很关键——保持优势总和不变。这让 GRPO 的 baseline 与方差估计仍然稳定,但相对权重已被质量重新分配过。效果:高质量实现拿到更多梯度,低质量实现被压制。
伪代码示意:
# GAGAR advantage redistribution
advantages = compute_grpo_baseline(rewards) # 原始 GRPO
ranking = agentic_grader.rank(passing_trajs) # SFT 评分员
for traj in passing_trajs:
rank = ranking[traj]
advantages[traj] *= quality_weight(rank) # 质量降权
advantages = advantages * (original_sum / new_sum) # 总和守恒
return advantages
关键实验与数据
实验 1:受控代码 Agent 实验(Flash 模型)
在 MiMo-V2.6-Flash(310B 总参数,仅代码任务)的预 RL SFT checkpoint 上跑:
- 代码 Agent 性能提升
- 轨迹长度增长得到抑制(trajectory-length growth 减缓)
- 训练稳定性提升(更少的策略崩溃与振荡)
实验 2:工业规模混合任务 RL(Flash + Pro)
把 GAGAR 推到大规模混合任务 RL 上,模型包括:
- MiMo-V2.6-Flash:310B 总参数
- MiMo-V2.6-Pro:1.02T 总参数
实验结果是支持"测试验证 + 分组智能评分"的组合能同时改进质量与稳定性。
⚠️ 注:abstract 未给出具体百分点的数字(原文未明确),定性强于定量。论文应来自 Xiaomi MiMo 团队(论文作者 Jinhao Dong,arXiv 提交日期 2026-09-26)。
亮点与局限
亮点
- 问题定位精准:击中 GRPO 在代码 RL 上的核心盲区——二元奖励把"质量"信息抹平了。
- SFT 评分员 + 共享工作空间是工程上的优雅设计:评分员能联合对比、不孤立打分,避免"对单条轨迹过度敏感"。
- sum-preserving redistribution 让改动可以即插即用,不需要重写训练循环的统计量。
- 工业级验证:在 310B / 1.02T 参数模型上跑过,不是 toy benchmark。
- 双重收益:性能提升 + 轨迹长度抑制 + 训练稳定——三件一起拿到。
局限(诚实标注)
⚠️ 具体数字(提升幅度、训练步数、reward 曲线)在 abstract 中未给出(原文未明确)——这是论文最大的可读性短板,需要从正文/附录核验。
⚠️ agentic grader 的训练成本:评分员本身是 SFT 模型,需要额外训练数据 + 推理开销。在 1.02T 规模上每次 rollout 都要跑评分员,实际训练时长与算力代价未在 abstract 中量化。
⚠️ grader 的可靠性边界:评分员本身可能错判——若 grader 把低质量标成高质量,会放大偏差。论文未明确 grader 的精度区间(原文未明确)。
⚠️ 下游任务分布:实验是 Xiaomi MiMo 的内部代码任务,是否在 SWE-Bench、HumanEval 等公开基准上验证未在 abstract 中说明(原文未明确)。
⚠️ 动态采样的样本效率代价:丢掉全过/全不过组,会减少可训练样本。在难题占比高时可能加剧样本不足。
⚠️ 跨模型迁移性:评分员是针对 MiMo 训练,对其他代码 Agent 的泛化性未明确(原文未明确)。
对工程落地的启发
启发的 8 个具体工程坑点
-
现象:训练 reward 涨了,但生成的代码越来越长、越来越乱。 影响:推理成本暴涨、用户体验下滑。 修复:引入质量评分维度,不只看测试通过——GAGAR 的轨迹长度抑制就是直接证据。
-
现象:测试用例覆盖不全,Agent 学到"刷测试分"的捷径。 影响:reward hacking,真实场景下表现差。 修复:测试基础上叠加 agentic grader——后者能识别"通过测试但实现低质"的轨迹。
-
现象:GRPO 组内通过轨迹全部平等,策略收敛到"平均水准"。 影响:训练无法向高质量实现倾斜。 修复:组内加 ranking + 优势再分配,哪怕简单按"代码行数 / 改动范围"分桶也能起点效果。
-
现象:评分规则靠人写,跨任务难泛化。 影响:每接一个新任务要重写 rubric,维护成本高。 修复:用 SFT Agent 当 grader,让它学会相对比较而非绝对规则——但要监控 grader 本身的偏差。
-
现象:动态采样丢弃太多组,训练步数翻倍。 影响:算力预算爆。 修复:保留部分全过/全不过组做 baseline 锚定,避免完全丢失;或降低组大小换取组多样性。
-
现象:评分员推理慢,整体训练被 grader 卡住。 影响:单步训练时间翻 N 倍。 修复:把 grader 蒸馏成小模型,或在低难度迭代用规则 grader、高难度迭代用 Agent grader,分级调度。
-
现象:grader 评分漂移(训练初期 vs 训练末期标准不一致)。 影响:信用分配噪声大。 修复:固定 grader snapshot,或加周期性 recalibrate;保留一小批"金标准轨迹"做 grader 偏差监控。
-
现象:sum-preserving 改动未对接下游 reward shaping 模块。 影响:训练流程集成成本高。 修复:把再分配封装成 GRPO loss 的可插拔 wrapper;保留原优势计算路径,方便 A/B 切换。
与同方向工作的关系
- GRPO(DeepSeekMath, Shao et al., 2024):组内相对策略优化的代表作。GAGAR 是在 GRPO 框架内的优势再分配,不替换 GRPO,而是补足它对二元奖励的处理缺陷。
- RLOO / REINFORCE Leave-One-Out:类似的组内基线思想,但同样把"通过"视为同质。
- Process Reward Model(PRM):给推理过程每步打分。GAGAR 与 PRM 思路接近但范围不同——PRM 偏推理步骤,GAGAR 偏代码实现质量,且保留 GRPO 的统计框架。
- Self-Refine / Self-Critique:让模型自我批评。GAGAR 的 agentic grader 是专用 SFT 模型,更可靠。
- SWE-Bench Verified / HumanEval:公开代码 Agent 基准。GAGAR 的实验是否覆盖未在 abstract 明确(原文未明确)。
- Constitutional AI:用规则集约束输出。GAGAR 与之相反——让评分员学出来,规则从代码 Agent 群体行为中涌现。
适合谁读
- LLM RL 训练研究者:GRPO 在代码任务上的瓶颈问题,需要新的 credit assignment 信号。
- 代码 Agent 团队 Lead:想知道怎么从"测试通过"升级到"实现质量"。
- RLHF / RLAIF 工程师:把"评分员"作为独立模块的思路对其他 RL 场景也适用。
- MiMo / Qwen / DeepSeek 类开源大模型团队:内部 RL 训练 pipeline 设计参考。
- AI 编译器 / 代码生成方向:对"实现质量"打分机制的工程实现细节感兴趣。
不确定与待核
- abstract 未给出 Flash/Pro 的具体提升数字(百分点 / 训练步 / reward 曲线)(原文未明确)。
- agentic grader 的训练数据来源与规模未公开(原文未明确)。
- 评估是否覆盖 SWE-Bench / HumanEval / MBPP 等公开基准未说明(原文未明确)。
- grader 评分精度区间与偏差监控机制未量化(原文未明确)。
- 跨模型(其他 code LLM)迁移性未明确(原文未明确)。