Jay Alammar:图解DeepSeek-R1


MLNLP社区是国内外知名的机器学习与自然语言处理社区,受众覆盖国内外NLP硕博生、高校老师以及企业研究人员。
社区的愿景是促进国内外自然语言处理,机器学习学术界、产业界和广大爱好者之间的交流和进步,特别是初学者同学们的进步。

DeepSeek 真的火出圈了,ML 大神 Jay Alammar 及时送上一篇好文。英文连接 https://newsletter.languagemodels.co/p/the-illustrated-deepseek-r1

DeepSeek-R1 是人工智能进步浪潮中的最新强音。对于机器学习研究与开发社区而言,这是一次重要发布,原因包括:

  • 它是一个开源权重模型,同时提供了更小、更精炼的版本;

  • 它分享并反思了一种训练方法,用于重现类似 OpenAI O1 的推理模型。

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

目录:

  • 回顾:LLM 的训练方式

  • DeepSeek-R1 的训练配方:

    1. 长推理链的 SFT 数据

    2. 一个中期的高质量推理语言模型(但在非推理任务上的表现较差)

    3. 使用大规模强化学习(RL)创建推理模型
      3.1 面向推理的大规模强化学习(R1-Zero)
      3.2 使用中期推理模型生成 SFT 推理数据
      3.3 通用强化学习训练阶段

  • 架构:大多数理解这种模型工作原理所需的基础知识,可以在我们的书《Hands-On Large Language Models》中找到。

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

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

  1. 语言建模阶段:在这个阶段,我们使用海量网络数据训练模型,以预测下一个词。此阶段的产物是一个基础模型。

  2. 监督微调阶段:通过监督微调,使模型在遵循指令和回答问题方面更加实用。此阶段生成的是一个指令调优模型,或称为监督微调(SFT)模型。

  3. 偏好调优阶段:最后,通过偏好调优进一步优化模型行为,使其与人类偏好更一致,最终得到一个偏好调优的 LLM,用户可以通过 Playground 和应用程序与之交互。

DeepSeek-R1 遵循这一通用方法。第一阶段的细节源自之前关于 DeepSeek-V3 模型的论文。R1 使用了那篇论文中的基础模型(而不是最终的 DeepSeek-V3 模型),并同样经历了 SFT 和偏好调优步骤,但其具体实现方式有所不同。

在 R1 的创建过程中,有三点需要特别强调。

这是大量的长链式思维推理示例(多达 60 万个)。这些数据的获取极为困难,并且在人类标注的规模上成本高昂。这也就是为什么创建这些数据的过程成为需要特别强调的第二个重点。

这些数据是由 R1 的前身模型生成的,一个尚未命名但专注于推理的“兄弟”模型。该模型的灵感来源于一个名为 R1-Zero 的第三个模型(稍后我们会讨论)。它的意义不在于它本身是一个优秀的 LLM,而在于它的创建过程仅需少量标注数据,并结合大规模强化学习,从而生成了一个在解决推理问题上表现出色的模型。

随后,这个专注推理的模型输出结果可以被用来训练一个更加通用的模型,使其在执行其他非推理任务时,也能达到用户对 LLM 的期望水平。

它分成两步:

在这里,强化学习(RL)被用来创建中期推理模型。随后,该模型被用于生成 SFT 推理示例。而使得创建这个模型成为可能的,是一个早期实验中开发的名为 DeepSeek-R1-Zero 的模型。

R1-Zero 的特别之处在于,它无需标注的 SFT 训练集就能够在推理任务中表现出色。它的训练过程直接从一个预训练的基础模型开始,通过强化学习(RL)训练完成(没有经过 SFT 步骤)。它的表现如此出色,以至于可以与 O1 媲美。

这点意义重大,因为数据一直是推动机器学习模型能力的燃料。那么,这个模型如何能够摆脱这种历史呢?这指向了两个关键因素:

  1. 现代基础模型已经跨越了某个质量和能力的阈值(例如,这个基础模型是在 14.8 万亿高质量 token 上训练的)。

  2. 与通用聊天或写作请求不同,推理问题可以通过自动化方式进行验证或标注。以下是一个例子来说明这一点,这可以是 RL 训练步骤中的一个提示/问题:

“编写 Python 代码,接收一个数字列表,将其按顺序排序,但在列表开头添加 42。”


像这样的问题天然适合多种自动化验证方式。例如,当我们将问题呈现给正在训练的模型时,它可能会生成一个答案。然后,我们可以通过以下方式进行验证:

  • 使用软件代码检查器(linter)验证生成的代码是否是正确的 Python 代码。

  • 执行生成的 Python 代码,检查它是否能够成功运行。

  • 使用其他现代编程 LLM 生成单元测试,验证代码是否实现了预期功能(即使这些 LLM 本身并非推理专家)。

  • 更进一步,我们可以测量代码的执行时间,并使训练过程偏向于更高效的解决方案——即便这些解决方案只是多个正确的 Python 实现之一。

在训练过程中,我们可以向模型提供类似的问题,并生成多个可能的解决方案进行评估。

我们可以自动检查(无需人工干预)并得出以下结论:

  • 第一个生成结果甚至不是代码。

  • 第二个结果确实是 Python 代码,但并未解决问题。

  • 第三个是一个可能的解决方案,但未通过单元测试。

  • 第四个则是一个正确的解决方案。

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

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

与这种能力的提升相对应的是生成的回应长度,模型生成更多的思维 token 来处理问题。

这个过程是有效的,但尽管 R1-Zero 在推理问题上得分很高,它仍然面临一些其他问题,使得它的可用性不如预期。

尽管 DeepSeek-R1-Zero 展示了强大的推理能力,并能够自主发展出意想不到且强大的推理行为,但它也面临一些问题。例如,DeepSeek-R1-Zero 在可读性差和语言混杂等方面存在困难。

R1 旨在成为一个更易用的模型。因此,R1 并不像 R1-Zero 那样完全依赖于强化学习过程,而是如前所述,在两个地方得到了应用:

  1. 创建一个中期推理模型,用于生成 SFT 数据点。

  2. 训练 R1 模型,以改进推理和非推理问题的表现(使用其他类型的验证器)。

为了使中期推理模型更具实用性,它在几千个推理问题的示例上进行监督微调(SFT)训练(其中一些是从 R1-Zero 生成并过滤出来的)。论文将此称为“冷启动数据”。

冷启动:与 DeepSeek-R1-Zero 不同,为了防止基础模型在强化学习训练的初期阶段出现不稳定的冷启动问题,对于 DeepSeek-R1,我们构建并收集了一小部分长链推理(CoT)数据,以微调模型作为初始的 RL 行为者。为了收集这些数据,我们探索了几种方法:使用少量示例提示(few-shot prompting)来提供长链推理作为示范,直接提示模型生成详细的答案,并进行反思和验证,收集 DeepSeek-R1-Zero 输出的可读格式,并通过人工标注者进行后处理以改进结果。

等等,如果我们已经有了这些数据,为什么还要依赖强化学习过程呢?原因在于数据的规模。这个数据集可能只有 5,000 个示例(这是可以获取的),但要训练 R1,实际上需要 600,000 个示例。这个中期模型弥补了这一差距,并允许我们合成生成这些极为宝贵的数据。

如果你对监督微调(SFT)的概念不熟悉,它是通过将训练示例以提示和正确完成的形式呈现给模型来进行的过程。以下是第 12 章中的一张图,展示了几个 SFT 训练示例:

这使得 R1 在推理任务以及其他非推理任务中都能表现出色。这个过程类似于我们之前看到的强化学习(RL)过程。但由于它扩展到了非推理应用,因此对于这些应用的提示,它使用了一个帮助性和安全性的奖励模型(与 Llama 模型类似)。

就像 GPT-2 和 GPT-3 初期的模型一样,DeepSeek-R1 是由一堆 Transformer 解码器块堆叠而成。它由 61 个解码器块组成,其中前三个是密集层(dense layers),其余的是混合专家层(mixture-of-experts layers)(可以参考我合著者 Maarten 的精彩入门指南:A Visual Guide to Mixture of Experts (MoE))。

在模型维度大小和其他超参数方面,它们如下所示:

关于模型架构的更多细节可以参见他们之前的两篇论文:

  • DeepSeek-V3 技术报告

  • DeepSeekMoE: Towards Ultimate Expert Specialization in Mixture-of-Experts Language Models

通过这些信息,你现在应该对 DeepSeek-R1 模型有了基本的直观理解。

参考资料:

  • DeepSeek R1’s recipe to replicate o1 and the future of reasoning LMs by

  • A Visual Guide to Mixture of Experts (MoE) 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

  • Putting RL back in RLHF

(文:机器学习算法与自然语言处理)

欢迎分享

发表评论