目录
2- 一个中间的高质量推理大语言模型(但在非推理任务上表现较差)
DeepSeek-R1是人工智能进步稳步前进中最新的重要成果。对于机器学习研发社区来说,它是一个重要的发布,原因包括:
感谢阅读 Language Models & Co.!免费订阅以接收新文章并支持我的工作。
订阅
-
它是一个开放权重模型,有较小的蒸馏版本
-
它分享并反思了一种训练方法,用于复现类似OpenAI O1的推理模型。
在这篇文章中,我们将了解它是如何构建的。
内容:
-
回顾:大型语言模型是如何训练的
-
DeepSeek-R1训练方法
-
1- 长链推理监督微调(SFT)数据
-
2- 一个中间的高质量推理大语言模型(但在非推理任务上表现较差)
-
3- 使用大规模强化学习(RL)创建推理模型
-
3.1- 大规模面向推理的强化学习(R1-Zero)
-
3.2- 使用中间推理模型创建SFT推理数据
-
3.3- 通用RL训练阶段
-
-
架构
回顾:大型语言模型是如何训练的
与大多数现有的大语言模型一样,DeepSeek-R1一次生成一个token,但它在解决数学和推理问题方面表现出色,因为它能够通过生成解释其思维链的思考token来花更多时间处理问题。
下图来自我们书的第12章,展示了通过三个步骤创建高质量大语言模型的一般方法:
-
语言建模步骤,我们使用大量网络数据训练模型预测下一个词。这一步得到一个基础模型。
-
监督微调步骤,使模型更擅长遵循指令和回答问题。这一步得到一个指令调优模型或监督微调(SFT)模型。
-
最后是偏好调优步骤,进一步完善其行为并与人类偏好对齐,得到最终的偏好调优大语言模型,这就是你在playground和应用中交互的模型。
DeepSeek-R1训练方法
DeepSeek-R1遵循这一通用方法。第一步的细节来自之前DeepSeek-V3模型的论文。R1使用该论文中的基础模型(而不是最终的DeepSeek-v3模型),仍然经过SFT和偏好调优步骤,但其执行方式的细节有所不同。
R1创建过程中有三个特别需要强调的地方。
1- 长链推理SFT数据
这是大量长链思维推理示例(60万个)。这些示例很难获得,在这种规模上用人工标注非常昂贵。这就是为什么创建它们的过程是第二个需要强调的特别之处。
2- 一个中间的高质量推理大语言模型(但在非推理任务上表现较差)
这些数据是由R1的前身,一个未命名的专门用于推理的同类模型创建的。这个同类模型受到第三个名为R1-Zero的模型的启发(我们稍后会讨论)。它之所以重要,不是因为它是一个很好的可用大语言模型,而是因为创建它只需要很少的标记数据,同时进行大规模强化学习,就能得到一个擅长解决推理问题的模型。
这个未命名的专门推理模型的输出然后可以用来训练一个更通用的模型,该模型也可以完成其他非推理任务,达到用户对大语言模型的期望水平。
3- 使用大规模强化学习(RL)创建推理模型
这分两步进行:
3.1 大规模面向推理的强化学习(R1-Zero)
在这里,RL用于创建中间推理模型。然后使用该模型生成SFT推理示例。但使创建这个模型成为可能的是之前创建一个名为DeepSeek-R1-Zero的早期模型的实验。
R1-Zero之所以特别,是因为它能够在没有标记的SFT训练集的情况下擅长推理任务。它的训练直接从预训练的基础模型通过RL训练过程进行(没有SFT步骤)。它做得如此之好,以至于可以与o1竞争。
这很重要,因为数据一直是机器学习模型能力的燃料。这个模型如何能够脱离这个历史?这指向两件事:
1- 现代基础模型已经跨越了某个质量和能力的门槛(这个基础模型是在14.8万亿高质量token上训练的)。
2- 推理问题,与一般聊天或写作请求相比,可以自动验证或标记。让我们用一个例子来说明这一点。
示例:推理问题的自动验证
这可以是RL训练步骤中的一个提示/问题:
编写Python代码,接受一个数字列表,以排序顺序返回它们,但也在开头添加42。
像这样的问题可以通过多种方式进行自动验证。假设我们将此呈现给正在训练的模型,它生成一个完成:
-
软件linter可以检查完成是否是正确的Python代码
-
我们可以执行Python代码,看看它是否能运行
-
其他现代编码大语言模型可以创建单元测试来验证所需的行为(它们本身不需要是推理专家)
-
我们甚至可以更进一步,测量执行时间,并使训练过程更倾向于性能更好的解决方案,而不是其他解决方案 - 即使它们都是正确解决问题的Python程序。
我们可以在训练步骤中向模型提出这样的问题,并生成多个可能的解决方案。
我们可以自动检查(无需人工干预)并看到第一个完成甚至不是代码。第二个是代码,但不是Python代码。第三个是一个可能的解决方案,但未通过单元测试,第四个是正确的解决方案。
这些都是可以直接用来改进模型的信号。当然,这是在许多示例(以小批量)和连续的训练步骤中完成的。
这些奖励信号和模型更新是模型在RL训练过程中持续改进任务的方式,如论文中的图2所示。
与这种能力的提高相对应的是生成响应的长度,模型生成更多的思考token来处理问题。
这个过程是有用的,但R1-Zero模型尽管在这些推理问题上得分很高,却面临其他使其不如预期可用的问题。
尽管DeepSeek-R1-Zero表现出强大的推理能力,并自主发展出意想不到且强大的推理行为,但它面临几个问题。例如,DeepSeek-R1-Zero在可读性差和语言混合等挑战上存在困难。
R1旨在成为一个更可用的模型。因此,它不是完全依赖RL过程,而是在我们之前在本节中提到的两个地方使用它:
1- 创建一个中间推理模型以生成SFT数据点
2- 训练R1模型以改进推理和非推理问题(使用其他类型的验证器)
3.2 使用中间推理模型创建SFT推理数据
为了使中间推理模型更有用,它经过了几千个推理问题示例的监督微调(SFT)训练步骤(其中一些是从R1-Zero生成和筛选的)。论文将此称为"冷启动数据"
2.3.1. 冷启动
与DeepSeek-R1-Zero不同,为了防止从基础模型开始的RL训练早期不稳定的冷启动阶段,对于DeepSeek-R1,我们构建和收集了少量长链思维(CoT)数据来微调模型,作为初始RL参与者。为了收集这些数据,我们探索了几种方法:使用少量示例提示,以长链思维作为示例;直接提示模型生成带有反思和验证的详细答案;收集DeepSeek-R1-Zero以可读格式输出的内容;以及通过人工注释者进行后处理来完善结果。
但是,如果我们已经有了这些数据,为什么还要依赖RL过程呢?这是因为数据的规模。这个数据集可能只有5,000个示例(这是可能获得的),但要训练R1,需要600,000个示例。这个中间模型弥补了这个差距,并允许合成生成那些极其宝贵的数据。
如果你对监督微调(SFT)的概念不熟悉,这是一个向模型呈现训练示例的过程,形式为提示和正确的完成。这张来自第12章的图显示了几个SFT训练示例:
3.3 通用RL训练阶段
这使R1能够在推理以及其他非推理任务上表现出色。这个过程类似于我们之前看到的RL过程。但由于它扩展到非推理应用,它利用了一个有用性和安全性奖励模型(类似于Llama模型)来处理属于这些应用的提示。
架构
就像从GPT2和GPT3开始的早期模型一样,DeepSeek-R1是一堆Transformer解码器块的堆叠。它由61个这样的块组成。前三个是密集的,但其余的是专家混合层。
在模型维度大小和其他超参数方面,它们看起来是这样的:
关于模型架构的更多细节在他们之前的两篇论文中有所介绍:
更多内容,请下载文章顶部绑定文件。