本文转自:SDNLAB
2025年,如何提升大型语言模型(LLM)的推理能力成了最热门的话题之一,大量优化推理能力的新策略开始出现,包括扩展推理时间计算、运用强化学习、开展监督微调和进行提炼等。本文将深入探讨LLM推理优化领域的最新研究进展,特别是自DeepSeek R1发布后兴起的推理时间计算扩展相关内容。
在LLM中实施和改进推理
简单来说,基于 LLM 的推理模型是一种旨在通过生成中间步骤或结构化的“思维”过程来解决多步骤问题的 LLM。与仅共享最终答案的简单问答式 LLM 不同,推理模型要么明确显示其思维过程,要么在内部处理它,这有助于它们在复杂任务(例如谜题、编码挑战和数学问题)中表现更好。
普通LLM vs. 推理LLM
一般来说,有两种主要策略可以提高推理能力:(1)增加训练计算量,(2)增加推理计算量,也称为推理时间扩展或测试时间扩展。(推理计算是指训练后响应用户查询生成模型输出所需的处理能力。)
推理时间扩展的同义词
为了深入理解推理模型的发展与改进过程,下图展示了更精细的四类分类。
其中方法 2-4 通常会生成响应较长的模型,因为它们的输出中包含中间步骤和解释。由于推理成本会随响应长度而变化(例如,响应长度翻倍,所需计算量也会翻倍),因此这些训练方法本质上与推理扩展相关。
本文将重点介绍2025 年 1 月 22 日 DeepSeek R1 发布之后,出现的关于推理时间计算扩展的新研究论文和模型发布情况。
DeepSeek 推理模型的开发过程
1. 推理时间计算扩展
该类别所包含的方法旨在在推理过程中提升模型的推理能力,且无需对底层模型权重进行训练或修改。其核心思路是通过投入更多的计算资源来换取性能的提升,借助诸如思路链推理以及各类采样程序等技术,能够让既定模型发挥出更强大的效能。
这里将推理时间计算扩展单独归为一类,以便聚焦此情境下的方法,但需明确的是,这项技术适用于任何大型语言模型(LLM)。例如,OpenAI 运用强化学习开发了 o1 模型,随后又采用了推理时间计算扩展技术。DeepSeek R1 论文明确指出R1 并未采用推理时间扩展技术。但他们也表示,在 R1 的部署或应用中能够轻松将该技术融入其中。
2.纯强化学习
这种方法仅专注于强化学习 (RL) 来开发或提高推理能力。它通常涉及使用来自数学或编码领域的可验证奖励信号来训练模型。虽然 RL 允许模型开发更具战略性的思维和自我改进能力,但它也带来了诸如奖励黑客、稳定性差和高计算成本等挑战。
3.强化学习和监督微调
这种混合方法将 RL 与监督微调 (SFT) 相结合,相较于单纯的强化学习,能够实现更稳定、更具通用性的改进效果。通常的操作流程是,先利用监督微调在高质量指令数据上对模型展开训练,随后运用强化学习作进一步优化,以实现特定行为的精准调控。
4. 监督微调和模型蒸馏
该方法通过在高质量标记数据集 (SFT) 上对模型进行指令微调来提高模型的推理能力。如果此高质量数据集由较大的 LLM 生成,则该方法在 LLM 上下文中也称为“知识蒸馏”或简称为“蒸馏”。但需要注意的是,这与深度学习中的传统知识蒸馏略有不同,后者通常涉及使用输出(标签)和更大的教师模型的逻辑来训练较小的模型。
推理时间计算扩展方法
作为提升大型语言模型(LLM)推理能力的关键手段,推理时间扩展的核心思路在于在推理进程中加大计算资源的投入。打个比方,当给予人类更多思考时间时,他们会做出更好的反应,同理,LLM 通过采用鼓励其在生成内容时深度 “思考” 的技术,也能实现推理能力的进阶。
一种方法是提示工程,例如思路链 (CoT) 提示,其中“逐步思考”等短语会引导模型生成中间推理步骤。这可以提高复杂问题的准确性,但对于简单的事实查询而言则没有必要。由于 CoT 提示会生成更多标记,因此它们也会使推理更加昂贵。
2022 年大型语言模型中的经典 CoT 提示的一个示例是零样本推理器论文 (https://arxiv.org/abs/2205.11916)
另一种方法涉及投票和搜索策略,例如多数投票或集束搜索,通过选择最佳输出来改进响应。
不同的搜索方法依赖于基于过程奖励的模型来选择最佳答案,图片来自 LLM Test-Time Compute 论文(https://arxiv.org/abs/2408.03314)
接下来将重点介绍推理时间扩展方向的研究论文。
1.s1: Simple test-time scaling
首先讨论一篇有趣的研究论文,题目是《s1:简单测试时间缩放》(31 Jan,s1: Simple test-time scaling)https://arxiv.org/abs/2501.19393,它引入了所谓的“等待”标记,可以将其视为“逐步思考”提示修改的迭代版本。
这里面涉及监督微调 (SFT) 来生成初始模型,因此它不是纯粹的推理时间扩展方法。但最终目标是通过推理时间扩展主动控制推理行为。
简而言之,他们的方法有两个:
1. 创建包含 1k 个有推理痕迹的训练示例的精选 SFT 数据集。
2. 通过以下方式控制响应的长度:
a) 附加“等待”标记,让 LLM 生成更长的响应、自我验证和自我纠正;
b) 通过添加思考结束标记分隔符来停止生成(“最终答案:”)。他们称这种长度控制为“预算强制”。
插入“等待”标记以控制输出长度
预算强制可以看作是一种顺序推理扩展技术,它仍然一次生成一个 token(但数量更多)。这种强制预算方法比很多其他推理扩展技术更高效。
响应准确度与长度之间的相关性
PS:为什么是“等待”标记?笔者猜测研究人员受到了 DeepSeek-R1 论文中的“Aha moment”的启发,此外他们还尝试了其他标记,例如“Hmm”,但发现“Wait”的表现略好一些。
“Wait”和“Hmm”标记
2.Test-Time Preference Optimization: On-the-Fly Alignment via Iterative Textual Feedback
《测试时间偏好优化:通过迭代文本反馈进行动态对齐》( 22 Jan, Test-Time Preference Optimization: On-the-Fly Alignment via Iterative Textual Feedback),https://arxiv.org/abs/2501.12895
测试时偏好优化 (TPO) 是一个迭代过程,在推理过程中将 LLM 输出与人类偏好对齐(这不会改变其底层模型权重)。在每次迭代中,模型:
3.Thoughts Are All Over the Place
《Thoughts Are All Over the Place: On the Underthinking of o1-Like LLMs》(30 Jan),https://arxiv.org/abs/2501.18585
研究人员探索了一种名为“underthinking”的现象,即推理模型频繁在推理路径之间切换,而不是完全专注于探索有希望的路径,从而降低了解决问题的准确性。
为了解决这个“underthinking”的问题,他们引入了一种称为思维转换惩罚(Thought Switching Penalty,TIP)的方法,该方法修改了思维转换标记的逻辑,以阻止过早的推理路径转换。
他们的方法不需要模型微调,并且通过经验提高了多个具有挑战性的测试集的准确性。
4. Trading Inference-Time Compute for Adversarial Robustness
《用推理时间计算换取对抗鲁棒性》(31 Jan, Trading Inference-Time Compute for Adversarial Robustness),https://arxiv.org/abs/2501.18841
在许多情况下,增加推理时间计算可以提高推理 LLM 的对抗鲁棒性,从而降低成功攻击的概率。与对抗训练不同,这种方法不需要任何特殊训练,也不需要事先了解特定的攻击类型。
但也存在一些例外。例如,在涉及策略模糊性或漏洞利用的设置中,其改进的效果有限。此外,推理改进带来的鲁棒性提升可能会被“Think Less”和“Nerd Sniping”等新攻击策略所削弱。
因此,虽然这些发现表明扩展推理时间计算可以提高 LLM 安全性,但仅靠这一点并不能完全解决对抗鲁棒性问题。
5. Chain-of-Associated-Thoughts
《CoAT:用于增强大型语言模型推理的关联思维链框架》(Chain-of-Associated-Thoughts Framework for Enhancing Large Language Models Reasoning, https://arxiv.org/abs/2502.02390)
研究人员将经典的蒙特卡洛树搜索推理时间缩放与“associative memory”相结合,后者在探索推理路径时充当LLM的知识库。使用这种所谓的联想记忆,LLM可以更轻松地考虑早期的推理路径,并在生成响应时动态使用相关信息。
6. Step Back to Leap Forward
《Step Back to Leap Forward:自我回溯以增强语言模型的推理能力》(6 Feb, Step Back to Leap Forward: Self-Backtracking for Boosting Reasoning of Language Models),https://arxiv.org/abs/2502.0440
本文提出了一种自回溯机制,允许 LLM 通过学习在训练和推理期间何时何地回溯来改进其推理能力。虽然训练涉及使用标记教模型识别和纠正次优推理路径,但关键贡献是基于推理时间树的搜索,它使用这种学习到的回溯能力来探索替代解决方案。
独特之处在于,这种探索不需要依赖外部奖励模型。
这篇论文主要关注提出的回溯推理时间缩放方法,该方法通过动态调整搜索深度和广度而不是从根本上改变训练范式来改进推理(尽管需要使用 标记进行训练)。
7. Scaling up Test-Time Compute with Latent Reasoning
《使用潜在推理扩展测试时间计算:一种循环深度方法》(7 Feb, Scaling up Test-Time Compute with Latent Reasoning: A Recurrent Depth Approach),https://arxiv.org/abs/2502.05171
研究人员并没有通过生成更多 token 来改进推理,而是提出了一个模型,通过在潜在空间中迭代循环深度块来扩展推理时间计算。该块的功能类似于 RNN 中的隐藏状态,它允许模型改进其推理,而无需更长的 token 输出。
但这种方式的关键缺点是缺乏明确的推理步骤。
8. Can a 1B LLM Surpass a 405B LLM?
《1B LLM 能否超越 405B LLM?重新思考计算最优测试时间扩展》(10 Feb, Can 1B LLM Surpass 405B LLM? Rethinking Compute-Optimal Test-Time Scaling),https://arxiv.org/abs/2502.06703
许多推理时间扩展技术依赖于采样,这需要过程奖励模型 (PRM) 来选择最佳解决方案。本文系统地分析了推理时间计算扩展与 PRM 和问题难度之间的相互作用。
研究人员开发了一种计算优化扩展策略,该策略可适应 PRM、策略模型和任务复杂性的选择。结果表明,通过正确的推理时间扩展方法,1B 参数模型可以胜过缺乏推理时间扩展的 405B Llama 3 模型。
他们还展示了具有推理时间扩展的 7B 模型如何超越 DeepSeek-R1,同时保持更高的推理效率。
这些发现强调了推理时间扩展如何显著改善 LLM,其中具有正确推理计算预算的小型 LLM 可以胜过更大的模型。
9.Learning to Reason from Feedback at Test-Time
《学习根据测试时的反馈进行推理》(16 Feb, Learning to Reason from Feedback at Test-Time),https://www.arxiv.org/abs/2502.12521
本文探讨了一种让 LLM 在推理时从错误中吸取教训,而无需在提示中存储失败尝试的方法。这种方法不是通过将之前的尝试添加到上下文中(顺序修订)或盲目生成新答案(并行采样)来完善答案的常用方法,而是在推理时更新模型的权重。
为此,作者引入了 OpTune,这是一个小型的可训练优化器,它根据模型在前一次尝试中所犯的错误更新模型的权重。这意味着模型会记住它做错了什么,而无需在提示/上下文中保留错误答案。
10. Inference-Time Computations for LLM Reasoning and Planning
LLM 推理和规划的推理时间计算:基准和见解(18 Feb, Inference-Time Computations for LLM Reasoning and Planning: A Benchmark and Insights),https://www.arxiv.org/abs/2502.12521
本文对推理和规划任务的各种推理时间计算扩展技术进行了基准测试,重点分析了它们在计算成本和性能之间的权衡。
作者对多种技术进行了评估,例如思路链、思路树和推理规划,涵盖了算术、逻辑、常识、算法推理和规划等十一项任务。 主要发现虽然扩展推理时间计算可以提高推理能力,但没有一种技术能够在所有任务中始终优于其他技术。
11. Inner Thinking Transformer
内在思维转换器:利用动态深度扩展来促进自适应内部思维(19 Feb, Inner Thinking Transformer: Leveraging Dynamic Depth Scaling to Foster Adaptive Internal Thinking),https://arxiv.org/abs/2502.13842
内部思维转换器 (ITT) 在推理过程中动态分配更多计算。与基于标准转换器的 LLM 中对所有标记使用固定深度(= 使用相同数量的层)不同,ITT 采用自适应标记路由为困难标记分配更多计算。这些困难标记多次通过同一层进行额外处理,从而增加了这些困难标记的推理计算预算。
12. S*: Test Time Scaling for Code Generation
S*:代码生成的测试时间缩放(20 Feb, S*: Test Time Scaling for Code Generation),https://arxiv.org/abs/2502.14382
推理时间扩展可以通过并行扩展(生成多个答案)、顺序扩展(迭代地细化答案)或两者结合来实现,如 2024 年 Google 论文中所述(优化扩展 LLM 测试时间计算比扩展模型参数更有效,https://arxiv.org/abs/2408.03314)。
S* 是一种专为代码生成设计的测试时计算扩展方法,可改善并行扩展(生成多个解决方案)和顺序扩展(迭代调试)。
该方法分为两个阶段:
第一阶段:生成
该模型生成多个代码解决方案,并使用问题提示中提供的执行结果和测试用例进行迭代完善。
可以将其想象成一场编码竞赛,其中模型提交解决方案、运行测试并修复错误:
1. 模型生成多个候选解决方案。
2. 每个解决方案都在公共测试用例(预定义的输入输出对)上执行。
3. 如果解决方案失败(输出不正确或崩溃),模型会分析执行结果(错误、输出)并修改代码以改进它。
4. 这个改进过程不断迭代,直到模型找到通过测试用例的解决方案。
例如,假设要求模型实现一个函数 is_even(n),该函数对于偶数返回 True,否则返回 False。
该模型的首次尝试可能是:
def is_even(n):
return n % 2 # ❌ Incorrect: should be `== 0`
该模型使用公共测试用例来测试此实现:
Input Expected Model Output Status
is_even(4) True False ❌ Fail
is_even(3) False True ❌ Fail
在检查结果后,模型意识到 4 % 2 返回的是 0,而不是 True,因此修改了函数:
def is_even(n):
return n % 2 == 0 # ✅ Corrected
现在该函数通过了所有公共测试,完成了调试阶段。
第二阶段:选择
一旦多个解决方案通过了公开测试,模型必须选择最佳解决方案。这里,S* 引入了自适应输入合成,以避免随机选择:
1. 该模型比较了两种均通过公开测试的解决方案。
2. 它会问自己:“我能否生成一个输入来揭示这些解决方案之间的差异?”
3. 它创建一个新的测试输入并在其上运行两种解决方案。
4. 如果一个解决方案产生了正确的输出而另一个失败了,那么模型会选择更好的一个。
5. 如果两种解决方案的表现相同,模型将随机选择其中一个。
例如,考虑两种不同的实现is_perfect_square(n):
import math
def is_perfect_square_A(n):
return math.isqrt(n) ** 2 == n
def is_perfect_square_B(n):
return math.sqrt(n).is_integer()
两者都通过了提供的简单示例测试用例:
n = 25
print(is_perfect_square_A(n)) # ✅ True (Correct)
print(is_perfect_square_B(n)) # ✅ True (Correct)
但是当 LLM 生成边缘情况时,我们可以看到其中一个会失败,因此在这种情况下模型会选择解决方案 A:
n = 10**16 + 1
print(is_perfect_square_A(n)) # ✅ False (Correct)
print(is_perfect_square_B(n)) # ❌ True (Incorrect)
13. Chain of Draft
Chain of Draft:少写,思考更快(25 Feb, Chain of Draft: Thinking Faster by Writing Less),https://arxiv.org/abs/2502.18600
研究人员观察到,虽然推理 LLM 通常会生成详细的逐步解释,但人类通常依赖仅捕捉基本信息的简洁draft。
受此启发,他们提出了 Chain of Draft (CoD),这是一种提示策略,通过生成最少但信息丰富的中间步骤来减少冗长的内容。因此,从某种意义上说,这是一种推理时间扩展的方法,通过生成更少的 token 来提高推理时间扩展的效率。
从结果来看,CoD 似乎与标准提示一样简短,但与思维链 (CoT) 提示一样准确。正如我之前提到的,在我看来,推理模型的优势之一是用户可以阅读推理痕迹来学习并更好地评估/信任响应。CoD 在一定程度上削弱了这种优势。然而,它可能在不需要冗长的中间步骤的情况下非常有用,因为它可以加快生成速度,同时保持 CoT 的准确性。
14. Dedicated Feedback and Edit Models Empower Inference-Time Scaling for Open-Ended General-Domain Tasks
专用反馈和编辑模型为开放式通用领域任务提供推理时间扩展能力(6 Mar, Dedicated Feedback and Edit Models Empower Inference-Time Scaling for Open-Ended General-Domain Tasks),https://arxiv.org/abs/2503.04378
许多扩展推理时间的推理技术依赖于具有可验证答案的任务(如可检查的数学和代码),这使得它们难以应用于写作和一般问题解决等开放式任务。
为了解决可验证答案的这种限制,研究人员开发了一个系统,其中一个模型生成初始响应,另一个模型提供反馈(“反馈模型”),第三个模型根据该反馈改进响应(“编辑模型”)。
他们使用大量人工注释的响应和反馈数据集来训练这些专门的“反馈”和“编辑”模型。然后这些模型通过在推理时间内生成更好的反馈和进行更有效的编辑来帮助改善响应。
结论
推理时间计算扩展已成为今年最热门的研究课题之一,它可以在不需要修改模型权重的情况下提高大型语言模型的推理能力。
上面总结的许多技术包括从简单的基于标记的干预(如“等待”标记)到复杂的基于搜索和优化的策略(如测试时间偏好优化和关联思维链)。
从总体层面来看,一个反复出现的主题是,与标准方法相比,增加推理计算能力甚至可以让相对较小的模型实现显著的改进(在推理基准上)。
这表明推理策略可以帮助缩小规模较小但更具成本效益的模型与较大模型之间的性能差距。
成本警告
需要注意的是,推理时间扩展会增加推理成本,因此,是否使用具有大量推理扩展的小模型,还是训练更大的模型并使用较少或不使用推理扩展,是一个必须根据模型的使用量来计算的数学问题。
举例来说,使用重度推理时间缩放的 o1 模型实际上仍然比可能不使用推理时间缩放的更大的 GPT-4.5 模型稍微便宜一些。
哪种技术?
然而,推理时间计算扩展并不是灵丹妙药。虽然蒙特卡洛树搜索、自回溯和动态深度扩展等方法可以显著提高推理性能,但其有效性仍然取决于任务和难度。正如一篇早期论文所表明的那样,没有一种推理时间计算扩展技术在所有任务中表现最佳。
此外,许多此类方法都以牺牲响应延迟为代价来提高推理能力,而响应缓慢可能会让某些用户感到厌烦。例如,如果我有简单的任务,我通常会从 o1 切换到 GPT4o,因为它的响应时间更快。
下一步
展望未来,今年我们将看到更多围绕“通过推理时间计算扩展进行推理”研究的两个主要分支的论文:
1. 纯粹以开发达到基准的最佳模型为中心的研究。
2. 关注于平衡不同推理任务之间的成本和性能权衡的研究。
无论哪种方式,推理时间计算扩展的优点在于它可以应用于任何类型的现有 LLM,以使其更好地完成特定任务。
按需思考
在 DeepSeek R1 发布之后,感觉各家公司都在争相为其产品添加推理功能。
一个有趣的发展是,大多数 LLM 提供商开始为用户添加启用或禁用思考的选项。该机制并未公开分享,但它可能是具有回拨推理时间计算扩展的相同模型。
例如,Claude 3.7 Sonnet和Grok 3现在具有用户可以为其模型启用的“思考”功能,而 OpenAI 则要求用户在模型之间切换。例如,如果他们想使用显式推理模型,则可以使用 GPT4o/4.5 和 o1/o3-mini。然而,OpenAI 首席执行官提到,GPT4.5 很可能是他们的最后一个模型,它没有明确的推理或“思考”模式。在开源方面,甚至 IBM 也为他们的Granite 模型添加了一个显式的“思考”切换。
总体而言,无论是通过推理时间还是训练时间计算扩展来增加推理能力的趋势都是 2025 年 LLM 向前迈出的重要一步。
随着时间的推移,预计推理将不再被视为可选或特殊功能,而是成为标准,就像指令微调或 RLHF 调整模型现在成为原始预训练模型的标准一样。
原文链接:
https://magazine.sebastianraschka.com/p/state-of-llm-reasoning-and-inference-scaling
END
欢迎加入Imagination GPU与人工智能交流2群
入群请加小编微信:eetrend77
(添加请备注公司名和职称)
推
荐
阅
读
Imagination与瑞萨携手,重新定义GPU在下一代汽车中的角色
Imagination Technologies 是一家总部位于英国的公司,致力于研发芯片和软件知识产权(IP),基于Imagination IP的产品已在全球数十亿人的电话、汽车、家庭和工作场所中使用。获取更多物联网、智能穿戴、通信、汽车电子、图形图像开发等前沿技术信息,欢迎关注 Imagination Tech!