请注意,这张图片包含了相关的内容或信息。具体详情请查看图片。
DeepSeek-R1 是人工智能稳步进展中的最新亮点。对于机器学习研究和开发领域的专业人士来说,其重要性不言而喻。
这是一个开放权重的模型,有更小的简化版本等。
它分享并讨论了一种训练方法,用于复制类似于OpenAI O1的推理模型。
这篇文章里,我们会看到它是怎么建成的。
翻译 : 中文版, 韩文, 土耳其文 (欢迎将帖子翻译成您所在的语言,并将链接发送给我,我会在这里加上。)
内容:
-
快速回顾:大语言模型是怎么被训练出来的
-
深索 R1 训练方案
-
1- 长的推理链条, SFT 数据
- 2- 暂时的高质量的推理模型(但在非推理任务上表现不佳)。
- 使用大规模的强化学习(RL)构建推理模型
-
3.1- 大规模推理导向的强化学习(简称R1-Zero)
利用中间推理模型创建SFT推理数据
-
3.3- 一般的RL训练期
- 建筑
你所需要了解此类模型工作原理的基础知识大多可以在我们写的书《实战大型语言模型》中找到。更多详情请参阅:Hands-On Large Language Models。
回顾:如何训练大型语言模型和大多数现有的大型语言模型一样,DeepSeek-R1 一次生成一个 token,但它在解决数学和逻辑推理问题上特别擅长,因为它可以在生成解释其思考路径的 token 时,花更多时间来处理问题。
如下图表来自我们书的第12章,展示了通过三个步骤来创建高质量的LLM。
如图所示,点击此处查看图片。
通过利用大量网络数据训练模型来预测下一个词,这一步骤构建了一个基础语言模型。
2) 一个监督微调过程,使模型在遵循指令和回答问题方面的表现更实用。这一步骤会产出一个指令精调模型或称为监督微调/SFT模型,。
3) 最后是一个偏好调优步骤,进一步优化其行为并使之更符合人类偏好,从而得到经过偏好调优的大型语言模型,你可以在这些游戏平台和应用程序上与它互动。
深索R1 训练指南DeepSeek-R1 遵循这个通用的步骤。第一步的细节则来自关于 DeepSeek-V3 模型的先前论文(链接)。该论文中的 base 模型(而非最终的 DeepSeek-v3 模型),并继续进行 SFT 和偏好调整步骤,但具体如何执行这些步骤有所不同。
在R1的创建过程中,有三件特别的事情值得注意。
- SFT 数据的长推理链
这是一大批长链思维推理示例(共有600,000个)。这些示例不易获得,且在这个规模上人工标注成本极高。这就是为什么创建这些示例的过程特别引人注目,是第二点值得关注的地方。
2 一个暂时的高质量的推理型LLM(但在非推理任务上表现较弱)。
这个数据是由一个称为R1前身的模型生成的,这个模型专注于推理。这个模型受到了一个名为_R1-Zero_的第三个模型的启发(我们稍后将讨论这个模型)。它并不在于它是一个出色的大规模语言模型,而在于创建它所需的标注数据量非常少,并且同时利用大规模的强化学习,最终形成了一个非常擅长解决推理问题的模型。
这个未命名的专业推理模型的输出结果可以用来训练一个更通用的模型,这个模型还能做其他非推理类的工作,并且能达到用户对大语言模型的期望水平。
3- 使用大规模强化学习(RL),来构建推断模型
这事儿分两步。
点击图片可查看详细内容。
3.1 大规模推理导向的强化学习(R1-Zero)
在这里,RL用于创建中间推理模型。然后利用这个模型生成SFT推理示例。使这一模型的创建成为可能的是一个早期实验,该实验创建了一个名为_DeepSeek-R1-Zero_的早期版本。
R1-Zero 是特殊的,因为它能够在没有标签数据的 SFT 训练集的情况下,在推理任务上表现出色。其训练直接从预训练的基础模型开始,通过强化学习过程进行(无需 SFT 步骤)。它表现得如此出色,几乎可以与 o1 媲美。
这很有意义,因为数据一直是驱动机器学习模型能力的燃料。这个模型如何才能打破这一历史惯例?这表明了两件事:
1- 现代基础模型已经达到了一定的质量和能力水平(这个基础模型是在14.8万亿高质量标记上训练而成的)。
2- 相比之下,推理题可以自动验证或标注,而一般的聊天或写作任务则不可以。下面我们通过一个例子来说明这一点。
例子:推理问题的自动验证过程
这可以是该步骤中的一部分提示或问题,以保持与源文本中的术语一致性。
写一个 Python 代码片段,接收一个数字列表,将数字列表排序后返回,并在列表最前面加上 42。
这类问题非常适合自动检查,有多种方法可以使用。假设我们将这个问题给正在训练的模型,模型会生成一个完成。
-
一个 linter 可以检查代码补全是否合规范,而不是简单地判断是不是正确的 Python 语法。
-
我们可以,运行这段Python代码,看看它能不能运行。
-
其他现代的编码LLMs可以编写单元测试来验证期望的行为表现(并不需要它们自己是推理专家)。
- 我们还可以更进一步,测量执行时间来让训练过程更偏好性能更高的解决方案,即使这些程序是正确解决问题的 Python 程序。
我们可以将这类问题在训练过程中向模型提出,并生成多种可能的答案。
如图
我们可以自动检查(无需人工干预)并发现第一个完成的甚至都不是代码。第二个是代码,但并不是Python语言的代码。第三个可能是一个解决方案,但单元测试未通过,而第四个才是正确的。
这些都是可以直接用来提升模型的信号。这通常是在多个示例(即小批量数据中)并在后续的训练步骤中完成的。
这些奖励信号和模型的更新是模型在任务上持续改进的方法,如图2所示。
随着这个能力的提升,生成的回答会变得更长,模型会生成更多的思考过程来解决问题。
这种方法很有用,但R1-Zero模型尽管在这些推理问题上得分很高,仍然面临其他问题,使其不如预期那样实用。
尽管DeepSeek-R1-Zero具备强大的推理能力,并能自主发展出一些意想不到且强大的推理行为,但同时也遇到了一些问题。例如,DeepSeek-R1-Zero在诸如较差的可读性以及语言混杂的问题上存在困难。
R1旨在成为一个更易用的模型,因此并未完全依赖于强化学习过程,而是在我们之前提到的两个地方被采用了。
创建一个临时推理模型,用于生成SFT数据点
我们可以通过训练R1模型来提高处理推理和非推理问题的能力(通过使用其他类型的验证器)。
3.2 用中间推理模型生成SFT推理数据
为了使中间推理模型更实用,它会通过几千个推理问题示例进行SFT监督微调训练(其中一些是通过R1-Zero生成和筛选出来的)。论文称这为冷启动样本。
2.3.1. 冷启动
为了避免基础模型在RL训练初期的不稳定冷启动阶段,与DeepSeek-R1-Zero不同,对于DeepSeek-R1,我们构建并收集了一点长CoT数据来对模型进行微调,作为初始的RL代理。为了收集这样的数据,我们探索了几种方法:使用少量长CoT示例进行提示,直接让模型生成包含反思和验证的详细答案,整理DeepSeek-R1-Zero的输出,使其更易于阅读,并通过人工标注者的后期处理来进一步精炼结果。
但是等等,如果我们已经有了这些数据,为什么还要依赖于强化学习过程呢?这是因为数据规模的问题。这个数据集可能只有5,000个例子,但是训练R1需要600,000个例子。这个中间模型填补了这一差距,并允许我们合成生成极其宝贵的数据。
这是一张图片。
如果你是第一次听说监督微调(SFT),这个过程就是向模型提供训练示例,以提示和正确的完成的形式。第12章中的图展示了一些SFT训练示例:
3.3 强化学习训练期
这使得R1在推理任务和其他非推理任务中表现出色。这个过程类似于我们之前看到的强化学习过程。但由于它扩展到了非推理应用领域,它利用了一个有用性和安全性奖励模型来评估这些应用的提示,类似于Llama模型。
建筑就像之前的模型一样,从GPT2和GPT 3的诞生之初开始,DeepSeek-R1是由61个Transformer解码器块堆叠而成的。它由61个这样的块组成。前三个是密集的层,但其余的是混合专家层(参见我的合著者Maarten的入门指南:专家混合(MoE)的视觉指南)。
关于模型的尺寸和维度以及其他超参数,它们是这样的。
更多关于该模型架构的细节在他们之前的两篇论文中介绍:
最后
有了这个,你应该能够理解DeepSeek-R1模型的主要概念。
图片
如果你觉得需要更多基础知识来理解这篇帖子,我建议你阅读《动手实践大型语言模型》这本书,或者在线阅读O'Reilly上的内容,并在Github上看看相关内容。
其他推荐的资源有比如:
- 关于推理大型语言模型的视觉指南 由...撰写
-
Sasha Rush 的一个 YouTube 视频 关于测试时间缩放的思考
-
Open R1 是 HuggingFace 的一个项目,旨在公开重现 DeepSeek-R1.
- 在阅读这篇论文时,让我想起了Galactica论文(2022年),这篇论文在此处插入链接。它包含了许多很好的想法,其中包括一种专门的思考标记。