001
DeepSeek-V3 Technical Report
DeepSeek-V3 技术报告
Abstract 摘要
We present DeepSeek-V3, a strong Mixture-of-Experts (MoE) language model with 671B total parameters with 37B activated for each token.
To achieve efficient inference and cost-effective training, DeepSeek-V3 adopts Multi-head Latent Attention (MLA) and DeepSeekMoE architectures, which were thoroughly validated in DeepSeek-V2.
Furthermore, DeepSeek-V3 pioneers an auxiliary-loss-free strategy for load balancing and sets a multi-token prediction training objective for stronger performance.
We pre-train DeepSeek-V3 on 14.8 trillion diverse and high-quality tokens, followed by Supervised Fine-Tuning and Reinforcement Learning stages to fully harness its capabilities.
Comprehensive evaluations reveal that DeepSeek-V3 outperforms other open-source models and achieves performance comparable to leading closed-source models.
Despite its excellent performance, DeepSeek-V3 requires only 2.788M H800 GPU hours for its full training.
In addition, its training process is remarkably stable.
Throughout the entire training process, we did not experience any irrecoverable loss spikes or perform any rollbacks.
The model checkpoints are available at https://github.com/deepseek-ai/DeepSeek-V3.
我们介绍 DeepSeek-V3,这是一种强大的专家混合(MoE)语言模型,总参数量为 6710 亿,每个 token 激活 37 亿参数。为了实现高效推理和成本效益的训练,DeepSeek-V3 采用了在 DeepSeek-V2 中经过彻底验证的多头潜态注意力(MLA)和 DeepSeekMoE 架构。此外,DeepSeek-V3 率先采用了一种无辅助损失的负载均衡策略,并设定一个多 token 预测的训练目标,以实现更强的性能。我们在 14.8 万亿多样且高质量的 token 上预训练 DeepSeek-V3,随后进行有监督的微调和强化学习阶段,以充分发挥其能力。全面评估显示,DeepSeek-V3 优于其他开源模型,并实现了可与领先的闭源模型媲美的性能。尽管性能优异,DeepSeek-V3 全程训练仅需 2788 万小时的 H800 GPU。此外,其训练过程异常稳定。在整个训练过程中,我们没有遇到任何不可恢复的损失峰值,也未进行任何回滚。模型的检查点可在 https://github.com/deepseek-ai/DeepSeek-V3 获得。
UTF8gbsn
![Refer to caption](x1.png)
图 1:DeepSeek-V3 及其对比模型的基准性能。
1 Introduction 1 介绍
In recent years, Large Language Models (LLMs) have been undergoing rapid iteration and evolution (OpenAI, 2024a; Anthropic, 2024; Google, 2024), progressively diminishing the gap towards Artificial General Intelligence (AGI).
Beyond closed-source models, open-source models, including DeepSeek series (DeepSeek-AI, 2024b, c; Guo et al., 2024; DeepSeek-AI, 2024a), LLaMA series (Touvron et al., 2023a, b; AI@Meta, 2024a, b), Qwen series (Qwen, 2023, 2024a, 2024b), and Mistral series (Jiang et al., 2023; Mistral, 2024), are also making significant strides, endeavoring to close the gap with their closed-source counterparts.
To further push the boundaries of open-source model capabilities, we scale up our models and introduce DeepSeek-V3, a large Mixture-of-Experts (MoE) model with 671B parameters, of which 37B are activated for each token.
近年来,大型语言模型(LLMs)正经历快速迭代和演变(OpenAI, 2024a; Anthropic, 2024; Google, 2024),逐步缩小与通用人工智能(AGI)的差距。除了闭源模型之外,开源模型,包括 DeepSeek 系列(DeepSeek-AI, 2024b, c; Guo et al., 2024; DeepSeek-AI, 2024a)、LLaMA 系列(Touvron et al., 2023a, b; AI@Meta, 2024a, b)、Qwen 系列(Qwen, 2023, 2024a, 2024b)和 Mistral 系列(Jiang et al., 2023; Mistral, 2024),也在取得重大进展,努力缩小与其闭源对手的差距。为了进一步推动开源模型能力的极限,我们扩大了我们的模型并推出 DeepSeek-V3,这是一种参数量为 6710 亿的专家混合(MoE)大模型,其中每个 token 激活 37 亿参数。
With a forward-looking perspective, we consistently strive for strong model performance and economical costs.
Therefore, in terms of architecture, DeepSeek-V3 still adopts Multi-head Latent Attention (MLA) (DeepSeek-AI, 2024c) for efficient inference and DeepSeekMoE (Dai et al., 2024) for cost-effective training.
These two architectures have been validated in DeepSeek-V2 (DeepSeek-AI, 2024c), demonstrating their capability to maintain robust model performance while achieving efficient training and inference.
Beyond the basic architecture, we implement two additional strategies to further enhance the model capabilities.
Firstly, DeepSeek-V3 pioneers an auxiliary-loss-free strategy (Wang et al., 2024a) for load balancing, with the aim of minimizing the adverse impact on model performance that arises from the effort to encourage load balancing.
Secondly, DeepSeek-V3 employs a multi-token prediction training objective, which we have observed to enhance the overall performance on evaluation benchmarks.
从前瞻性的角度出发,我们始终努力追求强大的模型性能和经济成本。因此,在架构方面,DeepSeek-V3 仍然采用多头潜态注意力(MLA)(DeepSeek-AI, 2024c)以实现高效推理,并采用 DeepSeekMoE(Dai et al., 2024)以实现经济高效的训练。 这两种架构已在 DeepSeek-V2(DeepSeek-AI, 2024c)中得到验证,证明其在实现高效的训练和推理的同时能够维持稳健的模型性能。除了基础架构外,我们实施了两个额外的策略来进一步增强模型能力。首先,DeepSeek-V3 率先采用了一种无辅助损失的负载均衡策略(Wang et al., 2024a),以最小化由推动负载均衡努力带来的对模型性能的不利影响。其次,DeepSeek-V3 采用多 token 预测的训练目标,我们已观察到这能增强在评估基准上的总体性能。
In order to achieve efficient training, we support the FP8 mixed precision training and implement comprehensive optimizations for the training framework.
Low-precision training has emerged as a promising solution for efficient training (Kalamkar et al., 2019; Narang et al., 2017; Peng et al., 2023b; Dettmers et al., 2022), its evolution being closely tied to advancements in hardware capabilities (Micikevicius et al., 2022; Luo et al., 2024; Rouhani et al., 2023a).
In this work, we introduce an FP8 mixed precision training framework and, for the first time, validate its effectiveness on an extremely large-scale model.
Through the support for FP8 computation and storage, we achieve both accelerated training and reduced GPU memory usage.
As for the training framework, we design the DualPipe algorithm for efficient pipeline parallelism, which has fewer pipeline bubbles and hides most of the communication during training through computation-communication overlap.
This overlap ensures that, as the model further scales up, as long as we maintain a constant computation-to-communication ratio, we can still employ fine-grained experts across nodes while achieving a near-zero all-to-all communication overhead.
In addition, we also develop efficient cross-node all-to-all communication kernels to fully utilize InfiniBand (IB) and NVLink bandwidths.
Furthermore, we meticulously optimize the memory footprint, making it possible to train DeepSeek-V3 without using costly tensor parallelism.
Combining these efforts, we achieve high training efficiency.
为了实现高效训练,我们支持 FP8 混合精度训练,并对训练框架进行了全面优化。低精度训练作为高效训练的一个有前景的解决方案已经出现(Kalamkar 等,2019;Narang 等,2017;Peng 等,2023b;Dettmers 等,2022),其演变与硬件能力的进步密切相关(Micikevicius 等,2022;Luo 等,2024;Rouhani 等,2023a)。在本研究中,我们引入了 FP8 混合精度训练框架,并首次在超大规模模型上验证其有效性。通过支持 FP8 计算和存储,我们实现了训练加速和 GPU 内存使用减少。至于训练框架,我们设计了 DualPipe 算法来实现高效的管道并行,减少了管道气泡,并通过计算与通讯的重叠隐藏了大部分训练期间的通讯。这种重叠确保了随着模型进一步扩展,只要保持恒定的计算与通讯比例,我们仍然可以在节点间使用细粒度专家,并实现几乎为零的全归约通讯开销。此外,我们还开发了高效的跨节点全归约通讯内核,充分利用 InfiniBand(IB)和 NVLink 带宽。此外,我们仔细优化了内存占用,使得无需使用高成本的张量并行即可训练 DeepSeek-V3。结合这些努力,我们实现了高效的训练效率。
During pre-training, we train DeepSeek-V3 on 14.8T high-quality and diverse tokens.
The pre-training process is remarkably stable.
Throughout the entire training process, we did not encounter any irrecoverable loss spikes or have to roll back.
Next, we conduct a two-stage context length extension for DeepSeek-V3. In the first stage, the maximum context length is extended to 32K, and in the second stage, it is further extended to 128K.
Following this, we conduct post-training, including Supervised Fine-Tuning (SFT) and Reinforcement Learning (RL) on the base model of DeepSeek-V3, to align it with human preferences and further unlock its potential.
During the post-training stage, we distill the reasoning capability from the DeepSeek-R1 series of models, and meanwhile carefully maintain the balance between model accuracy and generation length.
在预训练期间,我们在 14.8T 高质量及多样化的 tokens 上训练 DeepSeek-V3。预训练过程异常稳定。在整个训练过程中,我们没有遇到无法恢复的损失尖峰或需要回滚的情况。接下来,我们为 DeepSeek-V3 进行两阶段上下文长度扩展。在第一阶段,最大上下文长度扩展至 32K,在第二阶段进一步扩展至 128K。随后,我们进行后续训练,包括在 DeepSeek-V3 基础模型上进行监督微调(SFT)和强化学习(RL),以使其与人类偏好对齐并进一步释放其潜力。在后续训练阶段,我们从 DeepSeek-R1 系列模型中提取推理能力,并同时仔细保持模型的准确性与生成长度之间的平衡。
We evaluate DeepSeek-V3 on a comprehensive array of benchmarks.
Despite its economical training costs, comprehensive evaluations reveal that DeepSeek-V3-Base has emerged as the strongest open-source base model currently available, especially in code and math.
Its chat version also outperforms other open-source models and achieves performance comparable to leading closed-source models, including GPT-4o and Claude-3.5-Sonnet, on a series of standard and open-ended benchmarks.
我们在综合基准测试上评估了 DeepSeek-V3。尽管其训练成本经济,通过综合评估显示 DeepSeek-V3-Base 已经成为当前最强的开源基础模型,尤其是在代码和数学方面。其聊天版本也优于其他开源模型,并在一系列标准和开放式基准测试中实现了与领先的闭源模型相当的性能,包括 GPT-4o 和 Claude-3.5-Sonnet。
Training Costs 训练成本 | Pre-Training 预训练 | Context Extension 上下文扩展 | Post-Training 后训练 | Total 总计 |
---|---|---|---|---|
in H800 GPU Hours 以 H800 GPU 小时计 |
2664K | 119K | 5K | 2788K |
in USD 以美元计 | $5.328M | $0.238M | $0.01M | $5.576M |
表 1:DeepSeek-V3 的训练成本,假设 H800 的租用价格为每 GPU 小时 2 美元。
Lastly, we emphasize again the economical training costs of DeepSeek-V3, summarized in Table 1, achieved through our optimized co-design of algorithms, frameworks, and hardware.
During the pre-training stage, training DeepSeek-V3 on each trillion tokens requires only 180K H800 GPU hours, i.e., 3.7 days on our cluster with 2048 H800 GPUs.
Consequently, our pre-training stage is completed in less than two months and costs 2664K GPU hours.
Combined with 119K GPU hours for the context length extension and 5K GPU hours for post-training, DeepSeek-V3 costs only 2.788M GPU hours for its full training.
Assuming the rental price of the H800 GPU is $2 per GPU hour, our total training costs amount to only $5.576M.
Note that the aforementioned costs include only the official training of DeepSeek-V3, excluding the costs associated with prior research and ablation experiments on architectures, algorithms, or data.
最后,我们再次强调通过我们对算法、框架和硬件的优化共同设计实现的 DeepSeek-V3 的经济训练成本,如表 1 所总结。在预训练阶段,每训练一万亿的 tokens 需要 180K 个 H800 GPU 小时,即在我们的 2048 个 H800 GPU 集群上约 3.7 天。因此,我们的预训练阶段在不到两个月内完成,耗费了 2664K GPU 小时。结合上下文长度扩展的 119K GPU 小时和后续训练的 5K GPU 小时,DeepSeek-V3 的整体训练仅耗费了 2.788M GPU 小时。假设 H800 GPU 的租用价格为每 GPU 小时 2 美元,我们的总训练成本仅为 5.576M 美元。请注意,上述成本仅包括 DeepSeek-V3 的正式训练,不包括与架构、算法或数据的先前研究和消融实验相关的成本。
Our main contribution includes:
我们的主要贡献包括:
Architecture: Innovative Load Balancing Strategy and Training Objective
架构:创新的负载均衡策略和训练目标
-
•
On top of the efficient architecture of DeepSeek-V2, we pioneer an auxiliary-loss-free strategy for load balancing, which minimizes the performance degradation that arises from encouraging load balancing.
• 在 DeepSeek-V2 的高效架构基础上,我们开创了一种无辅助损失的负载均衡策略,最大限度地减少了因鼓励负载均衡而导致的性能下降。 -
•
We investigate a Multi-Token Prediction (MTP) objective and prove it beneficial to model performance. It can also be used for speculative decoding for inference acceleration.
• 我们研究了一种多标记预测(MTP)目标,并证明其对模型性能有益。它还可以用于推测性解码以加速推理。
Pre-Training: Towards Ultimate Training Efficiency
预训练:迈向终极训练效率
-
•
We design an FP8 mixed precision training framework and, for the first time, validate the feasibility and effectiveness of FP8 training on an extremely large-scale model.
• 我们设计了一种 FP8 混合精度训练框架,并首次验证了 FP8 训练在超大规模模型上的可行性和有效性。 -
•
Through the co-design of algorithms, frameworks, and hardware, we overcome the communication bottleneck in cross-node MoE training, achieving near-full computation-communication overlap. This significantly enhances our training efficiency and reduces the training costs, enabling us to further scale up the model size without additional overhead.
• 通过算法、框架和硬件的共同设计,我们克服了跨节点 MoE 训练中的通信瓶颈,实现了接计算全通信重叠。这显著提升了我们的训练效率,降低了训练成本,使我们能够在不增加额外开销的情况下进一步扩大模型规模。 -
•
At an economical cost of only 2.664M H800 GPU hours, we complete the pre-training of DeepSeek-V3 on 14.8T tokens, producing the currently strongest open-source base model. The subsequent training stages after pre-training require only 0.1M GPU hours.
• 以仅 2.664M H800 GPU 小时的经济成本,我们完成了对 14.8 万亿标记的 DeepSeek-V3 的预训练,生产出当前最强的开源基本模型。预训练后的随后的训练阶段仅需 0.1M GPU 小时。
Post-Training: Knowledge Distillation from DeepSeek-R1
后期训练:来自 DeepSeek-R1 的知识蒸馏
-
•
We introduce an innovative methodology to distill reasoning capabilities from the long-Chain-of-Thought (CoT) model, specifically from one of the DeepSeek R1 series models, into standard LLMs, particularly DeepSeek-V3. Our pipeline elegantly incorporates the verification and reflection patterns of R1 into DeepSeek-V3 and notably improves its reasoning performance. Meanwhile, we also maintain control over the output style and length of DeepSeek-V3.
• 我们引入了一种创新的方法,将推理能力从长链式思维(CoT)模型,特别是来自 DeepSeek R1 系列模型之一的推理能力,精炼到标准大语言模型(LLMs),尤其是 DeepSeek-V3 中。我们的流程优雅地将 R1 的验证和反思模式融入到 DeepSeek-V3 中,显著提升其推理性能。同时,我们还控制了 DeepSeek-V3 的输出风格和长度。
Summary of Core Evaluation Results
核心评估结果总结
-
•
Knowledge: (1) On educational benchmarks such as MMLU, MMLU-Pro, and GPQA, DeepSeek-V3 outperforms all other open-source models, achieving 88.5 on MMLU, 75.9 on MMLU-Pro, and 59.1 on GPQA. Its performance is comparable to leading closed-source models like GPT-4o and Claude-Sonnet-3.5, narrowing the gap between open-source and closed-source models in this domain. (2) For factuality benchmarks, DeepSeek-V3 demonstrates superior performance among open-source models on both SimpleQA and Chinese SimpleQA. While it trails behind GPT-4o and Claude-Sonnet-3.5 in English factual knowledge (SimpleQA), it surpasses these models in Chinese factual knowledge (Chinese SimpleQA), highlighting its strength in Chinese factual knowledge.
• 知识:(1)在教育基准测试如 MMLU、MMLU-Pro 和 GPQA 上,DeepSeek-V3 优于所有其他开源模型,在 MMLU 上达到 88.5,在 MMLU-Pro 上达到 75.9,在 GPQA 上达到 59.1。其性能可与领先的闭源模型如 GPT-4o 和 Claude-Sonnet-3.5 媲美,缩小了开源和闭源模型在该领域的差距。(2)对于事实性基准测试,DeepSeek-V3 在 SimpleQA 和中文 SimpleQA 上展示出开源模型中出色的性能。虽然它在英语事实知识(SimpleQA)上落后于 GPT-4o 和 Claude-Sonnet-3.5,但在中文事实知识(中文 SimpleQA)上超过这些模型,显示了其在中文事实知识方面的优势。 -
•
Code, Math, and Reasoning: (1) DeepSeek-V3 achieves state-of-the-art performance on math-related benchmarks among all non-long-CoT open-source and closed-source models. Notably, it even outperforms o1-preview on specific benchmarks, such as MATH-500, demonstrating its robust mathematical reasoning capabilities. (2) On coding-related tasks, DeepSeek-V3 emerges as the top-performing model for coding competition benchmarks, such as LiveCodeBench, solidifying its position as the leading model in this domain. For engineering-related tasks, while DeepSeek-V3 performs slightly below Claude-Sonnet-3.5, it still outpaces all other models by a significant margin, demonstrating its competitiveness across diverse technical benchmarks.
• 代码、数学和推理:(1)DeepSeek-V3 在所有非长链推理开放源码和闭源模型中,在数学相关基准测试中实现了最先进的性能。值得注意的是,它在特定基准,如 MATH-500 上甚至超过了 o1-preview,展现了其强大的数学推理能力。(2)在编程相关任务中,DeepSeek-V3 成为了编程竞赛基准(如 LiveCodeBench)的最佳表现模型,巩固了其在该领域的领先地位。对于工程相关任务,尽管 DeepSeek-V3 表现略逊于 Claude-Sonnet-3.5,但仍以显著优势超过所有其他模型,展示了其在各种技术基准中的竞争力。
In the remainder of this paper, we first present a detailed exposition of our DeepSeek-V3 model architecture (Section 2).
Subsequently, we introduce our infrastructures, encompassing our compute clusters, the training framework, the support for FP8 training, the inference deployment strategy, and our suggestions on future hardware design.
Next, we describe our pre-training process, including the construction of training data, hyper-parameter settings, long-context extension techniques, the associated evaluations, as well as some discussions (Section 4).
Thereafter, we discuss our efforts on post-training, which include Supervised Fine-Tuning (SFT), Reinforcement Learning (RL), the corresponding evaluations, and discussions (Section 5).
Lastly, we conclude this work, discuss existing limitations of DeepSeek-V3, and propose potential directions for future research (Section 6).
在本文的余下部分中,我们首先详述我们的 DeepSeek-V3 模型架构(第 2 节)。随后介绍我们的基础设施,包括我们的计算集群、训练框架、FP8 训练支持、推理部署策略及对未来硬件设计的建议。接下来描述我们的预训练过程,包括训练数据的构建、超参数设置、长上下文扩展技术、相关评估以及一些讨论(第 4 节)。之后讨论我们在后训练阶段的努力,包括监督微调(SFT)、强化学习(RL)、相应的评估和讨论(第 5 节)。最后,我们总结了这项工作,讨论了 DeepSeek-V3 的现有局限性,并提出未来研究的潜在方向(第 6 节)。
2 Architecture 2 架构
We first introduce the basic architecture of DeepSeek-V3, featured by Multi-head Latent Attention (MLA) (DeepSeek-AI, 2024c) for efficient inference and DeepSeekMoE (Dai et al., 2024) for economical training.
Then, we present a Multi-Token Prediction (MTP) training objective, which we have observed to enhance the overall performance on evaluation benchmarks.
For other minor details not explicitly mentioned, DeepSeek-V3 adheres to the settings of DeepSeek-V2 (DeepSeek-AI, 2024c).
我们首先介绍 DeepSeek-V3 的基本架构,其特点是多头潜在注意力(MLA)(DeepSeek-AI,2024c)以实现高效推理,以及 DeepSeekMoE(Dai et al., 2024)用于经济型训练。然后,我们提出多标记预测(MTP)训练目标,我们观察到其在评估基准上的整体性能有所提升。对于其他未明确提及的细节,DeepSeek-V3 遵循 DeepSeek-V2 的设置(DeepSeek-AI,2024c)。
![Refer to caption](x2.png)
图 2:DeepSeek-V3 基本架构的说明。遵循 DeepSeek-V2,我们采用 MLA 和 DeepSeekMoE 以实现高效推理和经济型训练。
2.1 Basic Architecture 2.1 基本架构
The basic architecture of DeepSeek-V3 is still within the Transformer (Vaswani et al., 2017) framework.
For efficient inference and economical training, DeepSeek-V3 also adopts MLA and DeepSeekMoE, which have been thoroughly validated by DeepSeek-V2.
Compared with DeepSeek-V2, an exception is that we additionally introduce an auxiliary-loss-free load balancing strategy (Wang et al., 2024a) for DeepSeekMoE to mitigate the performance degradation induced by the effort to ensure load balance.
Figure 2 illustrates the basic architecture of DeepSeek-V3, and we will briefly review the details of MLA and DeepSeekMoE in this section.
DeepSeek-V3 的基本架构仍然在 Transformer(Vaswani et al., 2017)框架内。为了实现高效推理和经济型训练,DeepSeek-V3 也采用了已经被 DeepSeek-V2 充分验证的 MLA 和 DeepSeekMoE。与 DeepSeek-V2 相比,例外的是我们额外引入了一种无辅助损失的负载平衡策略(Wang et al., 2024a),以减轻为确保负载平衡所带来的性能退化。图 2 展示了 DeepSeek-V3 的基本架构,我们将在本节简要回顾 MLA 和 DeepSeekMoE 的细节。
2.1.1 Multi-Head Latent Attention
2.1.1 多头潜在注意力
For attention, DeepSeek-V3 adopts the MLA architecture.
Let denote the embedding dimension, denote the number of attention heads, denote the dimension per head, and denote the attention input for the -th token at a given attention layer.
The core of MLA is the low-rank joint compression for attention keys and values to reduce Key-Value (KV) cache during inference:
对于注意力,DeepSeek-V3 采用了 MLA 架构。令 表示嵌入维度, 表示注意力头的数量, 表示每个头的维度, 表示在给定注意力层中第 个标记的注意力输入。MLA 的核心是针对注意力键和值进行低秩联合压缩,以减少推理过程中键值(KV)缓存:
(1) | ||||
(2) | ||||
(3) | ||||
(4) | ||||
(5) |
where is the compressed latent vector for keys and values;
indicates the KV compression dimension;
denotes the down-projection matrix;
are the up-projection matrices for keys and values, respectively;
is the matrix used to produce the decoupled key that carries Rotary Positional Embedding (RoPE) (Su et al., 2024);
denotes the operation that applies RoPE matrices;
and denotes concatenation.
Note that for MLA, only the blue-boxed vectors (i.e., and ) need to be cached during generation, which results in significantly reduced KV cache while maintaining performance comparable to standard Multi-Head Attention (MHA) (Vaswani et al., 2017).
其中 是用于键和值的压缩潜在向量; 表示 KV 压缩维度; 是向下投影矩阵; 分别为键和值的向上投影矩阵; 是用于生成携带旋转位置嵌入(RoPE)(Su et al., 2024)的解耦键的矩阵; 表示应用 RoPE 矩阵的操作; 表示级联。需要注意的是,对于 MLA,仅需要缓存蓝框向量(即 和 )即可,这显著减少了 KV 缓存,同时保持了与标准多头注意力(MHA)(Vaswani et al., 2017)相当的性能。
For the attention queries, we also perform a low-rank compression, which can reduce the activation memory during training:
对于注意力查询,我们还进行了低秩压缩,这可以在训练期间减少激活内存:
(6) | ||||
(7) | ||||
(8) | ||||
(9) |
where is the compressed latent vector for queries;
denotes the query compression dimension;
are the down-projection and up-projection matrices for queries, respectively;
and is the matrix to produce the decoupled queries that carry RoPE.
其中 是用于查询的压缩潜在向量; 表示查询压缩维度; 分别是用于查询的向下投影和向上投影矩阵; 是用于生成携带 RoPE 的解耦查询的矩阵。
Ultimately, the attention queries (), keys (), and values () are combined to yield the final attention output :
最终,注意力查询( )、键( )和值( )结合以产生最终的注意力输出 :
(10) | ||||
(11) |
where denotes the output projection matrix.
其中 表示输出投影矩阵。
2.1.2 DeepSeekMoE with Auxiliary-Loss-Free Load Balancing
2.1.2 无辅助损失的 DeepSeekMoE 负载平衡策略
Basic Architecture of DeepSeekMoE.
DeepSeekMoE 的基本架构。
For Feed-Forward Networks (FFNs), DeepSeek-V3 employs the DeepSeekMoE architecture (Dai et al., 2024).
Compared with traditional MoE architectures like GShard (Lepikhin et al., 2021), DeepSeekMoE uses finer-grained experts and isolates some experts as shared ones.
Let denote the FFN input of the -th token, we compute the FFN output as follows:
对于前馈网络(FFNs),DeepSeek-V3 采用了 DeepSeekMoE 架构(Dai 等, 2024)。与传统的 MoE 架构如 GShard(Lepikhin 等, 2021)相比,DeepSeekMoE 使用了更细粒度的专家,并将一些专家隔离为共享的专家。设 表示第 个标记的 FFN 输入,我们计算 FFN 输出 如下:
(12) | ||||
(13) | ||||
(14) | ||||
(15) |
where and denote the numbers of shared experts and routed experts, respectively;
and denote the -th shared expert and the -th routed expert, respectively;
denotes the number of activated routed experts;
is the gating value for the -th expert;
is the token-to-expert affinity;
is the centroid vector of the -th routed expert;
and denotes the set comprising highest scores among the affinity scores calculated for the -th token and all routed experts.
Slightly different from DeepSeek-V2, DeepSeek-V3 uses the sigmoid function to compute the affinity scores, and applies a normalization among all selected affinity scores to produce the gating values.
其中, 和 分别表示共享专家和路由专家的数量; 和 分别表示第 个共享专家和第 个路由专家; 表示激活的路由专家数量; 是第 个专家的门控值; 是标记到专家的亲和度; 是第 个路由专家的中心向量; 表示由第 个标记和所有路由专家计算的亲和度分数中得分最高的 个的集合。与 DeepSeek-V2 略有不同,DeepSeek-V3 使用 sigmoid 函数计算亲和度分数,并在所有选定的亲和度分数之间应用归一化以生成门控值。
Auxiliary-Loss-Free Load Balancing.
无需辅助损失的负载均衡。
For MoE models, an unbalanced expert load will lead to routing collapse (Shazeer et al., 2017) and diminish computational efficiency in scenarios with expert parallelism.
Conventional solutions usually rely on the auxiliary loss (Fedus et al., 2021; Lepikhin et al., 2021) to avoid unbalanced load.
However, too large an auxiliary loss will impair the model performance (Wang et al., 2024a).
To achieve a better trade-off between load balance and model performance, we pioneer an auxiliary-loss-free load balancing strategy (Wang et al., 2024a) to ensure load balance.
To be specific, we introduce a bias term for each expert and add it to the corresponding affinity scores to determine the top-K routing:
对于 MoE 模型,专家负载不平衡会导致路由崩溃(Shazeer 等, 2017),并在专家并行的场景下降低计算效率。传统解决方案通常依赖于辅助损失(Fedus 等, 2021; Lepikhin 等, 2021)来避免负载不平衡。然而,过大的辅助损失会削弱模型性能(Wang 等, 2024a)。为在负载平衡和模型性能之间实现更佳的权衡,我们开创了一种无辅助损失的负载平衡策略(Wang 等, 2024a)以确保负载平衡。具体而言,我们为每个专家引入偏差项 ,并将其加到相应的亲和度分数 上以确定前 K 个路由:
(16) |
Note that the bias term is only used for routing.
The gating value, which will be multiplied with the FFN output, is still derived from the original affinity score .
During training, we keep monitoring the expert load on the whole batch of each training step.
At the end of each step, we will decrease the bias term by if its corresponding expert is overloaded, and increase it by if its corresponding expert is underloaded, where is a hyper-parameter called bias update speed.
Through the dynamic adjustment, DeepSeek-V3 keeps balanced expert load during training, and achieves better performance than models that encourage load balance through pure auxiliary losses.
请注意,偏差项仅用于路由。将与 FFN 输出相乘的门控值仍然来自于原始的亲和度分数 。在训练过程中,我们持续监控每个训练步骤中整个批次的专家负载。在每一步结束时,如果对应的专家过载,我们将偏差项减少 ,如果对应的专家负载不足,我们将其增加 ,其中 是一个称为偏差更新速度的超参数。通过动态调整,DeepSeek-V3 在训练期间保持了平衡的专家负载,并且比那些仅通过辅助损失来实现负载平衡的模型表现更好。
Complementary Sequence-Wise Auxiliary Loss.
序列互补辅助损失。
Although DeepSeek-V3 mainly relies on the auxiliary-loss-free strategy for load balance, to prevent extreme imbalance within any single sequence, we also employ a complementary sequence-wise balance loss:
虽然 DeepSeek-V3 主要依赖于无辅助损失的策略来实现负载平衡,但为了防止任意单个序列中出现极端不平衡,我们也采用了一种互补的序列平衡损失:
(17) | ||||
(18) | ||||
(19) | ||||
(20) |
where the balance factor is a hyper-parameter, which will be assigned an extremely small value for DeepSeek-V3;
denotes the indicator function;
and denotes the number of tokens in a sequence.
The sequence-wise balance loss encourages the expert load on each sequence to be balanced.
其中,平衡因子 是一个超参数,对于 DeepSeek-V3 将被赋予一个极小的值; 表示指示函数; 表示序列中的标记数。序列级的平衡损失鼓励每个序列上的专家负载保持平衡。
Node-Limited Routing. 节点限制路由。
Like the device-limited routing used by DeepSeek-V2, DeepSeek-V3 also uses a restricted routing mechanism to limit communication costs during training.
In short, we ensure that each token will be sent to at most nodes, which are selected according to the sum of the highest affinity scores of the experts distributed on each node.
Under this constraint, our MoE training framework can nearly achieve full computation-communication overlap.
类似于 DeepSeek-V2 使用的设备限制路由,DeepSeek-V3 也使用了一种受限制的路由机制,以限制训练期间的通信成本。简言之,我们确保每个标记最多被发送到 个节点,这些节点根据分布在每个节点上的专家的最高 个亲和度分数之和进行选择。在这一约束下,我们的 MoE 训练框架几乎可以实现计算和通信的完全重叠。
No Token-Dropping. 不丢弃标记。
Due to the effective load balancing strategy, DeepSeek-V3 keeps a good load balance during its full training.
Therefore, DeepSeek-V3 does not drop any tokens during training.
In addition, we also implement specific deployment strategies to ensure inference load balance, so DeepSeek-V3 also does not drop tokens during inference.
由于有效的负载平衡策略,DeepSeek-V3 在整个训练过程中保持良好的负载平衡。因此,DeepSeek-V3 在训练期间不会丢弃任何标记。此外,我们还实施了特定的部署策略以确保推理时的负载平衡,因此 DeepSeek-V3 在推理时也不会丢弃标记。
![Refer to caption](x3.png)
图 3:我们的多标记预测(MTP)实现的示意图。我们保持每个深度每个标记预测的完整因果链。
2.2 Multi-Token Prediction
2.2 多标记预测
Inspired by Gloeckle et al. (2024), we investigate and set a Multi-Token Prediction (MTP) objective for DeepSeek-V3, which extends the prediction scope to multiple future tokens at each position.
On the one hand, an MTP objective densifies the training signals and may improve data efficiency.
On the other hand, MTP may enable the model to pre-plan its representations for better prediction of future tokens.
Figure 3 illustrates our implementation of MTP.
Different from Gloeckle et al. (2024), which parallelly predicts additional tokens using independent output heads, we sequentially predict additional tokens and keep the complete causal chain at each prediction depth.
We introduce the details of our MTP implementation in this section.
受 Gloeckle 等人(2024 年)的启发,我们研究并为 DeepSeek-V3 设置了一个多令牌预测(MTP)目标,将预测范围扩展到每个位置的多个未来令牌。一方面,MTP 目标密集化了训练信号,可以提高数据效率。另一方面,MTP 可能使模型提前规划其表征,以更好地预测未来令牌。图 3 展示了我们对 MTP 的实现。与 Gloeckle 等人(2024 年)不同,他们通过独立输出头并行预测 个附加令牌,而我们则是顺序预测附加令牌,并在每个预测深度保持完整的因果链。我们将在本节中介绍我们的 MTP 实现细节。
MTP Modules. MTP 模块。
To be specific, our MTP implementation uses sequential modules to predict additional tokens.
The -th MTP module consists of a shared embedding layer , a shared output head , a Transformer block , and a projection matrix .
For the -th input token , at the -th prediction depth, we first combine the representation of the -th token at the -th depth and the embedding of the -th token with the linear projection:
具体而言,我们的 MTP 实现使用 个顺序模块来预测 个附加令牌。第 个 MTP 模块由一个共享嵌入层 、一个共享输出头 、一个 Transformer 块 和一个投影矩阵 组成。对于第 个输入令牌 ,在第 个预测深度处,我们首先结合第 个深度中第 个令牌表征 和第 个令牌的嵌入 ,进行线性投影:
(21) |
where denotes concatenation.
Especially, when , refers to the representation given by the main model.
Note that for each MTP module, its embedding layer is shared with the main model.
The combined serves as the input of the Transformer block at the -th depth to produce the output representation at the current depth :
其中 表示拼接。特别地,当 时, 指的是由主模型给出的表征。请注意,对于每个 MTP 模块,其嵌入层与主模型共享。组合 作为 Transformer 块在第 个深度的输入,以产生当前深度 的输出表征:
(22) |
where represents the input sequence length and i:j denotes the slicing operation (inclusive of both the left and right boundaries).
Finally, taking as the input, the shared output head will compute the probability distribution for the -th additional prediction token , where is the vocabulary size:
其中 表示输入序列长度, i:j 表示切片操作(包括左和右边界)。最后,以 作为输入,共享输出头将计算第 个附加预测令牌 的概率分布,其中 是词汇表大小:
(23) |
The output head linearly maps the representation to logits and subsequently applies the function to compute the prediction probabilities of the -th additional token.
Also, for each MTP module, its output head is shared with the main model.
Our principle of maintaining the causal chain of predictions is similar to that of EAGLE (Li et al., 2024b), but its primary objective is speculative decoding (Xia et al., 2023; Leviathan et al., 2023), whereas we utilize MTP to improve training.
输出头 线性映射表征为 logits,然后应用 函数计算第 个附加令牌的预测概率。另外,对于每个 MTP 模块,其输出头是与主模型共享的。我们保持预测因果链的原则类似于 EAGLE(Li 等人,2024b),但其主要目标是推测性解码(Xia 等人,2023;Leviathan 等人,2023),而我们利用 MTP 来改进训练。
MTP Training Objective. MTP 训练目标。
For each prediction depth, we compute a cross-entropy loss :
对于每个预测深度,我们计算交叉熵损失 :
(24) |
where denotes the input sequence length, denotes the ground-truth token at the -th position, and denotes the corresponding prediction probability of , given by the -th MTP module.
Finally, we compute the average of the MTP losses across all depths and multiply it by a weighting factor to obtain the overall MTP loss , which serves as an additional training objective for DeepSeek-V3:
其中 表示输入序列长度, 表示第 个位置的真实令牌, 表示第 个 MTP 模块给出的对应预测概率 。最后,我们计算跨所有深度的 MTP 损失平均值,并乘以一个权重系数 以获得整体 MTP 损失 ,它是 DeepSeek-V3 的额外训练目标:
(25) |
MTP in Inference. MTP 在推理中的应用。
Our MTP strategy mainly aims to improve the performance of the main model, so during inference, we can directly discard the MTP modules and the main model can function independently and normally.
Additionally, we can also repurpose these MTP modules for speculative decoding to further improve the generation latency.
我们的 MTP 策略主要旨在提高主模型的性能,因此在推理过程中,我们可以直接丢弃 MTP 模块,主模型可以独立正常运行。此外,我们还可以将这些 MTP 模块重新用于推测解码,以进一步改善生成延迟。
3 Infrastructures 3 基础设施
3.1 Compute Clusters 3.1 计算集群
DeepSeek-V3 is trained on a cluster equipped with 2048 NVIDIA H800 GPUs.
Each node in the H800 cluster contains 8 GPUs connected by NVLink and NVSwitch within nodes.
Across different nodes, InfiniBand (IB) interconnects are utilized to facilitate communications.
DeepSeek-V3 的训练是在一个配备有 2048 个 NVIDIA H800 GPU 的集群上进行的。H800 集群的每个节点内含有 8 个通过 NVLink 和 NVSwitch 相连的 GPU。在不同节点之间,使用 InfiniBand(IB)互连来促进通信。
3.2 Training Framework 3.2 训练框架
The training of DeepSeek-V3 is supported by the HAI-LLM framework, an efficient and lightweight training framework crafted by our engineers from the ground up.
On the whole, DeepSeek-V3 applies 16-way Pipeline Parallelism (PP) (Qi et al., 2023a), 64-way Expert Parallelism (EP) (Lepikhin et al., 2021) spanning 8 nodes, and ZeRO-1 Data Parallelism (DP) (Rajbhandari et al., 2020).
DeepSeek-V3 的训练由 HAI-LLM 框架支持,这是一个由我们的工程师从头开始打造的高效且轻量级的训练框架。总体而言,DeepSeek-V3 应用了 16 路流水并行(PP)(Qi 等人,2023a)、8 个节点跨越的 64 路专家并行(EP)(Lepikhin 等人,2021)以及 ZeRO-1 数据并行(DP)(Rajbhandari 等人,2020)。
In order to facilitate efficient training of DeepSeek-V3, we implement meticulous engineering optimizations.
Firstly, we design the DualPipe algorithm for efficient pipeline parallelism.
Compared with existing PP methods, DualPipe has fewer pipeline bubbles.
More importantly, it overlaps the computation and communication phases across forward and backward processes, thereby addressing the challenge of heavy communication overhead introduced by cross-node expert parallelism.
Secondly, we develop efficient cross-node all-to-all communication kernels to fully utilize IB and NVLink bandwidths and conserve Streaming Multiprocessors (SMs) dedicated to communication.
Finally, we meticulously optimize the memory footprint during training, thereby enabling us to train DeepSeek-V3 without using costly Tensor Parallelism (TP).
为了促进 DeepSeek-V3 的高效训练,我们实现了精细的工程优化。首先,我们设计了适用于高效流水线并行的 DualPipe 算法。与现有的 PP 方法相比,DualPipe 具有更少的流水线气泡。更重要的是,它在前向和后向过程中重叠计算和通信阶段,从而解决了跨节点专家并行引入的通信开销大的问题。其次,我们开发了高效的跨节点全对全通信内核,以充分利用 IB 和 NVLink 带宽,并节约用于通信的流处理器(SMs)。最后,我们精细优化了训练过程中的内存占用,从而能够在不使用高成本张量并行(TP)的情况下训练 DeepSeek-V3。
3.2.1 DualPipe and Computation-Communication Overlap
3.2.1 DualPipe 和计算-通信重叠
![Refer to caption](x4.png)
图 4:单个前向和后向块对的重叠策略(变压器块的边界未对齐)。橙色表示前向,相对于输入的后向用绿色表示,相对于权重的后向用蓝色表示,紫色表示 PP 通信,红色表示障碍。全对全和 PP 通信都可以完全隐藏。
For DeepSeek-V3, the communication overhead introduced by cross-node expert parallelism results in an inefficient computation-to-communication ratio of approximately 1:1.
To tackle this challenge, we design an innovative pipeline parallelism algorithm called DualPipe, which not only accelerates model training by effectively overlapping forward and backward computation-communication phases, but also reduces the pipeline bubbles.
对于 DeepSeek-V3,由跨节点专家并行引入的通信开销导致了大约 1:1 的不高效计算与通信比率。为了解决这个问题,我们设计了一种创新的流水线并行算法,称为 DualPipe,它不仅通过有效重叠前向和后向计算-通信阶段加速了模型训练,还减少了流水线气泡。
The key idea of DualPipe is to overlap the computation and communication within a pair of individual forward and backward chunks.
To be specific, we divide each chunk into four components: attention, all-to-all dispatch, MLP, and all-to-all combine.
Specially, for a backward chunk, both attention and MLP are further split into two parts, backward for input and backward for weights, like in ZeroBubble (Qi et al., 2023b).
In addition, we have a PP communication component.
As illustrated in Figure 4, for a pair of forward and backward chunks, we rearrange these components and manually adjust the ratio of GPU SMs dedicated to communication versus computation.
In this overlapping strategy, we can ensure that both all-to-all and PP communication can be fully hidden during execution.
Given the efficient overlapping strategy, the full DualPipe scheduling is illustrated in Figure 5.
It employs a bidirectional pipeline scheduling, which feeds micro-batches from both ends of the pipeline simultaneously and a significant portion of communications can be fully overlapped.
This overlap also ensures that, as the model further scales up, as long as we maintain a constant computation-to-communication ratio, we can still employ fine-grained experts across nodes while achieving a near-zero all-to-all communication overhead.
DualPipe 的关键思想是在单个前向和后向块对内重叠计算和通信。具体地,我们将每个块分为四个组件:注意力、全对全派发、MLP 和全对全合并。特别地,对于后向块,注意力和 MLP 进一步分为两部分,相对于输入的后向和相对于权重的后向,就像 ZeroBubble(Qi 等,2023b)中一样。此外,我们还有一个 PP 通信组件。如图 4 所示,对于一个前向和后向块对,我们重新排列这些组件并手动调整用于通信和计算的 GPU SMs 比例。在这种重叠策略下,我们可以确保全对全和 PP 通信在执行过程中能够完全隐藏。鉴于这种高效的重叠策略,完整的 DualPipe 调度在图 5 中展示。它采用双向流水线调度,同时从流水线两端输入微批次,并且大量通信可以完全重叠。这种重叠还确保了随着模型的进一步扩展,只要我们保持恒定的计算与通信比,仍然可以跨节点使用细粒度的专家,同时实现接近于零的全对全通信开销。
![Refer to caption](x5.png)
图 5:8 个 PP 等级和 20 个微批次在两个方向上的 DualPipe 调度示例。反向方向的微批次与前向方向是对称的,因此为了简单起见,我们省略了它们的批次 ID。由共享黑色边框包围的两个单元具有相互重叠的计算和通信。
In addition, even in more general scenarios without a heavy communication burden, DualPipe still exhibits efficiency advantages.
In Table 2, we summarize the pipeline bubbles and memory usage across different PP methods.
As shown in the table, compared with ZB1P (Qi et al., 2023b) and 1F1B (Harlap et al., 2018), DualPipe significantly reduces the pipeline bubbles while only increasing the peak activation memory by times.
Although DualPipe requires keeping two copies of the model parameters, this does not significantly increase the memory consumption since we use a large EP size during training.
Compared with Chimera (Li and Hoefler, 2021), DualPipe only requires that the pipeline stages and micro-batches be divisible by 2, without requiring micro-batches to be divisible by pipeline stages.
In addition, for DualPipe, neither the bubbles nor activation memory will increase as the number of micro-batches grows.
此外,即使在没有较大通信负担的一般情况下,DualPipe 仍然表现出效率优势。在表 2 中,我们总结了不同 PP 方法的流水线气泡和内存使用情况。如表中所示,与 ZB1P(Qi 等,2023b)和 1F1B(Harlap 等,2018)相比,DualPipe 显著减少了流水线气泡,而峰值激活内存仅增加了 倍。尽管 DualPipe 需要保留两份模型参数,但由于我们在训练中使用了大型 EP 规模,这并不会显著增加内存消耗。与 Chimera(Li 和 Hoefler,2021)相比,DualPipe 仅要求流水线阶段和微批次数可以被 2 整除,而不要求微批次可被流水线阶段整除。此外,对于 DualPipe,即使微批次数增加,气泡或激活内存也不会增加。
Method 方法 | Bubble 气泡 | Parameter 参数 | Activation 激活 |
---|---|---|---|
1F1B | |||
ZB1P | |||
DualPipe (Ours) DualPipe(我们的) |
表 2:比较不同管道并行方法中的管道冒泡和内存使用情况。 表示一个前向块的执行时间, 表示一个完整后向块的执行时间, 表示一个“后向权重”块的执行时间, 表示两个相互重叠的前向和后向块的执行时间。
3.2.2 Efficient Implementation of Cross-Node All-to-All Communication
3.2.2 跨节点全对全通信的高效实现
In order to ensure sufficient computational performance for DualPipe, we customize efficient cross-node all-to-all communication kernels (including dispatching and combining) to conserve the number of SMs dedicated to communication.
The implementation of the kernels is co-designed with the MoE gating algorithm and the network topology of our cluster.
To be specific, in our cluster, cross-node GPUs are fully interconnected with IB, and intra-node communications are handled via NVLink.
NVLink offers a bandwidth of 160 GB/s, roughly 3.2 times that of IB (50 GB/s).
To effectively leverage the different bandwidths of IB and NVLink, we limit each token to be dispatched to at most 4 nodes, thereby reducing IB traffic.
For each token, when its routing decision is made, it will first be transmitted via IB to the GPUs with the same in-node index on its target nodes.
Once it reaches the target nodes, we will endeavor to ensure that it is instantaneously forwarded via NVLink to specific GPUs that host their target experts, without being blocked by subsequently arriving tokens.
In this way, communications via IB and NVLink are fully overlapped, and each token can efficiently select an average of 3.2 experts per node without incurring additional overhead from NVLink.
This implies that, although DeepSeek-V3 selects only 8 routed experts in practice, it can scale up this number to a maximum of 13 experts (4 nodes 3.2 experts/node) while preserving the same communication cost.
Overall, under such a communication strategy, only 20 SMs are sufficient to fully utilize the bandwidths of IB and NVLink.
为了确保 DualPipe 的足够计算性能,我们定制了高效的跨节点全对全通信内核(包括分发和合并),以节省专用于通信的 SM 数量。内核的实现与 MoE 门控算法和我们集群的网络拓扑共同设计。具体而言,在我们的集群中,跨节点 GPU 通过 IB 完全互联,节点内通信通过 NVLink 进行处理。NVLink 提供 160 GB/s 带宽,大约是 IB(50 GB/s)的 3.2 倍。为了有效利用 IB 和 NVLink 的不同带宽,我们限制每个 token 最多分发到 4 个节点,从而减少 IB 流量。对于每个 token,当其路由决定完成后,将首先通过 IB 传输到其目标节点上具有相同节点内索引的 GPU。一旦到达目标节点,我们将努力确保它立即通过 NVLink 转发到特定的主机其目标专家的 GPU,而不会被随后到达的 tokens 阻塞。通过这种方式,IB 和 NVLink 的通信完全重叠,每个 token 可以在不增加 NVLink 额外开销的情况下,平均选择每个节点 3.2 个专家。这意味着,尽管 DeepSeek-V3 在实践中只选择了 8 个路由的专家,它可以在保持相同通信成本的情况下将这个数字扩展到最多 13 个专家(4 节点 每节点 3.2 个专家)。总体而言,在这种通信策略下,仅用 20 个 SM 就足以充分利用 IB 和 NVLink 的带宽。
In detail, we employ the warp specialization technique (Bauer et al., 2014) and partition 20 SMs into 10 communication channels.
During the dispatching process, (1) IB sending, (2) IB-to-NVLink forwarding, and (3) NVLink receiving are handled by respective warps.
The number of warps allocated to each communication task is dynamically adjusted according to the actual workload across all SMs.
Similarly, during the combining process, (1) NVLink sending, (2) NVLink-to-IB forwarding and accumulation, and (3) IB receiving and accumulation are also handled by dynamically adjusted warps.
In addition, both dispatching and combining kernels overlap with the computation stream, so we also consider their impact on other SM computation kernels.
Specifically, we employ customized PTX (Parallel Thread Execution) instructions and auto-tune the communication chunk size, which significantly reduces the use of the L2 cache and the interference to other SMs.
详细而言,我们采用 warp 专业化技术(Bauer et al., 2014)并将 20 个 SM 划分成 10 个通信通道。在分发过程中,(1) IB 发送,(2) IB 到 NVLink 的转发,及(3) NVLink 接收由各个 warp 处理。针对实际跨所有 SM 的工作负载为每个通信任务动态调整分配给 warp 的数量。同样,在合并过程中,(1) NVLink 发送,(2) NVLink 到 IB 的转发与累积,以及(3) IB 接收与累积也由动态调整的 warps 处理。此外,分发和合并内核与计算流重叠,因此我们也考虑了它们对其他 SM 计算内核的影响。具体来说,我们采用定制的 PTX(并行线程执行)指令并自动调整通信块大小,这大大减少了 L2 缓存的使用和对其他 SM 的干扰。
3.2.3 Extremely Memory Saving with Minimal Overhead
3.2.3 极致内存节省与最小开销
In order to reduce the memory footprint during training, we employ the following techniques.
为了减少训练期间的内存占用,我们采用了以下技术。
Recomputation of RMSNorm and MLA Up-Projection.
重新计算 RMSNorm 和 MLA 上投影。
We recompute all RMSNorm operations and MLA up-projections during back-propagation, thereby eliminating the need to persistently store their output activations.
With a minor overhead, this strategy significantly reduces memory requirements for storing activations.
我们在反向传播过程中重新计算所有 RMSNorm 操作和 MLA 上投影,从而无需持续存储它们的输出激活。虽然有少量开销,此策略显著减少了存储激活的内存需求。
Exponential Moving Average in CPU.
CPU 中的指数移动平均。
During training, we preserve the Exponential Moving Average (EMA) of the model parameters for early estimation of the model performance after learning rate decay.
The EMA parameters are stored in CPU memory and are updated asynchronously after each training step.
This method allows us to maintain EMA parameters without incurring additional memory or time overhead.
在训练过程中,我们保留模型参数的指数移动平均(EMA),以便在学习率衰减后提前估计模型性能。EMA 参数存储在 CPU 内存中,并在每次训练步骤后异步更新。此方法使我们能够在不产生额外内存或时间开销的情况下维护 EMA 参数。
Shared Embedding and Output Head for Multi-Token Prediction.
多 token 预测的共享嵌入和输出头。
With the DualPipe strategy, we deploy the shallowest layers (including the embedding layer) and deepest layers (including the output head) of the model on the same PP rank.
This arrangement enables the physical sharing of parameters and gradients, of the shared embedding and output head, between the MTP module and the main model.
This physical sharing mechanism further enhances our memory efficiency.
使用 DualPipe 策略,我们将模型的最浅层(包括嵌入层)和最深层(包括输出头)部署在同一个 PP 级别。这种安排使共享嵌入和输出头参数及梯度在 MTP 模块与主模型之间的物理共享成为可能。这种物理共享机制进一步增强了我们的内存效率。
3.3 FP8 Training 3.3FP8 训练
![Refer to caption](x6.png)
图 6:带有 FP8 数据格式的整体混合精度框架。为了便于说明,仅显示了线性运算符。
Inspired by recent advances in low-precision training (Peng et al., 2023b; Dettmers et al., 2022; Noune et al., 2022), we propose a fine-grained mixed precision framework utilizing the FP8 data format for training DeepSeek-V3.
While low-precision training holds great promise, it is often limited by the presence of outliers in activations, weights, and gradients (Sun et al., 2024; He et al., ; Fishman et al., 2024).
Although significant progress has been made in inference quantization (Xiao et al., 2023; Frantar et al., 2022), there are relatively few studies demonstrating successful application of low-precision techniques in large-scale language model pre-training (Fishman et al., 2024).
To address this challenge and effectively extend the dynamic range of the FP8 format, we introduce a fine-grained quantization strategy: tile-wise grouping with elements or block-wise grouping with elements.
The associated dequantization overhead is largely mitigated under our increased-precision accumulation process, a critical aspect for achieving accurate FP8 General Matrix Multiplication (GEMM).
Moreover, to further reduce memory and communication overhead in MoE training, we cache and dispatch activations in FP8, while storing low-precision optimizer states in BF16.
We validate the proposed FP8 mixed precision framework on two model scales similar to DeepSeek-V2-Lite and DeepSeek-V2, training for approximately 1 trillion tokens (see more details in Appendix B.1).
Notably, compared with the BF16 baseline, the relative loss error of our FP8-training model remains consistently below 0.25%, a level well within the acceptable range of training randomness.
受近期低精度训练最新进展的启发(Peng et al., 2023b; Dettmers et al., 2022; Noune et al., 2022),我们提出了一种利用 FP8 数据格式训练 DeepSeek-V3 的细粒度混合精度框架。尽管低精度训练前景看好,但激活、权重和梯度中的异常值常常限制其应用(Sun et al., 2024; He et al.; Fishman et al., 2024)。尽管推理量化方面已取得显著进展(Xiao et al., 2023; Frantar et al., 2022),但在大规模语言模型预训练中成功应用低精度技术的研究相对较少(Fishman et al., 2024)。为应对这一挑战并有效扩展 FP8 格式的动态范围,我们引入了一种细粒度量化策略:具有 个元素的瓦片组或具有 个元素的块组。在我们的增精度累积过程中,相关的去量化开销在很大程度上得到缓解,这对于实现精确的 FP8 通用矩阵乘法(GEMM)至关重要。此外,为了进一步降低 MoE 训练中的内存和通信开销,我们在 FP8 中缓存和分派激活,同时以 BF16 存储低精度优化器状态。我们在类似 DeepSeek-V2-Lite 和 DeepSeek-V2 的两个模型规模上验证了提出的 FP8 混合精度框架,训练大约 1 万亿个 tokens(更多详情见附录 B.1)。值得注意的是,与 BF16 基准相比,我们的 FP8 训练模型的相对损失误差始终低于 0.25%,这一水平处于训练随机性可接受范围内。
3.3.1 Mixed Precision Framework
3.3.1 混合精度框架
Building upon widely adopted techniques in low-precision training (Kalamkar et al., 2019; Narang et al., 2017), we propose a mixed precision framework for FP8 training.
In this framework, most compute-density operations are conducted in FP8, while a few key operations are strategically maintained in their original data formats to balance training efficiency and numerical stability.
The overall framework is illustrated in Figure 6.
基于广泛采用的低精度训练技术(Kalamkar et al., 2019; Narang et al., 2017),我们提出了一种用于 FP8 训练的混合精度框架。在此框架中,大部分计算密集型操作以 FP8 执行,而少数关键操作被策略性地保持原始数据格式,以平衡训练效率和数值稳定性。整体框架如图 6 所示。
Firstly, in order to accelerate model training, the majority of core computation kernels, i.e., GEMM operations, are implemented in FP8 precision.
These GEMM operations accept FP8 tensors as inputs and produce outputs in BF16 or FP32.
As depicted in Figure 6, all three GEMMs associated with the Linear operator, namely Fprop (forward pass), Dgrad (activation backward pass), and Wgrad (weight backward pass), are executed in FP8.
This design theoretically doubles the computational speed compared with the original BF16 method.
Additionally, the FP8 Wgrad GEMM allows activations to be stored in FP8 for use in the backward pass.
This significantly reduces memory consumption.
首先,为加快模型训练,大部分核心计算内核,即 GEMM 操作,均在 FP8 精度下实现。这些 GEMM 操作接受 FP8 张量作为输入,输出为 BF16 或 FP32。如图 6 所示,线性算子相关的所有三个 GEMM,即 Fprop(正向传递)、Dgrad(激活反向传递)和 Wgrad(权重反向传递),均在 FP8 中执行。这一设计理论上将计算速度提高了一倍,与原始 BF16 方法相比。此外,FP8 Wgrad GEMM 允许在反向传递中以 FP8 存储激活,从而显著减少内存消耗。
Despite the efficiency advantage of the FP8 format, certain operators still require a higher precision due to their sensitivity to low-precision computations.
Besides, some low-cost operators can also utilize a higher precision with a negligible overhead to the overall training cost.
For this reason, after careful investigations, we maintain the original precision (e.g., BF16 or FP32) for the following components: the embedding module, the output head, MoE gating modules, normalization operators, and attention operators.
These targeted retentions of high precision ensure stable training dynamics for DeepSeek-V3.
To further guarantee numerical stability, we store the master weights, weight gradients, and optimizer states in higher precision.
While these high-precision components incur some memory overheads, their impact can be minimized through efficient sharding across multiple DP ranks in our distributed training system.
尽管 FP8 格式具有效率优势,某些算子由于对低精度计算敏感仍需更高的精度。此外,一些低成本算子也可以在对整体训练成本影响可忽略不计的情况下使用更高的精度。出于这个原因,经过仔细研究,我们为以下组件保留原始精度(例如 BF16 或 FP32):嵌入模块、输出头、MoE 门控模块、归一化算子和注意力算子。针对性地保持高精度确保了 DeepSeek-V3 的稳定训练动态。为了进一步保证数值稳定性,我们将主权重、权重梯度和优化器状态存储在更高的精度中。尽管这些高精度组件会产生一些内存开销,但通过在我们的分布式训练系统中跨多个 DP 级别进行高效分片,其影响可以最小化。
![Refer to caption](x7.png)
图 7:(a)我们提出了一种细粒度量化方法,以减轻由特征异常值引起的量化误差;为简化说明,仅展示 Fprop。(b)结合我们的量化策略,我们通过在高精度累积的 个元素 MMA 间隔提升到 CUDA 核心来提高 FP8 GEMM 的精度。
3.3.2 Improved Precision from Quantization and Multiplication
3.3.2 通过量化和乘法提高精度
Based on our mixed precision FP8 framework, we introduce several strategies to enhance low-precision training accuracy, focusing on both the quantization method and the multiplication process.
基于我们的混合精度 FP8 框架,我们引入了几种策略来增强低精度训练精度,重点关注量化方法和乘法过程。
Fine-Grained Quantization.
细粒度量化。
In low-precision training frameworks, overflows and underflows are common challenges due to the limited dynamic range of the FP8 format, which is constrained by its reduced exponent bits.
As a standard practice, the input distribution is aligned to the representable range of the FP8 format by scaling the maximum absolute value of the input tensor to the maximum representable value of FP8 (Narang et al., 2017).
This method makes low-precision training highly sensitive to activation outliers, which can heavily degrade quantization accuracy.
To solve this, we propose a fine-grained quantization method that applies scaling at a more granular level.
As illustrated in Figure 7 (a), (1) for activations, we group and scale elements on a 1x128 tile basis (i.e., per token per 128 channels); and (2) for weights, we group and scale elements on a 128x128 block basis (i.e., per 128 input channels per 128 output channels).
This approach ensures that the quantization process can better accommodate outliers by adapting the scale according to smaller groups of elements.
In Appendix B.2, we further discuss the training instability when we group and scale activations on a block basis in the same way as weights quantization.
在低精度训练框架中,由于 FP8 格式的动态范围有限,其减少的指数位导致溢出和下溢是常见的挑战。作为标准做法,通过将输入张量的最大绝对值缩放到 FP8 的最大可表示值,输入分布被调整到 FP8 格式的可表示范围内(Narang 等,2017)。这种方法使得低精度训练对激活异常值非常敏感,这可能严重降低量化精度。为了解决这一问题,我们提出了一种细粒度量化方法,在更细的粒度级别进行缩放。如图 7(a)所示,(1) 对于激活,我们在 1x128 的瓦片基础上对元素进行分组和缩放(即每个 token 每 128 个通道);(2) 对于权重,我们在 128x128 的块基础上对元素进行分组和缩放(即每 128 个输入通道每 128 个输出通道)。这种方法确保了量化过程可以通过根据较小的元素组调整缩放来更好地适应异常值。在附录 B.2 中,我们进一步讨论了当我们像权重量化一样在块基础上对激活进行分组和缩放时的训练不稳定性。
One key modification in our method is the introduction of per-group scaling factors along the inner dimension of GEMM operations.
This functionality is not directly supported in the standard FP8 GEMM.
However, combined with our precise FP32 accumulation strategy, it can be efficiently implemented.
我们方法中的一个关键修改是在 GEMM 操作的内维度上引入了每组缩放因子。此功能在标准 FP8 GEMM 中不直接支持。然而,结合我们精确的 FP32 累积策略,它可以高效实现。
Notably, our fine-grained quantization strategy is highly consistent with the idea of microscaling formats (Rouhani et al., 2023b), while the Tensor Cores of NVIDIA next-generation GPUs (Blackwell series) have announced the support for microscaling formats with smaller quantization granularity (NVIDIA, 2024a).
We hope our design can serve as a reference for future work to keep pace with the latest GPU architectures.
值得注意的是,我们的细粒度量化策略与微缩格式的理念高度一致(Rouhani 等,2023b),而 NVIDIA 下一代 GPU(Blackwell 系列)的 Tensor Cores 已宣布支持具有更小量化粒度的微缩格式(NVIDIA,2024a)。我们希望我们的设计能够作为未来工作参考,以跟上最新的 GPU 架构。
Increasing Accumulation Precision.
提高累积精度。
Low-precision GEMM operations often suffer from underflow issues, and their accuracy largely depends on high-precision accumulation, which is commonly performed in an FP32 precision (Kalamkar et al., 2019; Narang et al., 2017).
However, we observe that the accumulation precision of FP8 GEMM on NVIDIA H800 GPUs is limited to retaining around 14 bits, which is significantly lower than FP32 accumulation precision.
This problem will become more pronounced when the inner dimension K is large (Wortsman et al., 2023), a typical scenario in large-scale model training where the batch size and model width are increased.
Taking GEMM operations of two random matrices with K = 4096 for example, in our preliminary test, the limited accumulation precision in Tensor Cores results in a maximum relative error of nearly 2%.
Despite these problems, the limited accumulation precision is still the default option in a few FP8 frameworks (NVIDIA, 2024b), severely constraining the training accuracy.
低精度 GEMM 操作常常遭遇下溢问题,其精度在很大程度上依赖于 FP32 精度中常见的高精度累加(Kalamkar 等,2019;Narang 等,2017)。然而,我们观察到 NVIDIA H800 GPU 上的 FP8 GEMM 的累加精度限制在保留大约 14 位,这显著低于 FP32 累加精度。当内部维度 K 较大时,这一问题将更加明显(Wortsman 等,2023),这是大型模型训练中批大小和模型宽度增加的典型场景。以 K=4096 的两个随机矩阵的 GEMM 操作为例,在我们的初步测试中,Tensor Cores 中的有限累加精度导致最大相对误差接近 2%。尽管存在这些问题,有限的累加精度仍然是一些 FP8 框架中的默认选项(NVIDIA,2024b),这严重限制了训练精度。
In order to address this issue, we adopt the strategy of promotion to CUDA Cores for higher precision (Thakkar et al., 2023).
The process is illustrated in Figure 7 (b).
To be specific, during MMA (Matrix Multiply-Accumulate) execution on Tensor Cores, intermediate results are accumulated using the limited bit width.
Once an interval of is reached, these partial results will be copied to FP32 registers on CUDA Cores, where full-precision FP32 accumulation is performed.
As mentioned before, our fine-grained quantization applies per-group scaling factors along the inner dimension K.
These scaling factors can be efficiently multiplied on the CUDA Cores as the dequantization process with minimal additional computational cost.
为了解决这一问题,我们采用了提升到 CUDA Cores 以获得更高精度的策略(Thakkar 等,2023)。该过程如图 7(b)所示。具体来说,在 Tensor Cores 上执行 MMA(矩阵乘积-累加)时,使用有限位宽累加中间结果。一旦达到 的区间,这些部分结果将被复制到 CUDA Cores 上的 FP32 寄存器,在那里进行全精度的 FP32 累加。如前所述,我们的细粒度量化沿内部维度 K 应用每组的缩放因子。这些缩放因子可以在 CUDA Cores 上有效地相乘,作为去量化过程,其额外的计算成本极小。
It is worth noting that this modification reduces the WGMMA (Warpgroup-level Matrix Multiply-Accumulate) instruction issue rate for a single warpgroup. However, on the H800 architecture, it is typical for two WGMMA to persist concurrently: while one warpgroup performs the promotion operation, the other is able to execute the MMA operation. This design enables overlapping of the two operations, maintaining high utilization of Tensor Cores.
Based on our experiments, setting elements, equivalent to 4 WGMMAs, represents the minimal accumulation interval that can significantly improve precision without introducing substantial overhead.
值得注意的是,这种修改降低了单个 warpgroup 的 WGMMA(Warpgroup 级矩阵乘累加)指令发射率。然而,在 H800 架构上,通常两个 WGMMA 可以同时存在:一个 warpgroup 执行提升操作,另一个则可以执行 MMA 操作。这种设计使得两者操作可以重叠,保持对 Tensor Cores 的高利用率。根据我们的实验,设置 个元素,相当于 4 个 WGMMA,代表了可以显著提高精度而不引入大量开销的最小累加间隔。
Mantissa over Exponents. 尾数优于指数。
In contrast to the hybrid FP8 format adopted by prior work (NVIDIA, 2024b; Peng et al., 2023b; Sun et al., 2019b), which uses E4M3 (4-bit exponent and 3-bit mantissa) in Fprop and E5M2 (5-bit exponent and 2-bit mantissa) in Dgrad and Wgrad, we adopt the E4M3 format on all tensors for higher precision.
We attribute the feasibility of this approach to our fine-grained quantization strategy, i.e., tile and block-wise scaling.
By operating on smaller element groups, our methodology effectively shares exponent bits among these grouped elements, mitigating the impact of the limited dynamic range.
与先前工作(NVIDIA, 2024b; Peng et al., 2023b; Sun et al., 2019b)采用的混合 FP8 格式不同,其在 Fprop 中使用 E4M3(4 位指数和 3 位尾数)格式,在 Dgrad 和 Wgrad 中采用 E5M2(5 位指数和 2 位尾数)格式,我们在所有张量上采用 E4M3 格式以提高精度。我们将这种方式的可行性归因于我们的细粒度量化策略,即分块和块级缩放。通过操作较小的元素组,我们的方法有效地在这些分组元素之间共享指数位,减轻了有限动态范围的影响。
Online Quantization. 在线量化。
Delayed quantization is employed in tensor-wise quantization frameworks (NVIDIA, 2024b; Peng et al., 2023b), which maintains a history of the maximum absolute values across prior iterations to infer the current value.
In order to ensure accurate scales and simplify the framework, we calculate the maximum absolute value online for each 1x128 activation tile or 128x128 weight block.
Based on it, we derive the scaling factor and then quantize the activation or weight online into the FP8 format.
延迟量化用于张量级量化框架(NVIDIA, 2024b; Peng et al., 2023b),它维护以往迭代的最大绝对值历史来推测当前值。为了确保准确的尺度并简化框架,我们在线计算每个 1x128 激活块或 128x128 权重块的最大绝对值。基于此,我们得到缩放因子,然后在线将激活或权重量化为 FP8 格式。
3.3.3 Low-Precision Storage and Communication
3.3.3 低精度存储与通信
In conjunction with our FP8 training framework, we further reduce the memory consumption and communication overhead by compressing cached activations and optimizer states into lower-precision formats.
结合我们的 FP8 训练框架,我们通过压缩缓存的激活和优化器状态为低精度格式,进一步降低了内存消耗和通信开销。
Low-Precision Optimizer States.
低精度优化器状态。
We adopt the BF16 data format instead of FP32 to track the first and second moments in the AdamW (Loshchilov and Hutter, 2017) optimizer, without incurring observable performance degradation.
However, the master weights (stored by the optimizer) and gradients (used for batch size accumulation) are still retained in FP32 to ensure numerical stability throughout training.
我们采用 BF16 数据格式而不是 FP32 来跟踪 AdamW(Loshchilov 和 Hutter,2017)优化器中的一阶和二阶矩,而不引起可观察的性能下降。然而,主权重(由优化器存储)和梯度(用于批次累积)仍以 FP32 形式保留,以确保训练的数值稳定性。
Low-Precision Activation.
低精度激活。
As illustrated in Figure 6, the Wgrad operation is performed in FP8.
To reduce the memory consumption, it is a natural choice to cache activations in FP8 format for the backward pass of the Linear operator.
However, special considerations are taken on several operators for low-cost high-precision training:
如图 6 所示,Wgrad 操作在 FP8 中执行。为了减少内存消耗,对 Linear 算子的反向传递以 FP8 格式缓存激活数据是一个自然的选择。然而,我们对几个算子进行了特殊的处理,以实现低成本高精度的训练:
(1) Inputs of the Linear after the attention operator. These activations are also used in the backward pass of the attention operator, which makes it sensitive to precision. We adopt a customized E5M6 data format exclusively for these activations. Additionally, these activations will be converted from an 1x128 quantization tile to an 128x1 tile in the backward pass. To avoid introducing extra quantization error, all the scaling factors are round scaled, i.e., integral power of 2.
(1)注意力算子后的 Linear 输入。这些激活数据也用于注意力算子的反向传递,因此对精度很敏感。我们为这些激活数据采用定制的 E5M6 数据格式。此外,这些激活数据将在反向传递中从 1x128 量化块转换为 128x1 块。为了避免引入额外的量化误差,所有缩放因子均进行整数次方 2 的舍入缩放。(2) Inputs of the SwiGLU operator in MoE. To further reduce the memory cost, we cache the inputs of the SwiGLU operator and recompute its output in the backward pass. These activations are also stored in FP8 with our fine-grained quantization method, striking a balance between memory efficiency and computational accuracy.
(2)MoE 中 SwiGLU 算子的输入。为了进一步降低内存成本,我们缓存 SwiGLU 算子的输入并在反向传递中重新计算其输出。这些激活数据也采用我们的细粒度量化方法存储在 FP8 中,平衡了内存效率和计算准确性。
Low-Precision Communication.
低精度通信。
Communication bandwidth is a critical bottleneck in the training of MoE models.
To alleviate this challenge, we quantize the activation before MoE up-projections into FP8 and then apply dispatch components, which is compatible with FP8 Fprop in MoE up-projections. Like the inputs of the Linear after the attention operator, scaling factors for this activation are integral power of 2.
A similar strategy is applied to the activation gradient before MoE down-projections.
For both the forward and backward combine components, we retain them in BF16 to preserve training precision in critical parts of the training pipeline.
通信带宽是 MoE 模型训练中的一个关键瓶颈。为了解决这一挑战,我们在 MoE 上投影之前,将激活数据量化为 FP8 格式并应用分派组件,这与 MoE 上投影中的 FP8 前向传播兼容。与注意力算子后的 Linear 输入相似,这些激活数据的缩放因子是 2 的整数次方。在 MoE 下投影之前的激活度梯度也采用类似策略。对于前向和反向结合组件,我们保留 BF16 以在训练管道的关键部分保持训练精度。
3.4 Inference and Deployment
3.4 推理与部署
We deploy DeepSeek-V3 on the H800 cluster, where GPUs within each node are interconnected using NVLink, and all GPUs across the cluster are fully interconnected via IB.
To simultaneously ensure both the Service-Level Objective (SLO) for online services and high throughput, we employ the following deployment strategy that separates the prefilling and decoding stages.
我们在 H800 集群上部署了 DeepSeek-V3,每个节点内的 GPU 通过 NVLink 互连,而整个集群中所有 GPU 通过 IB 完全互联。为了同时确保在线服务的服务级目标(SLO)和高吞吐量,我们采用以下部署策略,将预填充和解码阶段分开处理。
3.4.1 Prefilling 3.4.1 预填充
The minimum deployment unit of the prefilling stage consists of 4 nodes with 32 GPUs.
The attention part employs 4-way Tensor Parallelism (TP4) with Sequence Parallelism (SP), combined with 8-way Data Parallelism (DP8).
Its small TP size of 4 limits the overhead of TP communication.
For the MoE part, we use 32-way Expert Parallelism (EP32), which ensures that each expert processes a sufficiently large batch size, thereby enhancing computational efficiency.
For the MoE all-to-all communication, we use the same method as in training: first transferring tokens across nodes via IB, and then forwarding among the intra-node GPUs via NVLink.
In particular, we use 1-way Tensor Parallelism for the dense MLPs in shallow layers to save TP communication.
预填充阶段的最小部署单位由 4 个节点和 32 个 GPU 组成。注意力部分采用 4 路张量并行(TP4)与序列并行(SP)结合 8 路数据并行(DP8)。其较小的 4 路 TP 设计限制了 TP 通信的开销。在 MoE 部分,我们采用 32 路专家并行(EP32),确保每位专家处理足够大的批次,进而提高计算效率。在 MoE 全互通信中,我们使用与训练阶段相同的方法:首先通过 IB 在节点间传输 Token,然后通过 NVLink 在节点内的 GPU 之间转发。特别是在浅层的密集 MLP 中,我们使用 1 路张量并行来减少 TP 通信。
To achieve load balancing among different experts in the MoE part, we need to ensure that each GPU processes approximately the same number of tokens.
To this end, we introduce a deployment strategy of redundant experts, which duplicates high-load experts and deploys them redundantly.
The high-load experts are detected based on statistics collected during the online deployment and are adjusted periodically (e.g., every 10 minutes).
After determining the set of redundant experts, we carefully rearrange experts among GPUs within a node based on the observed loads, striving to balance the load across GPUs as much as possible without increasing the cross-node all-to-all communication overhead.
For the deployment of DeepSeek-V3, we set 32 redundant experts for the prefilling stage.
For each GPU, besides the original 8 experts it hosts, it will also host one additional redundant expert.
为实现 MoE 部分不同专家间的负载均衡,我们需要确保每个 GPU 处理的 Token 数量大致相同。为此,我们引入了冗余专家的部署策略,复制高负载的专家并冗余部署。高负载专家根据在线部署期间收集的统计数据检测,并定期调整(例如,每 10 分钟)。在确定冗余专家集合后,我们根据观察到的负载,仔细在节点内的 GPU 间重新安排专家,努力在不增加跨节点全互通信开销的情况下,尽可能平衡 GPU 间的负载。在 DeepSeek-V3 的部署中,我们为预填充阶段设置了 32 个冗余专家。对于每个 GPU,除了它原有的 8 个专家外,还将额外承载一个冗余专家。
Furthermore, in the prefilling stage, to improve the throughput and hide the overhead of all-to-all and TP communication, we simultaneously process two micro-batches with similar computational workloads, overlapping the attention and MoE of one micro-batch with the dispatch and combine of another.
此外,在预填充阶段,为提高吞吐量并隐藏全互和 TP 通信的开销,我们同时处理两个计算负载相似的微批,重叠一个微批的注意力和 MoE 与另一个微批的分派和组合。
Finally, we are exploring a dynamic redundancy strategy for experts, where each GPU hosts more experts (e.g., 16 experts), but only 9 will be activated during each inference step.
Before the all-to-all operation at each layer begins, we compute the globally optimal routing scheme on the fly.
Given the substantial computation involved in the prefilling stage, the overhead of computing this routing scheme is almost negligible.
最后,我们正在探索一种专家动态冗余策略,其中每个 GPU 承载更多专家(例如,16 个专家),但每次推理步只激活 9 个。在每层的全互操作开始之前,我们实时计算全局最优路由方案。考虑到预填充阶段的计算量巨大,计算此路由方案的开销几乎可以忽略不计。
3.4.2 Decoding 3.4.2 解码
During decoding, we treat the shared expert as a routed one.
From this perspective, each token will select 9 experts during routing, where the shared expert is regarded as a heavy-load one that will always be selected.
The minimum deployment unit of the decoding stage consists of 40 nodes with 320 GPUs.
The attention part employs TP4 with SP, combined with DP80, while the MoE part uses EP320.
For the MoE part, each GPU hosts only one expert, and 64 GPUs are responsible for hosting redundant experts and shared experts.
All-to-all communication of the dispatch and combine parts is performed via direct point-to-point transfers over IB to achieve low latency.
Additionally, we leverage the IBGDA (NVIDIA, 2022) technology to further minimize latency and enhance communication efficiency.
在解码阶段,我们将共享专家视为一个路由专家。从这个角度看,每个 Token 在路由期间将选择 9 个专家,其中共享专家被视为一个总是被选择的高负载专家。解码阶段的最小部署单位由 40 个节点和 320 个 GPU 组成。注意力部分采用 TP4 与 SP 结合 DP80,而 MoE 部分使用 EP320。在 MoE 部分中,每个 GPU 只承载一个专家,64 个 GPU 负责承载冗余专家和共享专家。分派和组合部分的全互通信通过 IB 直接点到点传输实现以达到低延迟。此外,我们利用 IBGDA(NVIDIA, 2022)技术进一步减少延迟并提高通信效率。
Similar to prefilling, we periodically determine the set of redundant experts in a certain interval, based on the statistical expert load from our online service.
However, we do not need to rearrange experts since each GPU only hosts one expert.
We are also exploring the dynamic redundancy strategy for decoding.
However, this requires more careful optimization of the algorithm that computes the globally optimal routing scheme and the fusion with the dispatch kernel to reduce overhead.
与预填充类似,我们会定期根据在线服务的统计专家负载,在某个区间内确定多余专家的集合。然而,由于每个 GPU 只承载一个专家,我们不需要重新安排专家。同时,我们正在探索用于解码的动态冗余策略。然而,这需要更仔细地优化算法,以计算全局最优路由方案,并与派发内核融合以减少开销。
Additionally, to enhance throughput and hide the overhead of all-to-all communication, we are also exploring processing two micro-batches with similar computational workloads simultaneously in the decoding stage.
Unlike prefilling, attention consumes a larger portion of time in the decoding stage. Therefore, we overlap the attention of one micro-batch with the dispatch+MoE+combine of another.
In the decoding stage, the batch size per expert is relatively small (usually within 256 tokens), and the bottleneck is memory access rather than computation.
Since the MoE part only needs to load the parameters of one expert, the memory access overhead is minimal, so using fewer SMs will not significantly affect the overall performance.
Therefore, to avoid impacting the computation speed of the attention part, we can allocate only a small portion of SMs to dispatch+MoE+combine.
此外,为了提高吞吐量并隐藏全互通信的开销,我们还在探索在解码阶段同时处理两个计算工作负载相似的微批次。与预填充不同,注意力在解码阶段消耗较大比例的时间。因此,我们将一个微批次的注意力与另一个的派发+MoE+合并过程重叠。在解码阶段,每个专家的批次大小相对较小(通常在 256 个 tokens 以内),瓶颈在于内存访问而非计算。由于 MoE 部分只需加载一个专家的参数,因此内存访问开销很小,因此使用较少的 SM 不会显著影响整体性能。因此,为了避免影响注意力部分的计算速度,我们可以分配少量的 SM 给派发+MoE+合并。
3.5 Suggestions on Hardware Design
3.5 硬件设计建议
Based on our implementation of the all-to-all communication and FP8 training scheme, we propose the following suggestions on chip design to AI hardware vendors.
基于我们对全互联通信和 FP8 训练方案的实现,我们向 AI 硬件供应商提出以下芯片设计建议。
3.5.1 Communication Hardware
3.5.1 通信硬件
In DeepSeek-V3, we implement the overlap between computation and communication to hide the communication latency during computation.
This significantly reduces the dependency on communication bandwidth compared to serial computation and communication.
However, the current communication implementation relies on expensive SMs (e.g., we allocate 20 out of the 132 SMs available in the H800 GPU for this purpose), which will limit the computational throughput.
Moreover, using SMs for communication results in significant inefficiencies, as tensor cores remain entirely -utilized.
在 DeepSeek-V3 中,我们实现了计算和通信的重叠,以隐藏计算过程中的通信延迟。这相比于串行计算和通信显著减少了对通信带宽的依赖。然而,目前的通信实现依赖于昂贵的 SMs(例如,我们在 H800 GPU 中为此分配了 132 个 SM 中的 20 个),这将限制计算吞吐量。此外,使用 SMs 进行通信会导致显著的效率低下,因为张量核心完全未被利用。
Currently, the SMs primarily perform the following tasks for all-to-all communication:
目前,SMs 主要执行以下任务来进行全互联通信:
-
•
Forwarding data between the IB (InfiniBand) and NVLink domain while aggregating IB traffic destined for multiple GPUs within the same node from a single GPU.
• 在 IB(InfiniBand)和 NVLink 域之间转发数据,同时汇聚单个 GPU 向同一节点内多个 GPU 发送的 IB 流量。 -
•
Transporting data between RDMA buffers (registered GPU memory regions) and input/output buffers.
• 在 RDMA 缓冲区(已注册的 GPU 内存区域)和输入/输出缓冲区之间传输数据。 -
•
Executing reduce operations for all-to-all combine.
• 执行全互联结合的化简操作。 -
•
Managing fine-grained memory layout during chunked data transferring to multiple experts across the IB and NVLink domain.
• 在跨 IB 和 NVLink 域向多个专家传输分块数据时管理细粒度内存布局。
We aspire to see future vendors developing hardware that offloads these communication tasks from the valuable computation unit SM, serving as a GPU co-processor or a network co-processor like NVIDIA SHARP Graham et al. (2016).
Furthermore, to reduce application programming complexity, we aim for this hardware to unify the IB (scale-out) and NVLink (scale-up) networks from the perspective of the computation units.
With this unified interface, computation units can easily accomplish operations such as read, write, multicast, and reduce across the entire IB-NVLink-unified domain via submitting communication requests based on simple primitives.
我们希望未来的供应商能开发硬件,将这些通信任务从宝贵的计算单元 SM 上卸载出来,作为 GPU 协处理器或类似于 NVIDIA SHARP Graham et al. (2016)的网络协处理器。此外,为了减少应用编程的复杂性,我们希望这类硬件能从计算单元的视角统一 IB(横向扩展)和 NVLink(纵向扩展)网络。有了这个统一的接口,计算单元可以轻松完成诸如读、写、多播和在整个 IB-NVLink 统一域内进行简化的通信请求的操作。
3.5.2 Compute Hardware 3.5.2 计算硬件
Higher FP8 GEMM Accumulation Precision in Tensor Cores.
张量核心中更高 FP8 GEMM 累积精度。
In the current Tensor Core implementation of the NVIDIA Hopper architecture, FP8 GEMM (General Matrix Multiply) employs fixed-point accumulation, aligning the mantissa products by right-shifting based on the maximum exponent before addition.
Our experiments reveal that it only uses the highest 14 bits of each mantissa product after sign-fill right shifting, and truncates bits exceeding this range.
However, for example, to achieve precise FP32 results from the accumulation of 32 FP8FP8 multiplications, at least 34-bit precision is required.
Thus, we recommend that future chip designs increase accumulation precision in Tensor Cores to support full-precision accumulation, or select an appropriate accumulation bit-width according to the accuracy requirements of training and inference algorithms.
This approach ensures that errors remain within acceptable bounds while maintaining computational efficiency.
在 NVIDIA Hopper 架构的当前张量核心实现中,FP8 GEMM(通用矩阵乘法)采用定点累积,通过基于最大指数的右移来对齐尾数积再进行加法运算。我们的实验表明,它在符号填充右移后的每个尾数积中仅使用最高的 14 位,并截断超出此范围的位。然而,例如,要从 32 个 FP8 相乘的累积中获得精确的 FP32 结果,至少需要 34 位精度。因此,我们建议未来芯片设计增加张量核心中的累积精度,以支持全精度累积,或根据训练和推理算法的精度要求选取适当的累积位宽。这种方法确保在保持计算效率的同时,使误差在可接受范围内。
Support for Tile- and Block-Wise Quantization.
支持矩阵块和块级量化。
Current GPUs only support per-tensor quantization, lacking the native support for fine-grained quantization like our tile- and block-wise quantization.
In the current implementation, when the interval is reached, the partial results will be copied from Tensor Cores to CUDA cores, multiplied by the scaling factors, and added to FP32 registers on CUDA cores.
Although the dequantization overhead is significantly mitigated combined with our precise FP32 accumulation strategy, the frequent data movements between Tensor Cores and CUDA cores still limit the computational efficiency.
Therefore, we recommend future chips to support fine-grained quantization by enabling Tensor Cores to receive scaling factors and implement MMA with group scaling.
In this way, the whole partial sum accumulation and dequantization can be completed directly inside Tensor Cores until the final result is produced, avoiding frequent data movements.
当前的 GPU 仅支持按张量量化,缺乏对我们所使用的块级和分块量化等细粒度量化的原生支持。在当前实现中,当达到 时间间隔时,部分结果会从张量核心复制到 CUDA 核心,乘以缩放因子后,添加到 CUDA 核心上的 FP32 寄存器。尽管结合我们的精确 FP32 累积策略,反量化开销显著减少,但张量核心与 CUDA 核心之间的频繁数据移动仍然限制了计算效率。因此,我们建议未来芯片支持细粒度量化,使张量核心能够接收缩放因子,并根据组缩放进行 MMA。这样,整个部分和累积及反量化可直接在张量核心内完成,直到最终结果生成,避免频繁的数据移动。
Support for Online Quantization.
支持在线量化。
The current implementations struggle to effectively support online quantization, despite its effectiveness demonstrated in our research.
In the existing process, we need to read 128 BF16 activation values (the output of the previous computation) from HBM (High Bandwidth Memory) for quantization, and the quantized FP8 values are then written back to HBM, only to be read again for MMA.
To address this inefficiency, we recommend that future chips integrate FP8 cast and TMA (Tensor Memory Accelerator) access into a single fused operation, so quantization can be completed during the transfer of activations from global memory to shared memory, avoiding frequent memory reads and writes.
We also recommend supporting a warp-level cast instruction for speedup, which further facilitates the better fusion of layer normalization and FP8 cast.
Alternatively, a near-memory computing approach can be adopted, where compute logic is placed near the HBM.
In this case, BF16 elements can be cast to FP8 directly as they are read from HBM into the GPU, reducing off-chip memory access by roughly 50%.
尽管我们的研究证明其有效性,但当前实现难以有效支持在线量化。在现有过程中,我们需要从 HBM(高带宽内存)中读取 128 个 BF16 激活值(先前计算的输出)用于量化,然后将量化后的 FP8 值写回 HBM,再次读取以进行 MMA。为了解决这一低效问题,我们建议未来的芯片将 FP8 转换和 TMA(张量内存加速器)访问整合为单一融合操作,从而可以在激活从全局内存传输到共享内存的过程中完成量化,避免频繁的内存读写。我们还建议支持 warp 级转换指令以加速,这进一步促进了层归一化和 FP8 转换的更好融合。或者,可以采用近内存计算的方法,将计算逻辑放在接近 HBM 的位置。在这种情况下,BF16 元素可以在从 HBM 读取到 GPU 的过程中直接转换为 FP8,从而减少大约 50%的片外内存访问。
Support for Transposed GEMM Operations.
支持转置矩阵乘法(GEMM)操作。
The current architecture makes it cumbersome to fuse matrix transposition with GEMM operations.
In our workflow, activations during the forward pass are quantized into 1x128 FP8 tiles and stored.
During the backward pass, the matrix needs to be read out, dequantized, transposed, re-quantized into 128x1 tiles, and stored in HBM.
To reduce memory operations, we recommend future chips to enable direct transposed reads of matrices from shared memory before MMA operation, for those precisions required in both training and inference. Combined with the fusion of FP8 format conversion and TMA access, this enhancement will significantly streamline the quantization workflow.
当前的架构使得矩阵转置与 GEMM 操作的融合变得麻烦。在我们的工作流程中,前向传播时的激活被量化为 1x128 FP8 块并存储。在反向传播过程中,矩阵需要被读取、反量化、转置,重新量化为 128x1 块,并存储在 HBM 中。为了减少内存操作,我们建议未来的芯片在 MMA 操作前,能从共享内存中直接读取转置的矩阵,对于那些在训练和推理中都需要的精度而言。结合 FP8 格式转换和 TMA 访问的融合,这一增强将显著简化量化工作流程。
4 Pre-Training 4 预训练
4.1 Data Construction 4.1 数据构建
Compared with DeepSeek-V2, we optimize the pre-training corpus by enhancing the ratio of mathematical and programming samples, while expanding multilingual coverage beyond English and Chinese.
Also, our data processing pipeline is refined to minimize redundancy while maintaining corpus diversity.
Inspired by Ding et al. (2024), we implement the document packing method for data integrity but do not incorporate cross-sample attention masking during training.
Finally, the training corpus for DeepSeek-V3 consists of 14.8T high-quality and diverse tokens in our tokenizer.
与 DeepSeek-V2 相比,我们通过增加数学和编程样本的比重来优化预训练语料库,同时扩展多语言覆盖到英语和汉语之外。此外,我们的数据处理管道经过改进,以在保持语料库多样性的同时减少冗余。受 Ding 等人(2024)的启发,我们实施了文件打包方法以确保数据完整性,但在训练过程中没有引入跨样本注意力屏蔽。最终,DeepSeek-V3 的训练语料库由 14.8T 高质量和多样化的标记组成。
In the training process of DeepSeekCoder-V2 (DeepSeek-AI, 2024a), we observe that the Fill-in-Middle (FIM) strategy does not compromise the next-token prediction capability while enabling the model to accurately predict middle text based on contextual cues.
In alignment with DeepSeekCoder-V2, we also incorporate the FIM strategy in the pre-training of DeepSeek-V3.
To be specific, we employ the Prefix-Suffix-Middle (PSM) framework to structure data as follows:
在 DeepSeekCoder-V2(DeepSeek-AI,2024a)的训练过程中,我们观察到填中间(FIM)策略不会影响下一个标记的预测能力,同时使模型能够根据上下文线索准确预测中间文本。与 DeepSeekCoder-V2 一致,我们在 DeepSeek-V3 的预训练中也采用 FIM 策略。具体而言,我们使用前缀-后缀-中间(PSM)框架来构建数据如下:
This structure is applied at the document level as a part of the pre-packing process.
The FIM strategy is applied at a rate of 0.1, consistent with the PSM framework.
这种结构在文档级别应用,作为预打包过程的一部分。FIM 策略的应用率为 0.1,与 PSM 框架一致。
The tokenizer for DeepSeek-V3 employs Byte-level BPE (Shibata et al., 1999) with an extended vocabulary of 128K tokens.
The pretokenizer and training data for our tokenizer are modified to optimize multilingual compression efficiency.
In addition, compared with DeepSeek-V2, the new pretokenizer introduces tokens that combine punctuations and line breaks.
However, this trick may introduce the token boundary bias (Lundberg, 2023) when the model processes multi-line prompts without terminal line breaks, particularly for few-shot evaluation prompts.
To address this issue, we randomly split a certain proportion of such combined tokens during training, which exposes the model to a wider array of special cases and mitigates this bias.
DeepSeek-V3 的分词器采用字节级 BPE(Shibata 等人,1999),扩展词汇量为 128K 标记。我们的预分词和分词器的训练数据经过修改以优化多语言压缩效率。此外,与 DeepSeek-V2 相比,新的预分词器引入了结合标点和换行符的标记。然而,这种技巧可能在模型处理没有终端换行符的多行提示时引入标记边界偏差(Lundberg,2023),特别是对少样本评估提示。为了解决这个问题,我们在训练过程中随机拆分了这一部分合并的标记,这使模型接触到更广泛的特殊案例并减少这种偏差。
4.2 Hyper-Parameters 4.2 超参数
Model Hyper-Parameters. 模型超参数。
We set the number of Transformer layers to 61 and the hidden dimension to 7168.
All learnable parameters are randomly initialized with a standard deviation of 0.006.
In MLA, we set the number of attention heads to 128 and the per-head dimension to 128.
The KV compression dimension is set to 512, and the query compression dimension is set to 1536.
For the decoupled queries and key, we set the per-head dimension to 64.
We substitute all FFNs except for the first three layers with MoE layers.
Each MoE layer consists of 1 shared expert and 256 routed experts, where the intermediate hidden dimension of each expert is 2048.
Among the routed experts, 8 experts will be activated for each token, and each token will be ensured to be sent to at most 4 nodes.
The multi-token prediction depth is set to 1, i.e., besides the exact next token, each token will predict one additional token.
As DeepSeek-V2, DeepSeek-V3 also employs additional RMSNorm layers after the compressed latent vectors, and multiplies additional scaling factors at the width bottlenecks.
Under this configuration, DeepSeek-V3 comprises 671B total parameters, of which 37B are activated for each token.
我们将 Transformer 层数设定为 61,hidden dimension 设定为 7168。所有可学习参数都随机初始化,标准差为 0.006。在 MLA 中,我们将注意力头的数量 设为 128,每个头的维度 设为 128。KV 压缩维度 设为 512,query 压缩维度 设为 1536。对于解耦查询和键,我们将每个头的维度 设为 64。我们替换了前三层以外的所有 FFN 为 MoE 层。每个 MoE 层由 1 个共享专家和 256 个路由专家组成,其中每个专家的中间隐藏维度为 2048。在路由专家中,每个标记将激活 8 个专家,并确保每个标记最多被发送到 4 个节点。多标记预测深度 设为 1,即除了下一个确切的标记,每个标记还将预测一个附加的标记。与 DeepSeek-V2 一样,DeepSeek-V3 在压缩的潜在向量之后也采用附加的 RMSNorm 层,并在宽度瓶颈处乘以额外的缩放因子。在此配置下,DeepSeek-V3 包含 671B 个总参数,其中 37B 在每个标记激活。
Training Hyper-Parameters.
训练超参数。
We employ the AdamW optimizer (Loshchilov and Hutter, 2017) with hyper-parameters set to , , and .
We set the maximum sequence length to 4K during pre-training, and pre-train DeepSeek-V3 on 14.8T tokens.
As for the learning rate scheduling, we first linearly increase it from 0 to during the first 2K steps.
Then, we keep a constant learning rate of until the model consumes 10T training tokens.
Subsequently, we gradually decay the learning rate to in 4.3T tokens, following a cosine decay curve.
During the training of the final 500B tokens, we keep a constant learning rate of in the first 333B tokens, and switch to another constant learning rate of in the remaining 167B tokens.
The gradient clipping norm is set to 1.0.
We employ a batch size scheduling strategy, where the batch size is gradually increased from 3072 to 15360 in the training of the first 469B tokens, and then keeps 15360 in the remaining training.
We leverage pipeline parallelism to deploy different layers of a model on different GPUs, and for each layer, the routed experts will be uniformly deployed on 64 GPUs belonging to 8 nodes.
As for the node-limited routing, each token will be sent to at most 4 nodes (i.e., ).
For auxiliary-loss-free load balancing, we set the bias update speed to 0.001 for the first 14.3T tokens, and to 0.0 for the remaining 500B tokens.
For the balance loss, we set to 0.0001, just to avoid extreme imbalance within any single sequence.
The MTP loss weight is set to 0.3 for the first 10T tokens, and to 0.1 for the remaining 4.8T tokens.
我们采用 AdamW 优化器(Loshchilov 和 Hutter,2017),其超参数设置为 , 和 。在预训练期间,我们将最大序列长度设置为 4K,并在 14.8T 个 token 上预训练 DeepSeek-V3。关于学习率调度,我们首先在线性增加其从 0 到 ,持续 2K 步。然后,我们将学习率保持为常数 ,直到模型消耗掉 10T 个训练 token。随后,我们在 4.3T 个 token 内逐渐衰减学习率到 ,遵循一个余弦衰减曲线。在最后 5000 亿个 token 的训练过程中,我们在前 3330 亿个 token 时保持一个常数学习率 ,在接下来的 1670 亿个 token 切换到另一个常数学习率 。梯度裁剪范数设置为 1.0。我们采用批量大小调度策略,即在前 4690 亿个 token 的训练中,批量大小逐渐从 3072 增加到 15360,然后在剩余的训练中保持 15360。我们利用流水线并行在不同的 GPU 上部署模型的不同层,对于每一层,路由专家将会均匀部署在 8 个节点的 64 个 GPU 上。针对节点限制路由,每个 token 最多将被发送到 4 个节点(即 )。为了在无辅助损失的负载均衡中,我们将偏差更新速度 在前 14.3T 个 token 时设置为 0.001,在后 5000 亿个 token 设置为 0.0。对于平衡损失,我们将 设置为 0.0001,以避免任何单一序列中的极端不平衡。MTP 损失权重 在前 10T 个 token 时设置为 0.3,在剩余的 4.8T 个 token 时则为 0.1。
![Refer to caption](x8.png)
图 8:在“针尖中的干草堆”(NIAH)测试上的评估结果。DeepSeek-V3 在所有上下文窗口长度至 128K 的测试中表现出色。
4.3 Long Context Extension
4.3 长上下文扩展
We adopt a similar approach to DeepSeek-V2 (DeepSeek-AI, 2024c) to enable long context capabilities in DeepSeek-V3.
After the pre-training stage, we apply YaRN (Peng et al., 2023a) for context extension and perform two additional training phases, each comprising 1000 steps, to progressively expand the context window from 4K to 32K and then to 128K.
The YaRN configuration is consistent with that used in DeepSeek-V2, being applied exclusively to the decoupled shared key .
The hyper-parameters remain identical across both phases, with the scale , , , and the scaling factor .
In the first phase, the sequence length is set to 32K, and the batch size is 1920.
During the second phase, the sequence length is increased to 128K, and the batch size is reduced to 480.
The learning rate for both phases is set to , matching the final learning rate from the pre-training stage.
我们采取类似于 DeepSeek-V2(DeepSeek-AI,2024c)的方法,以在 DeepSeek-V3 中实现长上下文能力。在预训练阶段之后,我们应用 YaRN(Peng et al., 2023a)进行上下文扩展,并进行两个额外的训练阶段,每个阶段由 1000 步组成,以逐步将上下文窗口从 4K 扩展到 32K,再到 128K。YaRN 的配置与 DeepSeek-V2 中使用的一致,仅应用于解耦共享关键字 。这两个阶段的超参数保持相同,具有缩放 , , 和缩放因子 。在第一阶段,序列长度设置为 32K,批量大小为 1920。在第二阶段,序列长度增加到 128K,批量大小减少到 480。两个阶段的学习率都设置为 ,与预训练阶段的最终学习率一致。
Through this two-phase extension training, DeepSeek-V3 is capable of handling inputs up to 128K in length while maintaining strong performance.
Figure 8 illustrates that DeepSeek-V3, following supervised fine-tuning, achieves notable performance on the "Needle In A Haystack" (NIAH) test, demonstrating consistent robustness across context window lengths up to 128K.
通过这两个阶段的扩展训练,DeepSeek-V3 能够处理长达 128K 的输入,同时保持强大的性能。图 8 显示,DeepSeek-V3 在经过监督微调后,在“针尖中的干草堆”(NIAH)测试中取得了显著的性能,在上下文窗口长度高达 128K 的情况下表现出一致的稳健性。
4.4 Evaluations 4.4 评估
4.4.1 Evaluation Benchmarks
4.4.1 评估基准
The base model of DeepSeek-V3 is pretrained on a multilingual corpus with English and Chinese constituting the majority, so we evaluate its performance on a series of benchmarks primarily in English and Chinese, as well as on a multilingual benchmark.
Our evaluation is based on our internal evaluation framework integrated in our HAI-LLM framework.
Considered benchmarks are categorized and listed as follows, where underlined benchmarks are in Chinese and double-underlined benchmarks are multilingual ones:
DeepSeek-V3 的基础模型在英文和中文构成主体的多语种语料库上进行了预训练,因此我们在主要为英文和中文的一系列基准上,以及在一个多语种基准上评估其性能。我们的评估基于集成在我们 HAI-LLM 框架中的内部评估框架。所考虑的基准按如下类别列出,其中下划线基准为中文,双下划线基准为多语种:
Multi-subject multiple-choice datasets include MMLU (Hendrycks et al., 2020), MMLU-Redux (Gema et al., 2024), MMLU-Pro (Wang et al., 2024b), MMMLU (OpenAI, 2024b), C-Eval (Huang et al., 2023), and CMMLU (Li et al., 2023).
多学科多选数据集包括 MMLU(Hendrycks et al., 2020)、MMLU-Redux(Gema et al., 2024)、MMLU-Pro(Wang et al., 2024b)、MMMLU(OpenAI, 2024b)、C-Eval(Huang et al., 2023)和 CMMLU(Li et al., 2023)。
Language understanding and reasoning datasets include HellaSwag (Zellers et al., 2019), PIQA (Bisk et al., 2020), ARC (Clark et al., 2018), and BigBench Hard (BBH) (Suzgun et al., 2022).
语言理解和推理数据集包括 HellaSwag(Zellers et al., 2019),PIQA(Bisk et al., 2020),ARC(Clark et al., 2018),以及 BigBench Hard (BBH)(Suzgun et al., 2022)。
Closed-book question answering datasets include TriviaQA (Joshi et al., 2017) and NaturalQuestions (Kwiatkowski et al., 2019).
闭卷问答数据集包括 TriviaQA(Joshi et al., 2017)和 NaturalQuestions(Kwiatkowski et al., 2019)。
Reading comprehension datasets include RACE Lai et al. (2017), DROP (Dua et al., 2019), C3 (Sun et al., 2019a), and CMRC (Cui et al., 2019).
阅读理解数据集包括 RACE Lai et al. (2017),DROP(Dua et al., 2019),C3(Sun et al., 2019a),以及 CMRC(Cui et al., 2019)。
Reference disambiguation datasets include CLUEWSC (Xu et al., 2020) and WinoGrande Sakaguchi et al. (2019).
参照消歧数据集包括 CLUEWSC(Xu et al., 2020)和 WinoGrande Sakaguchi et al. (2019)。
Language modeling datasets include Pile (Gao et al., 2020).
语言建模数据集包括 Pile(Gao et al., 2020)。
Chinese understanding and culture datasets include CCPM (Li et al., 2021).
中文理解与文化数据集包括 CCPM(Li et al., 2021)。
Math datasets include GSM8K (Cobbe et al., 2021), MATH (Hendrycks et al., 2021), MGSM (Shi et al., 2023), and CMath (Wei et al., 2023).
数学数据集包括 GSM8K(Cobbe et al., 2021),MATH(Hendrycks et al., 2021),MGSM(Shi et al., 2023),以及 CMath(Wei et al., 2023)。
Code datasets include HumanEval (Chen et al., 2021), LiveCodeBench-Base (0801-1101) (Jain et al., 2024), MBPP (Austin et al., 2021), and CRUXEval (Gu et al., 2024).
代码数据集包括 HumanEval(Chen et al., 2021),LiveCodeBench-Base(0801-1101)(Jain et al., 2024),MBPP(Austin et al., 2021),以及 CRUXEval(Gu et al., 2024)。
Standardized exams include AGIEval (Zhong et al., 2023).
Note that AGIEval includes both English and Chinese subsets.
标准化考试包括 AGIEval(Zhong et al., 2023)。注意,AGIEval 包括英语和中文子集。
Following our previous work (DeepSeek-AI, 2024b, c), we adopt perplexity-based evaluation for datasets including HellaSwag, PIQA, WinoGrande, RACE-Middle, RACE-High, MMLU, MMLU-Redux, MMLU-Pro, MMMLU, ARC-Easy, ARC-Challenge, C-Eval, CMMLU, C3, and CCPM, and adopt generation-based evaluation for TriviaQA, NaturalQuestions, DROP, MATH, GSM8K, MGSM, HumanEval, MBPP, LiveCodeBench-Base, CRUXEval, BBH, AGIEval, CLUEWSC, CMRC, and CMath.
In addition, we perform language-modeling-based evaluation for Pile-test and use Bits-Per-Byte (BPB) as the metric to guarantee fair comparison among models using different tokenizers.
根据我们之前的工作(DeepSeek-AI, 2024b, c),我们采用基于困惑度的评估来评估包括 HellaSwag、PIQA、WinoGrande、RACE-Middle、RACE-High、MMLU、MMLU-Redux、MMLU-Pro、MMMLU、ARC-Easy、ARC-Challenge、C-Eval、CMMLU、C3 和 CCPM 的数据集,并对 TriviaQA、NaturalQuestions、DROP、MATH、GSM8K、MGSM、HumanEval、MBPP、LiveCodeBench-Base、CRUXEval、BBH、AGIEval、CLUEWSC、CMRC 和 CMath 采用基于生成的评估。另外,我们对 Pile-test 进行语言模型评估,并使用每字节比特数(BPB)作为指标,以保证使用不同分词器的模型之间的公平比较。
Benchmark (Metric) 基准 (指标) | # Shots # 样本数 | DeepSeek-V2 | Qwen2.5 | LLaMA-3.1 | DeepSeek-V3 | |
Base 基础 | 72B Base 72B 基础 | 405B Base 405B 基础 | Base 基础 | |||
Architecture 架构 | - | MoE | Dense 密集 | Dense 密集 | MoE | |
# Activated Params # 活动参数数 | - | 21B | 72B | 405B | 37B | |
# Total Params # 总参数数 | - | 236B | 72B | 405B | 671B | |
English 英语 | Pile-test (BPB) Pile-test(BPB) | - | 0.606 | 0.638 | 0.542 | 0.548 |
BBH (EM) BBH(EM) | 3-shot 3 样本 | 78.8 | 79.8 | 82.9 | 87.5 | |
MMLU (EM) MMLU(EM) | 5-shot 5 样本 | 78.4 | 85.0 | 84.4 | 87.1 | |
MMLU-Redux (EM) MMLU-Redux(EM) | 5-shot 5 样本 | 75.6 | 83.2 | 81.3 | 86.2 | |
MMLU-Pro (EM) MMLU-Pro(EM) | 5-shot 5 样本 | 51.4 | 58.3 | 52.8 | 64.4 | |
DROP (F1) DROP(F1) | 3-shot 3 样本 | 80.4 | 80.6 | 86.0 | 89.0 | |
ARC-Easy (EM) ARC-Easy(EM) | 25-shot 25 样本 | 97.6 | 98.4 | 98.4 | 98.9 | |
ARC-Challenge (EM) ARC-Challenge(EM) | 25-shot 25 样本 | 92.2 | 94.5 | 95.3 | 95.3 | |
HellaSwag (EM) HellaSwag(EM) | 10-shot 10 样本 | 87.1 | 84.8 | 89.2 | 88.9 | |
PIQA (EM) PIQA(EM) | 0-shot 0 样本 | 83.9 | 82.6 | 85.9 | 84.7 | |
WinoGrande (EM) WinoGrande(EM) | 5-shot 5 样本 | 86.3 | 82.3 | 85.2 | 84.9 | |
RACE-Middle (EM) RACE-Middle(EM) | 5-shot 5 样本 | 73.1 | 68.1 | 74.2 | 67.1 | |
RACE-High (EM) RACE-High(EM) | 5-shot 5 样本 | 52.6 | 50.3 | 56.8 | 51.3 | |
TriviaQA (EM) TriviaQA(EM) | 5-shot 5 样本 | 80.0 | 71.9 | 82.7 | 82.9 | |
NaturalQuestions (EM) NaturalQuestions(EM) | 5-shot 5 样本 | 38.6 | 33.2 | 41.5 | 40.0 | |
AGIEval (EM) AGIEval(EM) | 0-shot 0 样本 | 57.5 | 75.8 | 60.6 | 79.6 | |
Code 代码 | HumanEval (Pass@1) HumanEval(Pass@1) | 0-shot 0 样本 | 43.3 | 53.0 | 54.9 | 65.2 |
MBPP (Pass@1) MBPP(Pass@1) | 3-shot 3 样本 | 65.0 | 72.6 | 68.4 | 75.4 | |
LiveCodeBench-Base (Pass@1) LiveCodeBench-Base(Pass@1) |
3-shot 3 样本 | 11.6 | 12.9 | 15.5 | 19.4 | |
CRUXEval-I (EM) CRUXEval-I(EM) | 2-shot 2 次示例 | 52.5 | 59.1 | 58.5 | 67.3 | |
CRUXEval-O (EM) CRUXEval-O(EM) | 2-shot 2 次示例 | 49.8 | 59.9 | 59.9 | 69.8 | |
Math 数学 | GSM8K (EM) GSM8K(EM) | 8-shot 8 次示例 | 81.6 | 88.3 | 83.5 | 89.3 |
MATH (EM) MATH(EM) | 4-shot 4 次示例 | 43.4 | 54.4 | 49.0 | 61.6 | |
MGSM (EM) MGSM(EM) | 8-shot 8 次示例 | 63.6 | 76.2 | 69.9 | 79.8 | |
CMath (EM) CMath(EM) | 3-shot 3 样本 | 78.7 | 84.5 | 77.3 | 90.7 | |
Chinese 中文 | CLUEWSC (EM) CLUEWSC(EM) | 5-shot 5 样本 | 82.0 | 82.5 | 83.0 | 82.7 |
C-Eval (EM) C-Eval(EM) | 5-shot 5 样本 | 81.4 | 89.2 | 72.5 | 90.1 | |
CMMLU (EM) CMMLU(EM) | 5-shot 5 样本 | 84.0 | 89.5 | 73.7 | 88.8 | |
CMRC (EM) CMRC(EM) | 1-shot 1 次示例 | 77.4 | 75.8 | 76.0 | 76.3 | |
C3 (EM) C3(EM) | 0-shot 0 样本 | 77.4 | 76.7 | 79.7 | 78.6 | |
CCPM (EM) CCPM(EM) | 0-shot 0 样本 | 93.0 | 88.5 | 78.6 | 92.0 | |
Multilingual 多语言 | MMMLU-non-English (EM) MMMLU-非英语(EM) | 5-shot 5 样本 | 64.0 | 74.8 | 73.8 | 79.4 |
表 3: DeepSeek-V3-Base 与其他代表性开源基础模型的比较。所有模型都在我们的内部框架中进行评估,并共享相同的评估设置。得分差距不超过 0.3 的被视为在同一水平。DeepSeek-V3-Base 在大多数基准上取得了最佳表现,特别是在数学和代码任务上。
4.4.2 Evaluation Results 4.4.2 评估结果
In Table 3, we compare the base model of DeepSeek-V3 with the state-of-the-art open-source base models, including DeepSeek-V2-Base (DeepSeek-AI, 2024c) (our previous release), Qwen2.5 72B Base (Qwen, 2024b), and LLaMA-3.1 405B Base (AI@Meta, 2024b).
We evaluate all these models with our internal evaluation framework, and ensure that they share the same evaluation setting.
Note that due to the changes in our evaluation framework over the past months, the performance of DeepSeek-V2-Base exhibits a slight difference from our previously reported results.
Overall, DeepSeek-V3-Base comprehensively outperforms DeepSeek-V2-Base and Qwen2.5 72B Base, and surpasses LLaMA-3.1 405B Base in the majority of benchmarks, essentially becoming the strongest open-source model.
在表 3 中,我们将 DeepSeek-V3 的基础模型与最新的开源基础模型进行比较,包括 DeepSeek-V2-Base(DeepSeek-AI, 2024c)(我们之前的版本),Qwen2.5 72B Base(Qwen, 2024b),和 LLaMA-3.1 405B Base(AI@Meta, 2024b)。我们使用我们的内部评估框架评估所有这些模型,并确保它们共享相同的评估设置。注意,由于过去几个月我们评估框架的变化,DeepSeek-V2-Base 的表现与我们之前报告的结果略有不同。总体而言,DeepSeek-V3-Base 全面超越了 DeepSeek-V2-Base 和 Qwen2.5 72B Base,并在多数基准测试中超过了 LLaMA-3.1 405B Base,基本成为最强的开源模型。
From a more detailed perspective, we compare DeepSeek-V3-Base with the other open-source base models individually.
(1)
Compared with DeepSeek-V2-Base, due to the improvements in our model architecture, the scale-up of the model size and training tokens, and the enhancement of data quality, DeepSeek-V3-Base achieves significantly better performance as expected.
(2)
Compared with Qwen2.5 72B Base, the state-of-the-art Chinese open-source model, with only half of the activated parameters, DeepSeek-V3-Base also demonstrates remarkable advantages, especially on English, multilingual, code, and math benchmarks.
As for Chinese benchmarks, except for CMMLU, a Chinese multi-subject multiple-choice task, DeepSeek-V3-Base also shows better performance than Qwen2.5 72B.
(3)
Compared with LLaMA-3.1 405B Base, the largest open-source model with 11 times the activated parameters, DeepSeek-V3-Base also exhibits much better performance on multilingual, code, and math benchmarks.
As for English and Chinese language benchmarks, DeepSeek-V3-Base shows competitive or better performance, and is especially good on BBH, MMLU-series, DROP, C-Eval, CMMLU, and CCPM.
从更详细的角度来看,我们将 DeepSeek-V3-Base 与其他开源基础模型逐一进行比较。(1) 与 DeepSeek-V2-Base 相比,由于模型架构的改进、模型规模和训练数据量的扩大、数据质量的提升,DeepSeek-V3-Base 取得了显著的性能提升。(2) 与 Qwen2.5 72B Base 相比,该模型是最先进的中文开源模型,DeepSeek-V3-Base 仅激活了一半的参数,但在英语、多语言、代码和数学基准测试中同样展现出显著优势。对于中文基准,除了 CMMLU,一个中文多学科多选任务,DeepSeek-V3-Base 在其他方面也表现优于 Qwen2.5 72B。(3) 与 LLaMA-3.1 405B Base 相比,这是一个激活参数是其 11 倍的最大开源模型,DeepSeek-V3-Base 在多语言、代码和数学基准测试中同样表现出更高的性能。对于英语和中文语言基准,DeepSeek-V3-Base 显示出具有竞争力甚至更好的表现,特别是在 BBH、MMLU 系列、DROP、C-Eval、CMMLU 和 CCPM 上有突出表现。
Due to our efficient architectures and comprehensive engineering optimizations, DeepSeek-V3 achieves extremely high training efficiency.
Under our training framework and infrastructures, training DeepSeek-V3 on each trillion tokens requires only 180K H800 GPU hours, which is much cheaper than training 72B or 405B dense models.
由于我们高效的架构和全面的工程优化,DeepSeek-V3 实现了极高的训练效率。在我们的训练框架和基础设施下,训练 DeepSeek-V3 在每万亿个令牌上的时间仅需 180,000 小时的 H800 GPU 时间,比训练 72B 或 405B 密集模型便宜得多。
Benchmark (Metric) 基准 (指标) | # Shots # 样本数 | Small MoE 小型 MoE | Small MoE 小型 MoE | Large MoE 大型 MoE | Large MoE 大型 MoE |
---|---|---|---|---|---|
Baseline 基线 | w/ MTP 带 MTP | Baseline 基线 | w/ MTP 带 MTP | ||
# Activated Params (Inference) # 激活参数(推理) |
- | 2.4B | 2.4B | 20.9B | 20.9B |
# Total Params (Inference) # 总参数(推理) |
- | 15.7B | 15.7B | 228.7B | 228.7B |
# Training Tokens # 训练令牌 | - | 1.33T | 1.33T | 540B | 540B |
Pile-test (BPB) Pile-test(BPB) | - | 0.729 | 0.729 |