ThinkDial
Paper · arXiv 2025 · 2508.18773v1

ThinkDial:给开源推理模型装一个 High / Medium / Low 的三档旋钮

gpt-oss 系模型让用户用「低 / 中 / 高」选择思考投入,但这套做法一直是闭源的。ThinkDial 把配方拆成三步公开:先用 SFT 教会模型「同一道题按三种深度各写一遍」,再先用 RL 把 High 档推到性能上限,最后才加长度奖励压中、低两档。 代价是:压缩目标一旦进奖励,模型会学会把推理藏进答案区——论文为此加了一个关键词惩罚。

Qianyu He, Siyu Yuan, Xuefeng Li, Mingxuan Wang, Jiangjie Chen · ByteDance Seed / Fudan / SJTU arXiv 2508.18773v1 ↗
TL;DR · 30 秒抓住核心

三档模式的目标写在摘要里:High 完整推理;Medium 思考 token 减少 50%、性能损失 <10%;Low 减少 75%、损失 <15%。论文在 Qwen-2.5-Instruct-32B 上按这三个目标训练并在 AIME 2024/2025、GSM8K、GPQA 上评测。

关键是顺序不能反:先做预算模式 SFT(同一题生成三份截断到 100%/50%/25% 的思考链并重写答案),再 95 步 High 档 RL 预热到峰值,最后 40 步带长度奖励的 RL。消融显示,跳过任一步,High 档都会掉到峰值以下(Table 1)。

最反直觉的一处是 Reasoning Length Hacking:没有泄漏惩罚时,模型把思考截短、却把推理搬进答案区,总 token 不降反升。惩罚项就是在答案区里检测 「Wait」这类词并给 −0.5。

80.0×
AIME 2024 上 ACT 分数(ours)
w/o Warmup 69.6
99.6×
GSM8K 上 ACT 分数(ours)
w/o BM SFT 95.8
54.3%
Medium 平均思考长度 / High
(5125.3 / 9440.0)
01

同一个模型,要同时做到「想得深」和「想得快」

这一节要建立的认识:问题不是「推理太长」本身,而是「长度没法按需调节」——同一份权重,面对简单题和难题该给出两种行为。

长 CoT 模型在难题上有效,但会生成大量冗余步骤、循环推理;这些 token 既是实打实的算力与延迟,也把错误沿着链条放大(§1)。对部署方来说,客服问答和科研推演对「想多久」的要求完全不同。

论文把可用性要求拆成三条(§1):

为什么难

压缩目标和正确性奖励天然打架

一旦在奖励里加「越短越好」,最省力的达标方式不是少想,而是把想的东西挪到评分只看得到「正确」的地方。论文观察到的 Length Hacking 就是这条捷径——这决定了方法里必须有一个防挪移的机制。

02

两条已有路线:一条要用户报预算,一条只给二元开关

这一节要建立的认识:现有可控制推理的工作,要么「不可用」,要么「不可分级」;三档模式目前只有闭源实现。

路线 A

显式 token 预算

训练或推理时直接指定思考 token 上限(§2 引 [4, 6–8])。

卡点:很难为不同难度的题给出合适预算——GSM8K 和 AIME 该给多少,用户根本判断不了。

路线 B

自适应 CoT

让模型自己决定要不要思考(§2 引 [5, 9, 10])。

卡点:只有「思考 / 不思考」二元档,同一道题给不出多种效率优先级的中间档。

第三类做法是 gpt-oss 式的三档离散模式:低 / 中 / 高,用户按偏好选。论文的判断是它在可用性和分级性上同时占优,但「existing three-mode implementations remain proprietary」(§2)。ThinkDial 的目标就是在开源模型上把这套行为复现出来,并把它称为首个 open-recipe 的三档方案(原文用词,见摘要与 §2)。

03

一个模式一句话:奖励 = 正确性 + 模式缩放 × 长度项 + 泄漏项

这一节要读懂的:三档差别只落在两个地方——数据里的截断比例 r,和奖励里长度项的权重 α。

第二阶段 RL 对第 i 条输出在模式 m 下的总奖励是(Eq. 3):

Ri(m) = Rtask(oi) + α(m) · Rlength(oi) + Rleak(oi)
Eq. 3 · Rtask ∈ {0,1}(精确答案匹配);Rleak ∈ {−0.5, +0.5}

长度项本身按同组内的相对长短给分(Eq. 4):

Rlength(oi) = λi  若 Rtask=1,   min(0, λi)  若 Rtask=0
λi = 0.5 − ( len(oi) − lenmin ) / ( lenmax − lenmin )
Eq. 4 · len 含 <think> 内外全部 token;lenmin / lenmax 取当前 rollout 组内的最小 / 最大长度,所以 λ 落在 [−0.5, 0.5]

三档的区别全部在 α 上(§4.1):α(high)=0.0、α(med)=0.5、α(low)=1.0。High 档长度项权重为 0,等价于纯正确性训练;Low 档长度项的幅度是 Medium 的两倍。SFT 数据端的对应旋钮是截断比例 r:High 1.0、Medium 0.5、Low 0.25。

Length Hacking

答题对了,但想法被搬进了答案区

Rtask 只看最终答案,长度项只看总 token 数。模型于是可以在 <think> 里草草收尾,把真正的推演挪到 </think> 之后、最终答案之前——正确率保住,思考段变短。论文指出,这个模式来自 SFT 数据本身:Low 档样本因激进截断,推理常常溢出进答案区,RL 又把它强化了(§3.2.3)。

应对是 Eq. 5 的二值泄漏惩罚:答案区出现「Wait」「Let me think」「Actually」等过渡词得 −0.5,没有得 +0.5。Appendix C 给了对照案例(Table 7 / Table 8)。

动手:把同一组 rollout 丢进三档奖励,看低档怎么把策略推向「更短」

先选模式,再拖一条输出的长度。给定同组 rollout 的最短 / 最长长度(lenmin / lenmax),页面按 Eq. 4–5 逐字计算 λ、Rlength、Rleak 和总奖励。

lenmin
2000
len(oi)
5000
lenmax
8000
当前读数 · Medium(α = 0.5)
把它逐位算一遍(手算对账)两组参数,结果与上面滑块完全一致

组 1:lenmin=2000, len=5000, lenmax=8000,任务正确,答案区泄漏关键词出现(Rleak=−0.5)。

λ = 0.5 − (5000−2000)/(8000−2000) = 0.5 − 0.5 = 0.0
Rlength = λ = 0.0(正确)
Medium(α=0.5):R = 1 + 0.5 × 0.0 + (−0.5) = 0.5
Low(α=1.0):R = 1 + 1.0 × 0.0 + (−0.5) = 0.5
High(α=0.0):R = 1 + 0.0 × 0.0 + (−0.5) = 0.5

这组参数下 λ 恰为 0,三档总奖励重合——长度奖励只在同组内相对更长时才扣分。把 len 拖到 6500 会看到分档开始拉开。

组 2:lenmin=2000, len=3500, lenmax=8000,Medium(α=0.5),任务正确,无泄漏(Rleak=+0.5)。

λ = 0.5 − (3500−2000)/(8000−2000) = 0.5 − 0.25 = 0.25
Rlength = 0.25
R = 1 + 0.5 × 0.25 + 0.5 = 1 + 0.125 + 0.5 = 1.625

若同一组参数任务错误:Rlength=min(0, 0.25)=0,R = 0 + 0.5 × 0 + 0.5 = 0.5——错误答案拿不到长度加成,但也不会被长度项倒贴。

组 3(Low 档拉开差距的例子):len=7000、其余同上、正确、无泄漏。λ = 0.5 − (7000−2000)/6000 = 0.5 − 0.8333… = −0.3333…;Low:R = 1 + 1.0 × (−0.3333…) + 0.5 = 1.1667;Medium:R = 1 + 0.5 × (−0.3333…) + 0.5 = 1.3333;High:R = 1.5。同一组长输出,Low 档被压得最低——这就是 α 控制压缩强度的直接体现。

页面显示的 λ、Rlength 保留 4 位小数,总奖励保留 4 位小数;上式结果按同一舍入显示。DAPO 的组内标准化 Ai 不属于本交互范围,这里只看原始奖励。

04

训练分三步,顺序本身就是设计

这一节要知道:每一步的数据量、步数、超参各是多少,以及为什么 SFT 和预热都不能省。

第一步:预算模式 SFT(Budget-Mode SFT)

从高质量完整推理链出发,在约 rmed=0.5、rlow=0.25 处截断思考段,在 </think> 前补一句模式相关的衔接语,再重写答案段,只保留逻辑连贯且答案正确的样本(§3.1、Appendix B)。每个模式配一段独立的 system prompt(Table 2)。SFT 目标是三档负对数似然(Eq. 1),三档样本量均衡(high:medium:low = 1:1:1)。

数据量 · Table 3
预算模式数据共 6526 条:High 2197、Medium 2197、Low 2132(另掺入 800 条空思考的 GSM8K,见 Appendix B.1)
平均长度 · Table 3
High 9440.0 / Medium 5125.3 / Low 1302.7
辅助数据 · §4.1
original reasoning 数据 12K(light-R1 长 CoT:3K 来自 stage 2,9K 来自 stage 1,见 §B.1)
RL 题池 · §4.1
两阶段共用同一批 20K 自建数学题

注意一处口径:正文 §4.1 说的是「6K Budget-Mode SFT data」,而 Table 3 的三档行加起来是 6526 条;Appendix B.1 同时说掺了 800 条空思考样本。论文没有解释这几组数字如何对应,页面只照抄不合并。

第二步:High 档预热 RL(95 步)

不加任何压缩项,先把模型推到峰值,作为后面压缩的参照线。消融里跳过这一步的 w/o Warmup 在 Table 1 的三档平均分全部低于 ours(AIME 2024 69.6 对 80.0)。推断(依据:Table 1 末列;但 w/o Warmup 在 GSM8K 的低档反而略高,见 06 节)

第三步:带长度奖励的 RL(40 步)

基于 DAPO:组大小 G=16,clip 下界 0.2、上界 0.28,学习率 1×10⁻⁶、20 步线性 warm-up,温度 τ=1.0(Appendix D)。总步数 95+40=135 步,与 Appendix D 的「135 steps」一致。预热阶段用 Dynamic Sampling,长度奖励阶段关掉它——论文的解释是长度奖励本身就能在全员全对或全错的组里提供梯度(Appendix D)。

数据配比

预算数据加太多会反噬

Figure 6 比较 balanced(6K BM SFT + 12K original)与 BM-heavy(12K BM SFT + 12K original):BM-heavy 在 Medium / Hard 题上的性能上限明显下降,而且三档的响应长度都被压短,High 档也「不愿多想」。结论是预算数据要适量(§4.3)。

05

一条训练链、一个推理开关

这一节要把数据、两阶段 RL、推理时的模式注入串成一张图。

0

底座 + 混合 SFT

Qwen-2.5-Instruct-32B,用 12K 原始推理数据 + 约 6K 预算模式数据做 SFT(Eq. 1)。三档各带一段 system prompt(Table 2)

1

Phase 1 · 预热 RL

95 步,只在 High 档数据上训练,α=0,追求峰值。得到 SFT+RL 后的 performance ceiling(Table 1 的「Original Performance Peak」)

2

Phase 2 · 预算感知奖励

40 步,Eq. 3 的复合奖励,α 按模式 0.0 / 0.5 / 1.0,加泄漏惩罚。DAPO,G=16,无 Dynamic Sampling

3

推理 · 换 prompt 即换档

部署时把对应模式的 system prompt 拼进系统提示词即可切换档位,不需要手动调参数(§3.3)。模型只有一个权重,档位来自输入。

High 原始思考链(r = 1.0) 100% Medium(r = 0.5) 截断 Low(r = 0.25) 截断 + 末尾补衔接语,再重写答案段 同一道题 三种深度 截断后答案重新生成;只有逻辑连贯且答对的样本进入 SFT(§3.1,Appendix B)
Figure A(页面重绘,非原文图)· 预算模式 SFT 数据的构造:同一道题的思考链按 100% / 50% / 25% 截断成三档
06

三档平均分全部第一,但「消融哪个」的结论并不整齐

这一节要读懂的:ACT 分数怎么算、Table 1 里谁赢谁输,以及论文没在正文给出的原始准确率 / token 数。

ACT 分数是怎么合成的

对每个模式 m,准确率保留比 Am = Accm / Accbase,压缩率 Cm = 1 − Costm / Costbase,base 取峰值 checkpoint(Eq. 6):

SACT = Σm ( β(m) · Am + (1 − β(m)) · Cm ) / |M|    β(m) = 1(High)或 0.5(Medium / Low)
Eq. 6–7 · High 只看保留准确率,中低档准确率与压缩各占一半

表中数值以「×100」的形式给出。因此 ACT 不是准确率,而是一个把准确率保留与 token 压缩混在一起的加权分,下面所有高分都应按这个口径读。

Table 1 · 整体 ACT 分数

ModelAIME 2024 · L / M / HAvg.AIME 2025 · L / M / HAvg.GSM8K · L / M / HAvg.
Ours63.468.3108.480.057.170.2107.678.399.398.7100.899.6
w/o BM SFT59.568.184.770.857.762.885.768.893.994.699.095.8
Only BM SFT66.060.793.173.363.863.297.274.861.173.999.878.3
w/o Warmup48.664.695.569.647.161.787.265.398.495.6100.598.2
Peak Truncation47.140.5106.564.744.338.2108.863.876.682.9100.186.5

逐字摘自 Table 1(v1);评测设定:AIME 每题采样 32 次、GSM8K 随机取 500 题每题 4 次、GPQA 198 题每题 8 次(§4.1)。Table 1 没有 GPQA 列,GPQA 只出现在 Figure 1–5 的曲线上。

口径提醒

论文自己的说法与原表有一处张力

正文 §4.3 写「relying exclusively on SFT without RL optimization leads to significant accuracy degradation in High and Medium modes」。但 Table 1 里 Only BM SFT 的 GSM8K High 档是 99.8(ours 100.8),Medium 是 73.9;AIME 2024/2025 的 High 档是 93.1 / 97.2,反而接近峰值。文本与表格的对应关系需要按基准分别看,页面照引不改。

Figure 1:准确率–思考 token 曲线

Thinking Token 成本(示意) Accuracy gpt-oss-120b ThinkDial 红★ = 峰值 ○ 圆=Low □ 方=Medium △ 三角=High
Figure 1(页面示意重绘)· 作者结论:三档沿曲线分布,形状与 gpt-oss-120b / o3-mini 相近
高0 无 Leak Penalty加 Leak Penalty think answer
Figure 5 的机制示意(非原文柱高)· 无惩罚时思考变短、答案变长,总量不降;加惩罚后答案段保持简洁

推断(依据:Figure 5 只给柱状图坐标轴,原文未给数值)。论文 §4.3 的结论是:无泄漏惩罚时「answer tokens significantly increase, resulting in higher total token consumption」;有惩罚时才是真正的整体压缩。

07

它能控档,但还不能证明「迁移、线性和防绕过」

这一节要知道:哪些结论论文没做,哪些是页面替你读出来的含义。