距离OpenAI发布o1(一款普及了基于LLM推理模型概念的模型)已近两年。大约四个月后,DeepSeek-R1问世,同时公布了使用可验证奖励强化学习(RLVR)方法来训练此类推理模型的详细方案。

上周,OpenAI发布了GPT-5.6模型系列。该系列包含三种尺寸,每种尺寸大约有五到六种推理努力程度设置。

图1:GPT 5.6 Sol模型在不同推理努力程度设置下的表现。(Ultra的基准测试数据目前尚未公布,但由于其使用了类似的努力程度,并通过四个子代理加速工作,因此其表现应与Max相对接近。)

所以,是的,推理模型将会继续存在。它们已成为现代模型发布的标准组成部分。

过去,我介绍过推理模型的方法论(理解推理LLM)以及相关的研究论文(LLM推理的强化学习现状LLM推理模型推理的现状)。我甚至还为此写了一本全新的440页书籍,《构建推理模型(从零开始)》

这些资源主要关注如何将传统的LLM转变为推理模型。现在,在这篇文章中,我想重点解释如何开发一个具有多种努力模式的推理模型,类似于本文开头图表中所示的那样。

别担心,这篇文章可以独立阅读。不过,上述提到的资源可能也会很有趣且有用。

在讨论几乎任何机器学习或AI技术或子领域时,一个重要的教训是,我们通常不应该“字面地”理解技术术语。例如,机器学习与AI中的(人工)神经网络,其工作原理并非字面上与人类大脑这样的生物神经网络相同。

同样,当谈论“推理模型”时,我们也不应期望这些模型像人类一样进行字面意义上的推理。在AI和LLM研究的背景下,“推理模型”指的是一个输出中间推理轨迹的模型,这个轨迹类似于一个逐步处理问题或任务的中间响应。

通过展示一个例子来解释这一点可能最容易。

图3:传统LLM的回答(左)与推理模型的回答(右)的对比示意图。

提升(推理)任务性能主要有两种方法:训练规模扩展和推理规模扩展。

图4:训练和推理扩展是提升LLM及推理模型问题解决能力的两种方式。图表基于《学习用LLM推理》

我们先简要谈谈训练。

简而言之,DeepSeek-R1 提出使用可验证奖励的强化学习(RLVR)来训练LLM,将其转变为推理模型。RLVR是一种技术,用于为可验证数据领域提供奖励信号(0=错误1=正确)。这里的可验证数据领域包括数学(我们可以使用SymPy或WolframAlpha等符号数学检查器来验证结果)和代码(我们可以使用编译器、单元测试或LeetCode等集成平台来检查正确性)。

图5:RLVR训练过程中准确率奖励和格式奖励的示意图。

值得注意的是,推理轨迹本身并未用于训练或更新模型。尽管他们曾尝试利用这种中间响应信息进行训练,但DeepSeek-R1论文报告称这对模型训练没有帮助,因此最终未被采用。(是否以及如何通过过程奖励模型将中间推理轨迹纳入训练信号,仍是一个活跃的研究领域。)

图6:RLVR训练中忽略中间推理轨迹;仅根据最终答案和响应格式决定奖励。

无论如何,如图7所示,仅基于输出奖励进行训练就足以让模型学会如何推理问题,这意味着它会学习编写中间解释、回溯和自我纠正。这些模型意识到自己犯错并进行自我纠正的时刻被称为“顿悟”时刻。

图7:一个“顿悟”时刻的示例,推理模型在生成最终答案前注意到中间推理中的错误并进行了纠正。

顺便提一下,虽然DeepSeek-R1无疑是更受欢迎的论文,也是引发对可验证奖励强化学习和推理模型开发热情的论文,但还有另一篇论文Kimi K1.5,于同一天(2025年1月22日)在arXiv上发表。此外,RLVR这个术语早在两个月前的Tülu 3: Pushing Frontiers in Open Language Model Post-Training中就已提出。

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 模型。更多详情,请参阅我的另一篇文章:理解推理型大语言模型

顺便提一下,当今大多数大语言模型实际上都是推理模型,这意味着它们以类似于 DeepSeek-R1 的方式,通过某种形式的 RLVR 进行了训练。

除了通过训练来改善推理行为之外,另一个提升模型性能的手段是推理计算扩展。简而言之,这意味着我们在模型训练之后、使用期间投入更多的计算资源,以获得更好的答案。

这本身就是一个完整的主题,你可以阅读我的《大语言模型推理模型推理状态》一文,以获取更详细的介绍:

[

https://substackcdn.com/image/fetch/$s_!pmzH!,w_140,h_140,c_fill,f_webp,q_auto:good,fl_progressive:steep,g_auto/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F9c02ecf0-cb1d-4f62-a160-6d07636b99fd_1600x1384.png">![大语言模型推理的强化学习状态](https://substackcdn.com/image/fetch/$s_!pmzH!,w_140,h_140,c_fill,f_auto,q_auto:good,fl_progressive:steep,g_auto/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F9c02ecf0-cb1d-4f62-a160-6d07636b99fd_1600x1384.png)

](https://magazine.sebastianraschka.com/p/the-state-of-llm-reasoning-model-training)

下面我将尝试总结作为背景信息最需要提及的内容。

首先,使用 RLVR 训练模型已经隐含着某种形式的推理扩展,因为推理模型在推理过程中通常比传统大语言模型输出更多的 token,这意味着我们在推理过程中投入了更多的计算。

其次,我们可以通过推理努力程度进一步调整这个输出长度,但稍后会详细说明。

第三,还有许多额外的推理扩展技术。其中一种流行的方法是自一致性,它通常以多数投票的形式实现,即多次查询模型,并通过多数投票选择最终答案。

图 10:自一致性示例,一种流行的推理扩展技术。

这可以应用于传统LLM以及推理模型。此外,该方法可以按需使用,并作为推理训练的补充。一个很好的例子是DeepSeek-Math-V2,研究人员在推理模型(专门用于数学)的基础上应用了极致的推理缩放,从而在具有挑战性的数学奥林匹克类问题上实现了最先进的性能。

但再次强调,关于其他技术的概述,我将参考我的另一篇文章《LLM推理模型推理现状》:

[

https://substackcdn.com/image/fetch/$s_!IOSP!,w_140,h_140,c_fill,f_webp,q_auto:good,fl_progressive:steep,g_auto/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Faf9e2677-652a-4af1-9f57-dc0c253d2198_1448x1260.png">![LLM推理模型推理现状](https://substackcdn.com/image/fetch/$s_!IOSP!,w_140,h_140,c_fill,f_auto,q_auto:good,fl_progressive:steep,g_auto/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Faf9e2677-652a-4af1-9f57-dc0c253d2198_1448x1260.png)

](https://magazine.sebastianraschka.com/p/state-of-llm-reasoning-and-inference-scaling)

你可能在前面的“顿悟时刻”图中看到了<think></think>标记。我还在下面附上了相应的图,这样你就不必一直往上滚动。

图12:推理模型中常见的格式化标记。

这些<think></think>标记在推理能力方面是装饰性的。它们并不会让模型进行推理,也不是实现良好推理性能所必需的。你可以训练没有这些分隔符的相同模型,很可能达到类似的基准性能。

这些<think>标记或令牌的主要目的是标记推理轨迹的起始和结束位置,以便训练流程或用户界面能够将其与最终答案分开,并可以选择性地对用户隐藏。(像ChatGPT或Codex这样的用户界面通常这样做。)

这里的重点是,<think>标记并没有赋予模型“思考”或推理或更好推理的能力。你可以训练没有这些<think>标记的相同模型,并达到类似的基准性能。

此外,文字字符串<think></think>也没有什么特别之处。其他一对分隔符也可以达到同样的目的。

顺便说一下,实现这一点的方法通常是在RLVR阶段添加一个格式化奖励。因此,不是仅仅根据答案正确性奖励模型,而是为使用<think>标记提供额外的奖励,这反过来鼓励模型使用它们。

例如,在DeepSeek-R1中,总奖励计算为:

R_total = R_accuracy + R_format

其中格式奖励是一个简单的基于规则的检查,鼓励模型将其推理放在:

<think>

推理轨迹

</think>

内部。

第一代推理模型是专用的推理模型。我的意思是,有一个DeepSeek-V3基础模型和一个单独的DeepSeek-R1推理模型。

无论提示是什么,R1通常都会生成非常冗长的响应,使用大量令牌,即使对于简单的提示也是如此。它也没有内置的选项来关闭推理模式。

图13:推理模型非常冗长,即使对于最简单的提示也是如此。

后来的模型,如Qwen3等,尝试了混合方法,使得同一个模型可以按需表现为常规指令微调模型或推理模型。

注意:一些模型开发者称之为“思考模式”,而另一些则称之为“推理模式”。这两个术语指的是同一种行为。

在Qwen3中,这是通过分词器使用enable_thinking=Trueenable_thinking=False来处理的。在底层,设置enable_thinking=False实际上是在助手回复的开头添加一个空的<think></think>部分,以关闭Qwen3的推理(“思考”)模式。

图14:Qwen3 0.6B推理模型在thinking=Falsethinking=True下的响应。(左侧界面中空的<think></think>标签被隐藏,因为它们是修改后输入提示的一部分,而非生成的答案。)

在训练过程中,这是如何实现的,使得模型在推理时支持如上图所示的这种切换?

简而言之,正如Qwen3技术报告中所解释的,这种开/关行为主要是通过监督微调(SFT)引入的,然后在其最大的旗舰模型中的通用强化学习阶段得到加强。

例如,在通过长思维链SFT和推理RL训练出初始推理模型后,他们增加了一个“思考模式融合”阶段。在这个额外的SFT阶段,模型会同时看到思考和非思考的示例:

  • /think: <think>{reasoning}</think>{answer}

  • /no_think: <think></think>{answer}

思考是默认行为,因此/think也可以省略。后续的通用RL阶段进一步强化了这种模式和格式遵循。

这些/think/no_think标志是一个“软”开关。然而,前面提到的enable_thinking=False设置,在False情况下强制添加空的<think></think>,则充当了一个“硬”开关。

图15:Qwen3训练流程中的“思考模式融合”,用于启用推理模式的开关。

换句话说,分词器不会将/no_think添加到查询中。它直接在助手回复的开头填入空的<think></think>部分。模型只看到生成的token,并直接继续生成答案。

无论如何,这种开/关切换本质上是GPT-5.6等模型中推理努力级别的简化版本,我将在下一节中介绍。

在本节中,我想简要概述一下不同的推理努力切换可能如何实现,这些切换已在GPT 5等模型中引入,并且如今几乎存在于所有旗舰模型中。

具体来说,在本文开头,我展示了一张来自Codex GPT 5.6界面的图片,该界面允许用户选择多种推理“努力”设置。

图 16:GPT-5.6 暴露了六个推理努力设置,范围从 Light 到 Ultra。

以下小节将说明这些设置可能如何实现。然后,在下一节中,我将介绍一些与此主题相关的更有趣的研究论文。

不幸的是,OpenAI 并未公开其努力设置的实现细节,但有一些证据可以用来进行合理的推测。

例如,通过他们去年开源的 gpt-oss 模型(我在从 GPT-2 到 gpt-oss:分析架构进展一文中写过),我们知道 OpenAI 允许我们通过系统提示(“Reasoning effort: low/medium/high”)来切换推理努力设置,该提示会被添加到每个提示之前。

图 17:gpt-oss 聊天模板将选定的推理努力插入系统消息中,然后再将提示发送给同一模型。

不出所料,推理努力直接影响响应长度和准确性,如下所示。

图 18:不同推理努力下 gpt-oss 模型的响应长度和质量(来自模型卡的注释图)

据推测,他们的 GPT 5 模型,包括最近的 GPT 5.6 模型,使用了类似的方法。

顺便提一下,请注意上图中不同努力设置如何缩放响应长度。努力水平似乎与 token 使用量直接相关,而 token 使用量又似乎与准确性相关。也许可以提出超越“高”级别的努力设置,但我认为性能会在某个点达到饱和。这种饱和在 GPT 5.6 Sol 模型中更为明显,该模型也表明,增加推理预算在某个点上可能会变得不经济。

图 19:推理努力同时增加 API 成本和编码代理性能,在最高的 GPT-5.6 设置下收益递减。图表基于 Artificial Analysis Coding Agent Index v1.1。

另一个很好的、非常新的数据点,展示了推理努力、token 使用量和基准性能之间的关系,是本周 Thinking Machine Labs 发布的新的开放权重 Inkling 版本

图20:提高Inkling的推理努力水平通常会增加生成的token数量和基准性能,但在更高努力水平下收益递减或不均衡。图片来自Inkling发布博客

如本节所述,在推理过程中,推理努力水平可以通过系统提示直接控制。(ChatGPT UI可能只是将菜单选项映射到系统提示。)然而,这对任意模型并不适用,需要对训练流程进行特定修改,接下来将讨论这些修改。

虽然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中的努力设置可能只是针对特定用户查询更改系统提示)。

刚刚发布的Inkling技术报告提供了一个虽小但相对具体的努力水平训练示例。

图22:Inkling在0.2到0.99之间扫描连续努力值;更高的努力通常会产生更长的响应和更高的基准分数。

在大规模RL过程中,他们对每个样本做了两件事:

  1. 在系统消息中指定所需的努力水平。

  2. 调整每个生成token的成本。

从概念上讲,奖励可能类似于以下形式:

\(R(e) = R_{\text{task}} - \lambda(e)N_{\text{tokens}} \)

这里,e 是请求的努力水平,λ(e) 控制token惩罚。

  • 低努力模式采用更高的每token成本,从而鼓励更短的推理链。

  • 高努力模式采用更低的每token成本,允许模型消耗更多token。

在推理时,Inkling会收到类似“思考努力等级:0.8”的系统消息,并据此调整token使用量。Inkling与gpt-oss和GPT-5.6等模型的不同之处在于,其努力标签是0到1之间的连续数值,而非“低、中、高”这样的序数标签。

这使得Inkling的努力等级调节主要发生在推理RL阶段,而非仅局限于后续的SFT阶段。

不过,他们并未公开具体的奖励公式、token成本系数,也未说明努力调节是否也包含在SFT中。

在进入推理努力相关论文之前,我想先简要地将本节与之前的“2.3 推理缩放简述”部分联系起来。

之前,我将缩放分为训练计算缩放和推理时缩放。GPT-5.6的界面很好地展示了二者的区别,如下图所示。

左侧选择Luna、Terra或Sol会改变模型本身。粗略类比,这对应着训练计算缩放。这些是独立训练的模型。在固定的训练方案和数据集规模下,更大的模型需要更多的训练计算量,通常每个生成token所需的计算量也更大。

右侧则保持模型不变,仅改变推理努力程度。这就是推理时缩放。模型权重保持不变,但允许模型在解答时消耗更少或更多的token。

图23:模型选择与推理努力菜单对应两个不同的缩放轴。选择Luna、Terra或Sol会改变模型,而改变推理努力程度则针对固定模型调整推理时的计算量。

一个小术语说明:从菜单中选择不同模型并非当时进行训练缩放,训练已经完成。更合理的理解是,模型菜单是在不同训练规模下产出的模型中进行选择。

下面的人工分析结果展示了这两个轴在实际中的相互作用。

每条蓝色曲线对应一个模型:Luna、Terra或Sol。沿曲线移动并增加推理努力程度属于推理缩放。在不同模型曲线之间移动则对应模型缩放,在此我将其作为训练缩放的实际代理。

正如预期,两种方法都能提升基准分数,但也会增加成本。更有趣的是,曲线之间存在重叠。例如,较小模型在较高推理努力下,有时能达到与较大模型在较低推理努力下相似的分数。

图24:GPT-5.6模型系列在Artificial Analysis编码智能体指数上的训练缩放与推理缩放。沿每条模型曲线移动对应增加推理努力程度。在Luna、Terra和Sol曲线之间移动对应选择不同模型。

顺便提一下,该图中的x轴显示的是API成本而非原始计算量。API成本是一个实用的衡量指标,但它也取决于提供商的定价和生成的token数量。此外,这些曲线的具体形状是基准测试相关的。

因此,模型规模和推理努力程度构成了两个独立的调节旋钮。我们可以使用更大的模型、增加推理努力程度,或者两者结合。哪种组合最佳取决于所需的准确率、成本和延迟。

到目前为止,本文应该能让您对推理努力模式的工作原理及其实现方式有相当扎实的理解。如果您时间有限,在这里结束文章是个不错的节点。否则,如果您想深入了解近期一些开源权重模型的细节,请继续阅读!

[如果您对额外细节不感兴趣,可以跳过本节]

第5节描述了训练推理努力控制的两种可能方法,即努力条件监督微调和具有不同token成本的强化学习。最初,我想涵盖关于实现推理预算替代方法的研究文章。然而,在阅读了大部分这些文章后,它们似乎更像是概念验证,在实践中可能效果不佳,也可能效果不错。

因此,我决定不介绍这些内容,而是转而介绍那些被最先进且知名的开源权重(旗舰)大语言模型所使用的方案。对于这些模型,至少有证据表明这些方法在实践中是有效的。

这样就剩下六个例子:DeepSeek V4、Nemotron 3 Ultra、Kimi K2.5、GLM-5、Qwen3和Inkling。它们的报告详细程度各不相同,但每个都提供了有用的变体。(我排除了那些仅在用户界面中显示努力设置,但未解释如何训练该行为的模型。)

让我们从DeepSeek V4技术报告开始,该报告描述了三种模式的使用:

  • 非思考模式:直接生成响应,不产生推理过程。

  • 高思考模式:经典方法,模型将推理过程放在标签之间。这与本文开头DeepSeek R1部分(第2节)讨论的内容类似。

  • 最大思考模式:与上述相同,但添加了特殊的系统指令。(更多内容见下文。)

最大思考模式的额外系统提示指令以“推理努力:绝对最大,不允许任何捷径。”开头。

起初,这听起来像是一个简单的提示工程技巧,但这个提示实际上基于不同的训练设置。也就是说,每种模式都使用自己的上下文窗口和长度惩罚(遗憾的是,该报告并未详细说明具体的长度惩罚实现方式)。Think Max 获得的上下文窗口比 Think High 更长,长度惩罚也更小,这为其继续推理提供了更多空间。

因此,系统指令选择了一种在后训练期间创建的行为。将相同的指令添加到任意模型上不会产生相同的效果。

图 26:DeepSeek V4 在报告的不同部分描述了三种努力模式以及更大的教师池。教师池包含十多个领域专家。报告未披露这些教师如何映射到 Non-think、Think High 和 Think Max。

遗憾的是,公开且内容详尽的 DeepSeek V4 报告并未将推理模式与领域专家的描述充分关联起来,无法重建确切的教师分配方案。

然而,报告指出,支持不同推理努力水平的最终模型是通过从这些教师进行在线策略蒸馏创建的。

总结一下,DeepSeek V4 在后训练期间开发了三种推理专家。从基础模型开始,它应用了监督微调,随后通过 GRPO 进行 RLVR。每种模式的 RL 配置不同。具体来说,每个专家使用自己的上下文窗口和长度惩罚,而 Think Max 还额外接收一个特殊的系统指令。

然后,包括领域专家在内,不同的推理模式专家被蒸馏到一个支持所有三种努力模式的单一检查点中。

Nemotron 3 Ultra 技术报告 描述了三种设置,分别称为 reasoning-off、regular 和 medium-effort,类似于上一节中的 DeepSeek V4。Medium-effort 是比 regular 更便宜的推理模式。NVIDIA 在 SFT 期间使用 GPT-OSS-120B 在其 medium-effort 模式下生成的示例引入了这种模式,然后在 RLVR 期间进一步优化。大约 2.5% 的 RLVR 提示使用了 medium-effort(这对应于对其奖励进行的基于长度的调整)。

在推理时,所有三种模式都通过聊天模板进行选择。

图 27:通过聊天模板设置的 Nemotron 3 Ultra 推理设置(示例来自官方模型卡
  1. Regular 是默认设置,使用 enable_thinking=True,这会使助手的响应以 <think> 标签开头。

  2. Medium-effort 使用 enable_thinking=True 以及 medium_effort=True,后者设置还会将 {reasoning effort: efficient} 附加到最新的用户消息中。

顺便提一下,为了让事情更复杂,常规模式和中等努力模式还可以与一个独立的推理时推理预算相结合。这个预算充当一个外部停止机制。在已发布的实现中,聊天客户端要求模型在接近选定的 token 限制时结束推理轨迹。如果模型尚未输出 </think>,客户端会关闭推理块并继续生成以产生最终答案。学习到的努力模式决定了模型如何使用其推理 token,而预算则限制了推理轨迹可以持续的时间。这使得可以根据所需的成本和精度,将任一模式与更紧或更松的预算配对。

  1. 关闭推理使用 enable_thinking=False,它会预填充一个空的 <think></think> 块(类似于第 4 节讨论的 Qwen3),从而使模型直接进入最终响应。因此,这些是聊天模板控制,而非系统提示。

上述推理控制由两个相关的 SFT 组件支持。第一个组件使用 GPT-OSS-120B 轨迹引入中等努力行为,如前所述。第二个组件为硬推理预算准备模型。

为了构建这些训练数据,作者获取常规推理轨迹,在随机选择的 token 预算处截断它们,并保留原始最终答案。插入的 </think> token 在 SFT 损失中被屏蔽。因此,模型会看到一些示例,在这些示例中,它必须从一条不完整的推理轨迹出发,在推理块被外部关闭后生成答案。

中等努力训练随后在 RLVR 期间继续进行。大约 2.5% 的 RL 提示在数学、STEM 和编程任务中使用中等努力设置。报告指出,该模式可以通过奖励超参数进行校准,其中基于长度的奖励调整为成本-质量权衡提供了额外的控制。

图 28:Nemotron 3 Ultra 通过教师生成的 SFT 数据、随机预算截断以及 RLVR 期间的一小部分中等努力子集引入了中等努力模式。

Kimi K2.5 技术报告 讨论了一种名为 Token Efficient RL 的训练方法,用于降低推理努力。(虽然本周有 K3 的公告,但 K3 的推理努力方法论并未公开披露,但它可能与 K2.5 类似或相关。)

报告提到,固定的 token 预算可能导致推理模型过度拟合短解决方案。这意味着模型会变得更简洁(即更快、更便宜),但可能会失去从额外推理时计算中获益的能力,从而表现不佳。

图 29:提出的 Toggle 方法使 Kimi K2.5 在 token 效率上大幅提升,同时保持整体基准性能相似。注释图来自 https://arxiv.org/abs/2602.02276

Kimi K2.5 的方法称为 Toggle,它在每固定数量的训练迭代中交替进行两个 RL 阶段:

  1. 在预算阶段,鼓励正确的解决方案保持在特定问题的 token 预算内。

  2. 在无约束阶段,恢复通常的最大生成长度,以便模型仍能从更长的解决方案中学习。

对于每个问题,预算根据 RLVR 中正确 rollout 的响应长度选定百分位数来估算。预算约束仅在模型对该问题的平均准确率超过阈值时才被激活。这避免了在模型能够可靠地解决问题之前,强迫其缩短推理过程。

图 30:Toggle 方法两个阶段的概述。

该报告在 K2 Thinking 上评估了 Toggle,发现它生成的 token 减少了约 25% 到 30%,而基准性能几乎没有变化。相同的行为也从数学和编码 RL 任务迁移到了 GPQA 和 MMLU-Pro。

Toggle 提供了一种具体的旗舰模型配方,用于训练更节省 token 的推理策略,同时保留其在测试时扩展的能力。

Toggle 完全在 RL 训练期间运行。两个交替阶段更新相同的策略(即 LLM),最终的(统一)检查点没有预算与无约束的选择器。在推理时,生成的模型默认以思考模式运行。

然而,有趣的是,在我检查的一些 API(如 vLLM 或 SGLang)中,Kimi K2.5 本身暴露了思考模式和即时模式之间的独立二元选择。思考模式默认启用。即时模式通过 {"type": "disabled"}(在官方 API 中)或 chat_template_kwargs={"thinking": False}(通过 vLLM 或 SGLang 提供模型时)禁用推理轨迹。然而,这些设置与 Toggle 是分开的。

此外,官方的 Kimi 报告没有提供即时模式的单独训练配方。然而,K2.5 的 SFT 数据是使用早期的 K2 模型(生成没有长推理的直接响应)和 K2 Thinking(生成扩展的推理轨迹)生成的。这很可能使统一检查点同时接触到两种响应格式,类似于上面 Nemotron 3 的做法。在推理时,聊天模板通过预填充开放的 <think> 标签(用于思考模式)或空的 <think></think> 块(用于即时模式)在两者之间进行选择。但同样,遗憾的是,该报告没有披露确切的数据混合比例,或者是否使用了额外的特定模式 RL。

较新的 Kimi K3 提供了更直接的推理时努力接口。当前 Kimi Code 文档列出了三种设置,称为 low、high 和 max,其中 max 是默认值。这些通过 reasoning_effort 参数传递。然而,Moonshot 尚未解释这三种努力级别是如何在训练期间创建的。其发布文章表示,这些细节将出现在未来的 K3 技术报告中,因此我将持续关注。

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。最后一步是在策略蒸馏(on-policy distillation)中,使用前序阶段的检查点作为教师模型。这有助于最终模型恢复在顺序 RL 阶段可能被削弱的各项能力。

图 31:GLM-5 训练流程。

Qwen3 已在第 4 节中介绍过,因此这里仅总结与本对比相关的部分。根据 Qwen3 技术报告,其训练后流程包含四个阶段:长链思维 SFT、推理 RL、思考模式融合(Thinking Mode Fusion)和通用 RL。

思考模式融合是实现思考开/关控制的关键阶段。在此阶段,模型通过 SFT 在思考和非思考示例的混合数据上进行训练。/think 示例包含推理轨迹,而 /no_think 示例则以一个空的 <think></think> 块开头,并附带一个简短答案。随后的通用 RL 阶段则强化了两种行为的指令遵循和格式遵循能力。

Qwen3 还支持硬性思考预算(hard thinking budget)。在达到请求的阈值时,推理部分会被停止,并在模型继续生成最终答案之前插入一个停止思考指令。报告指出,这种部分推理行为并非经过显式训练,而是在思考模式融合之后涌现出来的。

这使得 Qwen3 拥有一个学习到的开/关控制以及一个推理时的预算机制。这与 DeepSeek V4 和 Nemotron 的方案类似,但更为简单。

Inkling 已在第 5.3 节中讨论过。简而言之,其 技术报告 提到,他们使用了连续努力条件化(continuous effort conditioning,值介于 0.0 和 1.0 之间),而不是固定的努力标签。

在相对较小的初始SFT阶段之后,Inkling的大部分后训练来自超过3000万次rollout的异步强化学习。期望的推理努力程度被包含在系统消息中,并且在RL过程中会根据该值调整token长度惩罚。如前所述,较高的token成本会促使生成更短的回复,而较低的token成本则为模型提供更多推理空间。

下表总结了六份技术报告中实际记录的内容。

图32:六种具有推理努力程度设置的开源权重模型的训练机制与推理控制对比。

因此,观察这六种不同的开源权重模型,它们共享一个框架。首先,它们通过SFT和聊天模板引入努力程度模式控制。Qwen3明确混合了思考和非思考示例,而GLM-5则增加了交错、保留和轮次级别的思考模式。

第二个共享组件是模式条件强化学习阶段,其中上下文窗口和长度惩罚会随着请求的努力程度而变化。DeepSeek V4、Nemotron 3 Ultra和Inkling采用了这种方法。

第三个要素提高了在显式预算下的鲁棒性。Nemotron在随机截断的轨迹上进行训练,Qwen3可以从强制停止的推理片段继续,Kimi则在有预算和无约束的RL之间交替。这些方法有助于在可用推理长度发生变化甚至被截断时保持答案质量。

本文中的开源权重示例通过几种不同的机制实现了推理努力程度。类似的标签可以由独立的专家模型、混合的SFT数据、模式条件奖励、硬token预算或这些方法的组合来支持。

很难说哪种方法最好。这些模型在基础检查点、训练数据、后训练计算量、基准测试和服务目标上各不相同。它们的报告也省略了进行受控比较所需的许多细节。(此外,可能不存在一种万能的方法,适用于交互式助手的方法可能不适合长时间运行的编码代理。)

圣杯当然是自动努力程度选择。我们之前在GPT 5的自动模式中看到过这一点。这是一个棘手的问题,最终实现可能更多是失误而非成功,这就是为什么它从UI中被移除了(至少我再也找不到了)。

在不久的将来,我认为推理努力程度仍将是一个明确的模型输入,并且通常通过系统提示来传递。然而,围绕LLM的代理包装器/框架,或内部路由器,可能会越来越多地根据任务状态和可用资源自动推断出合适的模式和预算(当然,同时仍然允许用户覆盖)。

我仍然希望努力程度选择能变得更加自动化。类似于GPT 5的自动模式,一个廉价模型或路由器可以根据请求、工具状态以及剩余时间或token预算来选择模式,同时仍允许用户手动覆盖。如果你想优化延迟、成本或追求极致性能,这个覆盖功能会非常有用。

我意识到这是一篇很长的文章,可能也不是最引人注目的话题。但考虑到关于LLM、推理模型和智能体的讨论很多,而关于推理模型的探讨此前尚未涉及,我希望这篇独特的概述能带来一些价值!

如果你想亲手实现推理模型背后的核心训练方法,我的《从零构建推理模型》一书会逐步讲解基于可验证奖励的强化学习和推理时扩展技术,并附有完整代码。

本文重点介绍了训练好的推理模型如何支持不同的努力模式。而这本书则退一步,首先展示如何将传统LLM转变为推理模型。它是《从零构建大语言模型》的续作,从上一本书结束的地方开始讲起。

印刷版现已开始发货

如果你喜欢我之前写的《从零构建大语言模型》,那么这本书本质上就是它的续作,从零实现推理时扩展技术和强化学习算法。

如果你想支持未来类似的长文内容,可以考虑成为付费订阅用户。这能帮助我继续撰写这些独立的深度文章,并分享配套的代码、图表和实验。

关于本文的讨论

想要更多内容?