以 DeepSeek R1 为例学习“推理型大语言模型 [译]

导读: 这是一篇相当棒的科普文章,作者以 DeepSeek R1 为核心案例,围绕“推理型大语言模型(Reasoning LLMs)”这一主题,深入探讨了其定义、应用场景、优劣势及主要实现方法。文章背景是 2024 年以来大型语言模型在专业化方向上的快速发展,尤其在解题、数学证明、代码生成等需要多步推理的复杂任务上,如何用RL(强化学习)和SFT(监督微调)等方法打造“会思考”的模型。文中还详细解读了 DeepSeek R1 模型训练流程,包括纯RL、SFT+RL、以及利用蒸馏将大模型能力迁移到小模型。作者还介绍了一些低成本项目,如 Sky-T1、TinyZero 等,为有限资源下的研究者提供了新思路。通过这一系列方法对比,读者可以全面了解构建推理模型的关键技术、挑战与未来趋势。

理解推理型大语言模型 (Reasoning LLMs)

构建与完善推理模型的方法与策略

本文将介绍构建“推理模型”(即如何增强大语言模型在推理方面的能力)所采用的四种主要方法。我希望这些内容能为你在这个快速发展的研究领域提供有价值的见解,并帮助你更好地理解和应对当下的热潮。

在 2024 年,大语言模型(LLM)领域出现了越来越多的专业化趋势。除了预训练和微调之外,我们还见证了诸多专用应用场景的兴起,从 RAG(Retrieval-Augmented Generation)到代码助手等。我预计到了 2025 年,这一趋势将更加明显,更多领域和应用场景会在基础模型的基础上进行深度优化(“专业化”)。

阶段 1-3 是常见的 LLM 开发流程,阶段 4 则是面向特定用例的专业化。

开发推理模型就是这样一种专业化,即对 LLM 进行精调,使其在那些需要中间推理步骤的复杂任务(如解谜、高级数学或编程挑战)上表现出色。不过,这种专门化并不会取代其他 LLM 应用场景。因为将 LLM 打造成推理模型的同时,也会带来一些缺点,稍后会讨论。

下面是本文将要涉及的内容,供你先行了解:

  1. 说明“推理模型”这一术语的含义

  2. 分析推理模型的优点与不足

  3. 概述 DeepSeek R1 的方法论

  4. 介绍构建与改进推理模型的四种主要思路

  5. 分享对 DeepSeek V3 与 R1 发布后,LLM 生态现状的看法

  6. 给出在预算有限的情况下开发推理模型的建议

希望这些内容能对你有所帮助。随着今年 AI 的高速发展,让我们拭目以待!


“推理模型”是什么?

在 AI(或更广泛的机器学习)领域,许多概念通常定义得不够明确,甚至有争议;“推理模型”也不例外。一个学术论文里可能对它做出正式定义,随后又会被下一个论文重新定义,反复迭代。

在本文中,我将“推理”定义为回答需要多步推理(中间思考步骤)的复杂问题的过程。例如,“法国的首都是哪里?”这类事实问答不涉及推理;但如果是“列车以每小时 60 英里的速度行驶,行驶 3 小时后会走多远?”就需要一些简单的推理,比如把速度、时间和距离关联起来,然后得出答案。

常规的 LLM 可能只给出简短的答案(左侧所示),而推理模型通常会包含中间推理步骤(右侧所示),展现一部分“思考”过程。(注意,很多未在推理任务上专门训练的 LLM 也可以在回答中呈现出一些推理思路。)

如今的大多数 LLM 都具备一定的基本推理能力,能够回答“列车时速 60 英里运行 3 小时走多远?”这类问题。所以,当我们现在谈及“推理模型”时,更常指那些在更复杂的推理任务(如解谜、猜谜或数学证明)上表现突出的 LLM。

另外,大部分被称为“推理模型”的 LLM,回答中通常会包含某种形式的“思考过程”或“思路”。至于它们是否在“真正思考”,这是另一个层面的问题。

在推理模型的回答中,中间推理步骤一般以两种方式呈现:

  1. 直接在最终回答里显示,比如上图示例那样,让用户看到全部推理过程。

  2. 有些推理 LLM(例如 OpenAI 的 o1),会在内部多次迭代,但并不向用户展示这些中间步骤。

“推理”在两个层面上被使用:1)模型在内部处理输入并生成多步推理;2)最终回答中是否显式展现出部分推理过程。


什么时候需要推理模型?

既然我们对推理模型有了初步定义,让我们先思考一个更关键的问题:我们在什么场景下才真的需要推理模型?在深入探讨技术实现前,先想想:什么时候“推理模型”才是合适的选择?

什么情况下应该使用推理模型?
推理模型专门用于应对那些需要复杂中间推理步骤的问题,比如解谜、高级数学题、具有挑战性的编程任务等。然而,对于诸如摘要、翻译、或者依靠知识检索的问答等更简单的任务,就未必需要推理模型了。
事实上,如果把推理模型用在所有场景,往往既低效又昂贵。因为推理模型通常更耗资源、输出也更冗长,有时还可能因为“过度思考”而出现错误。最简单的原则依然是:用对工具、用对类型的 LLM。

以下图总结了推理模型的一些主要优劣势。

推理模型的核心优势与局限。


简要概览 DeepSeek 的训练流程

在介绍构建与改进推理模型的四种方法之前,我想先简单介绍一下 DeepSeek R1 技术报告 中描述的训练流程。一方面,这能当作一个有趣的案例,另一方面也能为如何打造推理型 LLM 提供一个蓝本。

需要注意的是,DeepSeek 并未只发布一个 R1 推理模型,而是一口气推出了三个不同版本:DeepSeek-R1-Zero、DeepSeek-R1 和 DeepSeek-R1-Distill。

他们在技术报告中对这三个模型做了较详细的介绍。下面这张图是我根据报告内容整理出来的流程概览。

DeepSeek 在 R1 技术报告中所讨论的三个推理模型的开发流程示意图。

接下来简要介绍上图中的流程,下一节我们再结合这四种主要构建思路做更深入讨论。

  1. DeepSeek-R1-Zero
    该模型基于 DeepSeek 在 2024 年 12 月发布的 671B 规模预训练基础模型 DeepSeek-V3。团队对其进行强化学习(RL)训练,并使用了两类奖励作为回报信号。由于没有进行监督微调(SFT),也就是常见“RLHF”流程中的 SFT 步骤被跳过,所以他们把这称为“冷启动”的方式(Cold Start)。

  2. DeepSeek-R1
    这是 DeepSeek 的主力推理模型,也是在 DeepSeek-R1-Zero 的基础上进一步引入额外的 SFT 阶段与更多轮的 RL 训练而成,性能优于“冷启动”的 R1-Zero。

  3. DeepSeek-R1-Distill
    他们还用前述训练过程中的 SFT 数据来微调了 Qwen 和 Llama 等较小模型,以提升这些模型的推理能力。虽然他们把这个过程称为“蒸馏”,但并不是传统意义上的知识蒸馏,更像是用大模型的输出数据去监督微调(SFT)小模型(包括 Llama 8B 和 70B,以及 Qwen 1.5B–30B)。


构建与改进推理模型的四种主要方式

本节将介绍当前用来提升 LLM 推理能力、并构建专门推理模型(如 DeepSeek-R1、OpenAI o1 & o3 等)的核心技术路线。

:OpenAI 的 o1 和 o3 模型内部细节并未公开,但据传在推理和训练阶段都可能有类似的思路。


1)推理阶段的扩展(Inference-time scaling)

提升 LLM 推理能力的一种方法是推理阶段的扩展,即在推理时投入更多计算资源,以换取更高质量的输出结果。

形象类比:人类在面对复杂问题时,如果能有更多时间思考,往往会给出更好的答案。对 LLM 来说,我们可以在推理阶段用一些技术,让它“想得更多”,并且产出更高质量的回答。(至于模型是否真的在“思考”,这是另一个话题。)

推理阶段扩展的一种常见做法就是改进提示工程(prompt engineering)。其中的经典例子便是链式思考(Chain-of-Thought, CoT)提示。简单说,就是在输入提示中加入像“分步思考”或“一步一步想”等提示,引导模型产生中间推理步骤,而不是直接给出最终答案。这样往往(但并不总是)能在更复杂的问题上得到更准确的结果。(但对于诸如“法国首都是哪里”之类的简单问题,就没必要这样做——这也再次印证了“用对模型、用对场景”这一原则。)

这是来自 2022 年论文 Large Language Models are Zero-Shot Reasoners 的经典 CoT 提示示例。

上面提到的 CoT,也可以视为一种推理时间扩展方式,因为需要生成更多的输出 Token,自然推理开销也更大。

另一个思路是用投票或搜索策略。最简单的例子是“多数投票”,即让 LLM 生成多个答案,最后以票数最多的答案作为结果。也可以用束搜索(beam search)等搜索算法来生成更优回答。

如果想更详细地了解这类方法,强烈推荐参阅我在另一篇文章中介绍过的 Scaling LLM Test-Time Compute Optimally can be More Effective than Scaling Model Parameters 论文,该文对推理阶段的各种策略有深入分析。

一些基于搜索的推理方法通过对“过程+奖励”进行评估,以选择最佳答案。此图来自 Scaling LLM Test-Time Compute 论文,附有标注。

在 DeepSeek R1 技术报告中提到,他们的模型并未使用推理阶段扩展。不过,在实际应用时,很多 App 层面会加上类似功能,所以不排除 DeepSeek 在他们的应用中用了这个策略。

我个人猜测 OpenAI 的 o1 和 o3 模型中很可能使用了推理阶段扩展,这也能够部分解释为什么它们相较于 GPT-4o 来说价格更昂贵。除了推理阶段扩展,o1 和 o3 也可能在训练阶段采用了类似 DeepSeek R1 的强化学习管线,详情见下文。


2)纯强化学习(Pure Reinforcement Learning, RL)

DeepSeek R1 论文 里最令我印象深刻的一点,是他们发现推理能力可以通过**纯强化学习(RL)**而涌现。具体是怎么做到的呢?

前面提到,DeepSeek 发布了三个 R1 系列模型,其中第一个DeepSeek-R1-Zero是基于基础预训练模型 DeepSeek-V3(671B),并通过纯强化学习训练而来。与常规的 RL 管线相比,他们跳过了最初的 SFT(通常是 RLHF 标准流程的一部分),因此称之为“纯”RL。也就是说没有事先的监督微调,就直接进行 RL。

DeepSeek-R1-Zero 的开发流程示意图。

不过,它跟传统的 RLHF 仍有共同之处,比如会用到奖励模型(reward)来指导训练。只不过,这里DeepSeek-R1-Zero没用人类偏好数据来训练 reward model,而是采用了两种奖励:

  • 准确性奖励:利用 LeetCode 编译器来判定编程答案是否正确,以及用一套确定性系统来判定数学问题回答是否准确。

  • 格式奖励:用一个 LLM 评估器来判断回答的格式是否符合要求,比如推理步骤是否出现在 <think> 标签中等。

令人惊喜的是,这种方式足以让模型学到一些基本的推理能力。研究团队提到在训练中出现了一个“顿悟时刻”(“Aha!”),模型开始在回答里自动生成推理线索,哪怕从来没有专门教它这样做。下图就是论文中展示的例子。

来自 DeepSeek R1 技术报告 的插图,展示了模型突然学会显式生成推理过程的“顿悟时刻”。

虽然 R1-Zero 远称不上最强的推理模型,但它至少能在回答中展示一些中间思路,说明纯 RL 也能赋予模型基本的推理能力——DeepSeek 团队是率先把这一发现发表出来的先驱。


3)监督微调 + 强化学习(SFT + RL)

接下来看看 DeepSeek-R1,也就是 DeepSeek 的旗舰推理模型。它在 DeepSeek-R1-Zero 的基础上,通过额外的监督微调(SFT)与多轮RL,取得了更高的推理水平。

需要指出的是,在 RL 阶段之前先做一轮 SFT,其实是很常见的做法,RLHF 中的标准流程也是如此。推测 OpenAI 的 o1 也很可能采用了类似的做法。

DeepSeek-R1 的开发流程示意图。

如上图所示,DeepSeek 团队先用 R1-Zero 生成了他们称作“冷启动”的 SFT 数据(即来自一个没有经过 SFT 的模型)。基于这批数据,他们进行了指令微调(Instruction Tuning),然后又进行了下一步 RL。此时 RL 使用的奖励类型仍是之前的准确性奖励和格式奖励,只不过多加了一个“语言一致性”奖励,防止模型在回答中中途切换语言。

完成这一步后,又进行了一轮 SFT 数据收集:

  • 用最新的模型检查点,生成了 60 万条带有思维链(Chain-of-Thought,CoT)的 SFT 数据;

  • 另外还用 DeepSeek-V3 基础模型生成了 20 万条知识型 SFT 数据。

接下来,这 80 万条(60 万 + 20 万)数据被再次用于 RL。在这一阶段,数学或编程问题依旧用基于规则的方法来衡量准确度,而对其他问题则采用了人类偏好打分。

最终得到的 DeepSeek-R1,比没经历过额外 SFT+RL 的 R1-Zero 拥有明显更高的推理性能。如下表所示(选自技术报告)。

DeepSeek-R1 技术报告(链接)中,OpenAI A1 与 DeepSeek R1 的基准测试对比。


4)纯监督微调(SFT)与“蒸馏”

前面我们已经讨论了三种思路:

  1. 推理阶段扩展(Inference-time scaling):不需要额外训练模型就能提升推理性能,但会增加推理成本,面对大量用户或高并发时会很贵。不过对于性能需求较高的场景,仍然是“立竿见影”的做法。

  2. 纯强化学习(Pure RL):在理论研究上很有趣,能看出推理能力有“涌现”特性。但在实际应用中,想要获得效果更好的模型,往往是“RL + SFT”结合起来才更理想。

  3. SFT + RL:搭配使用能造就最强推理模型。DeepSeek-R1 可以视为这一思路的蓝本。

那么还剩下什么?答案就是模型“蒸馏”

DeepSeek 也发布了若干更小的模型,并称之为“Distill(蒸馏)版”。不过,需要注意的是,他们所谓的“蒸馏”并不完全等同于传统深度学习里的知识蒸馏(knowledge distillation)。后者通常是让一个小模型去学习大模型输出的logits,并结合原始目标数据来训练。

而在这里,“蒸馏”更像是拿大模型生成的指令数据(SFT 数据)来直接微调小模型,比如 Llama 8B、70B 或 Qwen 系列(0.5B~32B 等)。具体而言,DeepSeek-R1-Distill 所用到的训练数据,正是此前 DeepSeek-R1 与 DeepSeek-V3 产生的那批 SFT 数据。

为了更好理解这个流程,可以看下图中标示的“Distill”部分:

DeepSeek-R1-Distill 各模型的开发流程。

**为什么要做这些蒸馏模型?**我认为有两个主要原因:

  1. 更小的模型更高效,推理成本更低,也更容易部署在普通硬件上,对于研究者或爱好者而言很有吸引力。

  2. 这些模型也相当于一种“只用 SFT 能走多远”的实验对照,可以帮助研究者了解不借助 RL 时,SFT 到什么程度能赋予模型推理能力。

下表比较了这些经过蒸馏的小模型和市面上常见模型的性能,以及它们与 R1-Zero、R1 之间的差距。

DeepSeek-R1 技术报告(链接)中的基准对比,包含蒸馏模型与非蒸馏模型。

结果显示:和 DeepSeek-R1 相比,这些蒸馏模型确实要弱一些,但它们对比 R1-Zero 却表现不错,而且在规模上要小得多。在与 o1 mini 的对比中也很有意思(我猜 o1 mini 本身也许也是类似的蒸馏模型)。

此外,DeepSeek 团队还测试了若干关于小模型“纯 RL 能否诱发推理涌现”的实验——即让 Qwen-32B 也照搬 R1-Zero 的纯 RL 思路来训练。他们把这个模型跟一个参考推理模型 QwQ-32B-Preview(由 Qwen 团队开发,训练细节不公开)做了对比,结果如下表:

DeepSeek-R1 技术报告(链接)中小模型蒸馏与纯 RL 的实验对比。

从结果看,对于较小的模型,纯 RL 并不如“蒸馏”管用。这说明单靠 RL 去训练数十亿参数级的模型,想获得强大的推理能力并不容易;而如果能拿到高质量的 SFT 数据,小模型也能通过纯 SFT 训练获得不错的效果。

若想更全面地对比,我个人倒还想看看:

  1. 直接在 Qwen-32B 上做 SFT + RL(类似 DeepSeek-R1 ),会不会更好?相较纯 RL、纯 SFT 提升有多大?

  2. 在 DeepSeek-V3 上只做纯 SFT,而不结合 RL,最终结果如何?这样能更直接地看出 RL+SFT 比纯 SFT 的增益。


小结

本节讨论了构建与改进推理模型的四种主要技术:

  1. 推理阶段扩展(Inference-time scaling):不用改模型,但推理成本上升。如果用户量和请求量很大,总体费用会很高。尽管如此,它仍是增强已有强大模型的简单高效方法。我很怀疑 o1 中就有用到这种策略,这也是它比 DeepSeek-R1 贵的一个原因。

  2. 纯 RL:研究上有趣,可揭示推理是如何“涌现”的。但在实际开发中,如果要得到强推理能力,通常还是会在 RL 前后配合 SFT。o1 很大概率也是“RL + SFT”做出来的。我推测 o1 的起点可能是一个比 DeepSeek-R1 更弱(或更小)的基础模型,但通过大量 RL+SFT 以及推理阶段扩展来弥补。

  3. RL + SFT:打造性能最强推理模型的关键方法。DeepSeek-R1 的训练思路可作范例。

  4. 蒸馏:即用已训练的大模型产生的 SFT 数据来微调小模型。这样能得到更小、更便宜的推理模型。但要注意,蒸馏本身并不会推动最前沿的能力突破——因为它依赖于一个已经训练好、且更强的大模型来提供数据。

如果将上面第 3 点(RL + SFT)和第 1 点(推理阶段扩展)相结合,大概率会出现一个更强的方案。很多人猜测这正是 OpenAI 在 o1 上的做法,但它也可能仅基于一个较小的底模,所以在推理阶段要花更多算力,因而价格较高。


关于 DeepSeek R1 的一些看法

最近,不少人问我对 DeepSeek-R1 系列模型的看法。简单总结就是:它们堪称一次令人印象深刻的成就。作为研究工程师,我尤其欣赏他们发布的详实技术报告,从中能学到很多实操经验。

其中一个最让我感兴趣的点,就是“纯 RL 也能涌现出一定的推理能力”。另外,DeepSeek 也将这些模型在 MIT 许可下开源,相比 Meta 的 Llama 许可证更宽松,这点也十分难得。

与 o1 的比较

DeepSeek-R1 和 o1 谁更强?我个人感觉两者表现大体在同一层次。但 R1 在推理阶段更高效,说明 DeepSeek 在训练阶段投入了更多功夫,而 o1 可能更多依赖推理时间扩展,因此推理成本会更高。

不过,OpenAI 并未披露 o1 的更多信息,比如:

  • o1 是否是一个 Mixture of Experts(MoE)架构?

  • o1 的参数规模到底多大?

  • o1 可能是 GPT-4o 小修小改后再加上少量 RL+SFT,然后在推理阶段使用大规模算力?

因此,如果没有更多细节,o1 和 DeepSeek-R1 的对比仍然是“苹果和橙子”的比较。

DeepSeek-R1 训练成本

也有人提到它大约花了 600 万美元来训练,但其实很多人把这个数字混淆了:这是当初推算 DeepSeek-V3 训练成本时的估计。而 DeepSeek-R1 并未对外透露任何训练成本或具体 GPU 小时数,这部分也只能是猜测。

不管怎么说,DeepSeek-R1 确实是当前开源可用的推理模型中的里程碑,并且因为推理时效率较高,为它在与 o1 的竞争中增添了不少亮点。


在有限预算下开发推理模型的思考

像 DeepSeek-R1 这样大型推理模型,哪怕只是在开源基础上二次训练,依旧可能花费数十万美元到数百万美元的预算。对于资金不充裕的团队和研究者来说,这似乎让人望而却步。

好消息在于:蒸馏往往可以实现高性价比

正如前面所见,DeepSeek 通过蒸馏方式得到的 R1-Distill 小模型,尽管规模远小于 R1,本身性能也并不差。当然,这种方法也并非“零成本”,毕竟他们也用到了 80 万条 SFT 数据来做微调,对计算资源仍有一定要求。

但实际上,最近也有一些小规模、低成本的有趣项目。比如,就在 DeepSeek-R1 发布前几天,我偶然看到一个 Sky-T1 的案例:他们用仅仅 1.7 万条 SFT 数据,就训练了一个开源 32B 模型,总花费只有 450 美元——这比参加一次 AI 学术会议的注册费还低。

更惊人的是,他们的基准测试显示 Sky-T1 的表现大致可以和 o1 相当。考虑到成本如此之低,这结果相当鼓舞人心。

来自 “Sky-T1: Train your own O1 preview model within $450” 这篇文章中的配图。

低成本“纯 RL”的尝试:TinyZero

如果说 Sky-T1 是在“纯 SFT”方向上的探索,那么还有一些项目则在纯 RL 上做实验。比如 TinyZero——一个 3B 参数大小的模型,用不到 30 美元的计算成本就复制了 DeepSeek-R1-Zero 的思路。

令人好奇的是,这个模型虽然只有 3B 参数,却也在某种程度上表现出了类似“自我验证”的推理能力,这进一步印证了通过纯 RL 也能在小模型里观察到一些推理涌现征兆。

TinyZero 的仓库目前说他们还在整理研究报告,我也会持续关注。

来自 TinyZero 仓库的图片,模型展示了某种“自我验证”能力。(如果能看到基准模型的对比效果会更有意思。)

这两者(Sky-T1、TinyZero)说明:即使没有大公司的预算,也能在推理模型上做出不错的尝试。一个是纯 SFT 思路,一个是纯 RL,都算是对 DeepSeek-R1 思路的复刻或简化。但未来如何把这两种方法结合起来,或者做得更进一步,还很值得探索。

超越传统 SFT:Journey Learning

再提一个我去年看到的有趣思路:论文 O1 Replication Journey: A Strategic Progress Report – Part 1 中介绍了一种名为 “journey learning” 的新方式,尝试在纯 SFT 框架里“学习模型改错”。

  • Shortcut Learning:传统 SFT 中只给模型正确的解决步骤,引导它走捷径;

  • Journey Learning:不仅给正确解法,也包括错误思路和纠正过程,让模型见识更多的完整“解题之旅”。

这在某种程度上与 TinyZero 那种能自我验证的“RL”训练思路有相通之处,但它完全依赖 SFT 数据来实现,不需要 RL。在这种“journey learning”模式中,模型能接触到“错误示例 + 纠正过程”,并学到更多纠正和自我检验的能力,或许能提高推理可靠性。

“Journey learning” 不同于传统 SFT 的“shortcut learning”,它会在训练样本中同时包含正确与错误的推理过程。图片来源:O1 Replication Journey: A Strategic Progress Report – Part 1,带有标注。

对资金有限的人来说,RL 也许并不经济,这种“journey learning” 或许是另一个有潜力的方向。让模型在学习过程中反复看到并纠正错误,有可能为推理能力提供类似 RL 的强化效果。

总之,推理模型的方向上还有很多有趣的研究正在发生。相信在不久的将来,我们会看到更多让人眼前一亮的新方法和成果!