控制LLMs中的推理努力

Hacker News Top 新闻

摘要

本文讨论了在LLMs中控制推理努力,包括OpenAI发布的GPT-5.6具有多种推理努力设置,并提供了开发可调节努力模式的推理模型的指导。

暂无内容
查看原文
查看缓存全文

缓存时间: 2026/07/20 18:29

# 控制 LLM 中的推理努力 来源:https://magazine.sebastianraschka.com/p/controlling-reasoning-effort-in-llms OpenAI 发布 o1 已经快两年了,这款模型普及了基于 LLM 的推理模型这一概念。大约四个月后,DeepSeek-R1 问世,随附了使用可验证奖励强化学习 (RLVR) 来训练此类推理模型的详细方法。上周,OpenAI 发布了 GPT-5.6 模型系列。它包含三个尺寸,每个尺寸大致有五到六个推理努力设置。 [图片:GPT 5.6 Sol 模型的不同推理努力设置] 图 1:GPT 5.6 Sol 模型采用不同的推理努力设置。(Ultra 的基准测试数据目前尚不可用,但应该与 Max 相对接近,因为它使用类似的努力水平,但通过四个子智能体加速了工作。) 所以,是的,推理模型将持续存在。它们已成为现代模型发布的标准组成部分。过去,我介绍过推理模型的方法论(理解推理型 LLMs)以及相关的研究论文(LLM 推理强化学习状态和 LLM 推理模型推理状态)。我甚至写了一本全新的 440 页书,关于如何开发推理模型从头构建推理模型。 这些资源都专注于将传统的 LLM 转化为推理模型。现在,在这篇文章中,我想聚焦并解释如何开发一个具有多种努力模式的推理模型,类似于文章开头图片所示的那样。别担心,这篇文章可以独立阅读。不过,上述资源可能会很有趣且有用。 在谈论几乎任何机器学习或 AI 技术或子领域时,一个重要的教训是我们通常不应“字面”理解技术术语。例如,机器学习与 AI 中的(人工)神经网络实际上并不像人脑那样的生物神经网络一样运作。同样,在谈论“推理模型”时,我们不应期待这些模型像人类一样真正地进行推理。 在 AI 和 LLM 研究的语境中,“推理模型”指的是一种输出中间推理痕迹的模型,这种中间响应会一步步地解决一个问题或任务。通过展示一个例子可能最容易解释这一点。 [图片:传统 LLM 与推理模型的回答对比] 图 3:传统 LLM 的回答(左)与推理模型的回答(右)的说明。 从根本上来说,有两种方法可以提高(推理)任务性能:训练规模扩展和推理规模扩展。 [图片:训练扩展与推理扩展的说明] 图 4:训练扩展和推理扩展是提高 LLM 和推理模型问题解决能力的两种方法。图表基于学习在 LLM 中进行推理。 让我们先简要谈谈训练。简而言之,DeepSeek-R1 提出使用可验证奖励的强化学习 (RLVR) 来训练 LLM,将其转化为推理模型。RLVR 是一种为可验证数据域提供奖励信号(`0=不正确` 和 `1=正确`)的技术。这些可验证数据域在这里是数学(我们可以使用符号数学检查器,如 SymPy 或 WolframAlpha 来检查结果)和代码(我们可以使用编译器或单元测试,或像 LeetCode 这样的集成平台)来检查正确性。 [图片:RLVR 训练中正确率和格式奖励的说明] 图 5:在 RLVR 训练期间正确率和格式奖励的说明。 值得注意的是,推理痕迹本身并未用于训练或更新模型。尽管他们尝试使用这种中间响应信息进行训练,但 DeepSeek-R1 论文报告称,这对模型训练没有帮助,因此最终并未使用。(是否以及如何通过过程奖励模型将中间推理痕迹纳入训练信号是一个活跃的研究领域。) [图片:RLVR 中忽略中间推理痕迹的说明] 图 6:在 RLVR 期间忽略中间推理痕迹;只有最终答案和响应格式决定奖励。 无论如何,如图 7 所示,仅对输出奖励进行训练就被证明足以让模型学会如何推理一个问题,这意味着它会学会编写中间解释、回溯和自我纠正。这些模型意识到自己犯了错误并进行自我纠正的时刻被称为“顿悟”时刻。 [图片:推理模型自我纠正的“顿悟”时刻示例] 图 7:一个“顿悟”时刻的例子,其中推理模型注意到其中间推理中的错误并在生成最终答案前进行纠正。 顺便说一下,虽然 DeepSeek-R1 无疑是更受欢迎的论文,也是引发了关于可验证奖励的强化学习和推理模型开发热潮的论文,但还有另一篇论文 Kimi K1.5,恰好于同一天(2025 年 1 月 22 日)发布在 arXiv 上。此外,RLVR 这个术语在两个月前的 Tülu 3:推动开放语言模型后训练的前沿 中已经被创造出来。 DeepSeek-R1 最终更受欢迎的一个原因在于,它证明了推理行为可以通过纯强化学习 (RL) 实现。 [图片:DeepSeek-R1-Zero 直接对预训练基座模型应用 RLVR] 图 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 模型的流程。有关更多详细信息,请参阅我的另一篇文章:理解推理型 LLMs。 顺便说一下,今天的大多数 LLM 实际上都是推理模型,这意味着它们已经使用类似 DeepSeek-R1 的方式进行了训练,采用了一种 RLVR 形式。 除了通过训练改进推理行为之外,提高模型性能的另一个杠杆是推理计算扩展。简而言之,这意味着我们在训练模型之后,在使用过程中花费更多的计算资源以获得更好的答案。这本身就是一个完整的话题,你可以阅读我的《LLM 推理模型推理状态》来获取更详细的概述:LLM 推理强化学习状态。 我将尝试在下面总结一些作为背景信息最重要的内容。 首先,使用 RLVR 训练模型已经隐含着一种推理扩展形式,因为与传统的 LLM 相比,推理模型在推理过程中通常会输出更多的 token,这意味着我们在推理过程中花费了更多的计算资源。其次,我们可以通过推理努力水平进一步调整此输出长度,但稍后会详细介绍。第三,还有许多其他的推理扩展技术。一种流行的是自一致性,它通常以多数投票的形式实现,即多次查询模型,并通过多数投票选择最终答案。 [图片:自一致性(一种流行推理扩展技术)示例] 图 10:自一致性示例,一种流行的推理扩展技术。这可以应用于传统的 LLM 以及推理模型。此外,此方法可以根据需要以及在推理训练之外使用。DeepSeekMath-V2 就是一个很好的例子,研究人员在推理模型(专门用于数学)之上应用了极端的推理扩展,从而在具有挑战性的数学奥林匹克类型问题上取得了最先进的性能。 但同样,关于其他技术的概述,我会引用我的另一篇文章《LLM 推理模型推理状态》:LLM 推理模型推理状态。 你可能已经在之前的“顿悟时刻”图片中看到了 `<think>` 和 `</think>` 标记。我在下面也包含了相应的图片,这样你就不必再向上滚动了。 [图片:推理模型中常见的格式标记] 图 12:推理模型中的常见格式标记。 这些 `<think>` 和 `</think>` 标记对于推理能力来说是装饰性的。它们不会让模型去推理,也不是实现良好推理性能所必需的。可以在没有这些分隔符的情况下训练相同的模型,并可能达到类似的基准测试性能。这些 `<think>` 标记或 token 的主要目的是标记推理痕迹的起始和结束位置,以便训练流程或用户界面可以将其与最终答案分开,并可选地将其隐藏在用户面前(像 ChatGPT 或 Codex 这样的用户界面通常会这样做)。 这里的重点是,`<think>` 标记并没有赋予模型“思考”、推理或更好推理的能力。可以在没有此类 `<think>` 标记的情况下训练相同的模型,并达到类似的基准测试性能。字符串 `<think>` 和 `</think>` 本身也并没有什么特别之处。另一对分隔符也可以达到相同的目的。 顺便说一下,实现这一点的方式通常是在 RLVR 阶段添加一个格式奖励。因此,不仅仅是根据答案的正确性来奖励模型,还会为使用这些标记提供额外的奖励,这反过来鼓励模型使用它们。例如,在 DeepSeek-R1 中,总奖励计算为 `R_total = R_accuracy + R_format`,其中格式奖励是一个简单的基于规则的检查,鼓励模型将其推理放在 `</think>: 推理痕迹 <think>` 内部。 第一代推理模型是专用的推理模型。我的意思是,有一个 DeepSeek-V3 基座模型和一个独立的 DeepSeek-R1 推理模型。无论提示是什么,R1 通常都会使用大量的 token 生成非常冗长的响应,即使是简单的提示也是如此。它也没有内置的选项来关闭推理模式。 [图片:推理模型即使对简单提示也极其冗长] 图 13:即使是对于最简单的提示,推理模型也非常冗长。 后来的模型,如 Qwen3 和其他模型,试验了混合方法,同一个模型可以根据需要表现为常规的指令微调模型或推理模型。 > 注意:一些模型开发者称之为“思考模式”,而其他人则称之为“推理模式”。这两个术语指的是相同的行为。 在 Qwen3 中,这是通过分词器使用 `enable_thinking=True` 或 `enable_thinking=False` 来处理的。在底层,设置 `enable_thinking=False` 实际上会在助手响应开始时添加一个空的 `<think>` 部分,以关闭 Qwen3 的推理(“思考”)模式。 [图片:Qwen3 0.6B 推理模型在思考模式开启和关闭时的响应] 图 14:Qwen3 0.6B 推理模型在 `thinking=False` 和 `thinking=True` 时的响应。(左侧界面中隐藏了空的 `<think>` 标记,因为它们是修改后的输入提示的一部分,而不是生成的答案。) 在训练过程中,是如何实现这种在推理时支持如上图所示的切换功能的呢?简而言之,正如 Qwen3 技术报告所述,这种开/关行为主要是通过监督微调引入的,然后在它们最大的旗舰模型中通过通用强化学习得到加强。 例如,在初始推理模型通过长思维链 SFT 和推理 RL 训练后,他们会添加一个“思考模式融合”阶段。在这个额外的 SFT 阶段,模型会看到思考和非思考的示例: - `/think: {推理}{答案}` - `/no_think: {答案}` 思考是默认行为,因此 /think 也可以省略。随后的通用 RL 阶段进一步加强了这种模式和格式遵循。这些 `/think` 和 `/no_think` 标志是一个“软”开关。然而,前面提到的 `enable_thinking=False` 设置在 False 情况下强制添加空 `<think>`,则充当了“硬”开关。 [图片:Qwen3 训练流程中启用/禁用推理模式的“思考模式融合”] 图 15:Qwen3 训练流程中的“思考模式融合”,以启用推理模式的开关。 换句话说,分词器不会将 `/no_think` 添加到查询中。它直接在助手响应开始时填充空的 `<think>` 部分。模型仅

相似文章

学习如何让大语言模型进行推理

OpenAI Blog

OpenAI 发布了一篇文章,通过密码破译示例探索大语言模型的推理技术,展示了语言模型的逐步问题求解和模式识别能力。

Knowing When to Quit: Diagnosing and Training LLMs to Abort Futile Reasoning

arXiv cs.CL

This paper characterizes 'futile reasoning' in large language models, where models produce superficially valid but incorrect reasoning on tasks beyond their capability. They introduce CaRL, a capability-aligned reinforcement learning method that trains LLMs to abstain from futile reasoning while preserving performance.