DeepSeek-R1 技术解析:训练流程与架构设计详解
DeepSeek-R1 是人工智能进步浪潮中的最新强音。对于机器学习研究与开发社区而言,这是一次重要发布,原因包括它是一个开源权重模型,同时提供了更小、更精炼的版本;它分享并反思了一种训练方法,用于重现类似 OpenAI O1 的推理模型。
在这篇文章中,我们将深入了解它是如何构建的,以及其背后的技术原理。
回顾:LLM 的训练方式
与现有的大多数 LLM 一样,DeepSeek-R1 也是一次生成一个 token,不同的是,它在解决数学和推理问题时表现尤为出色,因为它能够通过生成'思考 token'来解释其思维链,从而花更多时间处理问题。
下图展示了通过三个步骤创建高质量 LLM 的通用方法:
- 语言建模阶段:在这个阶段,我们使用海量网络数据训练模型,以预测下一个词。此阶段的产物是一个基础模型(Base Model)。
- 监督微调阶段:通过监督微调(SFT),使模型在遵循指令和回答问题方面更加实用。此阶段生成的是一个指令调优模型,或称为 SFT 模型。
- 偏好调优阶段:最后,通过偏好调优进一步优化模型行为,使其与人类偏好更一致,最终得到一个偏好调优的 LLM,用户可以通过 Playground 和应用程序与之交互。
DeepSeek-R1 遵循这一通用方法。第一阶段的细节源自之前关于 DeepSeek-V3 模型的论文。R1 使用了那篇论文中的基础模型(而不是最终的 DeepSeek-V3 模型),并同样经历了 SFT 和偏好调优步骤,但其具体实现方式有所不同。
DeepSeek-R1 的训练配方
在 R1 的创建过程中,有三点需要特别强调:
1. 长推理链的 SFT 数据
这是大量的长链式思维推理示例(多达 60 万个)。这些数据的获取极为困难,并且在人类标注的规模上成本高昂。这也就是为什么创建这些数据的过程成为需要特别强调的重点。
这些数据是由 R1 的前身模型生成的,一个尚未命名但专注于推理的'兄弟'模型。该模型的灵感来源于一个名为 R1-Zero 的第三个模型。它的意义不在于它本身是一个优秀的 LLM,而在于它的创建过程仅需少量标注数据,并结合大规模强化学习,从而生成了一个在解决推理问题上表现出色的模型。
随后,这个专注推理的模型输出结果可以被用来训练一个更加通用的模型,使其在执行其他非推理任务时,也能达到用户对 LLM 的期望水平。
2. 中期的高质量推理语言模型
它分成两步:首先利用强化学习(RL)创建中期推理模型,随后该模型被用于生成 SFT 推理示例。而使得创建这个模型成为可能的,是一个早期实验中开发的名为 DeepSeek-R1-Zero 的模型。
R1-Zero 的特别之处在于,它无需标注的 SFT 训练集就能够在推理任务中表现出色。它的训练过程直接从一个预训练的基础模型开始,通过强化学习(RL)训练完成(没有经过 SFT 步骤)。它的表现如此出色,以至于可以与 O1 媲美。
这点意义重大,因为数据一直是推动机器学习模型能力的燃料。那么,这个模型如何能够摆脱这种历史呢?这指向了两个关键因素:
- 现代基础模型已经跨越了某个质量和能力的阈值(例如,这个基础模型是在 14.8 万亿高质量 token 上训练的)。
- 与通用聊天或写作请求不同,推理问题可以通过自动化方式进行验证或标注。
以下是一个例子来说明这一点,这可以是 RL 训练步骤中的一个提示/问题:
# 编写 Python 代码,接收一个数字列表,将其按顺序排序,但在列表开头添加 42。
def add_42_and_sort(numbers):
numbers.sort()
numbers.insert(0, 42)
return numbers
像这样的问题天然适合多种自动化验证方式。例如,当我们将问题呈现给正在训练的模型时,它可能会生成一个答案。然后,我们可以通过以下方式进行验证:
- 使用软件代码检查器(linter)验证生成的代码是否是正确的 Python 代码。
- 执行生成的 Python 代码,检查它是否能够成功运行。


