从0开始理解DeepSeek如何实现低成本的高效训练
DeepSeek-R1使用极低的训练成本实现了高效的训练,其模型性能在某些任务上能够达到与ChatGPT-o1相近甚至更优的水平。本文从其训练方法进行对比分析,浅析DeepSeek的系列模型实现高效训练的原理。
从V1到R1
在DeepSeek系列的模型演进的过程中,引入了众多优化方法。以下依次列举V1到R1的各个模型,并简单列举其引入的创新方法。在后文中,会对其进行具体的分析说明。
DeepSeek V1
DeepSeek的初代模型,使用Transformer架构。
DeepSeek V2
继承V1模型,并引入混合专家架构(MoE)。
- 总参数量:236B
- 单Token参数量:21B
- 引入的技术:
- MoE架构
DeepSeek V3
进一步优化了V2的架构和方法。其继承了V2的架构,并引入多令牌预测(MTP)和无辅助损失的负载均衡策略,进一步降低了训练成本。V3在推理效率和训练成本上相比V2有了进一步的优化。
- 总参数量:671B
- 单Token参数量:37B
- 引入的技术:
- MTP
- 无辅助损失的负载均衡策略
DeepSeek R1
基于V3的高性能推理模型。它与V3的架构没有区别。差异体现在训练方法:R1模型使用了强化学习方法进行训练。
- 引入的技术:
- GRPO
- 双重奖励系统
- 模型细分:
- DeepSeek-R1-Zero:完全基于强化学习的端到端训练。
- DeepSeek-R1:多阶段混合训练策略(监督微调冷启动 + 强化学习优化)。
混合专家(MoE)架构
参考文献:
MoE架构能让模型功能更能”专心“于各类数据的训练,同时也可用于减少单次传播的成本。实现方式是:对于模型中的一个前馈层(FFN),使用多个专家完成,训练或推理时对于每一次前向传播,只选取其中的一个或部分专家完成。这样,对于一个token,只需要使用到部分专家的参数,而不需要使用完整模型的参数。
GShard的MoE架构
GShard是首个把MoE结构引入Transformer结构的工作。具体做法是:将Transformer的encoder和decoder中每隔一个的FFN层,替换成MoE层。

左图是普通的Transformer模型,右图是引入MoE的Transformer模型。其差异在于:
- 使用多个FFN(即专家)代替单个FFN
- 用Gating(分发器),将前面层的输出分发给某个或某几个专家。这里使用Top-2 gating network,即选择最相近的前两个专家。
Gating Network
Gating Network用于将输出分发给部分专家。
MoE层的各专家输出的形式是相同的。对于一般的MoE而言,其输出是所有experts的加权和。设
我们希望
负载均衡策略
如果对各专家的负载不均衡,导致有的专家一直空闲,有的一直忙碌,一方面拖慢速度,另一方面使空闲的专家没有得到充分训练。因此,gating network需要将token均分给各个专家。
我们假设
其中
Auxillary Loss
即辅助损失,这是用于衡量分发器分发的均匀效果的损失,与分发器分发的均衡程度负相关,惩罚负载不均衡的情况。传统的负载均衡策略使用辅助损失完成,将损失设计为负载均衡损失函数,形式如下:
$$
G’(x)i=L_\text{Bal}=N\cdot\sum\limits{i=1}^Nf_i\cdot P_i
$$
其中:
是专家数量 是分配给专家 的token数比例,即实际负载 是分配给专家 的门控概率比例,即理论负载。
辅助损失会导致训练复杂性增加,影响性能。
无辅助损失的负载均衡策略
DeepSeek采用了无辅助损失的负载均衡策略。形式如下:
bias在训练过程中依据负载实时调整。
多Token预测(MTP)
参考文献:
MTP(Multi-token Prediction)
MTP的目的是加快推理,其核心是让模型在一次输入中,预测多个未来的token,而不是仅仅预测下一个token。例如:
传统transformer:
1
2
3
4
5
6
7
8(输入):
I'm fine,
(输出):
thank
^
|
单个输出MTP:
1
2
3
4
5
6
7
8(输入):
I'm fine,
(输出):
thank you , and
^ ^ ^ ^
| | | |
主输出头 其他的独立输出头

由于让模型一次预测多个token,准确率是是不如一次预测一个token的,并且如果不加验证直接使用预测得到的所有token作为新的输入,可能会进一步放大结果的误差。因此,我们必须引入一套验证机制,确保能够发现模型预测结果中的错误。与传统的单token方式相比,使用MTP有如下特点:
- 一次高效预测多个token
- 可能存在错误,需要验证机制
因此,使用推测解码方法。
推测解码

推测解码过程分为推测(Drafting)和验证(Verification)两个阶段:
- 推测:根据一次输入,高效地预测多个token
- 验证:及时发现预测结果地错误
推测解码的高效性,用一句话概括就是:将串行的推理变成并行的推理+验证。
推测
推测部分的主要目标是又好又快地预测多个token。问题的根源是一个满足要求的自回归的大模型(设为target model)推理速度太慢,因此我们需要想办法(可能会降低性能,但后续验证过程会确保结果不会太差)来让推理速度加快。一种思路是使用同类型的小模型来预测(Independent Drafting),另一种思路是修改模型架构,添加多个输出头,使用大模型进行预测(Self-Drafting)。
Independent Drafting
使用小模型来进行预测,就能减少推理过程的计算开销和时间。例如,OPT-70B的加速可以用OPT-125M进行推测,T5-XXL可以用T5-small。优势是可以直接利用现有模型资源,无需进行额外的训练。而且,由于同系列的模型使用相近的模型结构、分词方法、训练语料和训练流程,小模型本身就存在一定的和target LLM之间的“行为相似性“(behavior alignment),适合用来作为高效的“推测“模型。
使用小模型的预测还可以通过知识蒸馏(knowledge distillation)方法,增加小模型与大模型的相似度。
Self-Drafting
上述的方式存在以下缺点:
- 并不是所有LLM都存在线程的小模型,需要额外投入
- 引入额外小模型增加了计算复杂度(因为仍需要大模型做Verification)
因此,另一种方式是利用target model自己进行高效预测。通过在target model的输出层引入多个输出头,从而每个解码步能够并行生成等多个token,得到预测结果。这种方法就需要进行额外的训练。
验证
验证部分的主要目标是确保预测结果的正确,这部分只会用到target model。对于每一次解码得到的新token,系那个每一个token给到target model,判断其结果与Drafting过程中得到的结果是否一致。从第一个不一致的token开始,该token和后面的token都被认为是未通过验证的,下一次解码从这个token处开始。
这部分的关键在于,因为不涉及自回归,因此各token可以并行输入到target model中用于验证,所以验证过程能够高效实现。
显然,并不是所有概率最大的token都是最合适的解码结果(比如beam search)。当推测模型的性能较好时,严格要求和target LLM结果匹配会导致大量高质量的“推测”token被丢弃,仅仅是因为它们和target model top-1解码结果不一致。这导致通过验证的“推测”token数量较小,从而影响推测解码的加速比。
因此,有一些工作提出可以适当地放松“验证”要求,使得更多高质量的“推测”token被接受,增大每个解码步通过验证的“推测”token数量,进一步提升加速比。
组相对策略优化(GRPO)
参考文献:
- 大模型基础|预训练|有监督微调SFT - 知乎
- ChatGPT技术原理解析:从RL之PPO算法、RLHF到GPT4、instructGPT-CSDN博客
- DeepSeek技术报告解析:为什么DeepSeek-R1 可以用低成本训练出高效的模型 - overfit.cn
组相对策略优化(GRPO)是DeepSeek提出的强化学习的优化方法。在此之前,我们先介绍预训练、监督微调与强化学习。
预训练、SFT和RLHF
预训练
SFT(监督微调)
监督微调使用问答对对LLM进行微调。举例如下:
PPO和GRPO
双重奖励系统
- 标题: 从0开始理解DeepSeek如何实现低成本的高效训练
- 作者: Waterice
- 创建于 : 2025-02-06 12:59:31
- 更新于 : 2025-02-06 17:15:11
- 链接: https://blog.waterice.site/2025/02/06/从0开始理解DeepSeek如何实现低成本的高效训练/
- 版权声明: 本文章采用 CC BY-NC-SA 4.0 进行许可。