原文信息
本文还是翻译自Jay Alammar,我已经翻译过这位大佬很多文章了,并且好几篇被认证过了(他的原文会有翻译版本链接直接指向我的博客)。
原文地址:The Illustrated DeepSeek-R1 - by Jay Alammar

AI大模型蓬勃发展,各个厂家百花齐放。在AI持续发展的历程中,deepseek是一个重要的节点。对机器学习研发圈来说,它的意义重大,原因包括:
- 开源权重,还有更小型、精简的版本,
- 分享并展示了如何复现类似 OpenAI O1 这样的推理模型的训练方法。
回顾一下:大语言模型(LLM)是如何训练的
和大多数现有的大语言模型一样,DeepSeek-R1 也是一次生成一个 token(词元),不过它在解决数学和推理问题上表现得更出色,因为它用充足的时间生成思维token解释其思路,也就是花更多时间思考问题,从而推理得更深入,以此来处理问题。

下面这张图展示了训练一个高质量大语言模型的三个关键步骤:

-
语言建模阶段:这一步是用海量的网上收集的数据训练模型去预测下一个词,训练出的就是基础模型(base model)。
-
有监督微调阶段:通过人工标注的数据对模型进行进一步训练,让它更擅长理解指令、回答问题。这一步产出的就是"指令微调模型",也叫 SFT 模型(Supervised Fine-Tuning)。
-
偏好微调阶段:最后,我们会对模型进行"人类偏好对齐",也就是根据用户更喜欢的回答风格继续优化模型行为,得出的就是我们在各种应用和平台上实际使用的版本------"偏好对齐模型"(preference-tuned LLM)。
DeepSeek-R1 的训练方法
DeepSeek-R1 遵循了我们上文提到的那套训练范式。不过,它在第一步语言建模不是训练了一个新模型,而是用的是之前 DeepSeek-V3 论文中提到的 base model(基础模型),注意不是最终版本的 DeepSeek-V3那个模型。R1 也进行了第二步的 SFT(有监督微调)和第三步的偏好微调,但它的特别之处在于这些阶段采用了不同的策略。

在 R1 模型的训练过程中,有三点亮点:
1. 长链式推理的 SFT 数据
R1 使用了大量的链式思维推理数据,总共有 60 万条长链式推理示例。这类高质量推理过程数据通常要用人工标注,因此非常稀缺且昂贵。
因此如何构造出这些数据也成为了第二个亮点。

2. 中间产出的高质量推理模型(但不擅长其他任务)
这些推理数据并不是人工标注出来的,而是由一个没有正式命名的R1前身模型生成的,这个模型专门擅长推理任务。其灵感来源于另一个模型,叫做 R1-Zero(我们稍后会介绍)。
这个推理模型的价值,不在于它能直接用于交互,而在于它 只用了很少的人类标注数据 + 大规模强化学习,就能产出高质量推理数据,从而大幅提升最终模型的推理能力。
然后,研究人员就可以用这个推理专家模型生成的数据,再去训练一个更通用的模型,既能推理,也能完成日常各种任务,达到用户对 LLM 的期待。

3. 通过大规模强化学习打造推理模型
这部分训练一共分两个阶段:
3.1 大规模推理导向的强化学习(R1-Zero)
在这一阶段,研究人员利用强化学习(RL)来训练一个中间版本的"推理专家"模型。这个模型接下来会被用来生成 SFT 阶段所需的大量推理数据。而之所以能做到这点,关键在于之前一个叫做 DeepSeek-R1-Zero 的实验模型。

R1-Zero 的特别之处在于,能在没有任何SFT标注数据的情况下,跳过SFT步骤,直接通过强化学习从基础模型进化出强大的推理能力。而它的推理表现甚至可以和 OpenAI 的 o1 模型媲美。

这背后非常有意义,因为我们以前一直认为数据是提升模型能力的"燃料",那为什么 R1-Zero 能突破这条"历史定律"?
主要有两个原因:
-
现代基础模型已经足够强大 ,R1-Zero 所用的基础模型,训练数据量为14.8 万亿个高质量 token,本身能力已经非常强。
-
推理类任务可以自动验证对错,不像闲聊或写文章那样主观。比如:
示例:推理问题的自动验证
假如在训练步骤中有这样一个提示词/问题:
写一段 Python 代码,接收一个数字列表,返回排好序的结果,并在最前面加上 42。
像这样的问题其实非常适合做自动验证。比如我们把这个问题喂给正在训练的模型,它生成了一个回答之后,我们可以用很多办法来判断它是否靠谱:
- 用代码检查工具(linter) ,看看这段代码语法是不是合法的 Python;
- 直接运行代码,验证它能不能顺利执行;
- 让其他编程类的大模型来自动生成单元测试,验证功能是不是正确------这些模型本身不一定擅长推理,但能写测试;
- 我们甚至还能再进一步,测一下代码的运行效率,在多个正确答案中更偏向性能更好的那一个。
我们可以在训练过程中把类似的问题提供给模型,让它生成多个可能的答案。

然后我们可以自动化检查这些答案(不用人手参与):
- 第一个答案不是代码,直接淘汰;
- 第二个是代码,但不是 Python,不合要求;
- 第三个看起来像是正确答案,但跑不过单元测试;
- 第四个是一个符合预期的正确解决方案。

将这些判断结果直接用于改进模型。这当然不是靠举的这一两个例子完成的,而是在成千上万个类似的样本中,通过 mini-batch 和不断迭代的方式持续优化模型。

正是这些奖励信号和模型更新机制,让模型在强化学习的过程中不断提升任务完成能力,如下图。

随着模型推理能力的提升,它生成的回答长度也会相应变长。这是因为模型在处理问题时,会生成更多的"思考 token"来一步步表达自己的推理过程。

这个训练过程确实很有价值,但 R1-Zero 模型虽然在推理类问题上得分很高 ,却也暴露出一些实用性上的短板,导致它并没有那么"好用" 。
Although DeepSeek-R1-Zero exhibits strong reasoning capabilities and autonomously develops unexpected and powerful reasoning behaviors, it faces several issues. For instance, DeepSeek-R1-Zero struggles with challenges like poor readability, and language mixing.
尽管 DeepSeek-R1-Zero 展现出了非常强的推理能力,甚至能自主涌现出一些出人意料、非常厉害的推理行为,但它还是存在不少问题,比如:
- 可读性差,输出内容晦涩不清,让人难以理解;
- 中英文夹杂严重,对用户体验造成困扰。
所以,DeepSeek 团队打造的 R1 模型目标是更好用 。为此,他们没有像训练 R1-Zero 那样 完全依赖强化学习(RL) ,而是把 RL 用在两个关键环节:
- 先训练一个中间版本的"推理专家"模型,用来自动生成大量高质量的 SFT(监督微调)数据;
- 再训练最终的 R1 模型,让它在推理类任务和非推理类任务上都能表现良好,这时候会结合各种验证手段进行优化.

3.2 用中间模型构造SFT推理数据
为了让这个中间版本的推理模型更有用,研究团队给它做了一轮监督微调(SFT) 训练,使用的是几千条推理类问题的示例(其中一部分是从 R1-Zero 生成后筛选出来的高质量数据)。
论文把这批数据称为 "冷启动数据(cold start data) "。
2.3.1. Cold Start
Unlike DeepSeek-R1-Zero, to prevent the early unstable cold start phase of RL training from the base model, for DeepSeek-R1 we construct and collect a small amount of long CoT data to fine-tune the model as the initial RL actor. To collect such data, we have explored several approaches: using few-shot prompting with a long CoT as an example, directly prompting models to generate detailed answers with reflection and verification, gathering DeepSeek-R1- Zero outputs in a readable format, and refining the results through post-processing by human annotators.
2.3.1 冷启动(Cold Start)
和 DeepSeek-R1-Zero 不同,为了避免直接从基础模型启动强化学习(RL)时出现的不稳定问题,DeepSeek-R1 在 RL 开始之前,先构建并收集了一小批长的推理链(CoT, Chain-of-Thought)数据,用于对模型进行一次监督微调(SFT),让它具备基本的推理能力,从而作为 RL 阶段的"初始版本"模型使用。为了收集这批冷启动数据,研究团队尝试了多种方法,包括:使用 few-shot 提示,即在 prompt 中示范几个长推理链示例;直接用 prompt 引导模型生成带有反思和验证过程的详细回答;从 DeepSeek-R1-Zero 的输出中筛选出可读性较好的答案;让人工标注人员对模型生成的回答进行后处理和质量提升。

那等等,我们既然已经有了这批数据,为什么还要用强化学习(RL)呢? 原因就在于数据的规模不够。 这批"冷启动"数据大概只有 5,000 条 ,对于训练像 R1 这样的高质量模型来说,大约需要60万 。而这个中间推理模型正是用来弥合这个差距 的,它通过强化学习掌握了推理能力后,可以自动生成大量高质量的链式思考(CoT)数据,从而大大减少人工标注的需求,节省成本,提高效率。

如果你对 监督微调(SFT, Supervised Fine-Tuning) 这个概念还不熟悉,可以简单理解为:SFT 就是把问题+正确答案一起给模型,告诉它遇到这样的输入,该输出什么样的结果。如下图:

3.3 通用强化学习阶段
这一阶段的强化学习(RL)训练,使得 R1 不仅在推理类任务 上表现出色,同时也能很好地处理非推理类任务。这个阶段的流程和前面提到的 RL 类似,但它不再局限于"推理问题",而是覆盖各种实际应用场景,引入了两个新的奖励模型(reward models)来引导训练方向:
-
Helpful reward model(有帮助程度奖励模型)
用于评估模型输出是否对用户有用,是否有帮助,是否准确回答了问题。
-
Safety reward model(安全性奖励模型)
用于判断模型输出是否安全,是否避免了有害内容、偏见、敏感词等问题。
这个设计思路和 Meta 的 Llama 系列模型 很相似,通过"奖励驱动"的训练方式,让模型不断调整自己的输出倾向,在保证回答能力的同时,也符合用户期待的实用性和安全性标准。

模型架构
DeepSeek-R1 的架构延续了 GPT 系列(比如 GPT-2 和 GPT-3)以来的经典做法,由一层层 Transformer 解码器模块 堆叠起来的。DeepSeek-R1 一共有 61 层 Transformer 模块。前 3 层 是标准的 稠密(dense)层 。从第 4 层开始到第 61 层 ,采用的是 MoE(Mixture of Experts,专家混合结构)
👉 想更直观理解 MoE可以参考作者 Maarten 的可视化讲解文章:A Visual Guide to Mixture of Experts (MoE)。

模型的维度大小和其他超参数大致如下:

更多关于模型架构的详细信息,可以参考他们之前的两篇论文:
结论
结合以上内容,你现在应该对 DeepSeek-R1 这款模型有了一个比较清晰的直观理解。

其他推荐资源:
-
DeepSeek R1's recipe to replicate o1 and the future of reasoning LMs by
-
Sasha Rush's YouTube video Speculations on Test-Time Scaling (o1)
-
Yannis Kilcher's DeepSeekMath: Pushing the Limits of Mathematical Reasoning in Open Language Models (Paper Explained)
-
Open R1 is the HuggingFace project to openly reproduce DeepSeek-R1
-
While reading this paper, the Galactica paper from 2022 came to mind. It had a lot of great ideas including a dedicated thinking token.