24、DeepSeek-V3论文笔记
DeepSeek-V3论文笔记
- **一、概述**
- **二、核心架构与创新技术**
- 0.汇总:
- 1. **基础架构**
- 2. **创新策略**
- 1.DeepSeekMoE无辅助损失负载均衡
- DeepSeekMoE基础架构
- 无辅助损失负载均衡
- 互补序列级辅助损失
- 2.多令牌预测(MTP)
- 1.概念
- 2、原理
- 2.1BPD
- 2.2Meta改进版
- 单次训练(示意图)
- batch批量训练(示意图)
- 2.3DeepSeek改进版MTP
- 原理
- Teacher forcing和free-running模式
- 训练的输入系列预测对应位置
- 单次训练(示意图)
- batch批量训练(示意图)
- 推理
- 2.4 对比(训练推理)
- 3、DeepSeek MTP实例说明
- 一、核心设计逻辑:从单令牌到多令牌预测
- 二、MTP模块实现:以D=2为例(预测未来2个令牌)
- 1. **k=1深度:预测第i+1个令牌(下一个令牌)**
- 2. **k=2深度:预测第i+2个令牌(下下个令牌)**
- 3. **因果链保持**:
- 三、训练目标:多深度损失计算实例
- 四、推理阶段:推测解码加速实例
- 五、关键优势与对比
- 总结:MTP如何提升模型性能?
- 4、Multi-Token Prediction(原文解释)
- MTP模块
- MTP训练目标
- MTP在推理中的应用
- 3.多头潜在注意力(MLA)
- **三、训练基础设施与优化**
- 1. **硬件与混合精度训练**
- 2. **训练框架优化**
- **四、预训练与后训练流程**
- 1. **预训练阶段**
- 2. **后训练阶段**
- **五、性能评估与基准测试**
- 1. **核心基准表现**
- 2. **闭源模型对比**
- **六、训练成本与效率**
- **七、局限性与未来方向**
- 1. **当前局限**
- 2. **未来方向**
- **八、核心贡献**
- 总结
一、概述
DeepSeek-V3是深度求索(DeepSeek-AI)开发的混合专家(MoE)语言模型,总参数671B,每个令牌激活37B参数。其核心目标是在高效推理、低成本训练与高性能之间取得平衡,通过架构创新、训练优化和大规模数据预训练,成为当前最强开源模型之一,性能接近GPT-4o、Claude-3.5等闭源模型。
二、核心架构与创新技术
0.汇总:
1. 基础架构
- Multi-head Latent Attention (MLA):
- 通过低秩压缩键值对(KV)和查询向量,减少推理时的缓存占用(仅缓存压缩后的潜在向量),在保持性能的同时,将KV缓存量显著降低,提升推理效率。
- DeepSeekMoE: (DeepSeek-V2中的结构)
- 采用细粒度专家设计(1个共享专家+256个路由专家),每个令牌激活8个专家,通过节点限制路由(最多4节点)控制跨节点通信成本,提升训练效率。
2. 创新策略
- 无辅助损失负载均衡的DeepSeekMoE:
- 动态调整专家偏置(bias term)以平衡负载,避免传统辅助损失对模型性能的负面影响。通过监控批次级负载,动态增减偏置,确保专家负载均衡,同时保留专家专业化能力。
- 多令牌预测(MTP):
- 训练时预测未来2个令牌,密集训练信号,提升数据效率;推理时可用于推测解码,解码速度提升1.8倍。
1.DeepSeekMoE无辅助损失负载均衡
辅助无损负载均衡。对于 MoE 模型,不平衡的专家负载将导致路由崩溃(Shazeer et al., 2017),并在具有专家并行性的场景中降低计算效率。常规解决方案通常依赖于辅助损失(Fedus et al., 2021;Lepikhin et al., 2021)以避免负载不平衡。然而,过大的辅助损耗会损害模型性能(Wang et al., 2024a)。为了在负载均衡和模型性能之间实现更好的权衡,我们开创了一种辅助无损负载均衡策略(Wang et al., 2024a)来确保负载均衡。具体来说,我们为每个专家引入了一个偏差术语
b i b_{i} bi,并将其添加到对应的亲和度分数sᵢ,ₜ中,以确定Top-K路由,动态调整专家偏置(bias term)以平衡负载,避免传统辅助损失对模型性能的负面影响。
图 2 |DeepSeek-V3 的基本架构图示。在 DeepSeek-V2 之后,我们采用 MLA 和 DeepSeekMoE 进行高效推理和经济训练。
无辅助损失负载均衡的DeepSeekMoE
DeepSeekMoE基础架构
具体原理参考:DeepSeekMoE论文笔记链接 ,MOE汇总链接
在前馈网络(FFNs)方面,DeepSeek-V3采用DeepSeekMoE架构(Dai等人,2024)。与GShard(Lepikhin等人,2021)等传统MoE架构相比,DeepSeekMoE使用更细粒度的专家,并将部分专家隔离为共享专家。令uₜ表示第t个令牌的FFN输入,FFN输出h’ₜ计算如下:
h t ′ = u t + ∑ i = 1 N s FFN i ( s ) ( u t ) + ∑ i = 1 N r g i , t FFN i ( r ) ( u t ) , ( 12 ) h'_t = u_t + \sum_{i=1}^{N_s} \text{FFN}_i^{(s)}(u_t) + \sum_{i=1}^{N_r} g_{i,t} \text{FFN}_i^{(r)}(u_t), \quad (12) ht′=ut+i=1∑NsFFNi(s)(ut)+i=1∑Nrgi,tFFNi(r)(ut),(12)
g i , t = g i , t ′ ∑ j = 1 N r g j , t ′ , ( 13 ) g_{i,t} = \frac{g'_{i,t}}{\sum_{j=1}^{N_r} g'_{j,t}}, \quad (13) gi,t=∑j=1Nrgj,t′gi,t′,(13)
g i , t ′ = { s i , t , s i , t ∈ Topk ( { s j , t ∣ 1 ≤ j ≤ N r } , K r ) , 0 , otherwise , ( 14 ) g'_{i,t} = \begin{cases} s_{i,t}, & s_{i,t} \in \text{Topk}(\{s_{j,t} \mid 1 \leq j \leq N_r\}, K_r), \\ 0, & \text{otherwise}, \end{cases} \quad (14) gi,t′={si,t,0,si,t∈Topk({sj,t∣1≤j≤Nr},Kr),otherwise,(14)
s i , t = Sigmoid ( u t T e i ) , ( 15 ) s_{i,t} = \text{Sigmoid}(u_t^T e_i), \quad (15) si,t=Sigmoid(utTei),(15)
其中,Nₛ和Nᵣ分别表示共享专家和路由专家的数量;FFNᵢ⁽ˢ⁾(·)和FFNᵢ⁽ʳ⁾(·)分别表示第i个共享专家和第i个路由专家;Kᵣ表示激活的路由专家数量;gᵢ,ₜ是第i个专家的门控值;sᵢ,ₜ是令牌与专家的亲和度分数;eᵢ是第i个路由专家的质心向量;Topk(·, K)表示为第t个令牌与所有路由专家计算的亲和度分数中前K个最高分的集合。与DeepSeek-V2略有不同,DeepSeek-V3使用Sigmoid函数计算亲和度分数,并对所有选中的亲和度分数进行归一化以生成门控值。
无辅助损失负载均衡
对于MoE模型,专家负载不平衡会导致路由崩溃(Shazeer等人,2017),并降低专家并行场景下的计算效率。传统解决方案通常依赖辅助损失(Fedus等人,2021;Lepikhin等人,2021)来避免负载不平衡,但过大的辅助损失会损害模型性能(Wang等人,2024a)。为了在负载均衡和模型性能之间实现更好的权衡,我们首创了无辅助损失负载均衡策略(Wang等人,2024a)以确保负载均衡。具体来说,我们为每个专家引入偏置项bᵢ,并将其添加到对应的亲和度分数sᵢ,ₜ中,以确定Top-K路由:
g i , t ′ = { s i , t , s i , t + b i ∈ Topk ( { s j , t + b j ∣ 1 ≤ j ≤ N r } , K r ) , 0 , otherwise . ( 16 ) g'_{i,t} = \begin{cases} s_{i,t}, & s_{i,t} + b_i \in \text{Topk}(\{s_{j,t} + b_j \mid 1 \leq j \leq N_r\}, K_r), \\ 0, & \text{otherwise}. \end{cases} \quad (16) gi,t′={si,t,0,si,t+bi∈Topk({sj,t+bj∣1≤j≤Nr},Kr),otherwise.(16)
注意,偏置项仅用于路由,与FFN输出相乘的门控值仍由原始亲和度分数sᵢ,ₜ推导而来。训练过程中,我们持续监控每个训练步骤整个批次的专家负载。每一步结束时,若对应专家过载则将偏置项减少γ,欠载则增加γ,其中γ是称为偏置更新速度的超参数。通过动态调整,DeepSeek-V3在训练期间保持专家负载平衡,性能优于仅通过辅助损失实现负载均衡的模型。
互补序列级辅助损失
尽管DeepSeek-V3主要依赖无辅助损失策略实现负载均衡,但为防止单个序列内出现极端不平衡,我们还采用了互补的序列级平衡损失:
L Bal = α ∑ i = 1 N r f i P i , ( 17 ) L_{\text{Bal}} = \alpha \sum_{i=1}^{N_r} f_i P_i, \quad (17) LBal=αi=1∑NrfiPi,(17)
f i = N r K r T ∑ t = 1 T 1 ( s i , t ∈ Topk ( { s j , t ∣ 1 ≤ j ≤ N r } , K r ) ) , ( 18 ) f_i = \frac{N_r}{K_r T} \sum_{t=1}^T \mathbb{1}(s_{i,t} \in \text{Topk}(\{s_{j,t} \mid 1 \leq j \leq N_r\}, K_r)), \quad (18) fi=KrTNrt=1∑T1(si,t∈Topk({sj,t∣1≤j≤Nr},Kr)),(18)
s i , t ′ = s i , t ∑ j = 1 N r s j , t , ( 19 ) s'_{i,t} = \frac{s_{i,t}}{\sum_{j=1}^{N_r} s_{j,t}}, \quad (19) si,t′=∑j=1Nrsj,tsi,t,(19)
P i = 1 T ∑ t = 1 T s i , t ′ , ( 20 ) P_i = \frac{1}{T} \sum_{t=1}^T s'_{i,t}, \quad (20) Pi=T1t=1∑Tsi,t′,(20)
其中平衡因子α是超参数(DeepSeek-V3中取值极小);𝟙(·)表示指示函数;T为序列中的令牌数。序列级平衡损失促使每个序列内的专家负载趋于均衡。
2.多令牌预测(MTP)
1.概念
什么是MTP(what)
MTP(Multi-Token Prediction)实际上就是将大模型原始的1-token的生成,转变成multi-token的生成,从而提升训练和推理的性能。具体来说,在训练阶段,一次生成多个后续token,可以一次学习多个后续位置上的label,进而有效提升样本的利用效率,提升训练速度;在推理阶段通过一次生成多个后续token,实现成倍的推理加速来提升推理性能。
当前主流的大模型(LLMs)都是decoder-base的模型结构,也就是无论在模型训练还是在推理阶段,对于一个序列的生成过程,都是token-by-token的。每次在生成一个token的时候,都要频繁跟访存交互,加载KV-Cache,再通过多层网络做完整的前向计算。对于这样的访存密集型的任务,通常会因为访存效率形成训练或推理的瓶颈。针对token-by-token生成效率的瓶颈,业界很多方法来优化,包括减少存储的空间和减少访存次数等,进而提升训练和推理性能。
2、原理
2.1BPD
Blockwise Parallel Decoding
首先我们来看一篇Google的工作,这是Google在18年发表在NIPS上的工作(18年是Transformer诞生的元年)。
paper:Blockwise Parallel Decoding for Deep Autoregressive Models
Blockwise Parallel Decoding 的核心内容,该方法主要是为了做推理阶段的并行加速而设计的。虽然命名上没有遵循MPT类,但后面一些演进的方法比如Speculative Sample和下面要介绍的Meta’s MTP等,都有该方法设计的影子。
参考:https://zhuanlan.zhihu.com/p/18056041194
2.2Meta改进版
原始版MTP有个什么问题呢?因为那时候当前LLM的decoder架构还不受到重视,因此meta结合当前LLM的架构,重新设计了更符合大模型的MTP。
这是meta 于2024年4月发表的一篇工作。
paper : Better & Faster Large Language Models via Multi-token Prediction
单次训练(示意图)
batch批量训练(示意图)
Meta GPU批次并行预测(batch)
因为GPU在训练时,是支持批量同时训练的,多条数据组成一个batch批次,同时并行计算,因此,可以把上面几个训练画在一张图里,就变成了如下原始论文形式:
2.3DeepSeek改进版MTP
原理
DeepSeek-V3/R1与Meta的多令牌预测存在两个关键差异:“与Gloeckle等人(2024)[Meta Research]不同,他们使用独立的输出头并行预测D个额外的令牌,而我们则按顺序预测额外的令牌,并在每个预测深度保持完整的因果链。”——DeepSeek-V3
Meta的模型预测4个令牌,而DeepSeek-V3预测2个令牌。Meta模型的预测头相互独立,而DeepSeek-V3的预测头则是顺序连接的。
多 Token 预测(MTP):
图 3 |我们的多令牌预测 (MTP) 实施图示。我们保留了完整的因果链,用于预测每个深度的每个代币。
MTP在DeepSeek-R1中是如何工作的呢?让我们逐步解析相关图表: 在训练过程中,输入令牌(位于左下角)先经过嵌入层,然后传播通过所有的Transformer块/层。
Teacher forcing和free-running模式
训练的输入系列预测对应位置
单次训练(示意图)
batch批量训练(示意图)
DeepSeek GPU批次并行预测(batch)
参照3.2.1中meta MTP的并行“因果关系”训练的具体过程,可以把一个batch中的多条记录,画在一张图上,就成了如下所示:美化一下,调整一下排版,就成了DeepSeek论文中的样子。
推理
2.4 对比(训练推理)
传统方法的问题(预测下一个token):
- 训练阶段:token-by-token生成,是一种感知局部的训练方法,难以学习长距离的依赖关系。
- 推理阶段:逐个token生成,推理速度较慢
MTP方法(一次预测多个token):
- 训练阶段:通过预测多步token,迫使模型学到更长的token依赖关系,从而更好理解上下文,避免陷入局部决策的学习模式。同时一次预测多个token,可大大提高样本的利用效率,相当于一次预估可生成多个<predict, label>样本,来更新模型,有助于模型加速收敛。
- 推理阶段:并行预估多个token,可提升推理速度
DeepSeek MTP与Meta方案的对比
特性 | Meta的MTP | DeepSeek的MTP |
---|---|---|
预测方式 | 并行独立预测多个令牌(4个独立头) | 级联顺序预测(2-3个模块) |
因果性 | 可能破坏因果链 | 严格保持因果链 |
参数共享 | 独立输出头 | 共享嵌入、输出头和部分Transformer层 |
适用场景 | 短文本快速生成 | 长文本连贯性要求高的任务 |
训练推理
维度 | 训练阶段(Training) | 推理阶段(Inference) |
---|---|---|
输入数据 | 使用完整的目标序列(真实标签),通过掩码或分组强制模型并行预测多令牌。 | 仅依赖已生成的令牌(初始为<s> ),逐步扩展生成序列。 |
目标函数 | 计算多令牌的联合概率损失(如交叉熵),优化模型对全局依赖的建模能力。 | 通过解码策略(如波束搜索)生成高概率序列,无需反向传播。 |
生成逻辑 | 教师强制(Teacher Forcing):直接输入真实令牌,无需模型自回归生成。 | 自回归或半自回归:依赖前序生成结果,逐步预测后续多令牌。 |
并行性 | 高度并行:一次处理多个目标位置的真实令牌,批量计算损失。 | 部分并行:每次生成一批令牌(如k个),但需按步骤迭代生成。 |
参考:
https://zhuanlan.zhihu.com/p/18056041194
https://blog.csdn.net/weixin_43290383/article/details/146245802
https://zhuanlan.zhihu.com/p/24226643215
https://cloud.tencent.com/developer/article/2505000
备份:链接
3、DeepSeek MTP实例说明
DeepSeek-V3的多令牌预测(MTP)通过预测未来多个令牌优化训练,提升模型对序列生成的规划能力。以下结合具体示例,从设计逻辑、实现步骤、训练目标及推理应用展开说明:
一、核心设计逻辑:从单令牌到多令牌预测
传统单令牌预测:
- 输入序列:
[我, 吃, 苹, 果]
- 预测目标:每个位置仅预测下一个令牌(如“我”→预测“吃”,“吃”→预测“苹”)。
- 缺点:训练信号稀疏,模型需多次迭代才能学习长距离依赖。
MTP多令牌预测:
- 目标:每个位置预测未来D个令牌(如D=2时,“我”→预测“吃”和“苹”,“吃”→预测“苹”和“果”)。
- 优势:密集训练信号,强制模型提前规划多步生成,提升长序列生成效率。
二、MTP模块实现:以D=2为例(预测未来2个令牌)
假设输入序列为 [t₁=我, t₂=吃, t₃=苹, t₄=果]
,序列长度T=4,MTP模块按深度k=1和k=2顺序预测:
1. k=1深度:预测第i+1个令牌(下一个令牌)
-
输入处理:
- 对于第i=1个令牌“我”,k=1时,前一层表示h⁰₁为主模型输出的“我”的表示。
- 结合未来第i+1=2个令牌“吃”的嵌入:
h 1 ′ 1 = M 1 [ RMSNorm ( h 1 0 ) ; RMSNorm ( Emb ( t 2 = 吃 ) ) ] h'^1_1 = M_1 \left[ \text{RMSNorm}(h^0_1) ; \text{RMSNorm}(\text{Emb}(t₂=吃)) \right] h1′1=M1[RMSNorm(h10);RMSNorm(Emb(t2=吃))]
(拼接并投影为2d维度,d为隐藏层维度)
-
Transformer处理:
- 将h’^1_1输入TRM₁,生成当前深度表示h¹₁,用于预测第i+1+1=2+1=3个令牌“苹”(实际应为i+k+1=1+1+1=3,即t₃)。
-
输出预测:
- 共享输出头计算概率分布:
P 3 1 = OutHead ( h 1 1 ) (预测t₃=苹的概率) P^1_3 = \text{OutHead}(h^1_1) \quad \text{(预测t₃=苹的概率)} P31=OutHead(h11)(预测t₃=苹的概率)
- 共享输出头计算概率分布:
2. k=2深度:预测第i+2个令牌(下下个令牌)
-
输入处理:
- 对于i=1,k=2时,前一层表示h¹₁(k=1的输出)。
- 结合未来第i+2=3个令牌“苹”的嵌入:
h 1 ′ 2 = M 2 [ RMSNorm ( h 1 1 ) ; RMSNorm ( Emb ( t 3 = 苹 ) ) ] h'^2_1 = M_2 \left[ \text{RMSNorm}(h^1_1) ; \text{RMSNorm}(\text{Emb}(t₃=苹)) \right] h1′2=M2[RMSNorm(h11);RMSNorm(Emb(t3=苹))]
-
Transformer处理:
- 输入TRM₂生成h²₁,用于预测第i+2+1=4个令牌“果”(t₄)。
-
输出预测:
P 4 2 = OutHead ( h 1 2 ) (预测t₄=果的概率) P^2_4 = \text{OutHead}(h^2_1) \quad \text{(预测t₄=果的概率)} P42=OutHead(h12)(预测t₄=果的概率)
3. 因果链保持:
- 预测t₃时,仅依赖t₁和t₂的信息;预测t₄时,依赖t₁、t₂、t₃的信息,确保每个预测步骤符合因果关系(即不依赖未来未生成的令牌)。
三、训练目标:多深度损失计算实例
假设T=4,D=2,λ=0.3,计算MTP损失:
- k=1深度损失:
- 预测范围:i=2+1=3到T+1=5(实际序列长度为4,故有效范围i=3到4)。
- 真实令牌:t₃=苹,t₄=果。
- 损失:
L 1 MTP = − 1 4 ( log P 3 1 [ 苹 ] + log P 4 1 [ 果 ] ) \mathcal{L}^{\text{MTP}}_1 = -\frac{1}{4} \left( \log P^1_3[苹] + \log P^1_4[果] \right) L1MTP=−41(logP31[苹]+logP41[果])
- k=2深度损失:
- 预测范围:i=2+2=4到T+1=5(仅i=4)。
- 真实令牌:t₄=果。
- 损失:
L 2 MTP = − 1 4 log P 4 2 [ 果 ] \mathcal{L}^{\text{MTP}}_2 = -\frac{1}{4} \log P^2_4[果] L2MTP=−41logP42[果]
- 整体MTP损失:
L MTP = 0.3 × 1 2 ( L 1 MTP + L 2 MTP ) \mathcal{L}^{\text{MTP}} = 0.3 \times \frac{1}{2} \left( \mathcal{L}^{\text{MTP}}_1 + \mathcal{L}^{\text{MTP}}_2 \right) LMTP=0.3×21(L1MTP+L2MTP)
该损失与主模型的单令牌预测损失共同优化模型,强化多步生成能力。
四、推理阶段:推测解码加速实例
- 传统解码:逐令牌生成,生成“我吃苹果”需4次迭代(每次生成1个令牌)。
- MTP推测解码:
- 通过MTP模块提前预测下2个令牌候选(如“吃”“苹”)。
- 验证候选令牌正确性,若正确则一次性生成,减少迭代次数(如2次迭代生成4个令牌)。
- 效果:解码速度提升1.8倍,尤其适合长文本生成(如代码、数学证明)。
五、关键优势与对比
特性 | DeepSeek-V3 MTP | Gloeckle et al. (2024) |
---|---|---|
预测方式 | 顺序预测(保持因果链) | 并行独立预测(多输出头) |
参数共享 | 共享主模型嵌入层和输出头 | 独立输出头(参数更多) |
核心目标 | 训练阶段增强模型能力 | 推理阶段加速(推测解码) |
典型应用 | 提升数学、代码长序列生成质量 | 单纯加速生成速度 |
总结:MTP如何提升模型性能?
通过顺序预测未来多个令牌,MTP在训练阶段为模型提供更密集的监督信号,迫使模型学习序列生成的长期依赖(如语法、逻辑连贯)。例如,生成数学证明时,预测下一步公式推导步骤;生成代码时,提前规划函数调用顺序。这种预规划能力在推理阶段通过推测解码进一步加速,实现“训练提效+推理加速”的双重优势,是DeepSeek-V3在复杂任务上表现突出的关键技术之一。
4、Multi-Token Prediction(原文解释)
受格洛克勒(Gloeckle)等人(2024年)启发,我们为DeepSeek-V3设计了**多令牌预测(Multi-Token Prediction, MTP)**目标,将每个位置的预测范围扩展到多个未来令牌。一方面,MTP目标通过密集化训练信号提升数据效率;另一方面,它使模型能够预规划表示,从而更好地预测未来令牌。图3展示了我们的MTP实现方式。不同于格洛克勒等人(2024年)使用独立输出头并行预测D个额外令牌的方法,我们采用顺序预测额外令牌的方式,并在每个预测深度保持完整的因果链。本节将详细介绍MTP的实现细节。
MTP模块
具体而言,我们的MTP实现通过D个顺序模块预测D个额外令牌。第k个MTP模块包含一个共享嵌入层Emb(·)、一个共享输出头OutHead(·)、一个Transformer块TRMₖ(·)和一个投影矩阵𝑀ₖ∈Rᵈײᵈ。对于第i个输入令牌𝑡ᵢ,在第k个预测深度,我们首先将第(i)个令牌在(k−1)深度的表示h⁽ᵏ⁻¹⁾ᵢ∈Rᵈ与第(i+k)个令牌的嵌入Emb(𝑡ᵢ₊ₖ)∈Rᵈ通过线性投影结合:
h i ( k ) = 𝑀 k [ RMSNorm ( h i ( k − 1 ) ) ; RMSNorm ( Emb ( 𝑡 i + k ) ) ] ( 21 ) h'⁽ᵏ⁾ᵢ = 𝑀ₖ \left[ \text{RMSNorm}(h⁽ᵏ⁻¹⁾ᵢ) ; \text{RMSNorm}(\text{Emb}(𝑡ᵢ₊ₖ)) \right] \quad (21) hi(k)=Mk[RMSNorm(hi(k−1));RMSNorm(Emb(ti+k))](21)
其中[·; ·]表示拼接操作。特别地,当k=1时,h⁽ᵏ⁻¹⁾ᵢ为主模型输出的令牌表示。注意,每个MTP模块的嵌入层与主模型共享。拼接后的h’⁽ᵏ⁾ᵢ作为第k深度Transformer块的输入,生成当前深度的输出表示h⁽ᵏ⁾ᵢ:
h 1 : 𝑇 − k ( k ) = TRMₖ ( h 1 : 𝑇 − k ( k ) ) ( 22 ) h⁽ᵏ⁾_{1:𝑇−ᵏ} = \text{TRMₖ}(h'⁽ᵏ⁾_{1:𝑇−ᵏ}) \quad (22) h1:T−k(k)=TRMₖ(h1:T−k(k))(22)
其中T为输入序列长度,i:j表示包含左右边界的切片操作。最后,共享输出头以h⁽ᵏ⁾ᵢ为输入,计算第k个额外预测令牌的概率分布𝑃⁽ᵏ⁾_{𝑖+𝑘+1}∈Rᵛ(V为词汇表大小):
𝑃 𝑖 + 𝑘 + 1 ( k ) = OutHead ( h i ( k ) ) ( 23 ) 𝑃⁽ᵏ⁾_{𝑖+𝑘+1} = \text{OutHead}(h⁽ᵏ⁾ᵢ) \quad (23) Pi+k+1(k)=OutHead(hi(k))(23)
输出头OutHead(·)将表示线性映射为对数概率(logits),并通过Softmax函数计算第k个额外令牌的预测概率。每个MTP模块的输出头同样与主模型共享。我们保持预测因果链的原则与EAGLE(Li等人,2024b)类似,但其主要目标是推测解码(Leviathan等人,2023;Xia等人,2023),而我们利用MTP优化训练过程。
MTP训练目标
对于每个预测深度,计算交叉熵损失𝐿⁽ᵏ⁾_MTP:
𝐿 MTP ( k ) = CrossEntropy ( 𝑃 2 + 𝑘 : 𝑇 + 1 ( k ) , 𝑡 2 + 𝑘 : 𝑇 + 1 ) = − 1 𝑇 ∑ 𝑖 = 2 + 𝑘 𝑇 + 1 log 𝑃 𝑖 ( k ) [ 𝑡 i ] ( 24 ) 𝐿⁽ᵏ⁾_{\text{MTP}} = \text{CrossEntropy}(𝑃⁽ᵏ⁾_{2+𝑘:𝑇+1}, 𝑡_{2+𝑘:𝑇+1}) = -\frac{1}{𝑇} \sum_{𝑖=2+𝑘}^{𝑇+1} \log 𝑃⁽ᵏ⁾_𝑖[𝑡ᵢ] \quad (24) LMTP(k)=CrossEntropy(P2+k:T+1(k),t2+k:T+1)=−T1i=2+k∑T+1logPi(k)[ti](24)
其中T为序列长度,𝑡ᵢ为第i位置的真实令牌,𝑃⁽ᵏ⁾_𝑖[𝑡ᵢ]为第k个MTP模块对𝑡ᵢ的预测概率。最终,将所有深度的MTP损失取平均并乘以权重因子λ,得到整体MTP损失𝐿_MTP,作为DeepSeek-V3的额外训练目标:
𝐿 MTP = λ 𝐷 ∑ 𝑘 = 1 𝐷 𝐿 MTP ( k ) ( 25 ) 𝐿_{\text{MTP}} = \frac{\lambda}{𝐷} \sum_{𝑘=1}^{𝐷} 𝐿⁽ᵏ⁾_{\text{MTP}} \quad (25) LMTP=Dλk=1∑DLMTP(k)(25)
MTP在推理中的应用
MTP策略主要用于提升主模型性能,因此推理时可直接丢弃MTP模块,主模型独立正常运行。此外,我们还可将MTP模块用于推测解码,进一步降低生成延迟。
3.多头潜在注意力(MLA)
具体原理参考:DeepSeek-V2论文笔记链接 ,MLA汇总链接
在注意力机制方面,DeepSeek-V3采用了MLA(多头潜在注意力)架构。设𝑑为嵌入维度,𝑛ₕ为注意力头数,𝑑ₕ为每个头的维度,且hₜ∈Rᵈ表示给定注意力层中第t个令牌的注意力输入。MLA的核心是对注意力键和值进行低秩联合压缩,以减少推理时的键值(KV)缓存:
c t K V = W D K V h t , ( 1 ) c_{t}^{KV} = W^{DKV} h_t, \quad (1) ctKV=WDKVht,(1)
[ k t , 1 C ; k t , 2 C ; … ; k t , n h C ] = k t C = W U K c t K V , ( 2 ) \left[k_{t,1}^{C}; k_{t,2}^{C}; \dots; k_{t,n_h}^{C}\right] = k_t^C = W^{UK} c_t^{KV}, \quad (2) [kt,1C;kt,2C;…;kt,nhC]=ktC=WUKctKV,(2)
k t R = RoPE ( W K R h t ) , ( 3 ) k_t^R = \text{RoPE}(W^{KR} h_t), \quad (3) ktR=RoPE(WKRht),(3)
k t , i = [ k t , i C ; k t R ] , ( 4 ) k_{t,i} = \left[k_{t,i}^{C}; k_t^R\right], \quad (4) kt,i=[kt,iC;ktR],(4)
[ v t , 1 C ; v t , 2 C ; … ; v t , n h C ] = v t C = W U V c t K V , ( 5 ) \left[v_{t,1}^{C}; v_{t,2}^{C}; \dots; v_{t,n_h}^{C}\right] = v_t^C = W^{UV} c_t^{KV}, \quad (5) [vt,1C;vt,2C;…;vt,nhC]=vtC=WUVctKV,(5)
其中,c𝐾𝑉𝑡∈Rᵈᶜ是键和值的压缩潜在向量;𝑑ᶜ(≪𝑑ₕ𝑛ₕ)表示KV压缩维度;𝑊𝐷𝐾𝑉∈Rᵈᶜ×ᵈ为下投影矩阵;𝑊𝑈𝐾、𝑊𝑈𝑉∈Rᵈₕ𝑛ₕ×ᵈᶜ分别为键和值的上投影矩阵;𝑊𝐾𝑅∈R𝑑ᴿₕ×ᵈ是用于生成携带旋转位置嵌入(RoPE)的解耦键的矩阵(Su等人,2024);RoPE(·)表示应用RoPE矩阵的操作;[·; ·]表示拼接。注意,对于MLA,生成过程中仅需缓存蓝色框向量(即c𝐾𝑉𝑡和k𝑅𝑡),这在保持与标准多头注意力(MHA,Vaswani等人,2017)相当性能的同时,显著减少了KV缓存。
对于注意力查询,我们也进行低秩压缩以减少训练时的激活内存:
c t Q = W D Q h t , ( 6 ) c_t^Q = W^{DQ} h_t, \quad (6) ctQ=WDQht,(6)
[ q t , 1 C ; q t , 2 C ; … ; q t , n h C ] = q t C = W U Q c t Q , ( 7 ) \left[q_{t,1}^{C}; q_{t,2}^{C}; \dots; q_{t,n_h}^{C}\right] = q_t^C = W^{UQ} c_t^Q, \quad (7) [qt,1C;qt,2C;…;qt,nhC]=qtC=WUQctQ,(7)
[ q t , 1 R ; q t , 2 R ; … ; q t , n h R ] = q t R = RoPE ( W Q R c t Q ) , ( 8 ) \left[q_{t,1}^{R}; q_{t,2}^{R}; \dots; q_{t,n_h}^{R}\right] = q_t^R = \text{RoPE}(W^{QR} c_t^Q), \quad (8) [qt,1R;qt,2R;…;qt,nhR]=qtR=RoPE(WQRctQ),(8)
q t , i = [ q t , i C ; q t , i R ] , ( 9 ) q_{t,i} = \left[q_{t,i}^{C}; q_{t,i}^{R}\right], \quad (9) qt,i=[qt,iC;qt,iR],(9)
其中,c𝑄𝑡∈R𝑑′ᶜ是查询的压缩潜在向量;𝑑′ᶜ(≪𝑑ₕ𝑛ₕ)表示查询压缩维度;𝑊𝐷𝑄∈R𝑑′ᶜ×ᵈ、𝑊𝑈𝑄∈Rᵈₕ𝑛ₕ×𝑑′ᶜ分别为查询的下投影和上投影矩阵;𝑊𝑄𝑅∈R𝑑ᴿₕ𝑛ₕ×𝑑′ᶜ是用于生成携带RoPE的解耦查询的矩阵。
最终,注意力查询(q𝑡,𝑖)、键(k𝑗,𝑖)和值(v𝐶𝑗,𝑖)结合生成最终注意力输出u𝑡:
o t , i = ∑ j = 1 t Softmax j ( q t , i T k j , i d h + d h R ) v j , i C , ( 10 ) o_{t,i} = \sum_{j=1}^t \text{Softmax}_j \left( \frac{q_{t,i}^T k_{j,i}}{\sqrt{d_h + d_h^R}} \right) v_{j,i}^C, \quad (10) ot,i=j=1∑tSoftmaxj dh+dhRqt,iTkj,i vj,iC,(10)
u t = W O [ o t , 1 ; o t , 2 ; … ; o t , n h ] , ( 11 ) u_t = W^O \left[ o_{t,1}; o_{t,2}; \dots; o_{t,n_h} \right], \quad (11) ut=WO[ot,1;ot,2;…;ot,nh],(11)
其中,𝑊𝑂∈Rᵈ×ᵈₕ𝑛ₕ为输出投影矩阵。
三、训练基础设施与优化
1. 硬件与混合精度训练
- 计算集群:
- 使用2048张NVIDIA H800 GPU,节点内通过NVLink互联,节点间通过InfiniBand通信,支持高效分布式训练。
- FP8混合精度框架:
- 首次在超大规模模型中验证FP8可行性,通过细粒度量化(1x128激活块、128x128权重块)和高精度累加(CUDA核心FP32累加),将相对损失误差控制在0.25%以内,训练速度提升2倍,显存占用减少。
2. 训练框架优化
- DualPipe算法:
- 优化流水线并行,减少气泡并重叠计算与通信,使跨节点专家并行的通信开销接近零,支持模型高效扩展。
- 内存效率优化:
- 重计算RMSNorm和MLA上投影,CPU异步更新指数移动平均(EMA),避免显存冗余,无需昂贵的张量并行(Tensor Parallelism)。
四、预训练与后训练流程
1. 预训练阶段
- 数据构建:
- 14.8万亿高质量令牌,包含数学、编程、多语言数据,采用文档打包和Fill-in-Middle(FIM)策略增强数据多样性。
- 超参数与扩展:
- 61层Transformer,隐藏维度7168,激活参数37B/令牌;通过两阶段扩展上下文至128K(YaRN技术),NIAH测试验证长上下文稳定性。
- 训练稳定性:
- 全程无不可恢复的损失骤增或回滚,优化后的负载均衡策略确保训练稳定。
2. 后训练阶段
- 监督微调(SFT):
- 150万实例,融合DeepSeek-R1生成的推理数据(数学、代码等),平衡准确性与响应长度。
- 强化学习(RL):
- 采用Group Relative Policy Optimization(GRPO),结合规则奖励(如数学答案格式验证)和模型奖励,提升复杂任务表现。
五、性能评估与基准测试
1. 核心基准表现
领域 | 基准 | DeepSeek-V3成绩 | 对比模型表现 | 优势 |
---|---|---|---|---|
知识推理 | MMLU (5-shot EM) | 88.5 | LLaMA-3.1-405B (88.6), GPT-4o (87.2) | 开源领先,接近闭源模型 |
数学推理 | MATH-500 (EM) | 90.2 | Qwen2.5-72B (80.0), Claude-3.5 (73.8) | 非长CoT模型中最高,超越多数闭源 |
代码生成 | LiveCodeBench | 37.6 (Pass@1) | HumanEval-Mul (82.6 Pass@1) | 代码竞赛任务领先,工程能力突出 |
中文任务 | C-SimpleQA | 64.8 (Correct) | GPT-4o (59.3), Qwen2.5 (48.4) | 中文事实性知识超越闭源模型 |
长上下文 | NIAH (128K tokens) | 稳定高分 | - | 支持128K上下文,性能无显著下降 |
2. 闭源模型对比
- 在MMLU-Pro、GPQA-Diamond等专业知识基准,以及Codeforces编程竞赛任务中,DeepSeek-V3性能接近GPT-4o和Claude-3.5,部分中文任务(如C-Eval)超越闭源模型。
六、训练成本与效率
- 总GPU小时:278.8万(预训练266.4万+上下文扩展11.9万+后训练0.5万),假设H800租金$2/小时,总成本约**$557.6万**,仅为同类模型的1/3~1/2。
- 效率优势:每万亿令牌训练仅需18万H800 GPU小时,通过FP8训练和通信优化,无需张量并行,硬件利用率提升30%。
七、局限性与未来方向
1. 当前局限
- 部署门槛:推荐部署单元较大(如解码阶段需320 GPU),对中小团队不友好;生成速度仍有提升空间(依赖硬件优化)。
- 模型能力:复杂逻辑推理(如长链CoT)仍需依赖蒸馏技术,原生推理能力待增强。
2. 未来方向
- 架构创新:探索无限上下文支持、非Transformer架构(如MoE优化),提升长文本处理效率。
- 数据与训练:多维度数据增强(如跨模态)、引入动态训练目标,避免基准过拟合。
- 评估体系:开发更全面的多维度评估方法,覆盖真实场景任务(如实时推理、多轮对话)。
八、核心贡献
- 架构层面:开创无辅助损失负载均衡和多令牌预测,提升MoE模型效率与性能。
- 工程层面:首次验证FP8在超大规模模型的可行性,设计高效训练框架降低成本。
- 开源生态:提供高性能开源模型(Checkpoint可用),缩小开源与闭源模型差距,推动AGI研究普惠化。
总结
DeepSeek-V3通过架构创新、训练优化与大规模数据的结合,在性能、效率和成本之间实现突破,成为当前最强开源MoE模型。其核心技术(如无辅助损失负载均衡、FP8训练)为后续大模型研发提供了可复用的工程范式,尤其在数学、代码等复杂任务上的表现,彰显了开源模型在特定领域超越闭源的潜力。未来通过硬件协同设计和架构升级,DeepSeek-V3有望进一步推动通用人工智能的落地。