著名 AI 研究者和博主 Sebastian Raschka 又更新博客了。这一次,他将立足于 DeepSeek 技术报告,介绍用于构建推理模型的四种主要方法,也就是如何通过推理能力来增强 LLM。Sebastian Raschka 表示:「我希望这能提供有价值的见解,并帮助你了解围绕这一主题的快速演变的文献和话题炒作。」
原文地址:https://sebastianraschka.com/blog/2025/understanding-reasoning-llms.html
2024 年,LLM 领域的专业化程度不断提高。除了预训练和微调之外,我们还见证了从 RAG 到代码助手等专业应用的兴起。我预计这一趋势将在 2025 年加速,也就是更加重视特定于具体领域和应用的优化(即专业化 /specialization)。
第 1-3 阶段是开发 LLM 的常见步骤。第 4 阶段是针对具体用例对 LLM 进行专门化。
开发推理模型就是一种专业化。这能让 LLM 更擅长处理复杂任务 —— 解决这些任务时最好使用中间步骤,例子包括解答谜题、高级数学和编程难题。但是,这种专业化并不能取代其他 LLM 应用。因为将 LLM 转换为推理模型也会带来某些缺点,我将在后面讨论。
如何定义「推理模型」?
如果你在 AI(或广义上的机器学习)领域内工作,你可能已经很了解相关定义的模糊性了。「推理模型(reasoning model)」这个术语也不例外。最终,有人会在一篇论文中正式定义它,但却又会在下一篇论文中重新定义它,如此连绵不断。
本文将「推理」定义为回答需要复杂、多步骤生成和中间步骤的问题的过程。例如,像「法国首都是哪里?」这样的事实性问答不需要推理。相比之下,像「如果一列火车以 60 英里 / 小时的速度行驶 3 小时,它会行驶多远?」这样的问题需要一些简单的推理 —— 它需要识别距离、速度和时间之间的关系,方能得出答案。
常规的 LLM 可能只提供简短的答案(如左图所示),而推理模型通常包括揭示部分思维过程的中间步骤。(请注意,许多没有专门为推理任务开发的 LLM 也能在其答案中提供中间推理步骤。)
大多数现代 LLM 都具有基本的推理能力,可以回答诸如「如果一列火车以 60 英里 / 小时的速度行驶 3 小时,它会行驶多远?」这样的问题。因此,今天当我们提到推理模型时,我们通常指的是擅长更复杂推理任务的 LLM,例如解决谜题、谜语和数学证明。
此外,如今大多数被称为推理模型的 LLM 都将「思维」或「思考」过程作为其响应的一部分。LLM 是否以及如何真正「思考」则是另一个话题了。
推理模型中的中间步骤可以两种方式出现。第一种,中间步骤可能显式地出现在响应中,如上图所示。第二种,一些推理 LLM(例如 OpenAI o1)则会运行多个迭代,中间步骤对用户来说是不可见的。
使用「推理」的两个不同层级:1)通过多个中间步骤处理输入和生成结果,2)将某种形式的推理放在响应中提供给用户。
什么时候应该使用推理模型?
现在我们已经定义了推理模型,接下来讨论更有趣的部分:如何构建和改进用于推理任务的 LLM。然而,在深入研究技术细节之前,重要的是思考何时才真正需要推理模型。
我们什么时候需要推理模型?推理模型擅长解决复杂任务,例如解决难题、高级数学问题和高难度编程任务。但是,对于总结、翻译或基于知识的问答等简单任务,它们并不是必需的。事实上,如果你将推理模型用于所有事情,则可能遭遇低效率和高成本问题。例如,推理模型通常使用起来更昂贵、更冗长,有时由于「过度思考」而更容易出错。很容易理解:为了完成任务,需要使用正确的工具(或 LLM 类型)。
下图总结了推理模型的主要优势和局限性。
推理模型的主要优势和劣势。
推理模式的优势:
- 演绎或归纳推理(例如解密、数学证明)
- 思维链推理(分解成多步骤问题)
- 复杂的决策任务
- 能更好地泛化到新问题
推理模式的劣势:
- 快速且低成本的响应(更多推理时间)
- 基于知识的任务(幻觉)
- 简单任务(过度思考)
简要了解 DeepSeek 训练流程
在下一节讨论构建和改进推理模型的四种主要方法之前,这里简要概述一下 DeepSeek R1 的工作流程 —— 信息来源是 DeepSeek R1 技术报告。该报告既是一个有趣的案例研究,也可作为一份开发推理 LLM 的蓝图。
请注意,DeepSeek 并没有发布单一的 R1 推理模型,而是发布了三个不同的变体:DeepSeek-R1-Zero、DeepSeek-R1 和 DeepSeek-R1-Distill。
根据其技术报告中的描述,我在下图中总结了这些模型的开发过程。
DeepSeek R1 技术报告中讨论的三种不同推理模型的开发过程。
接下来,我们简单过一遍上图所示的流程。下一节将介绍更多细节 —— 将讨论构建和改进推理模型的四种主要方法。
(1) DeepSeek-R1-Zero:该模型基于 2024 年 12 月发布的 671B 预训练版 DeepSeek-V3 基础模型。该研究团队使用强化学习(RL)对其进行了训练,并提供了两种类型的奖励。这种方法被称为「冷启动(cold start)」训练,因为它不包括监督微调(SFT)步骤,而这通常是基于人类反馈的强化学习(RLHF)的一部分。
(2) DeepSeek-R1:这是 DeepSeek 的旗舰推理模型,基于 DeepSeek-R1-Zero 而构建。该团队使用了额外的 SFT 阶段和进一步的 RL 训练对其进行了进一步微调,从而在「冷启动」的 R1-Zero 模型基础上实现了提升。
(3) DeepSeek-R1-Distill:DeepSeek 团队利用前面步骤生成的 SFT 数据对 Qwen 和 Llama 模型进行了微调,以增强其推理能力。虽然这不是传统意义上的蒸馏,但这个过程也确实是在较大的 DeepSeek-R1 671B 模型的输出上训练较小的模型(Llama 8B 和 70B,以及 Qwen 1.5B-30B)。
构建和改进推理模型的 4 种主要方法
下面将概述当前用于增强 LLM 推理能力和构建专门的推理模型(如 DeepSeek-R1、OpenAI 的 o1 和 o3 等)的关键技术。
注意:OpenAI 并未详细说明 o1 和 o3 的具体工作原理。然而,据传它们组合式地利用了推理和训练技术。
1. 推理时间扩展
提高 LLM 推理能力(或任何能力)的一种方法是推理时间扩展(inference-time scaling)。这个术语可以有多种含义,但在这里,它指的是在推理过程中增加计算资源以提高输出质量。
做个粗略的类比:人类在解决复杂问题时,如果给他更多时间,得到的答案往往会更好。类似地,我们可以应用一些技术来鼓励 LLM 在生成答案时更多地「思考」。(不过 LLM 究竟是否真的会「思考」还有待讨论。)
推理时间扩展的一种直接简单的方法是巧妙的提示词工程。一个典型的例子是思维链(CoT)提示方法,即在输入的提示词中包含「think step by step」等短语。这能鼓励模型生成中间推理步骤,而不是直接跳到最终答案,这通常(但并不一定)可以在更复杂的问题上得到更准确的结果。(请注意,对于更简单的基于知识的问题,例如「法国的首都是什么」,采用这种策略是没有意义的,这又是一个很好的经验法则,可以找出推理模型是否对给定的输入查询有用。)
一个经典 CoT 提示示例,来自论文《Large Language Models are Zero-Shot Reasoners》
上述 CoT 方法可被视为一种推理时间扩展,因为它会生成更多输出 token,使推理的成本也会更高。
推理时间扩展的另一种方法是使用投票和搜索策略。一个简单的例子是多数投票 —— 让 LLM 生成多个答案,然后我们通过多数投票选择正确的答案。同样,我们可以使用集束搜索和其他搜索算法来生成更好的响应。
这里强烈推荐一篇论文:
论文标题:Scaling LLM Test-Time Compute Optimally can be More Effective than Scaling Model Parameters
论文地址:https://arxiv.org/pdf/2408.03314
不同的基于搜索的方法依赖于基于过程奖励的模型来选择最佳答案。
DeepSeek R1 技术报告指出其模型没有使用推理时间扩展。然而,这种技术通常在 LLM 之上的应用层实现,因此 DeepSeek 有可能会在其应用中使用它。
我猜想 OpenAI 的 o1 和 o3 模型使用了推理时间扩展,这可以解释为什么它们与 GPT-4o 等模型相比相对昂贵。除了推理时间扩展之外,o1 和 o3 可能使用类似于 DeepSeek R1 使用的 RL 流程进行训练。下面两节将详细介绍强化学习。
2. 纯 RL
DeepSeek R1 论文的亮点之一是他们发现推理是纯 RL 涌现出的一种行为。让我们更详细地探讨一下这意味着什么。
如前所述,DeepSeek 开发了三种类型的 R1 模型。第一个 DeepSeek-R1-Zero 建立在 DeepSeek-V3 基础模型之上,这是他们于 2024 年 12 月发布的标准预训练 LLM。与典型的 RL 流程不同(即在 RL 之前应用监督微调(SFT)),DeepSeek-R1-Zero 仅使用 RL 进行训练,没有初始 SFT 阶段,如下图所示。
DeepSeek-R1-Zero 模型的开发过程。
尽管如此,这种 RL 过程类似于常用的 RLHF 方法,后者通常应用于偏好微调 LLM。更多详情可参阅《LLM 成功不可或缺的基石:RLHF 及其替代技术》。但是,如上所述,DeepSeek-R1-Zero 的主要区别在于他们跳过了用于指令调整的监督微调(SFT)阶段。这就是他们将其称为「纯」RL 的原因。(不过需要指出,LLM 背景下的 RL 与传统 RL 有很大不同。)
对于奖励,他们没有使用根据人类偏好训练的奖励模型,而是采用了两种类型的奖励:准确度奖励和格式奖励。
- 准确度奖励使用 LeetCode 编译器来验证编码答案,并使用确定性系统来评估数学响应。
- 格式奖励依靠 LLM 评判员来确保响应遵循预期格式,例如将推理步骤放在标签内。
令人惊讶的是,这种方法足以让 LLM 发展出基本的推理技能。研究人员观察到了一个「啊哈!」时刻,尽管没有经过明确的训练,但模型开始在其响应中生成推理痕迹,如下图所示。
DeepSeek R1 技术报告展示的「啊哈」时刻,https://arxiv.org/abs/2501.12948
虽然 R1-Zero 并不是表现最好的推理模型,但它确实通过生成中间的「思考」步骤展示了推理能力,如上图所示。这证实了使用纯 RL 开发推理模型是可能的,DeepSeek 团队是第一个展示(或至少发布)这种方法的团队。
3. 监督微调加强化学习(SFT + RL)
接下来,让我们看看 DeepSeek 的旗舰推理模型 DeepSeek-R1 的开发过程,这可作为构建推理模型的蓝图。其方法是通过结合额外的 SFT 和 RL 来改进 DeepSeek-R1-Zero,以提高其推理性能。
请注意,在 RL 之前包含 SFT 阶段实际上很常见,如标准 RLHF 流程那样。OpenAI o1 很可能就使用了类似的方法。
DeepSeek-R1 模型的开发过程。
如上图所示,DeepSeek 团队使用 DeepSeek-R1-Zero 生成了所谓的「冷启动」SFT 数据。术语「冷启动」指的是这些数据是由 DeepSeek-R1-Zero 生成的,而 DeepSeek-R1-Zero 本身并未接受过任何 SFT 数据的训练。
DeepSeek 随后使用此冷启动 SFT 数据通过指令微调训练模型,然后进行另一个 RL 阶段。此 RL 阶段保留了 DeepSeek-R1-Zero RL 过程中使用的相同准确度和格式奖励。不过,他们还添加了一致性奖励以防止语言混合 —— 当模型在响应中在多种语言之间切换时就会发生这种情况。
RL 阶段之后是另一轮 SFT 数据收集。在此阶段,使用最新的模型检查点生成 600K 思维链 SFT 样本,同时使用 DeepSeek-V3 基础模型创建另外 200K 基于知识的 SFT 样本。
然后将这些 600K + 200K SFT 样本用于另一轮 RL。在此阶段,他们再次使用基于规则的方法对数学和编程问题进行准确度奖励,而对其他问题类型使用人类偏好标签。
最终模型 DeepSeek-R1 由于增加了 SFT 和 RL 阶段,性能在 DeepSeek-R1-Zero 基础上有了明显提升,如下表所示。
OpenAI o1 和 DeepSeek R1 模型的基准评测结果比较,来自 DeepSeek-R1 技术报告。
4. 纯监督微调(SFT)和蒸馏
到目前为止,我们已经介绍了构建和改进推理模型的三种主要方法:
- 推理时间扩展,这是一种无需训练或以其他方式修改底层模型即可提高推理能力的技术。
- 纯 RL,如 DeepSeek-R1-Zero,它表明推理可以在没有监督微调的情况下成为一种学习行为。
- SFT + RL,这得到了 DeepSeek 的旗舰推理模型 DeepSeek-R1。
那么,还有什么方法?模型「蒸馏」。
令人惊讶的是,DeepSeek 还发布了通过所谓「蒸馏」过程训练的较小模型。然而,在 LLM 语境中,蒸馏并不一定遵循深度学习中使用的经典知识蒸馏方法。传统上,在知识蒸馏中,较小的学生模型在较大的教师模型和目标数据集的 logits 上进行训练。
相反,这里的蒸馏是指在较大的 LLM 生成的 SFT 数据集上对较小的 LLM(例如 Llama 8B 和 70B 以及 Qwen 2.5 模型(0.5B 到 32B))进行指令微调。具体来说,这些较大的 LLM 是 DeepSeek-V3 和 DeepSeek-R1 的中间检查点。事实上,用于此蒸馏过程的 SFT 数据与用于训练 DeepSeek-R1 的数据集相同,如上一节所述。
下图中突出展示了蒸馏部分。
蒸馏版 DeepSeek R1 模型的开发过程。
他们为什么要开发这些蒸馏模型?我认为有两个主要原因:
较小的模型效率更高。这意味着它们运行起来更便宜,但它们也可以在低端硬件上运行,这对许多像我一样的研究人员和修补匠来说尤其有趣。
纯 SFT 案例研究。这些蒸馏模型可作为有趣的基准,展示纯监督微调 (SFT) 在没有 RL 的情况下可以让模型走多远。
下表比较了这些蒸馏模型与其他流行模型以及 DeepSeek-R1-Zero 和 DeepSeek-R1 的性能。
蒸馏模型与非蒸馏模型的基准比较。注释图来自 DeepSeek-R1 技术报告。
我们可以看到,蒸馏后的模型明显弱于 DeepSeek-R1,但与 DeepSeek-R1-Zero 相比,它们却出奇地强大,尽管规模小了几个数量级。值得注意的是,这些模型与 o1 mini 相比,表现非常好(我怀疑 o1-mini 本身可能是 o1 的一个类似的蒸馏版本)。
在结束本节之前,还有一个有趣的比较值得一提。DeepSeek 团队测试了 DeepSeek-R1-Zero 中出现的涌现推理行为是否也会出现在较小的模型中。为了研究这一点,他们将 DeepSeek-R1-Zero 中相同的纯 RL 方法直接应用于 Qwen-32B。
下表展示了实验的结果,其中 QwQ-32B-Preview 是千问团队基于 Qwen 2.5 32B 开发的参考推理模型(我认为训练细节从未披露过)。此比较提供了一些额外的洞察,即纯 RL 是否可以在比 DeepSeek-R1-Zero 小得多的模型中引导推理能力。
在较小的 32B 模型上对蒸馏和 RL 进行基准比较。注释图来自 DeepSeek-R1 技术报告。
有趣的是,结果表明,对于较小的模型,蒸馏比纯 RL 更有效。这与以下观点一致:单靠 RL 可能不足以在这种规模的模型中产生强大的推理能力,而使用高质量推理数据进行 SFT 在使用小模型时可能是一种更有效的策略。
为了完整性,查看表格中的其他比较将会很有用:
- Qwen-32B 使用 SFT + RL 进行训练,类似于 DeepSeek-R1 的开发方式。这将有助于确定当 RL 与 SFT 结合时,与纯 RL 和纯 SFT 相比可以取得多大的改进。
- DeepSeek-V3 使用纯 SFT 进行训练,与创建蒸馏模型的方式类似。这样可以直接比较,看看 RL + SFT 相对于纯 SFT 的效果如何。
总结
本节探讨了构建和改进推理模型的四种不同策略:
- 推理时间扩展不需要额外的训练,但会增加推理成本,随着用户数量或查询量的增加,大规模部署的成本会更高。不过,对于已经很强大的模型来说,提高性能仍然是明智之举。我强烈怀疑 o1 利用了推理时间扩展,这有助于解释为什么与 DeepSeek-R1 相比,它在每 token 基础上的成本更高。
- 纯 RL 对于研究目标来说很有趣,因为它可以提供推理作为一种涌现行为的洞察。然而,在实际的模型开发中,RL + SFT 是首选方法,因为它可以产生更强大的推理模型。我强烈怀疑 o1 也是使用 RL + SFT 进行训练的。更准确地说,我相信 o1 从比 DeepSeek-R1 更弱、更小的基础模型开始,但通过 RL + SFT 和推理时间扩展进行了补偿。
- 如上所述,RL + SFT 是构建高性能推理模型的关键方法。DeepSeek-R1 是一个很好的蓝图,展示了如何做到这一点。
- 蒸馏是一种有吸引力的方法,尤其是用于创建更小、更高效的模型。然而,蒸馏的局限性在于它不会推动创新或产生下一代推理模型。例如,蒸馏总是依赖于现有的、更强大的模型来生成监督微调 (SFT) 数据。
我预计接下来会看到的一个有趣的方面是将 RL + SFT(方法 3)与推理时间扩展(方法 1)相结合。
这很可能是 OpenAI o1 正在做的事情,只不过它可能基于比 DeepSeek-R1 更弱的基础模型,这解释了为什么 DeepSeek-R1 表现如此出色,同时在推理时间上保持相对低的成本。
关于 DeepSeek R1 的思考
最近几周,很多人都问我对 DeepSeek-R1 模型的看法。
简而言之,我认为它们是一项了不起的成就。作为一名研究工程师,我特别欣赏这份详细的技术报告,它提供了我可以从中学习的方法论见解。
最令人着迷的收获之一是:推理可以基于纯 RL 涌现出来。令人印象深刻的是,DeepSeek 已根据宽松的 MIT 开源许可证对其模型进行了开源,该许可证的限制甚至比 Meta 的 Llama 模型还要少。
1. 与 o1 相比如何?
DeepSeek-R1 比 o1 好吗?我认为两者大致相同。然而,最突出的是 DeepSeek-R1 在推理时间上更高效。这表明 DeepSeek 可能在训练过程中投入了更多,而 OpenAI 可能更多地依赖于 o1 的推理时间扩展。
尽管如此,很难直接比较 o1 和 DeepSeek-R1,因为 OpenAI 尚未披露有关 o1 的太多信息。
例如,我们不知道一些信息:
- o1 也是 MoE 吗?
- o1 有多大?
- o1 可能只是 GPT-4o 的稍微改进版本,具有最少的 RL + SFT 和仅广泛的推理时间扩展吗?
如果不知道这些细节,直接比较就是驴唇不对马嘴了。
2. 训练 DeepSeek-R1 的成本
另一个讨论点是开发 DeepSeek-R1 的成本。有人提到训练成本约为 600 万美元,但他们可能将 DeepSeek-V3(去年 12 月发布的基础模型)和 DeepSeek-R1 混为一谈。
600 万美元的估算是基于每 GPU 小时 2 美元的假设以及 DeepSeek-V3 最终训练运行所需的 GPU 小时数,该估算最初于 2024 年 12 月进行讨论。
然而,DeepSeek 团队从未透露 R1 的具体 GPU 小时数或开发成本,因此任何成本估算都还只是纯粹的猜测。
无论如何,最终 DeepSeek-R1 成为了开放权重推理模型的一个重要里程碑,并且其推理时的效率使其成为 OpenAI o1 的一个有趣替代品。
在有限的预算下开发推理模型
开发 DeepSeek-R1 级推理模型可能需要数十万到数百万美元,即使从像 DeepSeek-V3 这样的开放权重基础模型开始也是如此。对于预算有限的研究人员或工程师来说,这可能会令人沮丧。
1. 好消息:蒸馏可以发挥很大的作用
幸运的是,模型蒸馏提供了一种更具成本效益的替代方案。DeepSeek 团队通过 R1 蒸馏模型证明了这一点,尽管其比 DeepSeek-R1 小得多,但推理性能却出奇地强大。然而,即使是这种方法也并不完全便宜。他们的蒸馏过程使用了 800K SFT 样本,这需要大量计算。
有趣的是,就在 DeepSeek-R1 发布前几天,我偶然看到了一篇关于 Sky-T1 的文章,这是一个令人着迷的项目,一个小团队仅使用 17K 的 SFT 样本训练了一个开放权重 32B 模型。
总成本是多少?仅需 450 美元,这比大多数 AI 会议的注册费还低。
这个例子表明,尽管大规模训练仍然昂贵,但较小规模、有针对性的微调工作仍然可以以极低的成本产生出色的结果。
图源:《Sky-T1:在 450 美元以内训练你自己的 O1 预览模型》一文。https://novasky-ai.github.io/posts/sky-t1/
根据他们的基准测试,Sky-T1 的表现与 OpenAI o1 大致相当,考虑到其低廉的训练成本,这一表现令人印象深刻。
2. 预算内的纯 RL:TinyZero
虽然 Sky-T1 专注于模型蒸馏,但我也在「纯 RL」领域发现了一些有趣的工作。一个值得注意的例子是 TinyZero,这是一个 3B 参数模型,它复制了 DeepSeek-R1-Zero 方法(附注:训练成本不到 30 美元)。
令人惊讶的是,即使只有 3B 参数,TinyZero 也表现出一些涌现的自我验证能力,这支持了推理可以通过纯 RL 涌现的想法,即使在小模型中也是如此。
TinyZero 库提到研究报告仍在进行中,我一定会密切关注更多细节。
TinyZero 库 (https://github.com/Jiayi-Pan/TinyZero) 中的一张图片表明该模型能够进行自我验证。(相比之下,看看基础模型的回复会很有趣。)
上述两个项目表明,即使预算有限,也可以在推理模型上开展有趣的工作。虽然这两种方法都复现了 DeepSeek-R1 的方法,一种专注于纯 RL(TinyZero),另一种专注于纯 SFT(Sky-T1),但探索如何进一步扩展这些想法将非常有趣。
3. 超越传统 SFT:旅程学习
去年我偶然发现一种特别有趣的方法,论文《O1 Replication Journey: A Strategic Progress Report – Part 1》中对此进行了描述。尽管标题如此,但该论文实际上并没有复制 o1。相反,它介绍了一种改进蒸馏(纯 SFT)过程的另一种方法。
论文的核心思想是用「旅程学习」替代「捷径学习」。
- 捷径学习是指指令微调的传统方法,其中仅使用正确的解决方案路径来训练模型。
- 另一方面,旅程学习也包括错误的解决路径,让模型从错误中学习。
这种方法与 TinyZero 的纯 RL 训练中观察到的自我验证能力有点相似,但它专注于完全通过 SFT 改进模型。通过让模型接触错误的推理路径及其修正,旅程学习还可以增强自我修正能力,从而可能通过这种方式使推理模型更加可靠。
与传统的捷径学习不同,旅程学习在 SFT 数据中包含了错误的解决方案路径。注释图来自 https://arxiv.org/abs/2410.18982
这可能是未来工作的一个令人兴奋的方向,特别是对于低预算推理模型开发,因为基于 RL 的方法在计算上可能不切实际。
无论如何,推理模型方面目前正在发生很多有趣的工作,我相信我们将在接下来的几个月里看到更多令人兴奋的成果!