专栏名称: 芋道源码
纯 Java 源码分享公众号,目前有「Dubbo」「SpringCloud」「Java 并发」「RocketMQ」「Sharding-JDBC」「MyCAT」「Elastic-Job」「SkyWalking」「Spring」等等
目录
相关文章推荐
Java编程精选  ·  雷军提出建议!他本人也曾是“受害者” ·  15 小时前  
芋道源码  ·  955 神仙公司名单 ·  昨天  
芋道源码  ·  SpringBoot ... ·  2 天前  
芋道源码  ·  3月,Java岗又爆了?! ·  2 天前  
51好读  ›  专栏  ›  芋道源码

聊聊DeepSeek-R1的技术路径

芋道源码  · 公众号  · Java  · 2025-03-06 09:32

正文

👉 这是一个或许对你有用 的社群

🐱 一对一交流/面试小册/简历优化/求职解惑,欢迎加入 芋道快速开发平台 知识星球。 下面是星球提供的部分资料:

👉 这是一个或许对你有用的开源项目

国产 Star 破 10w+ 的开源项目,前端包括管理后台 + 微信小程序,后端支持单体和微服务架构。

功能涵盖 RBAC 权限、SaaS 多租户、数据权限、 商城 、支付、工作流、大屏报表、微信公众号、 ERP CRM AI 大模型 等等功能:

  • Boot 多模块架构:https://gitee.com/zhijiantianya/ruoyi-vue-pro
  • Cloud 微服务架构:https://gitee.com/zhijiantianya/yudao-cloud
  • 视频教程:https://doc.iocoder.cn
【国内首批】支持 JDK 17/21 + SpringBoot 3.3、JDK 8/11 + Spring Boot 2.7 双版本

来源:zhuanlan.zhihu.com
/p/19714987272


Arxiv论文地址:https://arxiv.org/abs/2501.12948
ModelScope论文地址:https://modelscope.cn/papers/109508
github论文地址:https://github.com/deepseek-ai/DeepSeek-R1/tree/main

DeepSeek-R1本质上给出了模型训练中的长链推理,或复杂推理问题的一种可行路径。可贵的是,在论文中DeepSeek给出了一个非常完整的技术实现路径,还包括了一些失败的尝试。这给其他模型厂商提供了完整的复现方式。我们先看最后的评测结果:

可以看到R1的结果几乎都与OpenAI-o1-1217持平,部分评测集甚至超越了后者,如AIME和MATH。

DeepSeek-R1的训练路径是非常简洁的,这和DeepSeek-V2和V3模型积累的训练经验积累存在非常大的关系。

首先我们先明确R1模型的训练目标,这个非常重要:

Our goal is to explore the potential of LLMs to develop reasoning capabilities without any supervised data, focusing on their self-evolution through a pure RL process.

划重点: 探索几乎没有任何监督数据的条件下,模型通过RL训练,自我更新并涌现复杂推理能力的可能性

论文中用一句话概括了整体训练过程,我们先放一下原文:

we introduce DeepSeek-R1, which incorporates a small amount of cold-start data and a multi-stage training pipeline. Specifically, we begin by collecting thousands of cold-start data to fine-tune the DeepSeek-V3-Base model. Following this, we perform reasoning-oriented RL like DeepSeek-R1- Zero. Upon nearing convergence in the RL process, we create new SFT data through rejection sampling on the RL checkpoint, combined with supervised data from DeepSeek-V3 in domains such as writing, factual QA, and self-cognition, and then retrain the DeepSeek-V3-Base model. After fine-tuning with the new data, the checkpoint undergoes an additional RL process, taking into account prompts from all scenarios. After these steps, we obtained a checkpoint referred to as DeepSeek-R1, which achieves performance on par with OpenAI-o1-1217.

训练路径:

1.先收集了一部分高质量冷启动数据(约几千条),使用该数据fine-tune DeepSeek-V3-Base模型,记为模型A

2.使用A模型用GRPO训练,使其涌现推理能力,收敛的模型记为B

3.使用B模型产生高质量SFT数据,并混合DeepSeek-V3产生的其他领域的高质量数据,形成一个高质量数据集

4.使用该数据集训练原始DeepSeek-V3-Base模型,记为模型C

5.使用C模型重新进行步骤2,但是数据集变为所有领域,收敛后的模型记为D,这个模型就是DeepSeek-R1

6.训练C模型的数据对小模型做蒸馏,效果也非常好

当然,最开始DeepSeek并没有使用冷启动,而是直接对DeepSeek-V3-Base进行了GRPO训练,发现虽然CoT能力提升比较大,但是回复的内容鱼龙混杂,甚至有多个语言同时出现的情况,所以才产生了上面比较标准的训练路径。

DeepSeek-R1的实验有很多贡献,我们列出文章中列出来的:

1.跳过SFT直接使用GRPO做RL,效果一样很好(或者说,只进行冷启动阶段的几千条数据的SFT)。这一发现证明强化学习在LLM训练中的作用比之前预想要大很多,甚至可以取代SFT

个人认为,这一点我们要分开来看,GRPO在少量显卡上的轻量训练比较难涌现比较好的效果,因此如果对Instruct或者Base模型进行垂类训练,SFT仍然是不二之选。

  1. RL-采样SFT-RL-蒸馏SFT的pipeline对其他模型训练具有启示作用

  2. 较大模型蒸馏的数据用于训练小模型效果比直接从零RL小模型要好。这一点的发现基本说明 数据集本身的好坏对模型训练起决定性作用,或者说人给不了模型需要的数据,模型才给得了模型需要的数据 。换句话说,模型的next-token-prediction具有独特的生成和自我进化方式,该方式和人类给出的提示数据有所不同,而在不同模型间可能是通用的。这一点也基本决定了未来模型的训练中使用优质模型蒸馏的数据集,或模型self-improvement会成为重要的训练路径。

具体实现

GRPO的reward并没有采用PRM,而是使用了基于正则的ORM,其中包括了两个点:

1.评估最终答案是否正确。包含最终结果比对、代码运行结果等

2.格式奖励:模型需要将CoT过程放在之间

疑问:具体的奖励值是怎么定义的?不连续且稀疏的奖励可能导致policy不收敛

上面我们提过,最开始的GRPO是没有冷启动SFT的,产生的模型叫DeepSeek-R1-Zero,其训练结果如下:

AIME结果从15.6%一跃到了71%,而且这个训练过程是不需要任何监督数据的,只需要准确评估最终结果。这也是以PPO、GRPO为主包含Rollout过程的强化学习路径的优势所在。而且,随着Generate-RL的on policy训练过程,模型涌现了解决复杂任务的能力,甚至出现了反思,以及对复杂的问题产生更多的token和推理过程。

Aha Moment of DeepSeek-R1-Zero A particularly intriguing phenomenon observed during the training of DeepSeek-R1-Zero is the occurrence of an “aha moment”. This moment, as illustrated in Table 3, occurs in an intermediate version of the model. During this phase, DeepSeek-R1-Zero learns to allocate more thinking time to a problem by reevaluating its initial approach. This behavior is not only a testament to the model’s growing reasoning abilities but also a captivating example of how reinforcement learning can lead to unexpected and sophisticated outcomes.

说句题外话,这是否可以印证模型的能力提升,只需要预训练后来自于真实世界的正负反馈和模型本身的游走呢?那么现在的模型训练系统的最大问题就是模型和真实世界的交互反馈能力的不足了。

由于Zero模型的游走随机性比较强,不少问题的推理有可读性差的问题,因此DeepSeek额外训练了DeepSeek-R1模型。

1.冷启动,使用少量示例提示,其中包含长推理链,或者直接提示模型生成带有反思和验证的详细答案,或者收集DeepSeek-R1-Zero 的输出并以可读格式呈现,并通过人工注释进行后期处理以细化结果。从这些数据微调DeepSeek-V3-Base

2.在SFT后的模型上执行和Zero上相同的RL,但是为了规避语言混杂的问题,在ORM中添加了语言一致性奖励,CoT过程中符合要求的语言比例越高则奖励越高

3.通过 拒绝采样 来进行微调。具体来说,首先通过拒绝采样生成推理轨迹,对部分数据(问题、真实值、采样值)输入DeepSeek-V3来判断轨迹质量,以及过滤掉可读性差、语言混杂的部分,对每个query保留了多个正确轨迹,收集好的数据集约60w条。对于CoT无关的数据,使用了和DeepSeek-V3相同的数据集并进行采样,生成了约20w条,总数据集共80w条,使用这个数据集对DeepSeek-V3进行了2 epoch的训练

4.对上述微调的模型继续进行GRPO。本次GRPO除了使用上述的ORM判断外,还增加了对非CoT数据的奖励,方法是使用了额外的reward model,以符合人类要求的回复习惯以及提高模型的帮助性和无害性

5.使用80w条数据(论文中的意思应该就是上面描述的数据集)对小模型做蒸馏,效果也比较好。DeepSeek没有做针对小模型的后续RL,虽然效果应该也是不错的

在对比实验中,DeepSeek做了针对小模型的RL&蒸馏的实验对比:







请到「今天看啥」查看全文