DeepSeek-V3 技术报告

作者/机构: DeepSeek-AI


A1 主要贡献

DeepSeek-V3是一个拥有6710亿总参数的强混合专家(MoE)语言模型,每个token激活370亿参数。为了实现经济高效的训练和推理,该模型继承并验证了DeepSeek-V2中的多头潜在注意力(MLA)和DeepSeekMoE架构。本文的核心问题是如何在提升模型性能的同时,实现极致的训练和推理效率。

研究目标是通过算法、框架和硬件的协同设计,在可控的成本内训练出性能顶尖的开源模型。

主要创新点如下:
1. 架构创新:新颖的负载均衡策略和训练目标
* 在DeepSeek-V2高效架构的基础上,首创了一种无辅助损失(auxiliary-loss-free)的负载均衡策略,旨在最小化因强制负载均衡对模型性能造成的负面影响。
* 研究并采用了一种多Token预测(Multi-Token Prediction, MTP)的训练目标,实验证明该目标有助于提升模型在各类评测基准上的性能,并可用于推理加速的推测解码。

  1. 预训练:追求极致的训练效率

    • 设计并实现了一个FP8混合精度训练框架,并首次在一个超大规模模型上验证了FP8训练的可行性和有效性。
    • 通过算法、框架和硬件的协同设计,克服了跨节点MoE训练中的通信瓶颈,实现了接近完全的计算-通信重叠。这显著提升了训练效率,降低了成本,使得模型规模可以进一步扩展而无需增加额外开销。
    • 以仅266.4万H800 GPU小时的经济成本,在14.8T tokens上完成了DeepSeek-V3的预训练,产生了当前最强的开源基础模型。
  2. 后训练:从DeepSeek-R1蒸馏知识

    • 引入了一种创新的方法,将长思维链(long-Chain-of-Thought, CoT)模型(特别是DeepSeek R1系列模型)的推理能力蒸馏到标准大语言模型DeepSeek-V3中。该流程将R1模型的验证和反思模式融入DeepSeek-V3,显著提升了其推理性能,同时保持了对输出风格和长度的控制。
  3. 核心评估结果总结

    • 知识能力:在MMLU、MMLU-Pro和GPQA等教育基准上,DeepSeek-V3超越了所有其他开源模型,性能与GPT-4o和Claude-Sonnet-3.5等顶尖闭源模型相当。
    • 代码、数学与推理:在数学相关基准上,DeepSeek-V3在所有非长CoT模型中达到最先进水平。在编程竞赛基准(如LiveCodeBench)上,其表现也位居榜首。

A2 方法细节

2. 架构

DeepSeek-V3的基础架构仍在Transformer【索引106,Attention is all you need,2017,Advances in neural information processing systems】框架内。为了实现高效推理和经济训练,DeepSeek-V3采用了已在DeepSeek-V2中充分验证的多头潜在注意力(MLA)【索引17,Deepseek-v2: A strong, economical, and efficient mixture-of-experts language model,2024c,CoRR】和DeepSeekMoE【索引14,Deepseekmoe: Towards ultimate expert specialization in mixture-of-experts language models,2024,CoRR】。与DeepSeek-V2不同的是,DeepSeek-V3为DeepSeekMoE引入了一种无辅助损失的负载均衡策略【索引107,Auxiliary-loss-free load balancing strategy for mixture-of-experts,2024a,CoRR】,以减轻为确保负载均衡而导致的性能下降。此外,还引入了多Token预测(MTP)训练目标,以提升模型在评测基准上的整体性能。

2.1 基础架构

DeepSeek-V3的基础架构。该架构的核心是MLA和DeepSeekMoE,如图2所示。与DeepSeek-V2相比,一个关键区别是为DeepSeekMoE引入了无辅助损失的负载均衡策略,以缓解强制负载均衡带来的性能损失。

图2 | DeepSeek-V3基础架构示意图。继DeepSeek-V2之后,我们采用MLA和DeepSeekMoE以实现高效推理和经济训练。
图2 | DeepSeek-V3基础架构示意图。继DeepSeek-V2之后,我们采用MLA和DeepSeekMoE以实现高效推理和经济训练。

2.1.1 多头潜在注意力(Multi-Head Latent Attention)

注意力机制采用MLA架构。设$d$为嵌入维度,$n_h$为注意力头数,$d_h$为每个头的维度,$h_i \in R^d$为第$i$个token的注意力输入。MLA的核心思想是对注意力的键(Key)和值(Value)进行低秩联合压缩,以减少推理过程中的键值(KV)缓存。

键(Key)和值(Value)的低秩压缩。通过下式计算压缩后的潜在向量$c_{kv} \in R^{d_{kv}}$,该向量用于生成键和值。其中$d_{kv} (\ll n_h d_h)$是KV压缩维度,$W_{down} \in R^{d_{kv} \times d}$是下投影矩阵,$W_{k,up}, W_{v,up} \in R^{n_h d_h \times d_{kv}}$分别是键和值的上投影矩阵。同时,使用一个独立的矩阵$W_{k,d} \in R^{n_h d_h \times d}$生成携带旋转位置编码(RoPE)【索引98,Roformer: Enhanced transformer with rotary position embedding,2024,Neurocomputing】的解耦键。在生成过程中,只有$c_{kv}$和$k_{d,i}$需要被缓存,这显著减少了KV缓存,同时性能与标准多头注意力(MHA)【索引106,Attention is all you need,2017,Advances in neural information processing systems】相当。

公式
公式

公式
公式

公式
公式

公式
公式

公式
公式

查询(Query)的低秩压缩。为了减少训练过程中的激活内存占用,对查询也执行了低秩压缩。压缩后的查询潜在向量为$c_{q,i} \in R^{d'_{kv}}$,其中$d'_{kv} (\ll n_h d_h)$是查询压缩维度。$W'_{down} \in R^{d'_{kv} \times d}$和$W'_{q,up} \in R^{n_h d_h \times d'_{kv}}$分别是下投影和上投影矩阵。$W'_{q,d} \in R^{n_h d_h \times d'_{kv}}$用于生成携带RoPE的解耦查询。

公式
公式

公式
公式

公式
公式

最终注意力输出的计算。将查询($q_{i,j}$)、键($k_{j,i}$)、值($v_{j,i}$)组合,计算最终的注意力输出$u_i$。其中$W_o \in R^{d \times n_h d_h}$是输出投影矩阵。

公式
公式

公式
公式

2.1.2 DeepSeekMoE与无辅助损失的负载均衡

DeepSeekMoE的基础架构。在前馈网络(FFN)部分,DeepSeek-V3采用了DeepSeekMoE架构【索引14,Deepseekmoe: Towards ultimate expert specialization in mixture-of-experts language models,2024,CoRR】。与GShard【索引57,Gshard: Scaling giant models with conditional computation and automatic sharding,2021,ICLR】等传统MoE架构相比,DeepSeekMoE使用更细粒度的专家,并将部分专家隔离为共享专家。FFN的输出$h'_i$由共享专家和被路由的专家加权求和得到。其中,$N_s$和$N_r$分别是共享专家和路由专家的数量,$K$是激活的路由专家数量,$g_{i,j}$是门控值,$s_{i,j}$是token到专家的亲和度分数,通过sigmoid函数计算。与DeepSeek-V2稍有不同,DeepSeek-V3使用sigmoid函数计算亲和度分数,并在所有选定的亲和度分数之间进行归一化以产生门控值。

公式
公式

公式
公式

公式
公式

公式
公式

无辅助损失的负载均衡策略。为了解决专家负载不均衡可能导致的路由崩溃【索引94,Outrageously large neural networks: The sparsely-gated mixture-of-experts layer,2017,ICLR】和计算效率下降问题,DeepSeek-V3开创性地采用了无辅助损失的负载均衡策略【索引107,Auxiliary-loss-free load balancing strategy for mixture-of-experts,2024a,CoRR】。该策略通过为每个专家引入一个偏置项$b_j$,并将其加到亲和度分数$s_{i,j}$上来决定Top-K路由。偏置项仅用于路由决策,而用于加权FFN输出的门控值仍由原始亲和度分数$s_{i,j}$导出。训练中,在每个训练步骤结束时,如果某个专家过载,则其对应的偏置项减少$\eta$;如果欠载,则增加$\eta$,其中$\eta$是一个称为偏置更新速度的超参数。通过这种动态调整,模型在训练期间保持了专家负载的平衡,并取得了比纯辅助损失方法更好的性能。

公式
公式

补充性的序列级辅助损失。尽管主要依靠无辅助损失策略,为了防止任何单个序列内出现极端不平衡,DeepSeek-V3还采用了一个补充性的序列级平衡损失$L_{balance}$。该损失鼓励每个序列上的专家负载保持平衡,其中平衡因子$\alpha$被设置为一个极小的值。

公式
公式

公式
公式

公式
公式

公式
公式

节点限制路由(Node-Limited Routing)。类似于DeepSeek-V2中使用的设备限制路由,DeepSeek-V3也采用了一种受限的路由机制来限制训练期间的通信成本。具体来说,确保每个token最多被发送到$m$个节点,这些节点是根据分布在每个节点上的专家的最高$k_{max}$个亲和度分数之和来选择的。在这种约束下,MoE训练框架可以实现近乎完全的计算-通信重叠。

无Token丢弃。由于采用了有效的负载均衡策略,DeepSeek-V3在整个训练过程中保持了良好的负载平衡,因此不会丢弃任何token。此外,通过特定的部署策略确保了推理时的负载均衡,因此在推理过程中也不会丢弃token。

2.2 多Token预测(Multi-Token Prediction)

多Token预测(MTP)的目标与实现。受Gloeckle等人【索引28,Better & faster large language models via multi-token prediction,2024,ICML】的启发,DeepSeek-V3采用了多Token预测(MTP)目标,将预测范围扩展到未来的多个token。这不仅密集了训练信号,提高了数据效率,还可能使模型能够预先规划其表示,以更好地预测未来token。与Gloeckle等人并行预测额外token不同,DeepSeek-V3顺序地预测额外的token,并在每个预测深度保持完整的因果链。

图3 | 我们的多Token预测(MTP)实现示意图。我们在每个深度的每个token预测中都保持了完整的因果链。
图3 | 我们的多Token预测(MTP)实现示意图。我们在每个深度的每个token预测中都保持了完整的因果链。

MTP模块的构成与工作流程。MTP实现使用$D$个顺序模块来预测$D$个额外的token。第$d$-个MTP模块由共享的嵌入层Emb(·)、共享的输出头OutHead(·)、一个Transformer块TRM$_d$(·)和一个投影矩阵$W_d \in R^{d \times 2d}$组成。对于第$i$个输入token $x_i$,在第$d$个预测深度,首先将第$d-1$个深度的token表示$h^{d-1}_i$与第$i+d$个token的嵌入Emb($x_{i+d}$)通过线性投影结合起来。当$d=1$时,$h^{d-1}_i$指主模型给出的表示。这个组合后的表示$h'_{i,d}$作为第$d$个深度Transformer块的输入,生成当前深度的输出表示$h_{i,d}$。最后,共享的输出头根据$h_{i,d}$计算第$d$个额外预测token $P(x_{i+1+d})$的概率分布。这种维持预测因果链的原则与EAGLE【索引64,EAGLE: speculative sampling requires rethinking feature uncertainty,2024b,ICML】相似,但主要目标是改进训练,而非推测解码【索引58,Fast inference from transformers via speculative decoding,2023,ICML;索引113,Speculative decoding: Exploiting speculative execution for accelerating seq2seq generation,2023,EMNLP】。

公式
公式

公式
公式

公式
公式

MTP训练目标。对于每个预测深度,计算一个交叉熵损失$L_d^{MTP}$。最终,将所有深度的MTP损失取平均,并乘以一个权重因子$\lambda$,得到总的MTP损失$L_{MTP}$,作为DeepSeek-V3的额外训练目标。

公式
公式

公式
公式

MTP在推理中的应用。MTP策略主要旨在提升主模型的性能,因此在推理时可以直接丢弃MTP模块,主模型可以独立正常工作。此外,这些MTP模块也可以被用于推测解码,以进一步改善生成延迟。

3. 基础设施

3.2 训练框架

HAI-LLM训练框架。DeepSeek-V3的训练由HAI-LLM框架支持,该框架采用16路流水线并行(PP)【索引79,Zero bubble pipeline parallelism,2023a,arXiv】、跨8个节点的64路专家并行(EP)【索引57,Gshard: Scaling giant models with conditional computation and automatic sharding,2021,ICLR】和ZeRO-1数据并行(DP)【索引83,Zero: Memory optimizations toward training trillion parameter models,2020,SC20】。

工程优化。为了实现高效训练,实施了以下优化:
1. 设计了DualPipe算法用于高效的流水线并行,该算法减少了流水线气泡,并通过计算-通信重叠解决了跨节点专家并行带来的重通信开销。
2. 开发了高效的跨节点all-to-all通信核函数,以充分利用InfiniBand(IB)和NVLink带宽。
3. 精心优化了内存占用,使得训练DeepSeek-V3无需使用昂贵的张量并行(TP)。

3.2.1 DualPipe与计算-通信重叠

DualPipe算法解决通信开销。由于跨节点专家并行,DeepSeek-V3的计算与通信比约为1:1,导致效率不高。为解决此问题,设计了名为DualPipe的创新流水线并行算法。DualPipe通过有效重叠前向和后向的计算-通信阶段来加速训练,并减少流水线气泡。

DualPipe的核心思想与实现。DualPipe的核心思想是在一对独立的前向和后向块(chunk)内重叠计算和通信。每个块被分为四个部分:attention、all-to-all分发、MLP和all-to-all合并。在后向块中,attention和MLP进一步分为“为输入反向传播”和“为权重反向传播”。如图4所示,通过重新排列这些组件并手动调整GPU SM(流多处理器)用于通信与计算的比例,可以确保all-to-all和PP通信在执行期间被完全隐藏。

图4 | 一对独立前向和后向块的重叠策略(transformer块的边界未对齐)。橙色表示前向,绿色表示“为输入反向传播”,蓝色表示“为权重反向传播”,紫色表示PP通信,红色表示屏障。all-to-all和PP通信都可以被完全隐藏。
图4 | 一对独立前向和后向块的重叠策略(transformer块的边界未对齐)。橙色表示前向,绿色表示“为输入反向传播”,蓝色表示“为权重反向传播”,紫色表示PP通信,红色表示屏障。all-to-all和PP通信都可以被完全隐藏。

DualPipe调度策略。完整的DualPipe调度如图5所示,采用双向流水线调度,同时从流水线的两端输入微批次(micro-batch),大部分通信可以被完全重叠。这种重叠确保了即使模型规模进一步扩大,只要保持恒定的计算-通信比,仍然可以在跨节点部署细粒度专家的情况下,实现接近零的all-to-all通信开销。

图5 | 8个PP rank和两个方向上20个微批次的DualPipe调度示例。反向的微批次与前向的对称,为简化说明省略了其批次ID。由共享黑框包围的两个单元具有相互重叠的计算和通信。
图5 | 8个PP rank和两个方向上20个微批次的DualPipe调度示例。反向的微批次与前向的对称,为简化说明省略了其批次ID。由共享黑框包围的两个单元具有相互重叠的计算和通信。

DualPipe与其他PP方法的比较。如表2所示,与ZB1P【索引80,Zero bubble pipeline parallelism,2023b,URL https: //arxiv.org/abs/2401.10241】和1F1B【索引35,Pipedream: Fast and efficient pipeline parallel dnn training,2018,URL https://arxiv.or g/abs/1806.03377】相比,DualPipe显著减少了流水线气泡,而峰值激活内存仅增加了1/PP倍。虽然DualPipe需要保留两份模型参数副本,但这并不会显著增加内存消耗,因为训练中使用了较大的EP规模。与Chimera【索引61,Chimera: efficiently training large-scale neural networks with bidirectional pipelines,2021,SC ’21】相比,DualPipe对微批次数量的要求更宽松,且气泡和激活内存不会随微批次数量增长而增加。

表2 | 不同流水线并行方法的流水线气泡和内存使用比较。F表示一个前向块的执行时间,B表示一个完整后向块的执行时间,Bw表示一个“为权重反向传播”块的执行时间,F&B表示两个相互重叠的前向和后向块的执行时间。
表2 | 不同流水线并行方法的流水线气泡和内存使用比较。F表示一个前向块的执行时间,B表示一个完整后向块的执行时间,Bw表示一个“为权重反向传播”块的执行时间,F&B表示两个相互重叠的前向和后向块的执行时间。

3.2.2 高效的跨节点All-to-All通信实现

定制通信核函数以保证计算性能。为了保证DualPipe有足够的计算性能,我们定制了高效的跨节点all-to-all通信核函数(包括分发和合并),以节省专用于通信的SM数量。核函数的实现与MoE门控算法及集群网络拓扑协同设计。具体来说,通过将每个token的分发限制在最多4个节点来减少IB流量。token首先通过IB传输到目标节点上具有相同节点内索引的GPU,到达后立即通过NVLink转发到托管目标专家的特定GPU。这样,IB和NVLink的通信被完全重叠,每个token可以高效地选择平均每个节点3.2个专家而没有额外的NVLink开销。这意味着,尽管DeepSeek-V3实际上只选择8个路由专家,但它可以将这个数量扩展到最多13个(4节点 × 3.2专家/节点)而通信成本保持不变。总体而言,仅需20个SM就足以充分利用IB和NVLink的带宽。

通信核函数实现细节。我们采用warp specialization技术【索引7,Singe: leveraging warp specialization for high performance on GPUs,2014,PPoPP ’14】,将20个SM划分为10个通信通道。在分发过程中,(1) IB发送、(2) IB到NVLink转发、(3) NVLink接收由各自的warp处理,warp数量根据实际工作负载动态调整。合并过程也类似。此外,为减少对其他SM计算核函数的影响,我们使用定制的PTX指令并自动调整通信块大小,从而显著减少了L2缓存的使用和干扰。

3.2.3 极致的内存节省与最小开销

采用多种技术减少训练内存占用
1. 重计算RMSNorm和MLA上投影:在反向传播期间重计算所有RMSNorm操作和MLA上投影,从而无需持久存储它们的输出激活值,以微小开销显著减少了激活内存需求。
2. CPU中的指数移动平均(EMA):在训练期间,我们将模型参数的EMA保存在CPU内存中,并在每个训练步骤后异步更新。这使得我们能够维护EMA参数而无需额外的内存或时间开销。
3. 多Token预测的共享嵌入和输出头:利用DualPipe策略,我们将模型的最浅层(包括嵌入层)和最深层(包括输出头)部署在同一个PP rank上。这使得MTP模块和主模型之间可以物理共享嵌入和输出头的参数及梯度,进一步提高了内存效率。

3.3 FP8训练

引入FP8混合精度框架。受低精度训练最新进展的启发,我们提出了一个利用FP8数据格式的细粒度混合精度框架来训练DeepSeek-V3。为了解决FP8格式动态范围有限的问题,我们引入了细粒度的量化策略:1x$d_{tile}$元素的tile-wise分组或$d_{block} \times d_{block}$元素的block-wise分组。相关的反量化开销在我们的高精度累加过程中被大部分缓解。此外,为了进一步减少MoE训练中的内存和通信开销,我们以FP8格式缓存和分发激活值,同时以BF16格式存储低精度优化器状态。与BF16基线相比,我们FP8训练模型的相对损失误差始终低于0.25%。

图6 | 采用FP8数据格式的整体混合精度框架。为清晰起见,仅展示了线性算子。
图6 | 采用FP8数据格式的整体混合精度框架。为清晰起见,仅展示了线性算子。

3.3.1 混合精度框架

FP8训练的混合精度框架设计。该框架中,大部分计算密集型操作(如GEMM)在FP8中进行,而少数关键操作保持原始数据格式以平衡效率和数值稳定性,如图6所示。

FP8核心计算。为了加速训练,大多数核心计算核函数,即GEMM操作,都以FP8精度实现。这些GEMM操作接收FP8张量作为输入,并产生BF16或FP32的输出。与Linear算子相关的三个GEMM——Fprop(前向传播)、Dgrad(激活反向传播)和Wgrad(权重反向传播)——都在FP8中执行。这理论上使计算速度比原始BF16方法快一倍,并且FP8 Wgrad GEMM允许激活值以FP8格式存储,显著减少了内存消耗。

高精度组件保留。尽管FP8格式有效率优势,但某些对低精度计算敏感的算子仍需更高精度。因此,我们为以下组件保留原始精度(如BF16或FP32):嵌入模块、输出头、MoE门控模块、归一化算子和注意力算子。为了进一步保证数值稳定性,我们将主权重、权重梯度和优化器状态以更高精度存储。这些高精度组件带来的内存开销可以通过在分布式训练系统中的多个DP rank上进行有效分片来最小化。

图7 | (a) 我们提出一种细粒度的量化方法来减轻由特征异常值引起的量化误差;为简化说明,仅展示了Fprop。(b) 结合我们的量化策略,我们通过每$K_{tile}=128$个元素MMA提升到CUDA Cores进行高精度累加,从而提高了FP8 GEMM的精度。
图7 | (a) 我们提出一种细粒度的量化方法来减轻由特征异常值引起的量化误差;为简化说明,仅展示了Fprop。(b) 结合我们的量化策略,我们通过每$K_{tile}=128$个元素MMA提升到CUDA Cores进行高精度累加,从而提高了FP8 GEMM的精度。

3.3.2 通过量化和乘法提高精度

细粒度量化。为了解决FP8动态范围有限导致的溢出和下溢问题,我们提出了一种细粒度的量化方法。如图7(a)所示,(1) 对于激活值,我们以1x128的tile为基础进行分组和缩放;(2) 对于权重,我们以128x128的块为基础进行分组和缩放。这种方法通过根据更小的元素组自适应调整缩放因子,使量化过程能更好地适应异常值。

高精度累加。我们观察到NVIDIA H800 GPU上的FP8 GEMM累加精度有限,这在内维度K较大时问题尤为突出。为了解决这个问题,我们采用了提升到CUDA Cores进行更高精度累加的策略【索引103,CUTLASS,2023,URL https://github.com/NVIDIA/cutlas s】。如图7(b)所示,在Tensor Cores上执行MMA(矩阵乘法累加)时,中间结果以有限位宽累加。当达到一个$K_{tile}$的间隔时,这些部分结果被复制到CUDA Cores上的FP32寄存器中,进行全精度FP32累加。我们的细粒度量化在内维度K上应用了每组的缩放因子,这些因子可以在CUDA Cores上高效地作为反量化过程的一部分被乘上,计算开销极小。我们设置$K_{tile}=128$个元素,这在不引入显著开销的情况下,能显著提高精度。

优先使用Mantissa而非Exponents。与先前工作不同,我们在所有张量上都采用E4M3格式(4位指数,3位尾数)以获得更高精度。这得益于我们的细粒度量化策略,即tile-wise和block-wise缩放,它通过在分组元素间共享指数位,有效缓解了动态范围有限的影响。

在线量化。我们为每个1x128的激活tile或128x128的权重块在线计算最大绝对值,并据此推导缩放因子,然后在线将激活或权重量化为FP8格式,以确保缩放因子的准确性并简化框架。

3.3.3 低精度存储和通信

低精度优化器状态。我们采用BF16数据格式来跟踪AdamW【索引66,Decoupled weight decay regularization,2017,arXiv】优化器中的一阶和二阶矩,而没有观察到性能下降。但主权重和梯度仍保留为FP32。

低精度激活值。由于Wgrad操作在FP8中执行,我们将激活值以FP8格式缓存用于反向传播。但对于一些特殊算子,我们做了特别处理:(1) 注意力算子之后的Linear算子的输入,这些激活值也用于注意力算子的反向传播,对精度敏感,我们为其采用定制的E5M6数据格式。(2) MoE中SwiGLU算子的输入,我们缓存其输入并重计算其输出,这些激活值也以FP8存储。

低精度通信。为了缓解MoE模型训练中的通信瓶颈,我们将MoE上投影之前的激活值量化为FP8,然后应用分发组件。对于前向和后向的合并组件,我们将其保留在BF16中以保证关键部分的训练精度。

3.4 推理和部署

部署策略。我们在H800集群上部署DeepSeek-V3,采用分离预填充(prefilling)和解码(decoding)阶段的策略,以同时保证在线服务的服务水平目标(SLO)和高吞吐量。

3.4.1 预填充(Prefilling)

预填充阶段的部署单元与并行策略。最小部署单元为4个节点共32个GPU。Attention部分采用4路张量并行(TP4)结合序列并行(SP),以及8路数据并行(DP8)。MoE部分采用32路专家并行(EP32),以确保每个专家处理足够大的批次大小。MoE的all-to-all通信方式与训练时相同。

负载均衡策略。为了实现MoE部分的负载均衡,我们引入了冗余专家部署策略。根据在线部署期间收集的统计数据,复制高负载专家并冗余部署它们。在部署DeepSeek-V3时,预填充阶段设置了32个冗余专家。

吞吐量优化。为提高吞吐量并隐藏通信开销,我们同时处理两个计算工作负载相似的微批次,将一个微批次的attention和MoE与另一个微批次的分发和合并操作重叠。

动态冗余策略探索。我们正在探索一种动态冗余专家策略,每个GPU托管更多专家(如16个),但在每个推理步骤中只激活9个,并动态计算全局最优路由方案。

3.4.2 解码(Decoding)

解码阶段的部署与并行策略。解码阶段,我们将共享专家视为一个路由专家,因此每个token选择9个专家。最小部署单元为40个节点共320个GPU。Attention部分采用TP4+SP和DP80,而MoE部分使用EP320。每个GPU只托管一个专家。

负载均衡与通信。与预填充阶段类似,我们定期确定冗余专家集合。All-to-all通信通过IB上的直接点对点传输实现低延迟,并利用IBGDA技术【索引74,Improving network performance of HPC systems using NVIDIA Magnum IO NVSHMEM and GPUDirect Async,2022,NVIDIA】进一步优化。

吞吐量优化。我们也在探索在解码阶段同时处理两个微批次。与预填充不同,解码阶段attention消耗时间更多,因此我们将一个微批次的attention与另一个微批次的分发+MoE+合并操作重叠。由于MoE部分的瓶颈是内存访问而非计算,分配少量SM给它不会显著影响整体性能。

3.5 对硬件设计的建议
3.5.1 通信硬件

将通信任务从SM中卸载。当前的通信实现依赖于昂贵的SM,这限制了计算吞吐量。我们希望未来的硬件供应商能开发出将通信任务(如IB和NVLink之间的数据转发、聚合、reduce操作等)从计算单元SM上卸载的硬件,作为GPU协处理器或网络协处理器。

统一通信接口。我们期望这种硬件能从计算单元的角度统一IB(横向扩展)和NVLink(纵向扩展)网络,提供一个统一接口,使计算单元能通过简单的原语轻松完成跨整个IB-NVLink统一域的读、写、多播和reduce等操作。

3.5.2 计算硬件

更高的FP8 GEMM累加精度。我们建议未来的芯片设计增加Tensor Cores中的累加精度,以支持全精度累加,或根据算法的精度要求选择合适的累加位宽。

支持Tile-wise和Block-wise量化。我们建议未来的芯片支持细粒度量化,使Tensor Cores能够接收缩放因子并实现带组缩放的MMA,从而避免Tensor Cores和CUDA Cores之间频繁的数据移动。

支持在线量化。我们建议将FP8转换和TMA(Tensor Memory Accelerator)访问集成到单个融合操作中,或采用近内存计算方法,以避免频繁的内存读写。

支持转置GEMM操作。我们建议未来的芯片能够直接从共享内存中转置读取矩阵,并结合FP8格式转换与TMA访问的融合,以简化量化工作流。


A4 实验环境

  • 硬件配置:

    • GPU: 2048块NVIDIA H800 GPU。
    • 互联: 节点内GPU通过NVLink和NVSwitch连接;节点间通过InfiniBand (IB)互联。
  • 软件配置:

    • 训练框架: 自研的高效轻量级训练框架HAI-LLM。
    • 并行策略: 16路流水线并行(PP),64路专家并行(EP),ZeRO-1数据并行(DP)。
  • 模型架构:

    • 模型名称: DeepSeek-V3
    • 总参数量: 6710亿
    • 激活参数量: 370亿
    • 层数: 61层Transformer。
    • 隐藏层维度: 7168。
    • 注意力: MLA架构,128个注意力头,每个头维度128。KV压缩维度512,Query压缩维度1536。
    • FFN: 除前3层外均为MoE层。每个MoE层包含1个共享专家和256个路由专家,激活8个。
    • MTP: 预测深度为1,即额外预测1个token。
  • 数据集:

    • 规模: 14.8T tokens。
    • 特点: 优化了数学和编程样本比例,扩展了多语言覆盖范围。采用文档打包(document packing)和Fill-in-Middle(FIM)策略。
    • Tokenizer: 词汇量为128K的Byte-level BPE。
  • 训练超参数:

    • 优化器: AdamW ($β_1=0.9, β_2=0.95$, weight_decay=0.1)。
    • 序列长度: 预训练阶段最大4K,后续扩展到128K。
    • 学习率: 预热到2.2 × 10⁻⁴,然后分阶段余弦衰减。
    • 批大小: 从3072逐步增加到15360。
    • 负载均衡: 无辅助损失策略的偏置更新速度$\eta$为0.001,序列级平衡损失权重$\alpha$为0.0001。
    • MTP损失权重: $\lambda$在前10T tokens为0.3,之后为0.1。

A4 实验结果

预训练阶段评估

  • 实验内容:将DeepSeek-V3-Base与其他SOTA开源基础模型(DeepSeek-V2-Base, Qwen2.5 72B Base, LLaMA-3.1 405B Base)在多个基准上进行比较。
  • 实验结果(表3)
    • DeepSeek-V3-Base全面优于DeepSeek-V2-Base和Qwen2.5 72B Base。
    • 在大多数基准上,尤其是在多语言、代码和数学任务上,DeepSeek-V3-Base显著优于拥有11倍激活参数的LLaMA-3.1 405B Base。
    • 在英文和中文语言基准上,DeepSeek-V3-Base也表现出有竞争力或更优的性能。
  • 分析结论:DeepSeek-V3-Base已成为当前最强的开源模型。其卓越的性能归功于架构改进、模型规模和训练数据的扩大以及数据质量的提升。同时,得益于高效的架构和工程优化,其训练效率极高,每万亿token仅需18万H800 GPU小时。

表3 | DeepSeek-V3-Base与其他代表性开源基础模型的比较。所有模型都在我们的内部框架中评估,并共享相同的评估设置。差距不超过0.3的分数被认为处于同一水平。DeepSeekV3-Base在大多数基准测试中取得了最佳性能,尤其是在数学和代码任务上。
表3 | DeepSeek-V3-Base与其他代表性开源基础模型的比较。所有模型都在我们的内部框架中评估,并共享相同的评估设置。差距不超过0.3的分数被认为处于同一水平。DeepSeekV3-Base在大多数基准测试中取得了最佳性能,尤其是在数学和代码任务上。

消融研究

  1. 多Token预测(MTP)消融实验

    • 实验内容:在两个不同规模的基线模型上,对比添加MTP策略与不添加MTP策略的性能差异。
    • 实验结果(表4):在两个规模上,MTP策略在大多数评估基准上都持续提升了模型性能。
    • 分析结论:MTP策略是有效的,可以提升模型整体性能。

    表4 | MTP策略的消融结果。MTP策略在大多数评估基准上持续增强了模型性能。
    表4 | MTP策略的消融结果。MTP策略在大多数评估基准上持续增强了模型性能。

  2. 无辅助损失的负载均衡策略消融实验

    • 实验内容:在两个不同规模的基线模型上,对比使用无辅助损失策略与纯粹基于辅助损失的负载均衡方法的性能。
    • 实验结果(表5):无辅助损失策略在大多数评估基准上都持续取得了更好的模型性能。
    • 分析结论:无辅助损失策略相比传统辅助损失方法,能更好地平衡负载均衡和模型性能。

    表5 | 无辅助损失平衡策略的消融结果。与纯粹基于辅助损失的方法相比,无辅助损失策略在大多数评估基准上持续取得了更好的模型性能。
    表5 | 无辅助损失平衡策略的消融结果。与纯粹基于辅助损失的方法相比,无辅助损失策略在大多数评估基准上持续取得了更好的模型性能。

  3. 批级与序列级负载均衡对比

    • 实验内容:分析无辅助损失(批级)和序列级辅助损失在专家特化上的差异。
    • 实验结果(图9):无辅助损失模型在不同领域上展现出更强的专家特化模式。实验还表明,批级辅助损失也能达到与无辅助损失方法相似的性能。
    • 分析结论:批级负载均衡(无论是无辅助损失还是批级辅助损失)比序列级均衡约束更灵活,允许专家更好地特化于不同领域,从而带来性能优势。

    图9 | 无辅助损失和基于辅助损失的模型在Pile测试集的三个领域上的专家负载。无辅助损失模型显示出比基于辅助损失模型更强的专家专业化模式。相对专家负载表示实际专家负载与理论上平衡的专家负载之间的比率。由于空间限制,我们仅展示了两层的结果作为示例,所有层的结果在附录C中提供。
    图9 | 无辅助损失和基于辅助损失的模型在Pile测试集的三个领域上的专家负载。无辅助损失模型显示出比基于辅助损失模型更强的专家专业化模式。相对专家负载表示实际专家负载与理论上平衡的专家负载之间的比率。由于空间限制,我们仅展示了两层的结果作为示例,所有层的结果在附录C中提供。

后训练阶段评估

  • 实验内容:将DeepSeek-V3的对话模型与多个强大的基线模型(包括开源和闭源模型如GPT-4o、Claude-3.5-Sonnet)在标准评测和开放式评测上进行全面比较。
  • 标准评测结果(表6)

    • 综合表现: DeepSeek-V3是表现最好的开源模型,并与顶尖闭源模型GPT-4o和Claude-3.5-Sonnet具有竞争力。
    • 英文基准: 在MMLU、MMLU-Pro、GPQA等知识密集型任务上表现优异。在DROP、LongBench v2等长上下文任务上也是顶尖水平。
    • 代码与数学: 在算法类代码任务(如HumanEval-Mul, LiveCodeBench)和数学基准(如AIME, MATH-500)上表现卓越,显著超越其他模型。
    • 中文基准: 在中文事实性基准Chinese SimpleQA上大幅领先Qwen2.5-72B。

    表6 | DeepSeek-V3与其他代表性聊天模型的比较。所有模型都在限制输出长度为8K的配置下进行评估。样本少于1000个的基准测试使用不同的温度设置进行多次测试,以得出稳健的最终结果。DeepSeek-V3是性能最佳的开源模型,并且在与前沿闭源模型的竞争中也表现出色。
    表6 | DeepSeek-V3与其他代表性聊天模型的比较。所有模型都在限制输出长度为8K的配置下进行评估。样本少于1000个的基准测试使用不同的温度设置进行多次测试,以得出稳健的最终结果。DeepSeek-V3是性能最佳的开源模型,并且在与前沿闭源模型的竞争中也表现出色。

  • 开放式评估结果(表7)

    • 在Arena-Hard上,DeepSeek-V3取得了超过86%的胜率,与Claude-Sonnet-3.5-1022相当,成为首个在该基准上超过85%的开源模型。
    • 在AlpacaEval 2.0上,DeepSeek-V3超越了所有闭源和开源模型,展示了其在写作和简单问答方面的卓越能力。

    表7 | 英文开放式对话评估。对于AlpacaEval 2.0,我们使用长度控制的胜率作为指标。
    表7 | 英文开放式对话评估。对于AlpacaEval 2.0,我们使用长度控制的胜率作为指标。

  • MTP评估:

    • 第二个预测token的接受率在不同主题上介于85%至90%之间,使得模型解码速度(TPS)提升了1.8倍。

A5 结论

论文总结
本文介绍了DeepSeek-V3,一个拥有6710亿总参数(370亿激活)的大型MoE语言模型,它在14.8T tokens上进行了训练。该模型在继承MLA和DeepSeekMoE架构的基础上,开创性地采用了无辅助损失的负载均衡策略和多token预测训练目标,以提升性能。得益于FP8训练支持和细致的工程优化,其训练成本效益极高。后训练阶段成功地从DeepSeek-R1系列模型中蒸馏了推理能力。全面评估表明,DeepSeek-V3是当前最强的开源模型,性能可与GPT-4o和Claude-3.5-Sonnet等顶尖闭源模型相媲美。尽管性能强大,其全部训练(包括预训练、上下文扩展和后训练)仅需278.8万H800 GPU小时,保持了极高的经济性。

局限性
1. 部署门槛:为保证高效推理,推荐的部署单元较大,可能对小型团队构成负担。
2. 推理速度:尽管端到端生成速度已是DeepSeek-V2的两倍以上,但仍有进一步提升的空间。
这些局限性有望随着更先进硬件的发展而自然得到解决。

未来方向
1. 模型架构:持续研究和改进模型架构,以进一步提高训练和推理效率,并探索突破Transformer架构限制的可能性。
2. 训练数据:不断迭代训练数据的数量和质量,探索更多维度的训练信号来源。
3. 深度思考能力:通过扩展模型的推理长度和深度,持续探索和迭代其深度思考能力。
4. 模型评估:探索更全面、多维度的模型评估方法,以避免对固定基准的过度优化,从而更真实地评估模型能力。


A6 附录

B. 低精度训练的消融研究

图10 | BF16和FP8训练的损失曲线比较。结果通过系数为0.9的指数移动平均(EMA)进行平滑。
图10 | BF16和FP8训练的损失曲线比较。结果通过系数为0.9的指数移动平均(EMA)进行平滑。

B.1. FP8 与 BF16 训练对比

实验验证。我们在两个不同规模的基线模型上,将我们的FP8混合精度框架与BF16训练进行了比较。小规模模型约160亿总参数,训练了1.33T tokens;大规模模型约2300亿总参数,训练了约0.9T tokens。如图10的训练曲线所示,得益于我们的高精度累加和细粒度量化策略,相对误差保持在0.25%以下。

B.2. 关于块级量化(Block-Wise Quantization)的讨论

块级量化的挑战。虽然我们的tile-wise细粒度量化有效减轻了特征异常值引入的误差,但它需要为激活量化进行不同的分组(前向1x128,后向128x1)。一个直接的策略是像量化模型权重一样,对所有张量应用128x128的块级量化。然而,实验表明,计算激活梯度的Dgrad操作对精度高度敏感。对激活梯度进行块级量化导致一个约160亿参数的MoE模型在训练约3000亿tokens后发散。我们推测,这是因为激活梯度在token之间高度不平衡,导致了与token相关的异常值,而这些异常值无法通过块级量化方法有效处理。

C. 16B模型中基于辅助损失和无辅助损失的专家特化模式

专家特化模式分析。我们记录了一个160亿参数的基于辅助损失的基线模型和一个无辅助损失模型在Pile测试集上的专家负载。如图10所示,无辅助损失模型在所有层上都倾向于表现出更强的专家特化模式。

图10 | 无辅助损失和基于辅助损失的模型在Pile测试集的三个领域上的专家负载。无辅助损失模型显示出比基于辅助损失模型更强的专家专业化模式。相对专家负载表示实际专家负载与理论上平衡的专家负载之间的比率。
图10 | 无辅助损失和基于辅助损失的模型在Pile测试集的三个领域上的专家负载。无辅助损失模型显示出比基于辅助损失模型更强的专家专业化模式。相对专家负载表示实际专家负载与理论上平衡的专家负载之间的比率。

专家负载图
专家负载图

专家负载图
专家负载图

专家负载图
专家负载图

专家负载图
专家负载图