URL
type
status
date
slug
summary
tags
category
icon
password
引言
DeepSeek-R1 是 AI 发展的又一重要里程碑,尤其对机器学习(ML)和研究社区而言,它的发布具有以下几个关键意义:
- 它是一个开源权重模型,并提供了更小、更精简的版本。
- 它分享并探讨了一种训练方法,可用于复现类似 OpenAI O1 这样的推理型大模型。
本文将带您深入了解 DeepSeek-R1 的构建过程。
核心内容
- 回顾:大语言模型(LLM)是如何训练的
- DeepSeek-R1 训练方法
- 长链推理 SFT 数据
- 一个高质量的推理模型(但在非推理任务上表现较差)
- 通过大规模强化学习(RL)打造推理模型
- R1-Zero:大规模推理导向的强化学习
- 用中间推理模型生成 SFT 推理数据
- 通用 RL 训练阶段
- 模型架构
- 总结
回顾:大语言模型的训练方式
DeepSeek-R1 的生成方式与大多数 LLM 类似,每次预测一个 token(单词或字符片段)。但它在数学和推理任务上表现突出,因为它能够生成“思维 token”,即用于解释推理过程的额外内容,从而更深入地理解问题。

下图(摘自《Hands-On Large Language Models》第 12 章)展示了训练高质量 LLM 的三个关键步骤:

- 语言建模(Language Modeling)
- 该步骤使用海量互联网数据训练模型,使其能够预测下一个单词。这一阶段的产物被称为基础模型(Base Model)。
- 监督微调(Supervised Fine-Tuning, SFT)
- 通过人工标注数据进一步训练模型,使其更擅长回答问题和执行指令,从而得到指令微调模型(Instruction-Tuned Model),即 SFT 模型。
- 偏好调整(Preference Tuning)
- 进一步优化模型,使其行为更符合人类偏好,最终形成用户在各种 AI 应用和交互界面中体验到的 LLM。
DeepSeek-R1 训练方法
DeepSeek-R1 遵循上述通用方法,但其细节有所不同。它的基础模型源自 DeepSeek-V3,但并未使用最终版本,而是基于最初的基础模型,然后经历 SFT 和偏好调整阶段。
在DeepSeek-R1 训练过程中有三个值得关注的关键点。

1. 长链推理 SFT 数据

DeepSeek-R1 训练了 60 万条 复杂的“思维链”推理示例(Chain-of-Thought, CoT),这些数据非常稀缺,并且人工标注成本极高。因此,如何创建这些数据成为一个关键问题。
2. 一个高质量的推理模型(但在非推理任务上表现较差)
DeepSeek-R1 训练数据部分来自一个“前置推理模型”(Interim Reasoning Model),它是 DeepSeek-R1 的一个兄弟版本,专门用于推理任务。
这个模型的灵感来自 R1-Zero(将在后面讨论)。虽然这个模型不适合作为通用 LLM,但它在极少人工标注数据的情况下,通过大规模强化学习,实现了卓越的推理能力。
然后,我们可以用这个推理专家模型的输出,训练一个更加通用的 LLM,使其既能处理推理任务,也能胜任非推理任务,以满足用户需求。

3. 通过大规模强化学习(RL)打造推理模型
这一过程包括两个关键步骤:

3.1 R1-Zero:大规模推理导向的强化学习
R1-Zero 是一个特殊的推理模型,它的独特之处在于:
- 它没有使用 SFT 训练数据,而是直接从预训练的基础模型出发,通过强化学习(RL)训练。
- 它的推理能力足以媲美 OpenAI O1 级别的模型。

这表明,现代基础模型已经达到了一定的质量和能力门槛(例如,DeepSeek-R1 的基础模型训练使用了 14.8 万亿个高质量 token)。此外,相比于通用聊天任务或写作请求,推理问题可以自动验证,从而减少对人工标注数据的依赖。

示例:自动验证推理任务
假设训练任务是:
编写一个 Python 代码,输入一个数字列表,返回排序后的结果,并在开头添加数字 42。
这种问题可以用多种方法自动验证,例如:
- 语法检查:代码是否符合 Python 语法?
- 可执行性检查:代码是否能正确运行?
- 单元测试:自动化测试是否能验证代码行为?
- 性能优化:是否能生成运行速度更快的代码?
我们可以在训练步骤中向模型提出这样的问题,并生成多种可能的解决方案。

我们可以自动检查(无需人工干预),发现第一个完成甚至不是代码。第二个是代码,但不是 python 代码。第三个是可能的解决方案,但无法通过单元测试,而第四个是正确的解决方案。

这些自动化检查信号可以用于强化学习,使模型在不断优化中提高推理能力。

正如本文图 2 所示,这些奖励信号和模型更新是模型在 RL 训练过程中不断改进任务的方式。

与此功能的提高相对应的是生成响应的长度,即模型生成更多的思考标记来处理问题。

这一过程非常有用,但 R1-Zero 模型尽管在这些推理问题上得分很高,却面临着其他问题,使其可用性低于预期。
尽管DeepSeek-R1-Zero表现出强大的推理能力,并能自主开发出意想不到的强大推理行为,但它也面临着一些问题。例如,DeepSeek-R1-Zero面临着可读性差和语言混杂等难题。
R1 的目的是成为一个更实用的模型。因此,它并不完全依赖于 RL 过程,而是在本节前面提到的两个地方使用:
- 1 创建一个临时推理模型,以生成 SFT 数据点
- 2 训练 R1 模型以改善推理和非推理问题(使用其他类型的验证器)

3.2 用中间推理模型生成 SFT 数据
为了使推理模型更加稳定,DeepSeek-R1 先进行少量 SFT 训练(大约 5000 条数据),然后利用该模型合成 60 万条 训练数据。
2.3.1. 冷启动 与DeepSeek-R1-Zero不同,为了防止从基础模型开始的RL训练出现早期不稳定的冷启动阶段,我们为DeepSeek-R1构建并收集了少量长CoT数据,以微调作为初始RL行为者的模型。 为了收集这些数据,我们探索了几种方法:以长 CoT 为例,使用少量提示;直接提示模型生成带有反思和验证的详细答案;以可读格式收集 DeepSeek-R1- Zero 输出;通过人工注释者的后期处理完善结果。

这一步被称为 冷启动(Cold Start)。初始数据来源包括:
- 使用少样本提示(few-shot prompting)生成推理示例
- 让模型生成详细答案并进行自我验证
- 提取 DeepSeek-R1-Zero 生成的内容,并进行人工后处理
但是,等等,既然我们掌握了这些数据,为什么还要依赖 RL 流程呢?
这是因为数据的规模。尽管 5000 条 SFT 数据可手动标注,但 60 万条数据的规模则需要模型自动生成。
这个临时模型弥补了这一差距,并能综合生成极其宝贵的数据。

如果你对 “监督微调”(Supervised Fine-Tuning,SFT)的概念还不太了解,那么它就是以提示和正确完成的形式向模型提供训练示例的过程。
这张图展示了几个 SFT 训练示例:

3.3 通用 RL 训练阶段
最终,DeepSeek-R1 进入通用强化学习训练,使其不仅能处理推理任务,还能胜任其他非推理任务。例如:
- 帮助性(Helpfulness)奖励模型
- 安全性(Safety)奖励模型
这种方法类似于 Llama 模型的 RL 训练策略,使 DeepSeek-R1 既能推理,也能胜任更广泛的任务。

DeepSeek-R1 的模型架构
DeepSeek-R1 的底层结构依然是 Transformer 解码器(Decoder-Only Transformer),这一点与 GPT-2、GPT-3 以及其他 LLM 相似,由 61 层 Transformer 解码块 组成。其中:
- 前三层是密集层(Dense Layers),即传统的 Transformer 层。
- 其余部分采用专家混合(MoE)层,这意味着并非所有参数在每次计算时都被激活,而是仅启用特定的专家网络,以提高计算效率。

专家混合(MoE)结构的优势
这种 MoE 结构允许模型在不同任务上动态调度计算资源,提高效率。
- 计算资源优化:
- 传统 Transformer 每一层都会激活所有参数,而 MoE 结构只激活部分专家层,从而降低计算开销,提高推理效率。
- 模型能力增强:
- 通过 MoE,模型可以在不同任务上分配不同的专家,使其在推理、对话、代码生成等任务上表现更优。

更多技术细节可参考:
- DeepSeek-V3 技术报告 [查看报告]
- DeepSeekMoE:专家混合语言模型的终极优化 [查看报告]
总结
通过本篇文章,您应该对 DeepSeek-R1 的核心概念有所了解。
DeepSeek-R1 代表了推理型大模型训练的新范式,它通过强化学习、大规模推理数据合成以及专家混合架构,实现了卓越的推理能力和通用性。
对这个话题感兴趣的小伙伴,欢迎加我一起探索交流~
