背景
今年春节期间,deepseek推出的DeepSeek-R1模型及其系列蒸馏模型爆火,全世界各个角落都在讨论,甚至过年一个我从没见面的大伯都在讨论deepseek的模型,说让他感觉到中国AI很有希望。于是春节期间,仔细阅读了下deepseek-r1的论文,做了笔记。后面再补上deepseek-v3的技术报告笔记。
deepseek-r1论文的结构非常清晰,读起来非常顺畅。 论文链接:DeepSeek-R1: Incentivizing Reasoning Capability in LLMs via Reinforcement Learning
本次重点推出三种模型:
- deepseek-r1-zero的训练:在deepseek-v3-base基模的基础上,直接采用RL大幅提升推理能力,验证仅通过RL过程就能显著增强模型的推理能力。
- deepseek-r1的训练:为了解决r1-zero可读性差、语种混乱的问题,以及进一步提升推理能力,构建了不同的sft数据,并与RL过程相结合,完整训练了deepseek-r1模型,并达到了与openai-o1-1217在推理任务上相当的表现。
- dense小模型的蒸馏:在deepseek-r1的指导下,对qwen2.5和llama3系列模型进行蒸馏,基于r1蒸馏的不同尺度的dense模型在reasoning benchmarks上创造了新的记录。证明了在deepseek-r1的指导下,小模型也能拥有强大的推理能力。
deepseek-r1的评估效果:
- 推理任务:AIME2024上,比o1-1217略好一点,MATH-500和o1-1217相当;编程相关问题上,r1达到了专家水平;工程相关问题上,r1比deepseek-v3-base略好一点;
- 世界知识:r1显著超过deepseek-v3-base,比o1-1217略差一点。
- 其他测评:创造性写作,问答对生成,编辑、总结等等,r1都表现很好,包括在长上下文理解方面也表现很好。

deepseek-r1的贡献
Post-Traing:在基模基础上的大尺度强化学习的价值
- 在基模的基础上,直接应用RL,而不需要SFT作为预先的步骤,实现了模型利用cot解决复杂问题的能力,第一次验证了llm的推理能力可以单纯基于RL过程来激活。
- deepseek-r1的训练pipeline:包括两个RL阶段和两个sft阶段,其中rl的过程揭示了推理能力的提升,以及人类偏好的对齐,sft作为模型推理和非推理能力的seed点。
Distillation:小模型也能很强大
- 大模型的推理能力可以蒸馏到更小的模型中,相比于在更小模型中直接采用RL获得的推理能力,有更好的表现。
- 使用r1生成的推理数据,对一些业界广泛使用的开源dense模型进行微调,这些被蒸馏的更小模型显著好于之前开源的模型,且与openai o1-mini效果相当。本次开源了基于qwen2.5和llama3系列模型蒸馏后的不同尺寸模型,包括1.5B、7B、14B、32B、70B。
模型训练过程
deepseek-r1-zero模型、r1模型的训练过程,以及dense模型的蒸馏pipeline如下,图片来源:@SirrahChan

之前的工作重度依赖大量的监督数据,以增强模型性能,这个过程耗时耗力。r1证明了推理能力可以通过大尺度的RL过程进行显著性提升,甚至不需要SFT作为冷启动。更进一步,基于小量冷启动数据,可以更进一步增强模型性能。
DeepSeek-R1-Zero:在基模基础上进行RL
r1-zero模型的RL过程纯粹是以增强推理能力为主要目的,进行试验验证。
GRPO强化学习算法
为了节约RL的训练费用,采用GRPO强化学习算法。GRPO算法的评价模型和策略模型大小相同,从一组得分(group scores)中评估基线。对每个问题,GRPO从老的策略模型中采用一组输出{o1, …, oG},计算一组奖励值{r 1, …, rG},通过最大化如下目标函数来优化策略模型。

奖励建模
奖励决定了RL的优化方向,r1-zero采用基于规则的奖励,主要包括两种类型的奖励:
- Accuracy rewards:评估模型生成的回复是否正确。具体就是模型被要求以指定的格式提供最终的答案,以便可以基于规则可靠地验证回复的正确性。
- Format rewards:强制模型把思考过程输出在<think> 和 </think>的标签之间
与传统采用neural reward model不同,ds采用基于规则奖励模型,主要是两点出发点:
- 他们发现neural reward model在大尺度RL过程中,可能受到reward hacking
- 重新训练reward model也耗资源,增加了整体训练的复杂性
训练数据模版
下面是训练r1-zero的模版,在实际训练过程中,prompt被替换为具体需要推理的问题。这个模版可以观测到模型在训练过程中的自然思考过程。
| prompt模版 |
|---|
| A conversation between User and Assistant. The user asks a question, and the Assistant solves it. The assistant first thinks about the reasoning process in the mind and then provides the user with the answer. The reasoning process and answer are enclosed within |
R1-Zero的效果
R1-zero在训练过程的不同step的推理精度效果对比如下图,在8k steps时基本接近openai-o1-0912,说明随着RL训练的增加,模型性能能够稳定提升。

R1-Zero完成训练收敛后,在不同数据集上与openai o1的效果对比如下图。此外,R1-zero如果采用多次推理结果投票的方式,效果还会继续提升(在AIME benchmarks上,从71.0提升到86.7)

ds研究人员发现模型自我进化更牛逼的点在于,随着RL训练过程的推进,模型思考的时间越来越长,生成的tokens数越来越多,从而侧面证明模型在解决复杂问题时能够更深入的进行思考(实际上有人在试用deepseek-r1的过程中,发现如果思考时间为5s左右,则对比思考时间为20s的输出内容,就显得思考不够深入)

论文中专门提到一个 ‘aha moment’,就是研究人员观测到模型在反思过程是,学会了对之前的思考过程进行评估,以调整思考方向,重新思考并解决问题。这让我想起之前报道openai Q*的新闻。

R1-zero模型的不足:可读性不足,语言混乱。
给出的解决办法:通过结合人类友好的冷启动数据和RL训练,从而训练出了DeepSeek-R1。
DeepSeek-R1:结合冷启动数据的RL
DeepSeek-R1在zero基础上解决2个问题:
- 通过加入少量的高质量数据作为冷启动,验证推理性能能否进一步提升或加速模型收敛过程
- 如何训练一个人类友好的模型,不仅生成清晰连贯的cot,而且展示很强的通用能力。
R1模型的训练过程包括四个阶段:
冷启动SFT
收集少量long CoT的数据,微调deepseek-v3-base基模,作为下一步推理增强RL的checkpoint模型。
收集数据的方法是用long CoT作为few-shot prompting,给到r1-zero模型去生成包含更多反思和验证细节的回答,然后人工标注员处理成所需的数据集。通过这种方法收集了数千条冷启动数据,去微调deepseek-v3-base基模。
带来的好处:
- 可读性:相对r1-zero,在多语种混合,缺少markdown格式标注等问题上,有更大的提升。包括定义了特殊字符的输出格式如: <reasoning-process>、<summary>等。
- 潜力:观测到相比r1-zero更好的性能表现。
推理增强的RL
在冷启动SFT的基础上,执行和r1-zero相同的RL过程,重点在增强模型的推理能力,特别是推理密集型的任务上,如编程、数学、科学,以及逻辑推理。
但在这个过程中,为了解决r1-zero输出语言混乱的问题,研究者在RL过程中,额外又引入了语言一致性奖励,通过计算目标语言单词在输出cot中的比例。这种对齐方法会导致模型性能的轻微下降,但能够让结果更具可读性。最终的奖励通过推理任务准确性和语言一致性奖励的直接相加,作为最终模型的最终奖励。RL训练过程直到模型最终收敛。
Rejection sampling and SFT
- 600k 推理数据收集:基于上面的RL后的模型,通过拒绝采样的方法,收集了600k推理相关的训练样本。在这个阶段,数据集通过增加额外的数据进行了扩展,其中一些数据使用一个生成式奖励模型,基于deepseek-v3进行判断真实结果还是模型预测结果。此外,由于模型输出有时混乱或不易阅读,人工也对采集的样本进行了后处理。
- 200k 非推理数据收集:包括写作、事实问答、自我意识、翻译等,采用deepseek-v3来生成部分样本,并重用了deepseek-v3的部分sft数据。收集了大概200k与推理无关的训练样本。
然后基于上面大概800k的样本,fine-tune了deepseek-v3-base模型2个epochs后,形成了deepseek-v3-base-sft的checkpoint,用于最后的RL训练过程。
适用所有场景的RL
基于deepseek-v3-base-sft的checkpoint,进一步对齐人类偏好,采用了第二次RL过程,以提升模型的helpfulness和harmlessness,同时精炼了模型的推理能力。
使用奖励信号和diverse prompt distributions的结合来训练模型。
- 对于推理数据:使用了r1-zero的训练方法,利用了基于规则的奖励模型。
- 对于生成式数据:重排了奖励模型,以便在复杂和细微差异的场景中获取人类偏好。训练过程和deepseek-v3相似。
蒸馏:让小模型拥有强大的推理能力
这里的蒸馏直接使用上面的800k SFT样本数据,微调了qwen和llama的开源模型,这种直接的整理方法显著增强了更小模型的推理能力。
对于蒸馍模型,ds的研究者只采用了SFT方法,而不做任何RL,即使采用RL能进一步增加模型性能,这里主要是演示蒸馏技术的有效性。
实验
Prompt:在prompt设置中,主要采用了zero-shot的方式,因为CoT in few-shot 可能会导致deepseek-R1性能下降。
评估设置:模型最大的生成token长度为32768。
论文中让我感觉deepseek更牛逼的地方是,在建立效果对比的baseline时,研究者说因为在中国大陆无法访问openai-o1 api,因此基于openai的官方报告中的性能数据进行对比,还是很有技术药性的团队。
在一些以教育为目的的benchmarks中,如MMLU, MMLU-Pro,GPQA diamond,r1比v3显著要好,主要归功于在STEM相关问题上的精度增强,通过大尺度RL过程获得这种能力提升。
deepseek-r1在遵循格式化指令的能力评估上也表现不俗,如IF-Eval benchmark。
数据问题上,R1和openai-o1-1217表现相当,比其他模型拉开很大的差距。

蒸馏模型的评估如下图,目前这些蒸馏模型仅仅是基于800k的数据进行了sft训练的结果。如果继续在此基础上进行RL训练,将进一步提升模型性能。

讨论
1. 小模型是否可以通过大尺度的RL训练达到与deepseek-r1蒸馏相当的性能?
根据实验,qwen-32B-base模型在使用r1-zero的RL训练方法后,达到了QwQ-32B-Preview相当的性能,但仍远低于基于deepseek-r1蒸馏的qwen-32B效果。
因此,得出两个重要结论:
- 基于高性能模型蒸馏到小模型产生优秀的结果,而依赖r1-zero的大尺度RL方法训练的小模型消耗大量的计算资源,且比蒸馏模型效果要差。
- 虽然蒸馏策略既经济且有效,但在智能边界之外的先进性可能仍需要更强大的基模和大尺度RL训练。
2. 失败的经验教训
- 过程奖励模型(process reward model,PRM),PRM有三个主要的限制:1)在通用的推理中,很难显式定义一个fine-grain step;2)很难判断当前的中间步骤是否正确。基于模型自动标注可能不能产生满意的结果,而人工标注无法scaling up;3)一旦引入基于模型的PRM,不可避免导致reward hacking,而且维系reward model需要额外的训练资源,使整个训练过程更复杂。
- monte carlo tree search(MCTS):训练规模扩大是遇到搜索空间过大的问题,以及价值模型更新问题。
deepseek-r1的不足:
- 通用能力方面,对比v3,r1在函数调用、多轮、复杂角色扮演、json格式输出方面还不足;
- 语种混用,r1目前主要基于中文和英文进行了优化,当使用其他语言时,可能使用英语进行推理和响应。
- PE工程,r1模型对prompt比较敏感,few-shot prompting会一致性地降低其性能表现。因此,推荐zero-shot的方式以获得r1更优的结果。
- 软件工程任务