链载Ai

标题: 谈谈对DeepSeek-R1的一些理解 [打印本页]

作者: 链载Ai    时间: 4 小时前
标题: 谈谈对DeepSeek-R1的一些理解


一、写在前面

在OpenAI o1刚放出来时,它有限的技术报告里,有2个内容格外抓人眼球:

我一直是把这2者理解为两个独立的个体,在这个基础上,当时我给出了一些关于o1实现思路的猜想(https://zhuanlan.zhihu.com/p/773907223):

我认为o1走的可能是上述framework3的路线,总结来说:

那么,我为什么当时会认为inference-time scalingRL应该是2个独立的过程呢?因为在我的认知里,我认为如果没有显式的引导,模型是不具备产生long cot(乃至带反思的cot)的能力的(在模型训练初期,这个能力是指formatting模型,让它知道要产出这种格式的回答;在训练过程中再来慢慢提升这种回答的质量)这个显示引导就是指诸如sft这样的过程。所以在这个认知里,上面的2个过程就应该是独立的。

而我第一次发现这样的认知可能有问题,是在我阅读红杉对openAI的访谈中,在这个万字长文里,有一句话格外引起我的兴趣,我当时把它划了出来:

这句话的意思是:没有人为的刻意为之,模型在某种训练过程中自发出现了反思的行为。而如果这一点都是能实现的,那是否意味着没有人为的刻意为之,模型本来也具备产生long cot的能力呢?

如果是这样的话,那么o1可能除了数据工程 + 惯常的RL技巧外,整个系统要比想的简单很多。可是我的水平有限,实在不知道除了显式引导外,模型怎么可能自发产生这样的能力呢?

而直到前几天,又是蹭着热点读到了dpsk-r1的这篇技术报告,我这下才发现:原来单纯的RL就可以激发模型产出带有long cot(甚至是反思)的回复的能力!(可能在此之前已有很多研究发现了这点,是我对这一块的follow-up太少了,确实直到跟着热点读了dpsk-r1,才发现了这点)。这里单纯的RL是指:我并没有显式提供一些真正的long cot数据让模型去背去学,我只是在sys_msg里告诉模型先思考,再回答。接着通过RL一轮又一轮的训练,模型产出的responses越来越长,且在某个时刻出现了自我评估和反思的行为。这个实验探索就是dpsk-r1-zero在做的事情。

如果RL有这种能力,那么inference time scaling 和 RL 就可以不是2个独立的过程,而是在RL的过程里自发出现了inference time scaling的现象,而如果它们不再独立,那么类o1的训练架构也许就比我们想得要简单很多。

原本我只是抱着追热点的心态扫一下dpsk r1,我甚至没打算看完它的tech report。不过开头关于dpsk-r1-zero的实验结论一下吸引了我,所以把核心内容简单记录下,我会侧重训练流,略去评估。(这边的重点并不在于讨论什么路子是对的、什么是错的,只是对我来说发现一种可能)。

二、DeepSeek-R1-Zero

在dpsk r1的这篇报告里,提到了2个模型,分别是DeepSeek-R1-ZeroDeepSeek-R1,总结来看:

下面简单记录下两者的训练细节。

2.1 强化学习方法

dpsk家的GRPO,不是文本关注的重点,暂略。

2.2 奖励模型-规则式RM

在训练DeepSeek-R1-Zero时,采用了基于规则的奖励系统,主要包括两种类型的奖励:

(1)准确性奖励(Accuracy Rewards)用于评估模型responses的准确性。例如数学问题的答案是否正确,代码是否通过测试用例等。

(2)格式奖励(Format Rewards)

(3)为什么不使用神经网络式的RM?

2.3 RL数据的prompt设计

为了训练DeepSeek-R1-Zero,我们首先设计了一个简单的模板,指导基础模型遵循我们指定的指令:

模版如下:

2.4 关于zero的重要结论

和别的模型的性能比较这里略去,简单介绍一下对于R1 zero性能重要的几个结论:

2.5 zero的缺陷

所以接下来探索deepseek r1,这是独立于r1 zero的正式训练流程了。可以说,r1 zero的训练是一个探索性的过程,它验证了RL本身对于激励模型产生推理的能力。在这个探索结论上,开始正式进入r1的训练。

三、DeepSeek-R1

r1的训练总体训练过程如下:

3.1 使用冷启动数据做sft

|special_token|<reasoning_process>|special_token|<summary>

3.2 冷启动sft后的RL

3.3 创建新的sft数据集

这里新的sft数据集来自两个方面,一共约80w条。

1. 当前正在训练的模型产出的结果(reasoning data)

2. 不是当前正在训练的模型产出的结果(no reasoning data)

3.4 使用新的sft数据集继续finetune,并做RL

3.5 为什么还有sft的过程

当你观察上面对r1的两个阶段训练时,你会发现它们依然用到了sft,表现在:

那么你看可能会有这样的疑问:如果还用sft,那前面zero的实验是不是白做了?既然得到了RL本身就有激发模型做long cot和反思的能力,那要sft干嘛?这岂不是和开头所说的RL中实现inference time scaling有矛盾吗?

这里谈一下我的理解:

四、蒸馏dense模型

使用以上80w数据,对llama和qwen系的部分dense模型做sft,然后检测这些模型的推理能力。

结论:对于小模型,不需要依然RL,只用蒸馏就可以使得其推理能力得到显著提升(对于大模型会是怎么样的,这里没有提






欢迎光临 链载Ai (https://www.lianzai.com/) Powered by Discuz! X3.5