GTPO
LLM-RL · GRPO 稳定性 · arXiv 2025

GTPO:用冲突掩码与熵控制稳住 GRPO

GRPO 有两个反复出现的问题:同组答案共享的 token 会被正负优势来回拉扯,训练后期策略又会突然崩溃,而 KL 项要等到崩溃之后才明显上升。GTPO 不换采样流程,只在梯度上做两件事:对首尾共享 token 的冲突梯度做「负向归零、正向加倍」的掩码修正;用初始熵判断模型是否怕高熵,再过滤高熵答案、加一项最小化熵的正则。它顺手去掉了 KL 项和参考模型。LLaMA 8B 在 GSM8K 上训练后,AMC23 Pass@64 从 GRPO 的 5.0 升到 80.0。

Marco Simoni、Aleksandar Fontana、Giulio Rossolini、Andrea Saracino、Paolo Mori · Sapienza / Scuola Superiore Sant'Anna / CNR 原文 v5 ↗
TL;DR · 30 秒抓住核心

GTPO 把一条回答当作一条轨迹,先找出「同位置、跨正负优势答案」的冲突 token:从左到右扫出前向冲突掩码,从右到左扫出后向掩码,两者取并集,只覆盖首尾连续段。对掩码内 token,负优势答案的梯度置 0,正优势答案的权重乘 2;掩码外不动。这样既保住 <reasoning> 这类格式 token,又保持组内总信号量不变。

熵控制分两层:若模型初始平均熵 < ln 2,说明它本来偏自信,训练中单条答案熵超过 ln 2 就整条过滤(δ=0);否则不过滤。最终损失在优势上再减 γ·⟨H⟩i,直接压低熵,γ=0.1。KL 项被完全去掉,因此不需要参考模型。

代价是:这套机制只在两个通用 instruct 小模型(LLaMA 3.1 8B Instruct、Qwen 2.5 3B Instruct)上验证,而且只做了数学推理任务;Table 1 的对比还是「每个数据集挑最好的变体」,不是最终 checkpoint 的平均,也不是多种子平均。

80.0
LLaMA 8B · GSM8K 训练 → AMC23 Pass@64;GRPO 5.0,SFT 72.5
42.5
同一设置 AMC23 Maj@64;GRPO 5.0,SFT 17.5
95.0
Qwen 2.5 3B · GSM8K 训练 → AMC23 Pass@64;GRPO 77.5
01

两个问题:共享 token 的梯度冲突,以及 KL 追不上的策略崩溃

读完这节你应该知道:GTPO 要修的到底是哪两处,以及论文用什么证据定位它们。

冲突来自「同位置、不同结局」。同一组回答经常以相同的格式 token 开头,比如 <reasoning>;随后在某个分叉点走向不同解法。GRPO 用整条回答的归一化优势 Âi 去更新每个 token,于是共享前缀的梯度取决于组内所有答案的优势之和除以各自长度。若正确回答普遍更长,分母 |oi| 更大,它们的贡献被稀释,前缀可能整体收到负更新——哪怕这些 token 本身是对的。 §4.1

崩溃来自「低熵 + 负优势」。当一个高置信 token 出现在负优势答案里,GRPO 会大幅压低它,同时把所有其他 token 的概率略微抬高。单次抬升很小,但会累积;再加上组内优势零均值,少数负样本要承担很大的负值,进一步放大这种「压低正确 token、抬高不可能 token」的效应。输出分布被压平,格式先坏、准确率后坏。 §4.2

论文用 Figure 1 的 LLaMA 8B + GSM8K 训练曲线说明 KL 的滞后:格式化奖励在 β=10−6 时约 580 步、β=0.04 时约 750 步跌破 9;两条 KL 曲线却基本平稳到约 1200 步才抬头。熵曲线则在格式化奖励开始下降时就同步上升。论文据此把熵当作更及时的崩溃信号。 Figure 1

问题 A

前缀被负优势「连坐」

共享前缀的更新由组内优势与长度的相对平衡决定;正确回答越长,前缀越容易被错误答案拖成负更新。

问题 B

低熵错误答案引发雪崩

负优势压低高置信 token,同时抬高其余 token;零均值约束让少数负样本的惩罚更重。

证据

KL 慢半拍,熵同步

Figure 1 中格式化奖励先跌,KL 约 1200 步才上升;熵与奖励下降同步,因而更适合做过滤信号。

02

已有方案:KL 正则、去 KL 的 GRPO 变体,以及序列级优化

读完这节你应该知道:GTPO 与「直接删掉 KL」的做法有什么区别。

路线 A

GRPO 与 KL 正则

GRPO 用组内相对优势替代 critic,并在目标里加 β·DKL(πθ‖πref),把策略拉向参考模型 §3。论文的观察是:这个约束在崩溃前几乎不动,崩溃后才上升,不能作为早期预警。 Figure 1 同时参考模型让训练更重。 §5.2

路线 B

去 KL 与序列级变体

已有工作分两路。Open-Reasoner-Zero 与 Liu 等对 R1-zero 式训练的批评尝试直接去掉 KL §5.2;GSPO 则把优化从 token 级提升到序列级 §2。论文称自己的测试显示 KL 有时仍必要,但 GTPO 用熵控制替代它,而不是简单删除。 §5.2

与它们相比,GTPO 既保留 token 级目标,又同时改两处:冲突掩码负责「哪些 token 的梯度要修正」,熵过滤与正则负责「哪些答案不该进入更新、整体熵该往哪走」。论文把冲突修正与熵控制拆开做消融:只用冲突修正(Figure 3 的 “No⟨H⟩i–Noδi”)在前期仍高于 GRPO,但约 2500 步后开始退化;只有两者一起才维持稳定。 Figure 3

03

方法:先算冲突掩码,再用熵决定「这条答案要不要」

读完这节你应该知道:λ 的三个取值怎么来、δ 在什么条件下为 0、最终损失长什么样。

3.1 冲突 token 与 λ 掩码

把一组 G 条回答按优势分成 G+(Ai>0)与 G−(Ai<0)。前向冲突:token v 在位置 p 同时出现在至少一条正优势回答和至少一条负优势回答里。后向冲突:从末尾倒数第 r 个位置,v 同样跨正负优势出现。对每条回答,从左往右扫出第一段连续前向冲突,得到 Mfw;从右往左扫出第一段连续后向冲突,得到 Mbw;最终 M = Mfw ∨ Mbw。只取「第一段连续」是有意的:中间零散的冲突 token 语义依赖上下文,动它的梯度可能反而有害。 §5.1

Eq.9 的 λ 取值;Mi,t=0 表示非冲突区。
位置优势符号λi,t效果
Mi,t = 0任意1保持 GRPO 原更新
Mi,t = 1Ai < 00跳过冲突 token 的负更新
Mi,t = 1Ai > 02加倍冲突 token 的正更新

论文强调总信号量守恒:组内正负优势绝对值之和相等,λ=2 放大的正信号正好补上 λ=0 去掉的负信号,因此训练稳定性不被破坏。最终 token 级损失为 J* = E[1/G Σ Ai/|oi| Σ ri,tλi,t]。 §5.1

3.2 熵过滤 δ 与熵正则

训练前先用训练集前 100 条样本测模型初始平均熵 ⟨H⟩ini §6。若 ⟨H⟩ini > ln 2,说明模型本来就高熵,不做过滤(δi=1)。若 ⟨H⟩ini < ln 2,说明模型偏自信、对高熵答案敏感:此时单条答案的 ⟨H⟩i > ln 2 就把 δi 置 0,整条答案的优势信号被丢掉;⟨H⟩i ≤ ln 2 则保留。阈值 ln 2 对应两个等概率 token 的平均熵。 §5.2

过滤之外再加一项熵正则:最终目标在优势里减去 γ·⟨H⟩i,即 JGTPO = E[1/G Σ δi(Ai − γ⟨H⟩i)/|oi| Σ ri,tλi,t]。注意这里是最小化熵,和 PPO 常见的「加熵奖励鼓励探索」方向相反;论文的理由是 GRPO 本身有熵增趋势,需要反向力把置信度拉回来。实验取 γ=0.1 §6。因为没有 KL 项,训练不需要参考模型。 §5.2

04

工程账:2 张 A100、两个模型、一次 epoch

读完这节你应该知道:复现需要哪些设置,以及论文没有报告什么。

模型与数据

LLaMA 8B + Qwen 2.5 3B

训练集为 GSM8K 与 MATH 的训练划分;同分布测试用各自 test split,分布外评估用 AIME 2024、AIME 2025、AMC 2023。GTPO 与 GRPO 都跑 G=8 与 G=12 两种组大小。 §6 评估指标为 pass@k 与 maj@k:分布外/Table 1 的 k 取 1、8、16、32、64(AMC 的 maj@k 从 4 开始) Table 1;同分布 Figure 2 的 k 扫描 1–32。 §6.1

训练设置

lr 1e-6、1 epoch、2×A100

学习率 1×10−6,temperature 1.0;per-device batch 1,梯度累积 1,num_train_epochs 1,num_iterations 1;optimizer 为 paged_adamw_8bit,weight decay 0.1,max_grad_norm 0.1,cosine 调度;GTPO 的 β 为 None,即不用 β。 Listing 1 GRPO 的 β 取 0、0.04、1×10−6;正文/图为 10−6 §6,Listing 1 的 beta 字段写作 0.0/0.04/10e-6 Listing 1。全部实验在 2 张 NVIDIA A100 上完成。 §6

论文没有报告:每组实验的 GPU 小时、总训练时长与实际显存占用。 §6 Listing 1 只给 gpu_memory_utilization=0.4,这不是实际占用 Listing 1。也没有报告 γ=0.1 之外更多取值的完整数值扫描:Figure 4a 给了 γ=0.1、0.01、0.001、10−6 四档,另加一条关闭熵过滤的 NOδi 曲线,但没有表格数值。 Figure 4a 对复现来说,seed 与方差仍是空白:Listing 1 只给了一个随机种子 3407 Listing 1;没有多种子重复、标准差或置信区间,Table 1 的每个单元格也只给一个数。 Table 1

05

一条样本的旅程:组内优势 → 冲突掩码 → 熵过滤 → 更新

读完这节你应该知道:λ 与 δ 在流水线的哪个位置生效,以及 KL 与参考模型在哪一步被拿掉。

一组回答 G = 8 / 12 优势归一化 Â = (R−R̄)/std 找冲突 token 前向 + 后向,跨正负优势 掩码 M 与 λ 1 / 0 / 2 初始熵 ⟨H⟩ini < ln 2 ? 偏自信 训练集前 100 条测 单条熵 ⟨H⟩i > ln 2 ? → δ = 0 整条答案过滤 熵正则 A − γ⟨H⟩i γ = 0.1 更新策略 无 KL 项 无参考模型 J = E[ 1/G Σ δi (Ai − γ⟨H⟩i) / |oi| Σt ri,t λi,t ] 冲突掩码修正 token 梯度;熵过滤与熵正则控制整条答案与整体置信度 Figure 3 的消融:只留冲突修正会在约 2,500 步后退化;两者同时保留才维持稳定 原文用 Eq.8–11;图中符号按原文缩写
按 §5.1、§5.2 与 Eq.9–11 重绘。λ 只作用于首尾连续冲突段;δ 只在初始熵低于 ln 2 时启用过滤。
06

效果:极端单元格提升很大,但不是每个单元格都赢

读完这节你应该知道:Table 1 的 12 行怎么读、哪些单元格 GRPO 或 SFT 仍然更高、以及「up to」数字的边界。

6.1 Table 1 完整转录

Table 1(完整转录):分布外评估;每个模型/训练集组合取 GTPO、GRPO、SFT 中最好的变体。Pass@k 的 k=1/8/16/32/64;AMC 的 Maj@k 从 k=4 开始。表格可左右滚动查看全部 k。

模型训练集方法 AIME 2024 Pass@k AIME 2025 Pass@k AMC 2023 Pass@k AMC 2023 Maj@k
18163264 18163264 18163264 48163264
LLaMA 8B · GSM8K
LLaMAGSM8KSFT0.00.00.013.320.00.00.00.00.06.712.537.542.557.572.510.015.015.020.017.5
LLaMAGSM8KGRPO0.00.00.00.00.00.00.00.00.00.02.52.55.05.05.02.52.55.05.05.0
LLaMAGSM8KGTPO0.010.013.320.030.00.06.76.76.713.317.547.555.065.080.025.027.535.037.542.5
LLaMA 8B · MATH
LLaMAMATHSFT0.03.310.020.026.70.00.03.36.716.710.045.060.065.080.012.515.012.515.017.5
LLaMAMATHGRPO0.013.316.720.036.70.00.00.03.36.720.037.540.052.570.025.030.030.030.032.5
LLaMAMATHGTPO3.313.316.736.743.30.00.010.010.013.322.552.567.575.082.537.537.537.537.537.5
Qwen 2.5 3B · GSM8K
QwenGSM8KSFT0.00.00.00.06.70.00.00.06.76.70.010.017.552.562.50.02.57.57.57.5
QwenGSM8KGRPO0.03.36.716.720.00.03.36.710.020.07.540.052.567.577.517.512.525.030.042.5
QwenGSM8KGTPO3.013.316.716.726.70.06.710.020.026.737.565.070.085.095.040.042.547.550.045.0
Qwen 2.5 3B · MATH
QwenMATHSFT0.00.00.00.06.70.00.00.00.03.30.012.535.047.565.00.02.57.57.57.5
QwenMATHGRPO0.03.33.36.716.70.03.310.013.316.730.067.570.077.587.527.542.542.545.042.5
QwenMATHGTPO3.36.713.320.030.03.310.010.013.323.340.075.080.082.585.052.547.542.550.050.0

6.2 交互:切换训练设置与基准,看 pass@k 曲线

每行是一个 k,三根柱依次为 SFT、GRPO、GTPO;柱高按百分比直接换算(满格 100)。AMC 的 Maj 视图 k 取 4/8/16/32/64。

手算对账 两组选择下柱高与差值的完整计算

选择 A:LLaMA · GSM8K → AMC23 Pass@64。Table 1 给 SFT 72.5、GRPO 5.0、GTPO 80.0。柱高按 v / 100 × 100%:SFT 72.5%、GRPO 5.0%、GTPO 80.0%。GTPO − GRPO = 80.0 − 5.0 = 75.0 个百分点,与页面 §6.3 的 75.0 点一致。

选择 B:Qwen · GSM8K → AMC23 Pass@64。SFT 62.5、GRPO 77.5、GTPO 95.0。柱高 62.5% / 77.5% / 95.0%。GTPO − GRPO = 95.0 − 77.5 = 17.5;GTPO − SFT = 95.0 − 62.5 = 32.5 由显示值推得。JS 读数只显示 G−GRPO=17.5,不输出 G−SFT。

反例对账:Qwen · MATH → AMC23 Pass@64。GRPO 87.5、GTPO 85.0,差值为 87.5 − 85.0 = 2.5,方向是 GRPO 更高;页面在 §6.3 明确写出,不把该单元格算作 GTPO 的胜利。

6.3 读表:极端值很大,但不是「全面领先」

先看论文最常引的两个「up to」。Pass@64 的最大差出现在 LLaMA·GSM8K→AMC23:GTPO 80.0,GRPO 5.0,差 75.0 点。同一设置 Maj@64 的最大差:GTPO 42.5,GRPO 5.0,差 37.5 点。对 SFT 的最大 Maj@64 差出现在 Qwen·MATH→AMC23:GTPO 50.0 对 SFT 7.5,差 42.5 点。Qwen·GSM8K→AMC23 Pass@64 是 95.0 对 77.5(+17.5);论文称 Qwen 在 AMC 上最强 §6.1,这组显示值是该说法的主要来源 推断。 Table 1

但 Table 1 同时给出反例。Qwen·MATH→AMC23 Pass@64:GRPO 87.5,GTPO 85.0,GRPO 高 2.5 点;LLaMA·MATH→AIME2025 Pass@64:SFT 16.7,GTPO 13.3,SFT 高 3.4 点。 Table 1 论文在 §6.1 也承认,GRPO 偶尔在很大的 k 上接近或略超 GTPO(例如 MATH 训练后的 AMC pass@64),并把 AIME2025 k=64 的 SFT 领先点名为唯一例外。 §6.1 因而页面不写「全面优于」或「所有单元格都赢」。

AIME 上 GTPO 的优势更一致 推断:LLaMA·MATH→AIME24 Pass@64,GTPO 43.3 对 GRPO 36.7(+6.6);Qwen·MATH→AIME24,GTPO 30.0 对 GRPO 16.7。 Table 1 但注意 Table 1 的选法:每个数据集挑 GTPO/GRPO/SFT 中在分布内表现最好的变体,GRPO 在 LLaMA 上还特意取训练中准确率奖励最高的 checkpoint,而不是崩溃后的最终模型。 §6.1 所以这些数字是选优后的对比,不是最终 checkpoint 的平均,也不是多种子平均。

论文结论另称分布内 Pass@32 / Maj@32 最多提升 10 个百分点 §7。这部分在 §6.1 只以 Figure 2 的曲线展示,没有对应的数值表 Figure 2;页面不复算这 10 点,只把它当作论文的原文主张。

07

边界:两个通用 instruct 小模型,一组选优后的对比

读完这节你应该知道:哪些结论有表格支撑,哪些只是论文没有验证的空白。

模型

LLaMA 3.1 8B Instruct 与 Qwen 2.5 3B Instruct

模型是通用 instruct:Listing 1 的名字是 meta-llama/meta-Llama-3.1-8B-Instruct 与 Qwen/Qwen2.5-3B-Instruct Listing 1;任务以数学为主,70B、MoE、非数学任务都没有实验 §6。γ=0.1 与阈值 ln 2 是否随规模变化,论文没有回答。

任务

只有数学推理

训练与评估都在 GSM8K、MATH 及其分布外数学基准上 §6。创意写作、摘要、开放对话等「冲突 token」定义更模糊的领域未验证;论文在结论只把理论熵界列为未来工作。 §7

统计

单种子、无方差

Table 1 每格一个数,没有标准差、置信区间或多种子重复;Listing 1 只给一个种子 3407 Listing 1。「+75」是单个选优单元格的差值,不能当作稳定增益的估计。 Table 1

还有三点机制边界。第一,冲突掩码只处理首尾连续段,中间零散冲突 token 被刻意放过;论文的理由是中间 token 依赖上下文,但这也意味着方法覆盖不到所有冲突。 §5.1 第二,熵过滤依赖「初始熵 < ln 2 才启用」这一条件 §5.2;论文称 Qwen 呈高熵行为、没有 policy collapse §6.1,Figure 4c 的默认设置对 Qwen 不做 completion filtering §6.2。至于 Qwen 的增益主要来自冲突修正还是熵正则,论文没有拆解,这里只能作为 推断。第三,Table 1 的选优流程(挑最好变体、GRPO 挑 LLaMA 的最好 checkpoint)会让「GTPO vs GRPO」的比较偏向双方各自的最好状态 推断,读者不能把差值直接外推到固定训练步数或最终模型。 §6.1

最后,论文没有报告训练总步数、GPU 小时与实际显存 §6,也没有给出 γ 的自适应方案;结论只把「理论熵界」列为未来工作 §7。对工程复现来说,这些是比算法本身更先要补的空白。