问小白 wenxiaobai
资讯
历史
科技
环境与自然
成长
游戏
财经
文学与艺术
美食
健康
家居
文化
情感
汽车
三农
军事
旅行
运动
教育
生活
星座命理

图解 DeepSeek-R1

创作时间:
作者:
@小白创作中心

图解 DeepSeek-R1

引用
腾讯
1.
https://view.inews.qq.com/a/20250214A05QXM00

DeepSeek-R1是人工智能领域的重要进展,它不仅是一个开放权重模型,还分享并应用了一种训练方法,以重现像OpenAI O1这样的推理模型。本文将详细介绍DeepSeek-R1的训练过程和架构,帮助读者深入了解这一重要模型。

DeepSeek-R1是人工智能稳步发展过程中最新的一记强音。对于ML研发社区来说,这是一个颇为重要的版本,原因包括:

  • 它是一个开放权重模型,有一些较小、精简的版本,并且
  • 它分享并应用了一种训练方法,以重现像OpenAI O1这样的推理模型。

在这篇文章中,我们将了解它是如何构建的。

内容

  • 回顾:如何训练LLM
  • DeepSeek-R1训练配方
  • 1-长链推理SFT数据
  • 2-暂用高质量推理LLM(但在非推理任务中表现较差)
  • 3-使用大规模强化学习(RL)创建推理模型
  • 3.1-大规模推理导向强化学习(R1-Zero)
  • 3.2-使用暂用推理模型创建SFT推理数据
  • 3.3-一般RL训练阶段
  • 架构

了解此类模型如何运作所需的大部分基础知识都可以在我们的电子书《动手实践大型语言模型(https://github.com/handsOnLLM/Hands-On-Large-Language-Models)》中找到。

1. 回顾:LLM的训练方式

与大多数现有LLM一样,DeepSeek-R1一次生成一个token,但它更擅长解决数学和推理问题,因为它能够花更多时间,通过生成解释其思维链的思考token来处理问题。

下图来自我们书的第12章,展示了通过三个步骤创建高质量LLM的一般方法:

  1. 语言建模步骤,我们使用大量网络数据训练模型,以使其预测下一个单词。这一步骤会生成一个基础模型。
  2. 监督微调步骤,使模型更好地遵循指令和回答问题。此步骤生成一个指令调整模型或监督微调/SFT模型。
  3. 最后是偏好微调步骤,进一步完善其行为并使其符合人类偏好,从而生成最终的偏好微调LLM,你可以在演示Playground和应用上与之交互。

2. DeepSeek-R1训练配方

DeepSeek-R1遵循这个通用配方。第一步的细节来自前一篇关于DeepSeek-V3模型的论文(https://arxiv.org/pdf/2412.19437v1)。R1使用的是前一篇论文中的基础模型(而不是最终生成的DeepSeek-v3模型),并且也经过了SFT和偏好微调步骤,但执行步骤的具体细节有所不同。

在R1创建过程中,有三个特别之处需要强调。

3. 长链推理SFT数据

上图是一个大样本长链思维推理示例(600,000个)。这些示例很难获得,而且在这种规模下用人工标记的成本非常高。这就是为什么创建它们的过程是第二个需要强调的特殊之处。

4. 一个暂用的高质量推理LLM(但在非推理任务方面表现较差)

这些数据是由R1的一个前身创建的,R1的前身是一个未命名的兄弟版本,专门设计用于推理任务。这个兄弟模型的灵感来自第三个模型R1-Zero(我们将很快讨论它)。它之所以重要,并不是因为它是一个很棒的LLM,而是因为创建它只需要很少的标记数据以及大规模强化学习即可,这样就做出来了一个擅长解决推理问题的模型。

然后就可以使用这个未命名的专业推理模型的输出来训练一个更通用的模型,新的模型也可以执行其他非推理任务,并达到用户对LLM的期望水平。

5. 使用大规模强化学习(RL)创建推理模型

这分为两个步骤:

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

在这里,RL用于创建一个暂用推理模型。然后使用该模型生成SFT推理示例。为了创建这个模型还在早期做了一个实验,该实验创建了一个名为DeepSeek-R1-Zero的早期模型。

R1-Zero之所以特殊,是因为它能够在没有使用标记的SFT训练集的情况下出色地完成推理任务。它的训练直接从一个预训练的基础模型开始,经过RL训练过程(没有SFT步骤)。它做得非常好,以至于可以与o1相提并论。

这样的做法非常亮眼,因为数据一直是ML模型能力的燃料。这个模型如何摆脱这一局限?这里有两点:

  • 现代基础模型已经跨越了一定的质量和能力门槛(这个基础模型是在14.8万亿个高质量token上训练的)。
  • 与一般的聊天或写作请求相比,推理问题可以自动验证或标记。我们用一个例子来展示这一点。

示例:推理问题的自动验证

下面可以是作为这个RL训练步骤一部分的一个提示/问题:

编写Python代码,获取一个包含很多数字的列表,按大小顺序返回它们,但要在开头添加数字42。

像这样的问题可以通过多种方式进行自动验证。假设我们将这个问题提交给正在训练的模型,它会生成一个代码补全:

  • 软件linter可以检查补全是否是正确的Python代码
  • 我们可以执行Python代码来查看它是否能正确运行
  • 其他现代编程LLM可以创建单元测试来验证所需的行为(无需自己成为推理专家)。
  • 我们甚至可以更进一步测量执行时间,并使训练过程优先选择性能更高的解决方案——即使其他解决方案也是可以正确解决问题的Python程序。

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

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

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

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

与这种能力改进相对应的是生成的响应的长度,其中模型会生成更多的思考token来处理问题。

这个过程很有用,但尽管R1-Zero模型在这些推理问题上得分很高,它也存在其他一些问题,使其可用性不及预期。

虽然DeepSeek-R1-Zero表现出强大的推理能力,并自主开发出了意想不到的强大推理行为,但它面临着几个问题。例如,DeepSeek-R1-Zero面临着可读性差和语言混合等挑战。

R1的设计目标是成为一个更可用的模型。因此,我们不必完全依赖RL过程,只需在本节前面提到的两个地方使用它即可:

  • 创建一个暂用推理模型以生成SFT数据点
  • 训练R1模型以改进推理和非推理问题(使用其他类型的验证器)

3.2 使用暂用推理模型创建SFT推理数据

为了使暂用推理模型更有用,它会基于几千个推理问题示例(其中一些是从R1-Zero生成和过滤的)进行监督微调(SFT)训练步骤。本文将其称为“冷启动数据”

2.3.1. 冷启动与DeepSeek-R1-Zero不同,为了防止基础模型出现RL训练早期不稳定的冷启动阶段,对于DeepSeek-R1,我们构建并收集少量长CoT数据来微调模型,使其作为初始RL参与者。为了收集此类数据,我们探索了几种方法:使用具有长CoT的少样本提示作为示例,直接提示模型生成带有反射和验证的详细答案,以可读格式收集DeepSeek-R1-Zero输出,并通过人工注释者的后处理来完善结果。

但如果我们已经有了这些数据,那为什么还要依赖RL过程呢?这是因为数据的规模。这个数据集可能有5,000个示例(差不多),但要训练R1需要600,000个示例。这个暂用模型弥补了这一差距,并能合成生成极有价值的数据。

如果你不熟悉监督微调(SFT)的概念,这里提一下它是以提示和正确补全的形式向模型提供训练示例的过程。第12章中的这张图展示了几个SFT训练示例:

3.3 通用RL训练阶段

这一步让R1能够擅长推理以及其他非推理任务。该过程类似于我们之前看到的RL过程。但由于它扩展到了非推理应用程序上,因此它利用了有用性和安全奖励模型(与Llama模型不同)来处理属于这些应用程序的提示。

6. 架构

就模型维度大小和其他超参数而言,它们是这个样子:

有关模型架构的更多细节,请参阅他们之前的两篇论文:

7. 总结

这篇文章应该能让你对DeepSeek-R1模型有了基本的认知。

© 2023 北京元石科技有限公司 ◎ 京公网安备 11010802042949号