RLVR 训出来的模型会越说越长,但多出来的 token 很多只是重复、绕圈和“填充”。GFPO 不改奖励函数,也不加长度惩罚: 每个问题先采更多回答,再按长度或 token 效率筛掉一部分,只让保留下来的回答产生优势。 训练时多花的采样,换推理时更短的输出。
RLVR 把准确率推高的同时,也把回答长度推高。论文在 Phi-4-reasoning-plus 上看到:即使用了 DAPO 的 token-level 归一化,GRPO 仍在 100 步内把平均长度从 4k 推到 14k。更长的回答也不等于更强:在 AIME 25 上,同时有正确和错误回答的题目里,72% 的题目是“更长的回答更容易错”。
GFPO 的改动很小:把每个问题的采样组从 G=8 扩到 16/24,按一个 metric 排序,只保留 top-k 条参与优势计算。被拒回答的掩码 mi=0,优势直接置零;均值 μS 和标准差 σS 也只在保留集合 S 内算。metric 可以是长度、reward/length,或按题目难度动态调 k。
在五个基准上,Shortest-k 把 GRPO 相对 SFT 多出来的长度削减 46–71%,Token Efficiency 把它推到 71–85%;准确率差异在 Wilcoxon 检验下不显著。代价是训练时采样更多,收益是部署时每条回答更短。
但这不是“免费变短”:只从 G=8 里筛(6/8)在 Omni-MATH 上 ELR 为 −5.5%,长度反而增加;k/G 也不是严格单调,8/24 的平均 ELR 高于 6/24。真正稳的配置仍要按基准和算力调。
先分清两件事:难题本来就需要更长;但同一道题内,更长的回答往往更差。
RLVR 让模型在 AIME、IMO 这类任务上“想得更久”,但副作用是回答长度持续膨胀。论文在引言里引了两条旁证:AIME 25 上 DeepSeek-R1 的回答长度接近 Claude 3.7 Sonnet 的 5 倍,准确率却相近;QwQ-32B 在 AIME / HMMT 上最短的那批回答,比随机采样高 2%(原文只写 by 2%,未说明是相对还是绝对),同时相对少用 31% 的 token。
问题在于,长回答和答对之间有一个混淆:难题本来就既难又长。为了把“难度带来的长”和“模型自己变啰嗦”分开,作者在 Phi-4-reasoning-plus 上做了同题内比较——只看那些同时生成了正确和错误回答的 AIME 25 题目。结果是:其中 72% 的题目里,较长的那条回答反而更容易错(§1)。
Dr. GRPO 按 batch 内最大长度归一化,DAPO 按总 token 数归一化,本意都是让长回答的权重更大、更重地惩罚长而错的链。但论文指出:这同时也会放大“长而对”的奖励,反而强化了强 SFT 模型本来就有的啰嗦倾向。作者复现时,即使用了 DAPO 的 token-level loss,GRPO 仍在 100 步内把平均长度从 4k 推到 14k(§1)。
所以这篇论文要的不是“再设计一个更聪明的长度惩罚”,而是换一个作用点:不改奖励,改“哪些回答能进入更新”。这也是后面所有方法的出发点。
前人不是没做事,而是各自只解决了问题的一部分。
标准 GRPO 在每条回答内部先归一化再平均,长回答的每个 token 权重更小;Dr. GRPO 改成按 batch 最大长度归一化,DAPO 改成按总 token 数归一化。这样长而错的链会被更重地惩罚。
卡在哪:同一条规则也会放大长而对的正梯度。论文的观察是,强 SFT 模型会顺着这个信号继续变长,长度膨胀并没有被真正压住(§1、§7)。
一条路是 token 上限(如 ThinkPrune 式截断),一条路是自适应长度惩罚(Su & Cardie 2025;Xiang et al. 2025 按题目解决率缩放),还有把全局长度奖励和压缩奖励合在一起的做法(Cheng et al. 2025)。
卡在哪:论文的初步实验里,直接放大 length penalty 要么没有实质性的长度缩减,要么以减少准确率为代价(§7)。惩罚项和准确率奖励在同一个标量里竞争,权重很难同时调好。
Hassid et al. 2025 在 k 条采样里投票选最短的;Muennighoff et al. 2025 用 “Wait / Final Answer” 之类的短语做 budget forcing;Liu & Wang 2025、Yang et al. 2025 则在生成过程中监测置信度或答案稳定性,提前停止。这些方法和 GFPO 不冲突,但它们是事后止损:模型本身的长度分布没有变,部署时仍要为每条候选付出采样成本。
最接近的前作是 Kim et al. 2024:先跑完 RL,再对每个 prompt 采多条,用最短正确解做 SFT 或 DPO。GFPO 的区别是把拒绝采样直接嵌进 RL 的每一步——采样更大的组,按长度或 reward-per-token 选 top-k,只在这 k 条里算优势。论文把它称为一种隐式的 reward shaping:不新增蒸馏阶段、不做 length alignment、也不改奖励函数(§3、§7)。
全部机制可以压成一行:在子集 S 内算均值和标准差,S 外的人优势为零。
标准 GRPO 对每个问题采 G 条回答,用整组的平均奖励做基线,再用组内标准差归一化。GFPO 先按一个 metric 给这 G 条排序,保留前 k 条组成集合 S,然后只在 S 内做同样的归一化:
这一步只改优势估计,不动 clipped surrogate、KL 项或熵项,所以论文说它可以和 DAPO、Dr. GRPO、Dual-Clip PPO 等任意 GRPO 变体组合(§3)。真正决定行为的是三个 metric:
按回答长度升序,保留最短的 k 条。最直接,也最容易把“短”学成“少推理”。
按 Ri / |oi| 排序,保留 reward-per-token 最高的 k 条。长回答只有在奖励足够高时才“配得上”它的长度。
用 t-digest 维护已见题目的 reward 均值分位数,把题目分成四档;简单题保留 k=4,中档 6,难和很难 8(G=16)。
Token Efficiency 值得单独说:论文的解释是,在这个排序下,短而对的链拿到最强的正梯度,长而对的链只拿温和的奖励或轻微惩罚,长而错的链拿到最陡的负梯度
这正好补上了 Shortest-k 的盲区:最短 k 只保留到第 k 短为止,比第 k 条更长的 token 位置没有直接的梯度信号,只能靠 KL 项慢慢往下推;Token Efficiency 则会给那些尾部低价值 token 明确的负梯度(§5.4)。
下面把 Table 1 / Table 2 里所有测过的 Shortest 配置摊开。选 k 和 G,看保留比例 k/G、五个基准的 ELR 和五基准平均。灰柱表示 ELR 为负——长度反而增加。
配置 A:k=4, G=16。k/G = 4 ÷ 16 = 0.250;平均 ELR = 44.2%(Table 2,“4 of 16” 行)。五个基准的 ELR 依次为 38.0 / 46.8 / 45.7 / 47.3 / 43.2。
配置 B:k=8, G=24。k/G = 8 ÷ 24 = 0.333;平均 ELR = 54.1%(Table 2,“8 of 24” 行)。五个基准的 ELR 依次为 54.4 / 52.7 / 52.2 / 51.9 / 59.4。
ELR 的定义是 (LGRPO − LGFPO) / (LGRPO − LSFT)(Eq. 4)。表中 ELR 由作者用未四舍五入的原始长度计算;页面不拿 13.3k / 11.3k 这类显示值反推,以免舍入误差。交互只做 k ÷ G 和表格读数,不做标准差或平均运算;k/G 是保留比例,不存在 ÷N 或 ÷(N−1) 的口径问题。
还有一个容易忽略的细节:Eq. 2 的分子对所有 G 条求和,但被拒样本的优势为 0;分母 Σi=1G|oi| 仍然覆盖全部 G 条,包括被拒样本。论文正文的说法是 “Responses not in S receive zero advantage, effectively excluding them from influencing policy updates”(§3)。推断 被拒样本不再贡献梯度方向,但仍会进入归一化分母,因此“零优势”不等于对梯度尺度完全没有影响。
GFPO 没有新模型、没有新数据,开销集中在每个问题多生成的那几条 rollout 上。
| 项目 | 设置 | 出处 |
|---|---|---|
| 基础模型 | Phi-4-reasoning(14B,仅 SFT,未做 RL) | §4 |
| GRPO 基线 | Phi-4-reasoning-plus;作者复现时用 DAPO token-level loss | §4 |
| 训练数据 | 72k 数学题;100 步 × batch 64,实际只见到 6.4k 道 | §4 |
| 硬件 | 32 × H100 | §4 |
| 采样组 | G ∈ {8, 16, 24};所有 GFPO 实验 k ≤ 8 | §4 |
| 优化器 | Adam,lr 1e-7,前 10 步 warmup,温度 1.0 | §4 |
| 正则 | KL β = 0.001,entropy γ = 0.001 | §4 |
| 上下文 | 最大 32k,其中 1k 留给 prompt | §4 |
| 评测 | AIME 25/24 每题 32 条;GPQA 5 条;Omni-MATH 1 条;LiveCodeBench 3 条;温度 0.8 | §4 |
采样开销:G=16 是 GRPO 基线 G=8 的 2×,G=24 是 3×。多出来的是 rollout 生成和打分;论文把 k 限制在 8 以内,是为了让模型收到的梯度信号条数与 GRPO 对齐,比较的是“同样 8 条更新信号,筛过和没筛过”的差别(§4)。训练墙钟或 GPU-hour 的具体增量,论文没有给出;它只说更短的回答会让训练本身也部分回本(§3)。
每个训练步,对每道题采 G=16 条,用这组回答的平均奖励作为“这题有多难”的在线估计:平均奖励低,说明题难。所有见过的题目的 reward 均值被维护在一个 t-digest 里,用它近似分位数,把新题分进四档:很难 / 难 / 中等 / 简单(按 reward 从低到高分别是 bottom 25%、25–50%、50–75%、top 25%)。对应的保留条数是 k = 8 / 8 / 6 / 4;训练最初的 warmup 步对所有题都保留 8 条,避免分位数还没稳定就过度过滤(§3.1、§5.5)。
这个设计把“简单题多砍、难题多探索”写成了一个课程:简单题正确答案多,激进过滤不容易误伤;难题需要更多候选,保留 k=8。论文报告的平均保留条数是 k=6.5,所以它主要对标 Shortest 6/16(§5.5)。
GFPO 的“架构”就是 GRPO 的训练循环里多了一次排序和一次掩码,没有额外网络。
Algorithm 1 本身只有三步:对每条回答算 metric 分数、排序、取前 k 条并生成掩码。没有额外的奖励模型,也没有额外的标注;筛选发生在同一个训练 step 内部,不是后处理阶段。GRPO 与 GFPO 的差别只在优势:GRPO 用整组 G 条算 μG, σG,GFPO 用保留集 S 算 μS, σS。
Adaptive Difficulty 只是把“取前 k 条”里的 k 换成由 t-digest 分位数决定的 4 / 6 / 8 / 8;流水线的其余部分不变(Algorithm 2)。
先看五个基准的总账,再看两个反直觉发现:Token Efficiency 比 Shortest 更狠,k/G 却不是单调旋钮。
下表从 Table 1 / Table 2 摘出四行:GRPO、Shortest 4/24、Token Efficiency(k=8, G=16)、Adaptive Difficulty(G=16)。Acc 是 pass@1,Len 是平均响应长度,ELR 是 Eq. 4 的超额长度削减。表中只转录这四行;完整的 11 行(含 SFT 和 7 个 Shortest k/G)见上面的交互,数值同样来自这两张表。
| 基准 | GRPO Acc | GRPO Len |
Shortest 4/24 Acc | Len | ELR | Token Eff. Acc | Len | ELR | Adaptive Acc | Len | ELR |
|---|---|---|---|---|---|---|---|---|---|---|---|
| AIME 25 | 72.4 | 14.8k | 70.3 | 13k | 46.1 | 69.5 | 12k | 70.9 | 70.8 | 12.8k | 50.8 |
| AIME 24 | 77.7 | 13.3k | 76.5 | 11.3k | 59.8 | 76.4 | 10.6k | 84.6 | 76.6 | 11.6k | 52.9 |
| GPQA | 67.5 | 10.7k | 68.1 | 8.3k | 57.3 | 68.5 | 7.5k | 79.7 | 70.8 | 9k | 41.7 |
| Omni-MATH | 86.0 | 12.7k | 87.6 | 10.5k | 71.0 | 87.4 | 10.1k | 82.6 | 88.9 | 11.6k | 35.1 |
| LiveCodeBench | 56.7 | 13.9k | 59.2 | 11.8k | 57.0 | 57.0 | 11k | 79.7 | 57.2 | 12.1k | 49.4 |
| 平均 | 72.1 | 13k | 72.3 | 11k | 58.2 | 71.7 | 10.2k | 79.5 | 72.9 | 11.4k | 46.0 |
读法:ELR 的分母是 GRPO 相对 SFT 多出来的长度;GRPO 自己按定义是 0。不同基准的 SFT–GRPO 差距不同,所以 ELR 不能跨基准直接比大小。
Token Efficiency 的平均 ELR 是 79.5%,比 Shortest 4/24 的 58.2% 高 21.3 个百分点(79.5 − 58.2)。平均长度从 GRPO 的 13k 降到 Token Efficiency 的 10.2k,少 2.8k;按表中四舍五入值算,相对减少 21.5%(2.8 / 13.0)。
准确率方面,论文用 Wilcoxon signed-rank test 比较每题 pass@1 的配对差异,结论是 GFPO 各变体与 GRPO 之间没有统计显著差异(§5)。平均准确率上,Shortest 4/24 是 72.3%,比 GRPO 的 72.1% 高 0.2 个百分点;Adaptive 是 72.9%,高 0.8 个百分点;Token Efficiency 是 71.7%,低 0.4 个百分点——这是论文明确说的 “minor non-statistically significant degradations”(§5.4)。
Shortest-k 的梯度只覆盖到第 k 短的链,更长的 token 位置没有直接的负信号,只能靠 KL 项慢慢压。Token Efficiency 按 reward/length 排序后,长而错的链会拿到最陡的负梯度,所以它能砍到 Shortest-k 碰不到的尾部。结果就是平均 ELR 79.5% vs 58.2%,差 21.3 个百分点(Table 2)。
更反直觉的是简单题:Token Efficiency 在 AIME 25 的 easy 档位 ELR 达到 121.6%,比 SFT 还短,同时准确率还有提升(§6.1)。这不是笔误:ELR 的分母是 GRPO 相对 SFT 的超额长度,当 GFPO 比 SFT 还短时,分子大于分母,ELR 可以大于 100%。
论文的框架是“降低 k/G 就能缩短长度”,Table 2 大体支持这个趋势,但有两个例外值得记住。第一,8/24 的平均 ELR 是 54.1%,反而高于 6/24 的 47.1%,差 7.0 个百分点(54.1 − 47.1)。第二,从 8/24 再压到 4/24,平均 ELR 只从 54.1% 升到 58.2%,只多 4.1 个百分点(58.2 − 54.1)。论文自己也说,继续压保留比例会出现边际收益递减(§5.3)。
另外,只从 G=8 里筛的 6/8 在 Omni-MATH 上 ELR 是 −5.5%,长度反而增加;它在 AIME 25 / 24、GPQA 上也只有 1.8 / 9.5 / 11.5(Table 1)。这支持论文的标题:不先扩大采样组,单靠筛选不够。
作者用 GPT-4o 把推理链按句子标成 Problem / Solution / Verification / Final 四段,再统计各段 token 数(§6.5、Figure 10)。GRPO 主要把 Solution 和 Verification 撑长;GFPO 正好压这两段,Problem 重述和 Final 答案基本不动(与 SFT 相差在 10% 以内)。
Solution:GRPO 相对 SFT 的超额 = 8.3 − 6.5 = 1.8k;Shortest 8/24 只剩 6.6 − 6.5 = 0.1k;削减 = (8.3 − 6.6) / (8.3 − 6.5) × 100 = 94.4%。
Verification:GRPO 相对 SFT 的超额 = 3.1 − 1.9 = 1.2k;Shortest 8/24 只剩 2.3 − 1.9 = 0.4k;削减 = (3.1 − 2.3) / (3.1 − 1.9) × 100 = 66.7%。
这两组是 AIME 25 上 Shortest 8/24 的数字;GPQA 的趋势相同,但 Figure 10 正文没有给出同样的四位数字,本页不转录。交互只显示 Figure 10 的原始 token 数;百分比按上面两行公式手算,和 JS 输出一致。
Figure 3 的准确率—长度前沿上,五个基准里有四个至少有一个 GFPO 变体严格支配 GRPO:既更准又更短。AIME 25 是例外——GRPO 的准确率最高,但 GFPO 变体仍在 Pareto 前沿上,用不显著的准确率损失换明显的长度下降(§5.7)。
分布外的 LiveCodeBench 更能说明问题:训练集里没有代码数据,GRPO 仍把平均长度从 SFT 的 10.3k 推到 13.9k,准确率却从 57.7% 降到 56.7%——长度涨了,能力没涨。Shortest 8/24 在把 ELR 做到 57.0% 的同时,准确率是 59.2%,高于 SFT 和 GRPO;Token Efficiency 的长度最低(11k,ELR 79.7%),准确率 57.0%(Table 2、§5.6)。
论文自己承认的、以及从表里能直接读出来的边界,一共五条。
G=16/24 对应 2×/3× 的采样条数。论文只说更短的回答会“部分抵消”训练成本(§3),没有给 GPU-hour、吞吐或墙钟增量;如果训练资源紧张,这笔前置投入可能比推理节省更难接受。收益是持续的:训练一次,部署时每条回答都更短(§1)。
Shortest 6/8 在 Omni-MATH 的 ELR 是 −5.5%,在 AIME 25 只有 1.8%。这说明“筛选”本身不是充分条件:G 不够大时,组里可能根本没有足够短的优质链。论文的结论是先把 G 从 8 扩到 16,再调 k(§5.1、§5.3)。
Token Efficiency 的平均准确率 71.7% 比 GRPO 的 72.1% 低 0.4 个百分点,论文说这是非统计显著的轻微退化;训练曲线方差也更大(Figure 2)。作者的解释是:长而对和长而错的链共享尾部 token,梯度方向会冲突(§5.4)。要最稳的准确率,Shortest 8/24 或 Adaptive 更合适。
论文明确说 Adaptive Difficulty 在 hard 档有 modest accuracy drop(§6.2):简单题和很难的题都好判断,hard 档夹在中间,丢掉一些长但有用的回答会伤准确率。作者建议把 G 从 16 提到 24 来补(Shortest 8/24 在 hard 档追平 GRPO 的 73.4%)。另外,Adaptive 只和 shortest 指标组合过;论文说它也可以换成 token efficiency,但没有给出结果(§5.5)。
训练集是 72k 数学题,评测覆盖 AIME、GPQA、Omni-MATH 和分布外的 LiveCodeBench;没有开放式对话、创意写作、情感支持或长文任务。论文没有声称这些场景也适用,也没有做安全性或事实性维度的过滤实验。把“简洁”当普遍目标之前,需要先确认任务本身是否奖励长解释。
还有一个度量层面的边界:ELR 的分母是 LGRPO − LSFT。当 GRPO 相对 SFT 的超额很小时,分母小,ELR 会对舍入和采样噪声很敏感;6/8 在 Omni-MATH 的 −5.5% 就是一个例子。推断 这也是为什么不同基准的 ELR 不能直接横向比较,只能在同一基准内看相对排序。