GFPO
LLM-RL · arXiv 2025 · 2508.09726

Sample More to Think Less:多采一组,换更短的推理链

RLVR 训出来的模型会越说越长,但多出来的 token 很多只是重复、绕圈和“填充”。GFPO 不改奖励函数,也不加长度惩罚: 每个问题先采更多回答,再按长度或 token 效率筛掉一部分,只让保留下来的回答产生优势。 训练时多花的采样,换推理时更短的输出。

Vaishnavi Shrivastava 等 · Microsoft Research arXiv 2508.09726v1 ↗
TL;DR · 30 秒抓住核心

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。真正稳的配置仍要按基准和算力调。

46.1%
Shortest 4/24 在 AIME 25 的 ELR
五个基准中的最低值
84.6%
Token Efficiency 在 AIME 24 的 ELR
同一张表里的最高值
79.5%
Token Efficiency 五基准平均 ELR
GRPO 按定义为 0
01

长度膨胀:奖励在鼓励“多说”,而不是“想对”

先分清两件事:难题本来就需要更长;但同一道题内,更长的回答往往更差。

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)。

论文的直接观察

token-level 归一化压不住长度

Dr. GRPO 按 batch 内最大长度归一化,DAPO 按总 token 数归一化,本意都是让长回答的权重更大、更重地惩罚长而错的链。但论文指出:这同时也会放大“长而对”的奖励,反而强化了强 SFT 模型本来就有的啰嗦倾向。作者复现时,即使用了 DAPO 的 token-level loss,GRPO 仍在 100 步内把平均长度从 4k 推到 14k(§1)。

所以这篇论文要的不是“再设计一个更聪明的长度惩罚”,而是换一个作用点:不改奖励,改“哪些回答能进入更新”。这也是后面所有方法的出发点。

02

改损失、加惩罚、推理时截断:三条路都试过,仍没按住

前人不是没做事,而是各自只解决了问题的一部分。

训练侧 · 改损失

Dr. GRPO / DAPO:让长回答的 token 权重更大

标准 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 不冲突,但它们是事后止损:模型本身的长度分布没有变,部署时仍要为每条候选付出采样成本。

GFPO 的位置

把“筛选”放进 RL 更新,而不是再加一个阶段

最接近的前作是 Kim et al. 2024:先跑完 RL,再对每个 prompt 采多条,用最短正确解做 SFT 或 DPO。GFPO 的区别是把拒绝采样直接嵌进 RL 的每一步——采样更大的组,按长度或 reward-per-token 选 top-k,只在这 k 条里算优势。论文把它称为一种隐式的 reward shaping:不新增蒸馏阶段、不做 length alignment、也不改奖励函数(§3、§7)。

03

不碰奖励函数,只改“让谁参与优势计算”

全部机制可以压成一行:在子集 S 内算均值和标准差,S 外的人优势为零。

标准 GRPO 对每个问题采 G 条回答,用整组的平均奖励做基线,再用组内标准差归一化。GFPO 先按一个 metric 给这 G 条排序,保留前 k 条组成集合 S,然后只在 S 内做同样的归一化:

S, m = RejectionSample(G, k, metric),   mi = 1{i ∈ S}
μS = (1/k) Σi∈S Ri,   σS = √( (1/k) Σi∈S (Ri − μS)2 )
Âi,t(m) = ((Ri − μS) / σS) · mi
Eq. 2–3 · σS 用 ÷k(总体标准差);S 外的回答 mi=0,优势为 0。GRPO 相当于把 S 换成整组 G、并把 mi 全设为 1。

这一步只改优势估计,不动 clipped surrogate、KL 项或熵项,所以论文说它可以和 DAPO、Dr. GRPO、Dual-Clip PPO 等任意 GRPO 变体组合(§3)。真正决定行为的是三个 metric:

Metric 1

Shortest k/G

按回答长度升序,保留最短的 k 条。最直接,也最容易把“短”学成“少推理”。

Metric 2

Token Efficiency

按 Ri / |oi| 排序,保留 reward-per-token 最高的 k 条。长回答只有在奖励足够高时才“配得上”它的长度。

Metric 3

Adaptive Difficulty

用 t-digest 维护已见题目的 reward 均值分位数,把题目分成四档;简单题保留 k=4,中档 6,难和很难 8(G=16)。

Token Efficiency 值得单独说:论文的解释是,在这个排序下,短而对的链拿到最强的正梯度,长而对的链只拿温和的奖励或轻微惩罚,长而错的链拿到最陡的负梯度

这正好补上了 Shortest-k 的盲区:最短 k 只保留到第 k 短为止,比第 k 条更长的 token 位置没有直接的梯度信号,只能靠 KL 项慢慢往下推;Token Efficiency 则会给那些尾部低价值 token 明确的负梯度(§5.4)。

自己动手:k/G 这个“旋钮”到底有多灵

下面把 Table 1 / Table 2 里所有测过的 Shortest 配置摊开。选 k 和 G,看保留比例 k/G、五个基准的 ELR 和五基准平均。灰柱表示 ELR 为负——长度反而增加。

当前配置
k/G = 0.500 · 五基准平均 ELR = 29.7%(Table 2,8 of 16 行)
各基准 ELR 五基准平均 负值:长度反而增加
手算:两个配置的 k/G 与读数与上面的交互同一口径

配置 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)。推断 被拒样本不再贡献梯度方向,但仍会进入归一化分母,因此“零优势”不等于对梯度尺度完全没有影响。

04

多采 2×/3×,只学 8 条:训练换推理的账怎么算

GFPO 没有新模型、没有新数据,开销集中在每个问题多生成的那几条 rollout 上。

§4 训练设置;Table 1 / Table 2 的所有实验都在这一套条件下完成。
项目设置出处
基础模型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)。

Adaptive Difficulty 怎么在线估难度

每个训练步,对每道题采 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)。

05

一条流水线:采样 → 打分 → 保留 → 掩码优势

GFPO 的“架构”就是 GRPO 的训练循环里多了一次排序和一次掩码,没有额外网络。

问题 q 每个训练 step 取一道数学题 采样 G 条 G = 16 / 24 比 GRPO 的 8 条更多 温度 1.0 按 metric 排序 长度 / reward-per-token 或难度自适应 只排序,不改奖励 保留 top-k S = {i₁, …, i_k} m_i = 1 k ≤ 8 只在 S 内算优势 μ_S, σ_S 只来自保留集 Â_i,t = (R_i − μ_S)/σ_S 更新 π_θ 被拒样本:m_i = 0,优势置零,不进入 μ_S / σ_S 但 Eq. 2 的 token-level 分母仍计入全部 G 条
按 Figure 1 与 Algorithm 1 重绘的简化流程:覆盖“更大组采样 → 按 metric 排序 → top-k 掩码 → 仅在 S 内归一化优势”四个分支;未覆盖 clipped ratio、KL / entropy 项、rollout 生成与分布式训练的实现细节。

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)。

06

长度砍掉一大截,准确率没有统计显著变化

先看五个基准的总账,再看两个反直觉发现: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)见上面的交互,数值同样来自这两张表。

Table 1 / Table 2 摘录 · 五基准与平均;ELR 列原文列名为 % Len Inf。
基准 GRPO
Acc
GRPO
Len
Shortest 4/24
Acc
LenELR Token Eff.
Acc
LenELR Adaptive
Acc
LenELR
AIME 2572.414.8k70.313k46.169.512k70.970.812.8k50.8
AIME 2477.713.3k76.511.3k59.876.410.6k84.676.611.6k52.9
GPQA67.510.7k68.18.3k57.368.57.5k79.770.89k41.7
Omni-MATH86.012.7k87.610.5k71.087.410.1k82.688.911.6k35.1
LiveCodeBench56.713.9k59.211.8k57.057.011k79.757.212.1k49.4
平均72.113k72.311k58.271.710.2k79.572.911.4k46.0

读法:ELR 的分母是 GRPO 相对 SFT 多出来的长度;GRPO 自己按定义是 0。不同基准的 SFT–GRPO 差距不同,所以 ELR 不能跨基准直接比大小。

总账:平均长度 13k → 10.2k,准确率差在噪声内

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)。

反直觉一:Token Efficiency 比“只留最短”更狠

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 不是严格单调的旋钮

论文的框架是“降低 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)。这支持论文的标题:不先扩大采样组,单靠筛选不够。

它到底砍掉了哪一段:Solution 和 Verification

作者用 GPT-4o 把推理链按句子标成 Problem / Solution / Verification / Final 四段,再统计各段 token 数(§6.5、Figure 10)。GRPO 主要把 Solution 和 Verification 撑长;GFPO 正好压这两段,Problem 重述和 Final 答案基本不动(与 SFT 相差在 10% 以内)。

AIME 25 · 各段平均 token
SFT GRPO Shortest 8/24
手算:Solution / Verification 的超额长度削减数值逐字取自 Figure 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 输出一致。

Pareto 与分布外:不是只在一个点上赢

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)。

07

省的是推理,不是训练;它也没打算管开放式任务

论文自己承认的、以及从表里能直接读出来的边界,一共五条。

边界一

训练开销变大了,而且没有墙钟数字

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 的方差更大,准确率略低

Token Efficiency 的平均准确率 71.7% 比 GRPO 的 72.1% 低 0.4 个百分点,论文说这是非统计显著的轻微退化;训练曲线方差也更大(Figure 2)。作者的解释是:长而对和长而错的链共享尾部 token,梯度方向会冲突(§5.4)。要最稳的准确率,Shortest 8/24 或 Adaptive 更合适。

边界四

Adaptive Difficulty 在“难题”档会掉一点

论文明确说 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)。

边界五

只验证了数学训练 + STEM/代码评测

训练集是 72k 数学题,评测覆盖 AIME、GPQA、Omni-MATH 和分布外的 LiveCodeBench;没有开放式对话、创意写作、情感支持或长文任务。论文没有声称这些场景也适用,也没有做安全性或事实性维度的过滤实验。把“简洁”当普遍目标之前,需要先确认任务本身是否奖励长解释。

还有一个度量层面的边界:ELR 的分母是 LGRPO − LSFT。当 GRPO 相对 SFT 的超额很小时,分母小,ELR 会对舍入和采样噪声很敏感;6/8 在 Omni-MATH 的 −5.5% 就是一个例子。推断 这也是为什么不同基准的 ELR 不能直接横向比较,只能在同一基准内看相对排序。