深度解析DeepSeek-R1——打造推理型大模型的配方

文摘   2025-01-29 11:14   安徽  

DeepSeek-R1 是 AI 发展浪潮中最新的一记响亮鼓点。对于机器学习研发社区来说,它的发布意义重大,主要原因包括:

  • 它是一个开源权重模型,并提供了更小的蒸馏版本;

  • 它分享并探讨了一种训练方法,可用于复现类似 OpenAI O1 的推理模型。



在本文中,我们将深入探讨 DeepSeek-R1 的构建过程。


本文目录:

回顾:LLM 训练流程

DeepSeek-R1 训练配方

  1. 长链推理的 SFT 数据

  2. 一个中间产出的高质量推理 LLM(但在非推理任务上表现较差)

  3. 利用大规模强化学习(RL)打造推理模型

  • 3.1 面向推理的大规模强化学习(R1-Zero)

  • 3.2 使用中间推理模型创建 SFT 训练数据

  • 3.3 通用 RL 训练阶段

架构



LLM 是如何训练的  



与大多数现有的 LLM 类似,DeepSeek-R1 也是一次生成一个 token。但它在数学和推理任务上表现尤为出色,因为它能够通过生成“思维 token”来解释其推理链,从而花费更多时间处理问题。


下图展示了构建高质量 LLM 的一般流程,通常包含以下三个步骤:

  1. 语言建模(Language Modeling)
    这一阶段,模型通过大规模的互联网数据进行训练,以预测下一个词。这个过程会产出一个基础模型(Base Model)

  2. 监督微调(Supervised Fine-Tuning, SFT)
    通过人工标注的数据对模型进行微调,使其更擅长遵循指令并回答问题。这个阶段会得到一个指令微调模型(Instruction-Tuned Model),也称为 SFT 模型

  3. 偏好调整(Preference Tuning)
    进一步优化模型行为,使其更符合人类偏好,从而获得最终的偏好调整 LLM(Preference-Tuned LLM),即你在各种 AI 应用和测试环境中与之交互的模型。



DeepSeek-R1 依照这一框架进行训练,并在推理能力上进行了特别优化。




DeepSeek-R1 训练配方  



DeepSeek-R1 遵循了上述通用训练流程。其第一阶段的细节来源于先前的 DeepSeek-V3 论文:

https://arxiv.org/pdf/2412.19437v1


R1 使用了该论文中的基础模型(而非最终的 DeepSeek-V3 模型),并继续进行 SFT(监督微调)和偏好调整训练。但 R1 在这些阶段的方法上有所不同,这正是它的特别之处。



在 R1 的训练过程中,有三个关键点值得特别关注。


1. 长链推理的 SFT 训练数据


R1 训练过程中使用了 60 万个 长链推理(Chain-of-Thought, CoT)示例。这类高质量的推理数据极为稀缺,并且大规模人工标注的成本极高。因此,如何构造这些数据集,成为 R1 的第二个关键点。



2. 一个高质量的推理 LLM(但在非推理任务上表现较差)


这些推理数据由 R1 训练前的一个“前身模型”生成。该模型未被正式命名,专注于推理能力,其灵感来源于另一个模型 R1-Zero(稍后会详细介绍)。


尽管这个模型并不适合作为通用 LLM 使用,但它的特殊之处在于:它仅依靠极少量标注数据,加上大规模强化学习(RL),便能在推理任务上表现卓越。

最终,我们可以利用该推理专家模型的输出,来训练一个更通用的 LLM,使其在非推理任务上也达到用户预期的水平。



3. 通过大规模强化学习(RL)构建推理模型


这个过程分为两个步骤:



3.1 面向推理的大规模强化学习(R1-Zero


在这个阶段,R1-Zero 通过强化学习(RL)直接从预训练的基础模型进化,而不依赖 SFT 训练集。最终,它的推理能力可媲美 OpenAI o1。



这一突破具有重要意义,因为传统 LLM 依赖大规模标注数据,而 R1-Zero 证明了:

  1. 现代基础模型已经达到了足够高的质量门槛(R1-Zero 训练时使用了 14.8 万亿高质量 token)。

  2. 推理任务不同于一般聊天或写作任务,它可以被自动验证,不需要大量人工标注。



例如,在 RL 训练阶段,我们可以让模型完成如下任务:
“编写一个 Python 程序,对列表进行排序,并在开头添加 42。”

这样的问题可以通过自动化方式进行验证:

  • 代码是否符合 Python 语法?(代码检查工具可自动检测)

  • 代码能否正确运行?(执行代码验证)

  • 代码是否满足题目要求?(自动化单元测试)

  • 是否有更高效的实现?(比较运行效率)


在 RL 训练过程中,模型会生成多种可能的答案,我们可以自动筛选出最佳答案,并用于优化模型。这些奖励信号(Reward Signals)推动模型在不断迭代中提升推理能力。


然而,尽管 R1-Zero 在推理任务上表现卓越,它仍然存在可用性问题,例如:

  • 可读性差(生成的文本难以理解)

  • 语言混杂(在不同语言之间切换不稳定)



我们可以在训练步骤中向模型提出这样的问题,并生成多种可能的解决方案。



我们可以自动检查(无需人工干预)并发现第一个补全甚至不是代码。第二个补全确实是 Python 代码,但并没有解决问题。第三个补全是一个可能的解决方案,但未通过单元测试,第四个补全是一个正确的解决方案。



这些都是可以直接用于改进模型的信号。这当然是通过许多示例(小批量)和连续的训练步骤来完成的。



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



与这种能力的提升相对应的是生成响应的长度,其中模型生成更多的思考标记来处理问题。



R1 的目标是构建一个更易用的推理模型,因此 R1-Zero 主要用于两个方面:

  1. 训练一个中间推理模型,用于生成 SFT 训练数据;

  2. 训练最终的 R1 模型,使其在推理和非推理任务上均能表现良好(使用其他类型的验证机制)。



3.2 通过中间推理模型创建 SFT 训练数据


为了使中间推理模型更加稳定,它先经过 SFT 训练,使用了几千个推理问题作为初始数据(其中部分数据来自 R1-Zero)。论文中称之为 “冷启动数据(Cold Start Data)”。



冷启动(Cold Start)

R1-Zero 不同,DeepSeek-R1 通过 SFT 进行冷启动,以避免 RL 训练初期的不稳定性。该数据集由多种方法构建,包括:

  • Few-shot Prompting:利用长链推理示例,引导模型生成答案;

  • 直接提示模型生成详细回答,并进行反思与验证;

  • 收集 R1-Zero 生成的结果,并通过后处理优化可读性;

  • 人工审核,进一步完善数据质量。


但问题在于,虽然这些冷启动数据可行,但规模仍然太小(大约 5000 条)。而 R1 需要 60 万条推理数据!因此,我们使用中间推理模型合成更多训练数据,填补这一空白。



如果你不熟悉 SFT(监督微调),它的核心是向模型提供“提示(Prompt)+ 正确答案(Completion)”的训练样本。



3.3 通用 RL 训练阶段


最终,R1 通过 RL 训练,使其在推理任务和非推理任务上均能表现出色。
与前述 RL 训练不同的是:

  • 这次训练不仅涉及推理任务,还包括更广泛的应用场景;

  • 它引入了“有用性(Helpfulness)”和“安全性(Safety)”奖励模型,类似于 Llama 模型,以提升模型在这些方面的表现。



 



模型架构(Architecture) 



与 GPT-2、GPT-3 等早期模型类似,DeepSeek-R1 采用 Transformer 解码器(Decoder)架构,但有以下特殊之处:

  • 共 61 层 Transformer 块

  • 前三层是全连接(Dense)层,其余部分是专家混合(MoE)层


就模型尺寸大小和其他超参数而言,它们看起来像这样:



R1 的详细超参数和模型结构在以下两篇论文中介绍:

  1. https://arxiv.org/pdf/2412.19437v1

  2. https://arxiv.org/pdf/2401.06066



对澳大利亚劳动者的立法保护  




通过本文,你应该已经掌握了 DeepSeek-R1 的核心训练方法:

  • 它首先训练了一个 推理专家模型(R1-Zero),无需 SFT 训练集,即可在推理任务上表现出色;

  • 它利用 R1-Zero 训练出一个 中间推理模型,用于生成 60 万条 SFT 训练数据;

  • 最终,DeepSeek-R1 结合 强化学习(RL)监督微调(SFT)偏好调整,在推理和非推理任务上都达到了强大性能。

这一训练框架不仅增强了 R1 的推理能力,也提供了一种低成本构建高质量推理 LLM 的新思路。




查阅此前文章:

万万没想到,一家中国量化基金公司年底发布了最强开源LLM:DeepSeek V3

DeepSeek-R1:一款革命性的国产开源推理LLM,挑战OpenAI的高性能模型

DeepSeek-R1发布24小时后,AI行业反应怎么样?

AI制裁无效!DeepSeek-R1、DeepSeek-V3和GRPO论文总结


文章来源:PyTorch研习社




PyTorch研习社
打破知识壁垒,做一名知识的传播者
 最新文章