gpt-oss 系模型让用户用「低 / 中 / 高」选择思考投入,但这套做法一直是闭源的。ThinkDial 把配方拆成三步公开:先用 SFT 教会模型「同一道题按三种深度各写一遍」,再先用 RL 把 High 档推到性能上限,最后才加长度奖励压中、低两档。 代价是:压缩目标一旦进奖励,模型会学会把推理藏进答案区——论文为此加了一个关键词惩罚。
三档模式的目标写在摘要里: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。
这一节要建立的认识:问题不是「推理太长」本身,而是「长度没法按需调节」——同一份权重,面对简单题和难题该给出两种行为。
长 CoT 模型在难题上有效,但会生成大量冗余步骤、循环推理;这些 token 既是实打实的算力与延迟,也把错误沿着链条放大(§1)。对部署方来说,客服问答和科研推演对「想多久」的要求完全不同。
论文把可用性要求拆成三条(§1):
一旦在奖励里加「越短越好」,最省力的达标方式不是少想,而是把想的东西挪到评分只看得到「正确」的地方。论文观察到的 Length Hacking 就是这条捷径——这决定了方法里必须有一个防挪移的机制。
这一节要建立的认识:现有可控制推理的工作,要么「不可用」,要么「不可分级」;三档模式目前只有闭源实现。
训练或推理时直接指定思考 token 上限(§2 引 [4, 6–8])。
卡点:很难为不同难度的题给出合适预算——GSM8K 和 AIME 该给多少,用户根本判断不了。
让模型自己决定要不要思考(§2 引 [5, 9, 10])。
卡点:只有「思考 / 不思考」二元档,同一道题给不出多种效率优先级的中间档。
第三类做法是 gpt-oss 式的三档离散模式:低 / 中 / 高,用户按偏好选。论文的判断是它在可用性和分级性上同时占优,但「existing three-mode implementations remain proprietary」(§2)。ThinkDial 的目标就是在开源模型上把这套行为复现出来,并把它称为首个 open-recipe 的三档方案(原文用词,见摘要与 §2)。
这一节要读懂的:三档差别只落在两个地方——数据里的截断比例 r,和奖励里长度项的权重 α。
第二阶段 RL 对第 i 条输出在模式 m 下的总奖励是(Eq. 3):
长度项本身按同组内的相对长短给分(Eq. 4):
三档的区别全部在 α 上(§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。
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 的最短 / 最长长度(lenmin / lenmax),页面按 Eq. 4–5 逐字计算 λ、Rlength、Rleak 和总奖励。
组 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 不属于本交互范围,这里只看原始奖励。
这一节要知道:每一步的数据量、步数、超参各是多少,以及为什么 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)。
注意一处口径:正文 §4.1 说的是「6K Budget-Mode SFT data」,而 Table 3 的三档行加起来是 6526 条;Appendix B.1 同时说掺了 800 条空思考样本。论文没有解释这几组数字如何对应,页面只照抄不合并。
不加任何压缩项,先把模型推到峰值,作为后面压缩的参照线。消融里跳过这一步的 w/o Warmup 在 Table 1 的三档平均分全部低于 ours(AIME 2024 69.6 对 80.0)。推断(依据:Table 1 末列;但 w/o Warmup 在 GSM8K 的低档反而略高,见 06 节)
基于 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)。
这一节要把数据、两阶段 RL、推理时的模式注入串成一张图。
Qwen-2.5-Instruct-32B,用 12K 原始推理数据 + 约 6K 预算模式数据做 SFT(Eq. 1)。三档各带一段 system prompt(Table 2)
95 步,只在 High 档数据上训练,α=0,追求峰值。得到 SFT+RL 后的 performance ceiling(Table 1 的「Original Performance Peak」)
40 步,Eq. 3 的复合奖励,α 按模式 0.0 / 0.5 / 1.0,加泄漏惩罚。DAPO,G=16,无 Dynamic Sampling
部署时把对应模式的 system prompt 拼进系统提示词即可切换档位,不需要手动调参数(§3.3)。模型只有一个权重,档位来自输入。
这一节要读懂的:ACT 分数怎么算、Table 1 里谁赢谁输,以及论文没在正文给出的原始准确率 / token 数。
对每个模式 m,准确率保留比 Am = Accm / Accbase,压缩率 Cm = 1 − Costm / Costbase,base 取峰值 checkpoint(Eq. 6):
表中数值以「×100」的形式给出。因此 ACT 不是准确率,而是一个把准确率保留与 token 压缩混在一起的加权分,下面所有高分都应按这个口径读。
| Model | AIME 2024 · L / M / H | Avg. | AIME 2025 · L / M / H | Avg. | GSM8K · L / M / H | Avg. | ||||||
|---|---|---|---|---|---|---|---|---|---|---|---|---|
| Ours | 63.4 | 68.3 | 108.4 | 80.0 | 57.1 | 70.2 | 107.6 | 78.3 | 99.3 | 98.7 | 100.8 | 99.6 |
| w/o BM SFT | 59.5 | 68.1 | 84.7 | 70.8 | 57.7 | 62.8 | 85.7 | 68.8 | 93.9 | 94.6 | 99.0 | 95.8 |
| Only BM SFT | 66.0 | 60.7 | 93.1 | 73.3 | 63.8 | 63.2 | 97.2 | 74.8 | 61.1 | 73.9 | 99.8 | 78.3 |
| w/o Warmup | 48.6 | 64.6 | 95.5 | 69.6 | 47.1 | 61.7 | 87.2 | 65.3 | 98.4 | 95.6 | 100.5 | 98.2 |
| Peak Truncation | 47.1 | 40.5 | 106.5 | 64.7 | 44.3 | 38.2 | 108.8 | 63.8 | 76.6 | 82.9 | 100.1 | 86.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 5 只给柱状图坐标轴,原文未给数值)。论文 §4.3 的结论是:无泄漏惩罚时「answer tokens significantly increase, resulting in higher total token consumption」;有惩罚时才是真正的整体压缩。
这一节要知道:哪些结论论文没做,哪些是页面替你读出来的含义。