Train Long, Think Short
Reasoning · arXiv 2025 · 2508.08940

Train Long, Think Short:让 token 预算随训练一起收紧

固定 87 token 预算的 GRPO,让模型从第一步起就只能写短推理,没机会先把题想明白。 论文把预算做成随训练指数衰减的课程:先给 256 token 自由探索,再逼模型把摸索出的解法压进 87 token。 代价是训练期上下文变长、算量略增,结论也只在 7B 模型与数学题上验证过。

Hammoud, Alhamoud, Hammoud, Bou-Zeid, Ghassemi, Ghanem(KAUST · MIT · Princeton) arXiv 2508.08940 ↗ 代码 ↗
TL;DR · 30 秒抓住核心

长链推理解决了准确率,却带来「过度思考」;而把长度一刀切成固定预算,等于让模型在探索之前就被压缩。论文押注的顺序是:先长后短。

改动只有两处:预算 B(t) = max(1, B₀·γ⌊t/T⌋) 从 256 指数衰减到 87;长度奖励改成三角形——在预算 L 处最高,0 与 2L 处归零,逼模型把预算用满,而不是越短越好。

GSM8K 训练、curriculum 与 fixed-budget 同样停在 87 token 终点:准确率 82.71% → 86.20%,平均 token 基本不变(88.8 vs 87.0),也高于不微调的 base(83.55%)。

但论文自己的表推翻了一部分叙事:对难题,衰减越快准确率越高;把指数换成线性衰减,MATH500 反而从 37.4% 升到 42.8%。

+3.49 pp
GSM8K 训练、GSM8K 评测
86.20 vs 固定预算 82.71
+4.6 pp
MATH500 训练、MATH500 评测
43.40 vs 38.80,137.1 vs 179.3 token
87/256
终点 / 起点预算
固定基线始终锁在 87
01

「想得越多越准」与「想得越少越省」之间,缺的是一个训练顺序

读完这节要知道:长链推理为什么成了问题,而「训练一开始就把预算压死」为什么不是好的折中。

长链推理的主流是 test-time scaling:用 RL 训练模型写出更长的推理链,向 OpenAI o1、DeepSeek R1 那样「think more」。准确率上去了,token 用量却变得不可控——简单题也写出一大段,论文称为 overthinking。

长度控制通常从两头下手:推理时截断或跳 token,训练时给模型一个 token 上限做 RL。论文关心的是后者,核心问题只有一个:

关键观察

固定预算,等于剥夺「先学会、再压缩」的机会

在 87 token 的固定预算下训练,模型从第一步起只有 87 token 可用,没机会在宽松预算下发现「这题该先列式再算」,只能直接去猜一种能在 87 token 内写完的写法。论文的原话是:这样无法利用先探索、后压缩的能力进阶。

反过来,不控长的 RL 能学到准确解法,但学到的往往又长又啰嗦,还得另做一步压缩。两者缺的正是顺序。

论文要验证的假设很朴素:同一个终点预算,训练轨迹不同,最终模型就不同。若成立,固定预算训练就不是效率最优解,而只是课程学习的退化解。

02

前人要么在推理时卡长度,要么在训练时把长度锁死

两条正交的路子各有一个盲区,论文的定位是把「预算」从常数变成训练变量。

推理时干预

硬约束:截断 / budget forcing / 跳 token

s1 用特殊 token 填充或截断到固定上限;TokenSkip 在推理时估计并跳过低价值 token;Chain of Draft 用提示让模型写草稿式短推理。

盲区:模型本身没有变短,长度是外部强加的。论文指出突然截断会打乱推理;跳 token 与提示又都需要推理时的额外干预。

训练时控制

把预算写进 prompt / 奖励:LCPO、Thinkless、ConciseRL

LCPO(L1) 让用户在推理时指定目标长度(如 512 / 1024 / 2048 token),用 RL 训练模型同时兼顾正确率与长度贴合;Thinkless 决定何时长想、何时短想,ConciseRL 在奖励里加入简洁度。

盲区:长度是用户手里的推理时参数或一个固定常数,训练全程不变。多个固定预算要分别训练,每个都拿不到跨预算的进阶。

本文定位

预算不是用户参数,而是训练轨迹上的单调变量

与 LCPO 的差别被论文点明:LCPO 训练一个「听用户话」的通用模型;这篇论文训练一个只会短思考的独立模型,预算从 256 单调衰减到 87,推理时不需要任何长度提示。论著称它在实践中平均只偏离目标预算约 5%。

03

一条衰减曲线,一个三角形长度奖励

全部改动就是这两个函数;看懂它们的形状,就明白为什么「越短越好」在这里是错的。

预算曲线:指数衰减

B(t) = max( 1, B0 · γ⌊t / T⌋ )
γ ∈ (0,1) 为衰减因子,T 为预算更新间隔(步),B0 为初始预算;⌊·⌋ 是向下取整

预算只改一个数 L——而 L 正好是长度奖励的峰值位置。于是训练每往前走一格,模型看到的「理想长度」都在左移,奖励曲线越收越窄。

长度奖励:三角形,而不是越短越好

Rlen(ℓ) =
  Rmax · ℓ / L          当 0 ≤ ℓ ≤ L    未用满预算,奖励按比例打折
  Rmax · (1 − (ℓ − L)/L)  当 L < ℓ ≤ 2L  超出预算,线性收回
  0                       当 ℓ > 2L    截断,长度项归零
三个关键点:0 处 0 分,L 处满分,2L 处回到 0

对照组是常见的带状(band)奖励:只要 ℓ ≤ L 就满分。带状奖励在 ℓ 很小时也给满分,模型更愿意「只要做对,写得越短越好」,停在比必要更短的推理上——论文说这叫过早收敛和过度压缩。

三路奖励加权求和,权重是 λc、λℓ、λf:

ri = λc·rcorrecti + λℓ·Rlen(ℓi) + λf·Rfmt(ai)
正确性(math-verify 判对)+ 长度贴合 + 格式(<think> / <answer> 标签成对且不重叠)

动手:预算一收紧,三角形与带状谁先失去区分度

拖动滑块让目标预算 L 从训练早期的 256 收到 87。三条固定长度(一半预算、预算本身、1.5 倍预算)的奖励实时变化——注意三角形在短侧留下了斜坡,带状没有。

读数

把 L 拖到 87 附近,三角形的左侧斜坡变得很陡:90、100、120 token 之间奖励差距被放大,模型必须精确贴近预算;带状曲线在 [0, L] 上始终是满分,所有「比预算短」的长度彼此没有区别。这正是 Table 2 里带状奖励准确率更低的原因——MATH500 上 30.8% vs 37.4%,平均 token 94 vs 135,省下来的 token 换来了更糟的推理。

04

训练细节:组内相对奖励、可复现的配置、要算清的算量

读完这节要知道每一步训练里预算怎么变、奖励怎么归一化,以及这套课程要多付多少算力。

GRPO 只换了一个地方:奖励变成三路之和

每个 prompt 采样 G = 8 条回答,组内做 z-score 得到优势,不训练 value 网络:

Ai = (ri − μ) / σ      J(θ) = Es[ (1/G) Σi min( ρiAi, clip(ρi, 1−ε, 1+ε)Ai ) ] − β·KL(πθ ‖ πref)
μ、σ 为组内均值与标准差(含稳定项 εstab);ρi 为新旧策略概率比;β 控制与参考策略的偏离

三路奖励都进同一个 ri,长度项与正确性项在同一套优势里直接竞争:想拿高奖励,必须判对,同时把长度推到当前 L。

模型的输出格式

<think> …推理过程… </think>   <answer> …最终答案… </answer>
prompt 要求「使用恰好 {token_budget} 个 token」;格式奖励检查两组标签是否成对、不重叠

实验设置一览

项目设置
模型Qwen-2.5-7B,所有实验同一个模型
RL 框架GRPO,group size G = 8;基于 torchtune,代码已开源
训练数据GSM8K 全部 7,473 道(简单);MATH500(500 道竞赛级难题)
curriculum 预算256 → 87 token,指数衰减;主实验为 γ = 0.7、每 150 步更新一次
固定预算基线全程锁定 87 token,与 curriculum 的终点相同
base 基线原始 Qwen-2.5-7B,不做任何 RL 微调
评测zero-shot:GSM8K、SVAMP、GSM+、MATH500、College Math

训练的算量账

课程让训练前期的每条 rollout 上限更长(256 而非 87),但上限不等于实际生成长度。把 prompt 长度记作 P,每道题每组的生成算量约为 G × (P + L):

8 × (P + L),单位:token
读数

P 越大,预算差异越被 prompt 稀释,课程在算量上就越接近免费;P 接近 0 时,前期 256 的上限让每条 rollout 的生成量接近固定预算的 2.9 倍。另外,按 Table 2 的实测,curriculum 的最终回答平均 135 token,仍高于固定预算终点的 87——差距是在准确率上闭合的,不是把 token 压得更低。

05

整条流水线:调度器 → 采样 → 三路奖励 → 组内归一化 → 更新

一个数字看全流程:Figure 1 的示意阶梯是 256 → 179 → 125 → 87 → 61 → 43 → 30。

1 · BUDGET SCHEDULER B(t) = max(1, 256 · γ^⌊t/T⌋) 256 179 125 87 …30 2 · ROLLOUT × 8 同一 prompt 采样 G = 8 条回答 条宽 ≈ 生成长度 ℓ,超过 2L 的长度项记 0 3 · REWARD r = λc·正确性 + λℓ·长度 + λf·格式 correct R_len(ℓ) fmt R_len 的峰值位置 = 当前预算 L 4 · ADVANTAGE Aᵢ = (rᵢ − μ) / σ(组内 z-score) 组内比较,正确性与长度在同一把尺子上竞争 不训练 critic,不评估状态价值 μ、σ 只取自这 8 条回答 5 · UPDATE clipped surrogate + KL(π ‖ π_ref),进入下一档预算 下一轮,L 更小
调度器给出当前预算 L → 8 条回答进入三路奖励(长度项以 L 为峰)→ 组内归一化 → 带 KL 的策略更新。 阶梯数字(256 → 179 → 125 → 87 → 61 → 43 → 30,γ = 0.7、T = 100)来自 Figure 1;正文与 4.1 节的主实验是 256 → 87、γ = 0.7、T = 150。
训练早期

探索:预算宽

L = 256,绝大多数 GSM8K 题在 256 token 内能想完,MATH500 里许多题「刚刚够用」。三角形奖励把答案往 256 附近推,模型学会把步骤写全。

训练后期

压缩:预算紧

L 降到 87,同一个策略必须在已经找到的解法上删掉冗词、合并步骤。Figure 1 的示例就是同一道题从长篇推理压到更短推理,答案不变。

06

同一终点、更高准确率;但「怎么衰减」比「要不要衰减」更关键

前一块是论文正文的精确数字,后面三组消融里,有两组与论文的叙事相抵触。

curriculum vs 固定预算(论文正文)

训练集评测指标basefixed-budget GRPOcurriculum GRPO
GSM8KGSM8K(ID)准确率83.55%82.71%86.20%
GSM8K(ID)平均 token258.487.088.8
SVAMP(OOD)准确率—77.67%85.00%
GSM+(OOD)准确率—62.75%67.58%
MATH500MATH500准确率—38.80%43.40%
MATH500平均 token—179.3137.1

来源:论文 4.2 节正文(Figure 2 的配套描述)。base 的 SVAMP、GSM+ 与 MATH500 数字正文未给出。

Figure 2 的原始曲线:优势集中在 GSM8K 与 SVAMP

论文没有把 Figure 2 列成表。下图是按论文源 PDF 的坐标轴刻度反算得到的读数:实心点 = curriculum 曲线上的训练步,方块 = 图例 «Baselines» 中「Step 150」等训练结束时的固定预算模型。论文原图里 curriculum 是深蓝,此处按本站配色:陶红 = curriculum,青灰 = 固定预算,紫 = base。

Curriculum 训练中 固定预算 baseline(训练结束) base model
读数

GSM8K 与 SVAMP 两个面板上,curriculum 的曲线端点或中段明显高于固定预算;College Math、MATH500、GSM+ 上基本是一条贴在一起的平线,MATH500 在 GSM8K 训练下甚至一度低于固定预算。与 4.2 节的「all evaluation benchmarks」不完全一致,细节见 07 边界。

消融 1 · 衰减越快,难题越稳(Table 1)

三组设置起点 256、终点 87 不变,只改衰减点数量 n;T = 600 时,n = 1 / 3 / 7 对应间隔 300 / 150 / 75 步(γ = 0.340 / 0.700 / 0.857)。

数据集γ / 间隔Avg. token准确率 %
GSM8K0.340 / 30017886.8
0.700 / 1508986.2
0.857 / 7510384.7
College Math0.340 / 30035710.1
0.700 / 15018713.4
0.857 / 7511915.3
GSM+0.340 / 30020467.5
0.700 / 15011067.6
0.857 / 7512466.6
SVAMP0.340 / 30016788.0
0.700 / 1509085.0
0.857 / 759684.3
MATH5000.340 / 3003369.8
0.700 / 15020137.4
0.857 / 7513238.4
Average0.340 / 30024852.4
0.700 / 15013557.9
0.857 / 7511557.9

论文的叙事是「越快衰减 = 更省、难题更稳」,平均值确实如此:最慢一档 52.4%,比另两档低 5.5 个点。但细看并不整齐——College Math 在最快的 75 步间隔下最高(15.3%),与 MATH500 的趋势相反;GSM+ 则是 150 步最好;150 与 75 步的平均准确率打平,后者 token 少 20。

消融 2 · 三角 vs 带状(Table 2)

数据集Triangular tokenTriangular %Band tokenBand %
GSM8K8986.27084.6
College Math18713.413213.1
GSM+11067.69864.6
SVAMP9085.06182.0
MATH50020137.411230.8
Average13557.99455.0

这条消融支持论文的设计:带状奖励在每个数据集上 token 都更少,准确率却一律更低,差距最大的是 MATH500(−6.6 个点)。论文的解读是——短侧没有斜坡,模型较早停在一个刚够用的短解法上。

消融 3 · 指数 vs 线性衰减(Table 3)

数据集Exponential tokenExponential %Linear tokenLinear %
GSM8K8986.210786.3
College Math18713.415417.2
GSM+11067.614366.4
SVAMP9085.09787.3
MATH50020137.419842.8
Average13557.914060.0

这组结果最反直觉:换成线性衰减,平均准确率 57.9% → 60.0%,MATH500 提高 5.4 个点,College Math 提高 3.8 个点,代价只有平均 5 个 token(135 → 140)。论文自己也承认,指数衰减「可能过早移除推理能力」。

07

只验证了一件事:7B 模型、数学题、预算 ≤ 256

四张卡,最后一张是读这篇论文时最该警惕的地方。

边界一

规模与任务都很单一

所有实验都用 Qwen-2.5-7B,预算上限 256 token。论文 Limitations 写明:13B、70B 或 1.3B、3B 上的行为,以及开放式生成任务,都还是开放问题。需要数千 token 的推理题不在覆盖范围内。

边界二

依赖可自动验证的正确性信号

正确性奖励来自 math-verify 的自动判题。写作、开放式问答没有这种可靠的判分器,三路奖励里的正确性项失去依据;论文也没有评估数学以外的领域。

边界三

「衰减越快越好」并不普遍成立

Table 1 中,最慢衰减在 GSM8K、SVAMP 上最好;Table 3 中,线性衰减在平均与难题上更好。准确的说法是轨迹形状影响结果,而不是某个特定 schedule 全面占优。默认的指数衰减是一个未经跨任务优化的选择。

边界四

Figure 2 的「全面一致」只在图上部分成立

4.2 节称 curriculum 在「all evaluation benchmarks」上准确率提升;但 Figure 2 的读数显示,College Math、MATH500、GSM+ 上 curriculum 大多贴着基线,MATH500(GSM8K 训练)一度低于固定预算,只有 GSM8K 与 SVAMP 的优势清楚。另外,Table 1–3 中 MATH500 的数字远好于正文 MATH500 训练组(37.4% vs 43.40%),各表训练配置未写明,表间数字不宜直接混用。

一句话:这是一个「先探索、后压缩」有效性的概念验证,不是一套调好的通用配方。要用于难推理任务,Table 3 的线性衰减比默认指数衰减更值得先试。