X 文章

大模型为什么可以调节推理的强度?

同一个模型,为什么可以少想一点,也可以多想一会儿?

大模型为什么可以调节推理的强度?

同一道题,同一个模型。

把推理强度从 low 调到 high,答案有时会明显变好。

但模型参数没有增加,神经网络层数没有变化,训练也早已结束。多出来的能力,究竟从哪里来?

关键不在于模型突然知道了更多东西,而在于它在给出最终答案之前,被允许投入更多计算。

这正是 reasoning effort 背后最重要的变化:

大模型的表现,开始不仅取决于训练时学到了什么,也取决于回答当前问题时投入多少计算。

过去,我们主要通过更换模型来调整能力:简单任务使用小模型,复杂任务使用大模型。

现在,同一个推理模型也可以运行在不同档位下,在答案质量、响应速度和计算成本之间作出取舍。

reasoning effort 调节的其实是:

这个问题,值得模型走多少步、检查多少次,又应该在什么时候停下来。

一、普通聊天模型也会推导,但通常更快进入最终回答

大语言模型最基本的工作方式,是预测下一个 Token。

用户输入问题后,模型读取当前上下文,预测接下来最可能出现的 Token;生成以后,后续预测会以这个新 Token 为条件,继续生成下一步。

这个过程可以表示为:

tₙ₊₁ ~ Pθ(tₙ₊₁ | x, t₁, t₂, …, tₙ)

其中:

  • x 是用户输入;
  • t₁ 到 tₙ 是已经生成的 Token;
  • tₙ₊₁ 是下一步要生成的 Token;
  • θ 是模型训练完成后固定的参数。

这条公式说明了一件很重要的事:

模型每生成一个新 Token,后续预测就会把它作为新的条件。

从数学表达上看,模型下一步会参考此前的全部上下文。工程实现中通常会使用 KV Cache 进行增量计算,而不是每生成一个 Token 就从头计算完整上下文。

普通聊天模型同样能够表现出分析和推导能力。有时,让它“分步骤说明”,它也能写出一段看起来相当完整的逻辑过程。

因此,推理模型与普通聊天模型的区别,并不是前者会思考、后者完全不会。

更准确的区别在于:

  • 是否经过专门的推理后训练;
  • 是否能稳定利用更长的中间计算过程;
  • 是否会在最终答案前分配专门的推理预算;
  • 是否支持通过参数控制这部分计算投入。

许多传统聊天模型可以生成推导过程,但通常没有暴露可调的推理预算,也未必经过专门训练,去稳定地利用更长的测试时计算。

对于翻译、改写、分类和信息提取等任务,这通常已经足够。但面对复杂问题时,第一时间想到的答案往往只是一个起点。

例如,用户提出这样一个问题:

一个订单接口偶尔发生重复扣款,应该从哪里排查?

一个快速回答可能是:

检查接口是否重复提交,并为支付请求增加幂等机制。

这个答案并不算错。

但真实的重复扣款可能来自很多不同环节:

  • 用户连续点击;
  • 客户端超时后重试;
  • API 网关自动重试;
  • 支付成功,但响应在网络中丢失;
  • 消息队列重复投递;
  • 支付回调被重复消费;
  • 数据库事务提交成功,但业务状态没有及时更新;
  • 幂等键只在部分链路中生效。

复杂任务需要的不只是快速给出一个看起来合理的答案,而是展开一段完整的处理过程:

确认现象,拆分可能原因,获取证据,排除假设,验证修复方案,最后给出结论。

推理强度影响的,正是这段过程可以展开到什么程度。

二、大模型所谓的“多想一会儿”,计算上发生了什么?

高推理强度并不是临时给 Transformer 增加更多网络层。

也不能简单理解为:low 使用小模型,high 偷偷换成了大模型。商业系统中可能存在服务端路由,但可变推理本身并不要求更换模型。

更准确的解释是:

模型在输出最终答案之前,形成了更长的中间推理轨迹,因此执行了更多串行的自回归计算。

一次推理可以抽象成:

x → z₁ → z₂ → … → zₖ → y

其中:

  • x 是原始问题;
  • z₁ 到 zₖ 是中间推理状态;
  • y 是最终答案;
  • k 表示推理轨迹的长度。

每一个中间状态都通过模型继续生成:

zᵢ ~ Pθ(zᵢ | x, z₁, z₂, …, zᵢ₋₁)

最终答案则基于此前形成的推理轨迹生成:

y ~ Pθ(y | x, z₁, z₂, …, zₖ)

在公开的可变推理模型中,模型权重可以保持不变,而推理轨迹长度 k 的分布会随推理等级发生变化:较高档位通常允许模型形成更长的中间过程。

对于闭源系统,工具预算、停止策略、候选搜索和服务端路由也可能同时变化,具体实现并未完全公开。

回到重复扣款的例子。

模型可能首先形成一个中间判断:

先区分重复扣款发生在请求侧、支付侧,还是异步回调侧。

下一轮计算时,模型看到的不再只有用户最初的问题,还会受到这个新形成状态的影响。

随后,它可能继续判断:

如果支付平台只收到一次请求,但系统记录了两笔订单,问题更可能位于本地事务或回调消费环节。

这个判断又会成为下一步分析的条件。

推理轨迹可能逐步展开:

订单重复扣款 → 区分重复请求与重复消费 → 检查支付平台请求记录 → 检查网关及客户端重试 → 检查消息消费与回调幂等 → 检查事务边界 → 设计验证方法 → 给出修复优先级

模型的物理网络深度没有变化,但它获得了更多串行计算步骤,形成了一条更长的有效计算路径。

推理 Token 为什么具有计算价值?

因为生成出来的 Token 会影响后续预测。

中间 Token 可以承担类似这些作用:

  • 保存当前假设;
  • 记录已经排除的方向;
  • 保存中间计算结果;
  • 标记尚未解决的问题;
  • 记录工具返回的数据;
  • 提醒下一步需要验证什么。

它有点像草稿纸,也有点像程序中的临时变量。

工程师排查重复扣款时,不会每一步都从原始问题重新开始。他会记录:

  • 支付平台只有一条扣款记录;
  • 网关发生过一次超时重试;
  • 回调消费者没有唯一约束;
  • 数据库中存在两条相同业务流水。

这些记录构成后续判断所依赖的状态。

推理 Token 对模型也可以发挥类似作用。

不过,需要避免一种过度拟人化的理解:模型的中间推理并不一定是一篇完整、清晰、能够供人类直接阅读的文章。

更准确地说:

推理 Token 可以作为中间状态的序列化载体,为后续计算保存有用信息。

模型完整的内部状态仍然存在于隐藏表示、注意力机制和 KV Cache 等计算结构中,不能被完全等同于可见的文字 Token。

三、让模型写得更长,并不会自动产生更强推理

既然更长的中间轨迹能提供更多计算机会,是否只要提高最大输出长度,任何模型都会变聪明?

事情没有这么简单。

一个没有经过专门推理训练的模型,即使获得更多生成空间,也可能只是:

  • 重复已经说过的观点;
  • 在错误假设上继续展开;
  • 编造更多无法验证的细节;
  • 不断改写同一个结论;
  • 明明已经得到答案,却不知道应该停止。

更多 Token 只代表更多计算机会,并不保证这些机会会被有效利用。

给一名学生更多答题时间,也不会自动提高成绩。

如果他不会拆题、验算和纠错,额外两个小时可能只是让他在错误答案上停留得更久。

要让更多计算真正转化成能力,模型需要学会一套推理策略:

  • 先处理哪些条件;
  • 怎样拆分复杂问题;
  • 什么时候尝试另一条路线;
  • 如何识别前后矛盾;
  • 什么时候调用外部工具;
  • 如何验证结果;
  • 什么时候停止。

这也是推理后训练发挥作用的地方。

从强化学习的视角看,模型面对的已经不只是:

下一个 Token 应该是什么?

而是:

当前状态下,采取什么下一步动作,更可能最终完成任务?

这里的“动作”是一种抽象。它可能表现为:

  • 形成一个中间结论;
  • 拆分一个子问题;
  • 修改当前假设;
  • 调用搜索工具;
  • 运行代码;
  • 检查答案;
  • 结束推理。

在可验证任务中,训练系统可以较明确地判断结果好坏:

  • 数学题答案是否正确;
  • 代码能否通过测试;
  • 工具调用是否完成目标;
  • 输出是否满足约束;
  • 执行结果是否通过验证器。

模型会尝试不同的推理轨迹。

有些路径短而有效,有些路径很长却没有价值,还有些路径能在中途发现错误并回退。

经过监督微调、强化学习、可验证奖励以及针对工具使用的后训练,更有效的策略会逐渐被强化:

先拆分,再执行;发现证据冲突时回退;关键结论需要验证;答案足够可靠时及时结束。

所以,推理模型的突破并不只是能够输出更多文字。

真正重要的是:

模型开始学会把更长的生成过程组织成有效计算。

四、Reasoning Effort 到底控制了什么?

当模型具备了推理能力后,还需要学习在不同任务中使用不同的推理档位。

“把一段文字改得更通顺”和“排查一个分布式系统故障”,显然不应该消耗同样多的计算资源。

为了描述这个过程,可以使用一个概念模型:

Pθ(z, y | x, e)

其中:

  • x 是任务输入;
  • e 是推理强度,例如 low、medium、high;
  • z 是中间推理轨迹;
  • y 是最终答案。

这不是厂商公开的精确网络结构或训练目标,而是一种帮助我们理解可变推理的数学抽象。

它表达的是:

在同一个问题 x 下,不同的推理强度 e,可能让模型形成不同的中间轨迹 z,进而生成不同的最终答案 y。

利用条件概率的链式分解,还可以写成:

Pθ(z, y | x, e) = Pθ(z | x, e) × Pθ(y | x, z, e)

第一部分表示:

在当前问题和推理强度下,模型会形成怎样的推理过程。

第二部分表示:

在这条推理过程的基础上,模型会生成怎样的最终答案。

较低推理强度下,模型通常更倾向于:

  • 快速识别主要模式;
  • 减少搜索分支;
  • 少做重复验证;
  • 更早生成最终答案。

较高推理强度下,模型可能更倾向于:

  • 拆出更多子问题;
  • 探索替代解释;
  • 检查关键假设;
  • 回退并尝试新路线;
  • 在支持工具调用的模型中更积极地调用工具;
  • 延后最终作答。

回到重复扣款的例子。

低推理强度可能迅速锁定“幂等”这一常见原因,并给出通用建议。

高推理强度则可能继续追问:

  1. 重复扣款是否真的发生在支付平台?
  2. 是同一支付单被扣两次,还是系统生成了两个支付单?
  3. 请求是否携带稳定的业务幂等键?
  4. 幂等记录是在事务前写入,还是事务后写入?
  5. 网关、客户端和消息系统是否各自存在重试?
  6. 第三方回调是否可能并发到达?
  7. 数据库唯一约束能否作为最后一道防线?
  8. 修复方案是否覆盖“扣款成功但响应丢失”的场景?

这不是单纯把答案写得更长,而是展开了更多假设、检查与验证步骤。

已经可以确认的部分

从公开资料和公开模型中,可以较有把握地确认:

  • 推理强度会影响平均推理 Token 使用量;
  • 较高推理强度通常会增加延迟和计算成本;
  • 同一套模型权重可以对不同推理等级进行条件化;
  • 在部分支持工具调用的模型中,推理强度会影响工具调用倾向;
  • 不同任务从额外推理中获得的收益并不相同。

公开权重模型 gpt-oss 支持 low、medium 和 high 等推理等级。公开资料显示,提高推理等级会增加平均思维链长度,并在部分复杂评测中呈现随测试时计算增加而改善的趋势。

API 也可以单独统计 reasoning tokens。降低 reasoning effort,通常能够减少推理 Token,并降低响应时间。

尚未完全公开的部分

闭源模型内部如何把 low、medium、high 转换成具体执行策略,厂商通常不会完整披露。

可能涉及的系统机制包括:

  • 隐藏控制 Token;
  • 不同档位的软性推理预算;
  • 动态停止阈值;
  • 最大工具调用次数;
  • 多候选路径生成;
  • 额外验证器;
  • 解码策略调整;
  • 服务端模型路由。

这些都是合理的工程实现可能性,但不能把它们当成所有闭源模型都采用的确定机制。

所以,把推理强度直接等同于一个固定数字并不准确,例如:

low 等于 500 个 Token,high 等于 5000 个 Token。

真实系统更可能把它实现为一组经过训练和校准的策略。

Reasoning Effort 更像计算策略等级,推理 Token 则是这一策略产生的可观测结果之一。

五、成熟的推理系统,难点不是“多想”,而是“何时停手”

既然额外计算有可能提高质量,为什么不让所有任务都使用最高推理强度?

因为推理存在成本,也存在边际收益。

可以用一个概念模型表示:

U(k) = Q(k) − λC(k)

其中:

  • k 是已经投入的推理步骤;
  • Q(k) 是这些步骤带来的预期答案质量;
  • C(k) 是对应的计算、延迟和工具成本;
  • λ 表示系统对成本的敏感程度;
  • U(k) 是综合效用。

是否值得继续推理,可以进一步表示为:

ΔQ > λΔC

也就是说:

只有当下一步推理带来的预期质量提升,仍然大于它产生的额外成本时,继续计算才值得。

这不是厂商公开的精确训练公式,而是用来理解推理预算和停止机制的概念模型。

在低推理强度下,可以把 λ 理解为相对较大。

系统更重视速度和成本,因此更倾向于提前结束。

在高推理强度下,可以把 λ 理解为相对较小。

系统愿意投入更多计算,尝试降低答案的不确定性。

继续分析重复扣款问题时,最初几步通常很有价值:

  • 明确重复发生在哪一层;
  • 找到重试来源;
  • 检查幂等键;
  • 检查唯一约束和事务边界。

但继续无限展开,模型也可能开始讨论:

  • 极低概率的支付平台异常;
  • 与当前架构无关的跨区域一致性;
  • 没有证据支持的网络攻击;
  • 实际系统中根本不存在的组件。

推理停得太早,会漏掉关键条件。

推理停得太晚,又可能把简单问题复杂化,甚至引入新的错误假设。

更高的推理强度也不会自动修复:

  • 错误知识;
  • 错误输入;
  • 错误目标;
  • 错误前提;
  • 缺失的关键数据。

模型思考得更久,可能发现错误。

也可能把错误解释得更加完整。

一个成熟的推理系统,首先要学会的不是不断延长推理链,而是判断:

继续计算还值不值得。

六、哪些任务值得投入更多推理?

推理强度的收益高度依赖任务类型。

下面是一种经验分类,而不是适用于所有模型和所有数据集的统一规律。实际收益仍然需要通过评测确认。

额外推理通常收益较低

  • 信息提取;
  • 文本分类;
  • 格式转换;
  • 改写;
  • 翻译;
  • 简单摘要。

额外推理可能有中等收益

  • 常规编程;
  • 文档分析;
  • 多条件方案比较;
  • 数据解释;
  • 一般性的架构设计。

额外推理更可能获得较高收益

  • 复杂代码调试;
  • 数学与科学推理;
  • 深度研究与交叉验证;
  • 长程 Agent;
  • 多工具协作任务;
  • 错误成本较高的复杂分析。

简单任务的答案路径通常很短。

从邮件中提取日期、把一段内容转成 JSON、判断文本属于哪个分类,都不需要长时间搜索解法。

此时提高推理强度,往往只会增加等待时间和成本。

复杂任务则不同。

例如重复扣款排查,模型需要同时管理多组假设,区分不同系统层,读取日志,检查数据库,甚至调用查询和代码工具。

它的过程更接近:

估计问题范围 → 拆分可能原因 → 获取证据 → 排除假设 → 执行验证 → 修正方案 → 输出结论

这类任务存在更多中间节点,也就有更多机会从额外推理中获得收益。

公开资料也显示,不同任务对推理强度的敏感程度存在明显差异。一些较简单的长上下文检索任务,在低档以上继续增加推理的收益有限;复杂视觉推理等任务则可能获得更明显的提升。

在真实产品中,不能只看答案是否变好,还要衡量:

  • 成功率提高了多少;
  • 响应延迟增加了多少;
  • 推理 Token 增加了多少;
  • 工具调用成本增加了多少;
  • 每一次成功解决问题的综合成本是多少。

更可靠的指标不是“单次答案得分”,而是:

每次成功解决任务的成本 = 全部请求的总成本 ÷ 成功完成的任务数量

以及:

每次成功解决任务的延迟 = 全部请求的总耗时 ÷ 成功完成的任务数量

最优选择通常不是永远使用 high,而是让任务复杂度、错误风险和计算预算相匹配。

七、真正的变化,是模型开始参与计算资源的分配

表面上看,reasoning effort 只是 API 中多了一个参数。

但从更长的时间尺度看,它代表着大模型的一次结构性变化。

过去,我们习惯把模型看成一次性的输入输出函数:

y = Fθ(x)

输入问题,得到答案。

推理模型则越来越像一个持续更新状态的执行过程。

可以用一个抽象公式表示:

sₜ₊₁ = Fθ(sₜ, x, e, oₜ)

其中:

  • sₜ 是当前任务状态;
  • x 是用户目标;
  • e 是推理强度;
  • oₜ 是工具或环境返回的观察结果;
  • sₜ₊₁ 是更新后的状态。

这同样是一个概念抽象,不代表某家厂商公开的具体网络接口。

它想表达的是:

系统不再只进行一次输入输出,而是可以形成当前判断、采取行动、读取结果、更新状态,再决定继续还是停止。

在普通问答中,这可能只是多检查几步。

在 Agent 系统中,它可能意味着:

  • 多搜索一次资料;
  • 多读取一份文档;
  • 多执行一次数据库查询;
  • 多运行一轮测试;
  • 根据失败结果重新规划;
  • 调用另一个工具交叉验证。

推理预算控制的,不再只是最终答案之前的一段“思考”,而可能是整个任务执行过程可以使用多少资源。

今天,这个预算常常由用户或开发者手动设置:

low、medium、high

未来,更成熟的系统可能会自行判断:

  • 任务有多难;
  • 当前结论有多不确定;
  • 出错代价有多高;
  • 用户能接受多长延迟;
  • 当前预算允许多少计算;
  • 是否需要外部证据;
  • 是否值得再执行一次验证。

执行过程可能逐渐变成:

估计难度与风险 → 分配初始预算 → 开始执行 → 检查当前不确定性 → 必要时追加计算 → 收益不足时停止

这就是自适应推理。

简单任务快速完成,复杂任务获得更多资源,高风险任务自动增加验证。

从这个角度看,大模型竞争正在出现一个新的维度。

过去比的是谁拥有更强的固定能力。

接下来还要比:

  • 谁能更准确地判断任务难度;
  • 谁能用更少计算完成相同任务;
  • 谁知道什么时候应该继续;
  • 谁知道什么时候应该停止;
  • 谁能把推理、工具和验证组合得更有效。

结语

reasoning effort 调节的,不是模型存储了多少知识,也不只是最终答案写得有多长。

它控制的是模型在当前问题上愿意走多少步、展开多少假设、执行多少检查,以及何时结束。

理解它,可以抓住四层原理。

第一层,模型通过自回归逐 Token 运行:

tₙ₊₁ ~ Pθ(tₙ₊₁ | x, t₁, t₂, …, tₙ)

第二层,中间 Token 可以承载推理过程中的有用信息,形成一条可变长度的计算轨迹:

x → z₁ → z₂ → … → zₖ → y

第三层,推理强度作为控制条件,影响模型选择怎样的推理策略:

Pθ(z, y | x, e)

第四层,系统需要在潜在质量收益与计算成本之间决定继续还是停止:

U(k) = Q(k) − λC(k)

过去,我们问的是:

应该使用哪个模型?

接下来更重要的问题会是:

这件事,值得模型花多少计算去完成?

这才是 reasoning effort 真正值得关注的地方。

它把“思考时间”变成了一个可以训练、控制和调度的系统变量。