控制大语言模型中的推理努力
本文深入探讨了大语言模型中推理努力控制的方法。
LLM 如何学习低、中、高推理模式
自 OpenAI 发布 o1 以来,已经过去了将近两年。o1 模型普及了基于 LLM 的推理模型这一概念。大约四个月后,DeepSeek-R1 紧随其后,并附带了使用可验证奖励强化学习(RLVR)训练此类推理模型的详细方法。
上周,OpenAI 发布了 GPT-5.6 模型系列。该系列包含三种规模,每种规模大约有五到六种推理努力设置。
图 1:采用不同推理努力设置的 GPT 5.6 Sol 模型。(Ultra 的基准测试数据目前尚未提供,但应与 Max 相对相似,因为它使用了类似的努力水平,但通过四个子代理加速了工作。)
因此,是的,推理模型将会继续存在。它们已经成为现代模型发布的标准组成部分。
过去,我讨论过推理模型的方法论(理解推理 LLM)以及相关的研究论文(LLM 推理的强化学习现状 和 LLM 推理模型推理现状)。我甚至写了一本全新的 440 页的书,介绍如何开发推理模型,构建推理模型(从零开始)。
图 2:我的新书 构建推理模型(从零开始)。彩色版!
这些资源专注于将传统的 LLM 转变为推理模型。现在,在这篇文章中,我想专注于解释如何开发一个具有多种努力模式的推理模型,类似于本文开头图表中所示的内容。
别担心,这篇文章可以独立阅读。然而,上述资源可能也会很有趣和有用。
1. 推理模型的简要定义
在谈论几乎任何机器学习或 AI 技术或子领域时,一条重要的经验是,我们通常不应从字面理解技术术语。例如,机器学习中的(人工)神经网络并不像人脑那样的生物神经网络那样工作。
类似地,在谈论“推理模型”时,我们不应该期望这些模型像人类一样真正地进行推理。在 AI 和 LLM 研究的背景下,“推理模型”意味着一个输出中间推理轨迹的模型,这就像是一个逐步处理问题或任务的中间响应。
通过展示一个例子来最容易解释这一点。
图 3:传统 LLM 回答(左)和推理模型回答(右)的示意图。
2. 训练和推理扩展推理模型的简要概述
提高(推理)任务性能基本上有两种方式:训练扩展和推理扩展。
图 4:训练扩展和推理扩展是提高 LLM 和推理模型问题解决能力的两种方式。图表基于 学习通过 LLM 进行推理
让我们先简要讨论训练。
2.1 训练推理模型
简而言之,DeepSeek-R1 提出使用可验证奖励强化学习(RLVR)来训练 LLM,将其转变为推理模型。RLVR 是一种为可验证数据域提供奖励信号(0=不正确 和 1=正确)的技术。这里的可验证数据域是数学(我们可以使用符号数学检查器如 SymPy 或 WolframAlpha 来检查结果)和代码(我们可以使用编译器或单元测试,或集成平台如 LeetCode)来检查正确性。
值得注意的是,推理轨迹本身并未用于训练或更新模型。虽然他们尝试使用这些中间响应信息进行训练,但 DeepSeek-R1 论文报告说这对模型训练没有帮助,因此最终没有被使用。(是否以及如何通过过程奖励模型将中间推理轨迹纳入训练信号是一个活跃的研究领域。)
图 6:在 RLVR 期间忽略中间推理轨迹;只有最终答案和响应格式决定奖励。
2.2 “啊哈”时刻
无论如何,如图 7 所示,仅对输出奖励进行训练就足以让模型学会如何推理一个问题,这意味着它会学会编写中间解释、回溯和自我纠正。这些模型意识到自己犯了错误并进行自我纠正的时刻被称为“啊哈”时刻。
图 7:一个“啊哈”时刻的例子,推理模型注意到其中间推理中的错误并在生成最终答案之前纠正它。
顺便提一下,虽然 DeepSeek-R1 无疑是更受欢迎的论文,也是围绕可验证奖励强化学习和推理模型开发产生兴奋的论文,但还有另一篇论文 Kimi K1.5,在 arXiv 上同一天(2025 年 1 月 22 日)发表。此外,RLVR 这个术语在两个月前的 Tülu 3: 推动开放语言模型后训练的前沿 中已经被提出。
DeepSeek R1 最终成为更受欢迎论文的一个原因是它证明了推理行为可以通过纯粹的强化学习(RL)实现。
图 8:DeepSeek-R1-Zero 直接将 RLVR 应用于预训练的基础模型,无需监督微调。
例如,Tülu 3 和 Kimi K1.5 在监督微调(SFT)模型之上应用强化学习。DeepSeek-R1 模型也是从 DeepSeek-V3 基础模型的 SFT 检查点训练的,并且包括一个使用纯 RLVR 训练的 DeepSeek-R1-Zero 变体。R1 Zero 比 R1 弱,但它表明 RLVR 足以教会模型生成和使用推理轨迹。
虽然 R1-Zero 更像是一个概念验证模型,但请注意,完整的 DeepSeek-R1 推理模型训练流程通常是多阶段的,并且比上述更复杂一些。
图 9:更详细的推理模型训练流程。此图描绘了各种 DeepSeek-R1 模型。有关更多详细信息,请参阅我的另一篇文章:理解推理 LLM
顺便提一下,今天的大多数 LLM 实际上都是推理模型,这意味着它们已经使用某种形式的 RLVR 以类似于 DeepSeek-R1 的方式进行了训练。
2.3 推理扩展简述
除了通过训练改善推理行为外,另一个提高模型性能的手段是推理计算扩展。简而言之,这意味着我们在训练模型后,在使用过程中投入更多的计算,以获得更好的答案。
这本身就是一个完整的话题,你可以阅读我的文章 LLM 推理模型推理现状 以获取更详细的概述:
下面我将尝试总结作为背景信息最重要的几点内容。
首先,使用 RLVR 训练模型已经隐式地导致了某种形式的推理扩展,因为推理模型在推理期间通常比传统 LLM 输出更多的 Token,这意味着我们在推理期间花费了更多的计算。
其次,我们可以通过推理努力水平进一步调整这个输出长度,但稍后会详细介绍。
第三,还有许多其他的推理扩展技术。一个流行的是自一致性,通常以多数投票的形式实现,其中模型被多次查询,最终答案通过多数投票选择。
这可以应用于传统 LLM 以及推理模型。此外,这种方法可以按需使用,并且可以附加到推理训练之上。一个好的例子是 DeepSeekMath-V2,研究人员在推理模型(专门用于数学)之上应用了极端的推理扩展,以在具有挑战性的数学奥林匹克类型问题上实现最先进的性能。
图 11:两种推理扩展(自一致性和自我改进)一起使用以提高数学性能。图表改编自 DeepSeekMath-V2: 迈向自我验证的数学推理
但再次,我将引用我的另一篇文章 LLM 推理模型推理现状 以了解其他技术的概述:
3. 思考 Token
你可能在早期的“啊哈时刻”图中看到了 <think></think> 标记。我也在下面包含了相应的图,这样你就不必一直往上滚动。
这些 <think> 和 </think> 标记在推理能力方面是装饰性的。它们不会使模型推理,也不是获得良好推理性能所必需的。可以在没有这些分隔符的情况下训练相同的模型,并且可能达到类似的基准测试性能。
<think> 标记或 Token 的主要目的是标记推理轨迹的开始和结束,以便训练流程或用户界面可以将其与最终答案分开,并可选择向用户隐藏。(像 ChatGPT 或 Codex 这样的用户界面通常会这样做。)
这里的重点是 <think> 标记并没有赋予模型“思考”或推理或更好推理的能力。可以在没有这些 <think> 标记的情况下训练相同的模型,并达到类似的基准测试性能。
字面字符串 <think> 和 </think> 本身也没有任何特别之处。另一对分隔符可以达到相同的目的。
顺便提一下,实现这一点的方式通常是在 RLVR 阶段添加一个格式奖励。因此,除了根据答案正确性奖励模型之外,还会为使用 <think> 标记提供额外的奖励,这反过来鼓励模型使用这些标记。
例如,在 DeepSeek-R1 中,总奖励计算为
R_total = R_accuracy + R_format
其中格式奖励是一个简单的基于规则的检查,鼓励模型将其推理放在:
<think>
推理轨迹
</think>
内部。
4. 推理模式开关
第一代推理模型是专用的推理模型。我的意思是有一个 DeepSeek-V3 基础模型和一个单独的 DeepSeek-R1 推理模型。
无论提示是什么,R1 通常都会输出非常冗长的响应,使用大量 Token,即使对于简单的提示也是如此。它也没有内置的选项来关闭推理模式。
后来的模型,如 Qwen3 等,尝试了混合方法,其中相同的模型可以按需表现得像常规的指令微调模型或推理模型。
注意:一些模型开发者称此为“思考模式”,而另一些则称之为“推理模式”。这两个术语指的是相同的行为。
在 Qwen3 中,这是通过分词器使用 enable_thinking=True 或 enable_thinking=False 来处理的。在底层,设置 enable_thinking=False 实际上是在助手响应的开头添加一个空的 <think></think> 部分,以关闭 Qwen3 的推理(“思考”)模式。
图 14:Qwen3 0.6B 推理模型在 thinking=False 和 thinking=True 下的响应。(左侧界面中隐藏了空的 <think></think> 标记,因为它们是修改后的输入提示的一部分,而不是生成的答案。)
在训练过程中是如何实现这一点的,使得模型在推理时支持如上图所示的切换?
简而言之,正如 Qwen3 技术报告 所解释的,这种开/关行为主要通过监督微调(SFT)引入,然后在最大的旗舰模型中通过通用 RL 强化。
例如,在通过长思维链 SFT 和推理 RL 训练初始推理模型之后,他们添加了一个“思考模式融合”阶段。在这个额外的 SFT 阶段,模型既可以看到思考示例,也可以看到非思考示例:
-
/think: <think>{推理}</think>{答案} -
/no_think: <think></think>{答案}
思考是默认行为,因此 /think 也可以省略。随后的通用 RL 阶段进一步强化了这种模式和对格式的遵循。
这些 /think 和 /no_think 标志是一个“软”开关。然而,前面提到的 enable_thinking=False 设置,在 False 情况下强制添加空的 <think></think>,则充当了一个“硬”开关。
图 15:Qwen3 训练流程中的“思考模式融合”,用于启用推理模式开关。
换句话说,分词器不会将 /no_think 添加到查询中。它直接在助手响应的开头填入空的 <think></think> 部分。模型只看到生成的 Token,并直接继续回答。
无论如何,这个开/关切换本质上是一个简化版本的推理努力水平,如 GPT-5.6 和其他模型中的那样,我将在下一节中介绍。
5. “推理努力”设置如何工作
在本节中,我想简要概述可能如何实现不同的推理努力切换,这些切换已在 GPT 5 等模型中引入,并且几乎存在于今天的任何旗舰模型中。
具体来说,在本文开头,我展示了一张来自 Codex GPT 5.6 界面的图,该界面允许用户选择多个推理“努力”设置。
图 16:GPT-5.6 展示了六种推理努力设置,从 Light 到 Ultra。
以下小节将说明这些设置可能如何实现。然后,在下一节中,我将介绍一些与此主题相关的更有趣的研究论文。
5.1 推理努力与响应长度和质量
不幸的是,OpenAI 并未分享其努力设置的实现细节,但有一些证据可以用来进行合理猜测。
例如,通过他们去年发布的 gpt-oss 开源模型(我曾在 从 GPT-2 到 gpt-oss:分析架构进展 中写过),我们知道 OpenAI 允许通过系统提示(“推理努力:低/中/高”)切换推理努力设置,该提示会被添加到每个提示前。
图 17:gpt-oss 聊天模板在将提示发送给同一个模型之前,将选定的推理努力插入到系统消息中。
正如预期的那样,推理努力直接影响响应长度和准确性,如下所示。
图 18:不同推理努力下 gpt-oss 模型的响应长度和质量(来自 模型卡片 的注释图)
据推测,他们的 GPT 5 模型,包括最近的 GPT 5.6 模型,使用了类似的方法。
顺便提一下,注意上图中不同的努力设置如何缩放响应长度。努力水平似乎与 Token 使用量直接相关,而这似乎又与准确性相关。也许可以提出超出“高”水平的努力设置,但我假设性能最终会饱和。对于 GPT 5.6 Sol 模型,这种饱和可以更清楚地看到,它也表明增加推理预算在某个点上会变得不经济。
图 19:推理努力增加了 API 成本和编码Agent性能,在最高的 GPT-5.6 设置下收益递减。图表基于 Artificial Analysis Coding Agent Index v1.1。
另一个很好的、非常新的数据点显示了推理努力、Token 使用和基准测试性能之间的关系,那就是本周 Thinking Machine Labs 新发布的 Inkling 开放权重模型。
图 20:增加 Inkling 努力水平通常会提高生成的 Token 数量和基准测试性能,但在更高的努力水平下收益递减或不均匀。图表来自 Inkling 发布公告博客。
正如本节所讨论的,在推理期间,推理努力水平可以简单地通过系统提示来控制。(ChatGPT 用户界面可能只是将菜单选择映射到一个系统提示。)然而,这对于任意模型不起作用,并且需要对训练流程进行某些修改,这将在接下来讨论。
5.2 可能的努力水平实现
虽然训练细节并未公开,无论是对于 GPT 5.6 还是开源 gpt-oss 模型,但通常来说,推理努力标签会在后训练期间包含在提示中。
通常有两种实现方式。
首先,我们可以将其作为 RLVR 过程的一部分实现,并在使用不同系统提示时应用不同的长度惩罚。例如,当“推理努力:低”时使用较高的长度惩罚,而当“推理努力:高”时使用轻微或无惩罚。
其次,我们可以在 RLVR 之后通过监督微调(SFT)对模型进行微调,使其遵循不同的努力指令。
例如,在核心 RLVR 阶段之后和 SFT 期间,训练数据集中的提示与表现出所需推理量的目标响应配对。(目标可能由人类编写,由另一个模型生成,或生成后进行过滤。)
图 21:条件努力下的 RLVR 和 SFT 示意图。(这是一种可能的实现,并非 OpenAI 训练流程的确认描述。)
在这个 SFT 阶段,模型直接从训练示例中学习努力标签与目标推理长度之间的关联。基于 RL 的实现则会将努力标签和预算感知奖励放入 RLVR 阶段。这两种方法也可以结合,我怀疑 gpt-oss 和 GPT 5.6 都是如此(请注意,GPT 5.6 中的努力设置可能只是为给定的用户查询更改系统提示)。
5.3 Inkling 案例研究
刚刚发布的 Inkling 技术报告提供了一个小但相对具体的努力水平训练示例。
图 22:Inkling 在 0.2 到 0.99 之间扫描一个连续的努力值;更高的努力通常会生成更长的响应和更高的基准测试分数。
在大规模 RL 期间,他们对每个样本做了两件事:
-
在系统消息中指定期望的努力水平。
-
调整分配给每个生成 Token 的成本。
从概念上讲,奖励可能看起来像这样:
R(e)=R_task - λ(e) * N_tokens
这里,e 是请求的努力水平,λ(e) 控制 Token 惩罚。
-
低努力使用较大的每 Token 成本,鼓励更短的推理轨迹。
-
高努力使用较小的每 Token 成本,允许模型花费更多 Token。
然后,在推理时,Inkling 会收到诸如“思考努力水平:0.8”之类的系统消息,并相应地调整其 Token 使用量。Inkling 与 gpt-oss 和 GPT-5.6 等模型之间的区别在于,努力标签是一个介于 0 和 1 之间的连续数字,而不是诸如低、中、高之类的顺序标签。
这使得 Inkling 的努力水平调节主要位于推理 RL 阶段,而不仅仅是后面的 SFT 阶段。
但他们并未透露确切的奖励公式、Token 成本系数,或者努力调节是否也包含在 SFT 中。
5.4 关于推理扩展与训练扩展的简短说明
在继续讨论推理努力论文之前,我想简要地将本节与前面的“2.3 推理扩展简述”部分联系起来。
之前,我将扩展分为训练计算扩展和推理时扩展。GPT-5.6 界面提供了一个很好的方式来展示差异,如下所示。
在左侧,选择 Luna、Terra 或 Sol 会改变模型本身。粗略类比,这对应于训练计算扩展。这些是单独训练的模型。在固定的训练方法和数据集大小下,更大的模型需要更多的训练计算。它通常也需要每个生成 Token 更多的计算。
在右侧,我们保持模型固定,只改变推理努力。这是推理时扩展。模型权重保持不变,但模型被允许花费更少或更多的 Token 来处理答案。
图 23:模型选择和推理努力菜单对应于两个不同的扩展轴。选择 Luna、Terra 或 Sol 会改变模型,而改变推理努力则调整固定模型下的推理时计算。
一个小术语说明是,从菜单中选择不同的模型并不是当时的训练扩展。训练已经完成。最好将模型菜单视为选择在不同训练规模下产生的模型。
以下 Artificial Analysis 结果显示这两个轴在实践中如何相互作用。
每条蓝色曲线对应一个模型:Luna、Terra 或 Sol。通过增加推理努力沿着曲线移动是推理扩展。从一条模型曲线移动到另一条对应于模型扩展,我在这里将其作为训练扩展的实际代理。
正如预期的那样,两种方法都可以提高基准测试分数,但它们也会增加成本。更有趣的是,曲线重叠。例如,在较高推理努力下的较小模型有时可以达到与在较低推理努力下的较大模型相似的分数。
图 24:GPT-5.6 模型系列在 Artificial Analysis Coding Agent Index 上的训练扩展和推理扩展。沿着每个模型曲线移动对应于增加推理努力。跨越 Luna、Terra 和 Sol 曲线对应于选择不同的模型。
顺便提一下,此图中的 x 轴显示的是 API 成本,而不是原始计算量。API 成本是一个有用的实际度量,但它也取决于提供商的定价和生成的 Token 数量。此外,这些曲线的确切形状是特定于基准测试的。
因此,模型大小和推理努力形成了两个独立的旋钮。我们可以使用更大的模型,增加推理努力,或两者结合。哪种组合最佳取决于期望的准确性、成本和延迟。
到目前为止,这篇文章应该让你对推理努力模式如何工作以及如何实现有了相当扎实的理解。如果你时间有限,这是一个很好的结束点。否则,如果你想了解一些近期开放权重模型的一些细节,请继续阅读!
6. 附加内容:实现推理努力的不同方式(在旗舰开放权重 LLM 中)
【如果你对其他细节不感兴趣,可以跳过本节】
第 5 节描述了训练推理努力控制的两种可能方式,即条件努力下的监督微调和具有不同 Token 成本的强化学习。最初,我想介绍一些关于推理预算替代实现方式的研究文章。然而,在阅读完大部分这些文章后,它们似乎更像是概念验证,可能在实践中效果不明确。
因此,我决定稍微调整方向,介绍那些被最先进和知名的开放权重(旗舰)LLM 使用的方法。对于这些模型,至少有证据表明这些方法在实践中有效。
这留下了六个例子:DeepSeek V4、Nemotron 3 Ultra、Kimi K2.5、GLM-5、Qwen3 和 Inkling。它们的报告详细程度不同,但每个都贡献了一个有用的变体。(我排除了那些报告只在用户界面中显示努力设置而没有解释如何训练该行为的模型。)
6.1 DeepSeek V4 训练独立的努力专家
让我们从 DeepSeek V4 技术报告 开始,它描述了三种模式的使用:
-
非思考:产生直接响应,没有推理轨迹。
-
思考高:经典方法,模型将推理轨迹放在
<think>和</think>标记之间。这类似于本文开头 DeepSeek R1 部分(第 2 节)所讨论的。 -
思考最大:与上述相同,但添加了特殊的系统指令。(下面详细说明。)
Think Max 的额外系统提示指令以“推理努力:绝对最大,不允许捷径”开头。
图 25:来自 DeepSeek V4 文档 的推理努力控制概述。
起初,这听起来像一个简单的提示工程技巧,但实际上这个提示背后有不同的训练设置。也就是说,每种模式使用自己的上下文窗口和长度惩罚(不幸的是,本报告没有详细说明确切的长度惩罚实现)。Think Max 获得比 Think High 更长的上下文窗口和更小的长度惩罚,这给了它更多继续推理的空间。
因此,系统指令选择了后训练期间创建的行为。将相同的指令添加到任意模型不会产生相同的效果。
图 26:DeepSeek V4 在报告的不同部分描述了三种努力模式和更大的教师池。教师池包含十多个领域专家。报告未披露这些教师如何映射到非思考、思考高和思考最大。
不幸的是,公开的、且其他方面非常详细的 DeepSeek V4 报告没有足够详细地连接推理模式和领域专家的描述,以重建确切的教师分配。
然而,报告指出,最终支持不同推理努力水平的模型是通过从上述教师进行在线策略蒸馏创建的。
总结一下,DeepSeek V4 在后训练期间开发了三个推理专家。从基础模型开始,它应用监督微调,然后通过 GRPO 进行 RLVR。每种模式的 RL 配置不同。特别是,每个专家使用自己的上下文窗口和长度惩罚,而 Think Max 还接收到特殊的系统指令。
然后,包括领域专家在内,不同的推理模式专家被蒸馏到一个单一的检查点中,该检查点支持所有三种努力模式。
6.2 Nemotron 3 Ultra 结合了学习模式与硬预算
Nemotron 3 Ultra 技术报告 描述了三种设置,称为推理关闭、常规和中努力,类似于上一节中的 DeepSeek V4。中努力是比常规更便宜的推理模式。NVIDIA 在 SFT 期间使用 GPT-OSS-120B 在其中努力模式下生成的示例引入这种模式,然后在 RLVR 期间进一步优化。大约 2.5% 的 RLVR 提示使用中努力(这对应于对其奖励应用基于长度的调整)。
6.2.1 推理期间使用 Nemotron 推理预算
在推理时,所有三种模式通过 聊天模板 选择。
图 27:通过聊天模板的 Nemotron 3 Ultra 推理设置(来自 官方模型卡片 的示例)
1)常规是默认设置,使用 enable_thinking=True,这会使助手响应以开头的 <think> 标记开始。
2)中努力使用 enable_thinking=True 以及 medium_effort=True,后者还会将 {reasoning effort: efficient} 附加到最新的用户消息。
顺便提一下,为了使事情更复杂,常规和中努力模式也可以与单独的推理时推理预算结合。这个预算充当一个外部停止机制。在发布的实现中,聊天客户端要求模型在接近选定的 Token 限制时结束推理轨迹。如果模型尚未发出 </think>,客户端会关闭推理块并继续生成以产生最终答案。学习的努力模式决定了模型如何使用其推理 Token,而预算则限制了推理轨迹可以持续多长时间。这使得可以根据期望的成本和准确性将任一模式与更紧或更松的预算配对。
3)推理关闭使用 enable_thinking=False,这会预填充一个空的 <think></think> 块(类似于第 4 节中讨论的 Qwen3),以便模型直接进入最终响应。因此,这些是聊天模板控制,而不是系统提示。
6.2.2 Nemotron 中的推理预算感知训练
上述描述的推理控制由两个相关的 SFT 组件支持。第一个如前所述使用 GPT-OSS-120B 轨迹引入中努力行为。第二个为硬推理预算准备模型。
为了构建这个训练数据,作者们提取常规推理轨迹,在随机选择的 Token 预算处截断它们,并保留原始最终答案。插入的 </think> Token 从 SFT 损失中屏蔽。结果,模型看到了这样的示例:它必须在不完整的推理轨迹之后,在推理块被外部关闭后,转向答案。
中努力训练随后在 RLVR 期间继续进行。大约 2.5% 的 RL 提示在数学、STEM 和编码任务中使用中努力设置。报告指出,该模式可以通过奖励超参数进行校准,其中基于长度的奖励调整为成本-质量权衡提供了额外的控制。
图 28:Nemotron 3 Ultra 引入了使用教师生成的 SFT 数据、随机预算截断以及 RLVR 期间的小型中努力子集。
6.3 Kimi K2.5 交替使用预算化和无约束的 RL
Kimi K2.5 技术报告 讨论了一种称为 Token 高效 RL 的训练方法,用于较低推理努力。(虽然本周有 K3 发布公告,但 K3 的推理努力方法论并未公开披露,但它可能与 K2.5 相似或相关。)
6.3.1 Kimi 的 Toggle 方法
报告中提到,固定的 Token 预算会使推理模型过度拟合到简短的解决方案。这意味着模型变得更简洁(即更快、更便宜),但它可能会失去从额外推理时计算中获益的能力,因此可能表现不佳。
图 29:提出的 Toggle 方法使 Kimi K2.5 在保持整体基准测试性能相似的情况下,更加 Token 高效。注释图来自 https://arxiv.org/abs/2602.02276
Kimi K2.5 的方法称为 Toggle,它在固定的训练迭代次数之间交替进行两个 RL 阶段:
-
在预算阶段,鼓励正确的解决方案保持在问题特定的 Token 预算内。
-
在无约束阶段,恢复通常的最大生成长度,以便模型仍然可以从更长的解决方案中学习。
对于每个问题,预算从 RLVR 中正确 rollout 的响应长度的选定百分位数估计。然后,仅当该问题的平均准确率超过阈值时,预算约束才会生效。这避免了在模型能够可靠解决问题之前强迫其缩短推理。
该报告在 K2 Thinking 上评估了 Toggle,发现它减少了约 25% 到 30% 的生成 Token,而基准测试性能变化很小。相同的行为也从数学和编码 RL 任务转移到了 GPQA 和 MMLU-Pro。
Toggle 提供了一种具体的旗舰模型方法,用于训练更 Token 高效的推理策略,同时保留其在测试时扩展的能力。
6.3.2 Toggle 在推理时改变了什么
Toggle 完全在 RL 训练期间运行。两个交替阶段更新同一个策略(即 LLM),最终的(统一)检查点没有预算与无约束的选择器。在推理时,生成的模型默认以思考模式运行。
然而,有趣的是,在我检查的一些 API(如 vLLM 或 SGLang)中,Kimi K2.5 本身暴露了一个独立的二进制选择,即在思考模式和即时模式之间。思考模式默认启用。即时模式通过官方 API 中的 thinking: {”type”: “disabled”} 或通过 vLLM 或 SGLang 服务模型时的 chat_template_kwargs={”thinking”: False} 禁用推理轨迹。然而,这些设置与 Toggle 是分开的。
此外,官方 Kimi 报告没有提供即时模式的单独训练方法。然而,K2.5 的 SFT 数据是使用早期的 K2 模型(产生直接响应而无需长时间推理)和 K2 Thinking(产生扩展推理轨迹)生成的。这很可能使统一的检查点暴露于两种响应格式,类似于上面的 Nemotron 3。在推理时,聊天模板通过预填充一个开放的 <think> 标记用于思考模式,或一个空的 <think></think> 块用于即时模式,在两者之间进行选择。但同样,不幸的是,报告没有披露确切的数据混合或是否使用了特定模式的 RL。
较新的 Kimi K3 提供了更直接的推理时努力接口。当前的 Kimi Code 文档 列出了三种设置:低、高和最大,最大为默认值。这些通过 reasoning_effort 参数传递。然而,Moonshot 尚未解释这三个努力水平在训练期间是如何创建的。其 发布博文 表示这些细节将在未来的 K3 技术报告中出现,因此我会保持关注。
6.4 GLM-5 通过 SFT 引入轮次级和交错思考
GLM-5 技术报告 将 GLM-4.5 中引入的二元开/关思考开关扩展到多轮和工具使用场景。它描述了三种相关行为(而不是三种努力水平):
-
交错思考:在每个响应和工具调用之前插入一个推理块。
-
保留思考:聊天在轮次之间保留早期的推理块,以便模型可以在以后重用它们。
-
轮次级思考:在对话中为每个请求单独启用或禁用推理。
在推理时,轮次级思考是实际的开/关开关。在 Z.ai API 中,思考默认启用,可以通过 thinking: {”type”: “disabled”} 为单个请求禁用。托管的实现未公开,但开放的 GLM-5 聊天模板 显示了在使用 Transformers、vLLM 或 SGLang 自托管时的等效机制。
当思考启用时,它以 <|assistant|><think> 开始助手响应;当禁用时,以 <|assistant|></think> 开始。后者立即关闭推理块,因此生成直接进行到最终答案。
报告称,这些行为是在多任务 SFT 期间与更新的聊天模板一起引入的。
在 SFT 之后,GLM-5 经历推理 RL、代理 RL 和通用 RL。最后一步在线策略蒸馏步骤使用前几个阶段的检查点作为教师。这有助于最终模型恢复在顺序 RL 阶段中可能减弱的能力。
6.5 Qwen3 使用模式融合和推理时截断
Qwen3 已经在第 4 节中介绍过,因此我将仅总结与此比较相关的部分。根据 Qwen3 技术报告,其后训练流程有四个阶段。这些阶段是:长思维链 SFT、推理 RL、思考模式融合和通用 RL。
思考模式融合是努力开/关开关的关键阶段。在这里,模型通过 SFT 在思考和非思考示例的混合上进行训练。/think 示例包含推理轨迹,而 /no_think 示例以空的 <think></think> 块开头,并附带一个简短答案。随后的通用 RL 阶段强化了两种行为的指令和格式遵循。
Qwen3 还支持硬思考预算。在请求的阈值处,推理跨度被停止,并在模型继续生成最终答案之前插入一个停止思考指令。报告称,这种部分推理行为并未明确训练。它是在思考模式融合后出现的。
这使得 Qwen3 拥有了一个学习的开/关开关加上一个推理时预算。它与 DeepSeek V4 和 Nemotron 的方法相似但更简单。
6.6 Inkling 以连续努力值调节 RL
Inkling 已经在第 5.3 节中讨论过。简而言之,其 技术报告 提到他们使用连续努力条件(介于 0.0 和 1.0 之间的值)而不是固定的努力标签。
在相对较小的初始 SFT 阶段之后,Inkling 的大部分后训练来自具有超过 3000 万次 rollout 的异步 RL。期望的努力包含在系统消息中,并且在 RL 期间根据该值调整 Token 长度惩罚。如前所述,较高的 Token 成本鼓励较短的响应。较低的 Token 成本给模型更多推理空间。
6.7 已知方法概述
下表总结了六份技术报告中实际记录的内容。
图 32:六种具有推理努力设置的开放权重模型的公开训练机制和推理控制比较。
因此,查看六种不同的开放权重模型,它们有一个共同的框架。首先,它们通过 SFT 和聊天模板引入努力模式控制。Qwen3 明确混合了思考和非思考示例,而 GLM-5 增加了交错、保留和轮次级思考模式。
第二个共享组件是模式调节的 RL 阶段,其中上下文窗口和长度惩罚随请求的努力而改变。DeepSeek V4、Nemotron 3 Ultra 和 Inkling 使用了这种方法。
第三个成分提高了在显式预算下的鲁棒性。Nemotron 在随机截断的轨迹上进行训练,Qwen3 可以从强制停止的推理跨度继续,而 Kimi 交替使用预算化和无约束的 RL。这些方法有助于在可用推理长度发生变化甚至被截断时保持答案质量。
7. 结论
本文中的开放权重示例通过几种不同的机制实现了推理努力。相似的标签可以由独立的专家、混合的 SFT 数据、模式调节的奖励、硬 Token 预算或这些方法的组合支持。
很难说哪种方法最好。这些模型在其基础检查点、训练数据、后训练计算、基准测试和服务目标上有所不同。它们的报告也省略了许多进行控制比较所需的细节。(此外,可能没有一种通用方法,一种对交互助手效果良好的方法可能不适合长期运行的编码Agent。)
最终目标当然是自动努力选择。我们之前在 GPT 5 的 Auto 模式中看到过这一点。这是一个棘手的问题,最终实现可能更多的是失误而非成功,这就是为什么它已从用户界面中被移除(至少,我再也找不到它了)。
在不久的将来,我认为推理努力将仍然是一个显式的模型输入,通常通过系统提示提供。然而,LLM 周围的代理包装器或内部路由器可能会越来越多地从任务状态和可用资源中自动推断合适的模式和预算(当然,同时仍然允许用户覆盖)。
我仍然希望努力选择会变得更加自动化。类似于 GPT 5 的自动模式,一个廉价的模型或路由器可以从请求、工具状态以及剩余时间或 Token 预算中选择模式,同时仍然允许用户覆盖。如果你希望优化延迟或成本,或者追求最大性能,覆盖功能会很有用。
我意识到这是一篇很长的文章,而且可能不是最引人注目的话题。但我认为,鉴于关于 LLM、推理模型和代理的众多讨论,对推理模型的考察是以前没有涉及过的,我希望这是一个独特且有些有用的概述!
进一步资源
如果你想要推理模型核心训练方法的动手实现,我的书 构建推理模型(从零开始) 逐步介绍了具有可验证奖励的强化学习和推理时扩展,并附有代码。
本文聚焦于一个经过训练的推理模型如何支持不同的努力模式。这本书退后一步,首先展示了如何将传统的 LLM 转变为推理模型。它是 构建大型语言模型(从零开始) 的续篇,并从那本书结束的地方开始。
印刷版现已开始发货
构建推理模型(从零开始)[ Manning] [ Amazon]
如果你喜欢我之前的 构建大型语言模型(从零开始) 一书,这本质上是一个续篇,从零开始实现推理时扩展技术和强化学习算法。
- 原文链接: magazine.sebastianraschk...
- 登链社区 AI 助手,为大家转译优秀英文文章,如有翻译不通的地方,还请包涵~





