DeepSeek-V3 Technical Report
TL;DR 精炼摘要
DeepSeek-V3 是一个具有6710亿参数的混合专家语言模型,通过采用多头潜在注意力和创新的无辅助损失负载均衡策略,实现了高效推理和经济实惠的训练。模型在14.8万亿多样化词元上进行了预训练,并通过有监督微调和强化学习提升性能,评估结果显示其表现超越其他开源模型,接近领先的闭源模型,同时训练稳定性高,成本低。
摘要
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.
思维导图
论文精读
中文精读
1. 论文基本信息
1.1. 标题
DeepSeek-V3 技术报告 (DeepSeek-V3 Technical Report)
1.2. 作者
DeepSeek-AI (research@deepseek.com)
1.3. 发表期刊/会议
该论文作为技术报告发布,通常这类报告不会立即在同行评审的期刊或会议上发表,而是作为预印本 (arXiv preprint) 供社区审阅和参考。DeepSeek-AI 在大型语言模型 (Large Language Model, LLM) 领域具有显著影响力,其发布的模型(如 DeepSeek 系列)在开源社区中表现突出。
1.4. 发表年份
2024年
1.5. 摘要
本文介绍了 DeepSeek-V3,一个强大的混合专家 (Mixture-of-Experts, MoE) 语言模型,总参数量为6710亿 (671B),每个词元 (token) 激活370亿 (37B) 参数。为实现高效推理和经济高效的训练,DeepSeek-V3 采用了在 DeepSeek-V2 中得到充分验证的多头潜在注意力 (Multi-head Latent Attention, MLA) 和 DeepSeekMoE 架构。此外,DeepSeek-V3 首创了一种无需辅助损失 (auxiliary-loss-free) 的负载均衡策略,并设定了多词元预测 (multi-token prediction) 训练目标以提升性能。该模型在14.8万亿多样化高质量词元上进行了预训练,随后通过有监督微调 (Supervised Fine-Tuning, SFT) 和强化学习 (Reinforcement Learning, RL) 阶段充分发挥其潜力。综合评估显示,DeepSeek-V3 优于其他开源模型,并达到与领先的闭源模型相媲美的性能。尽管性能卓越,DeepSeek-V3 的完整训练仅需2.788百万 (2.788M) H800 GPU 小时,并且训练过程极其稳定,未出现不可恢复的损失骤升或回滚。模型检查点 (model checkpoints) 已在 GitHub 上开源。
1.6. 原文链接
原文链接: https://arxiv.org/abs/2412.19437 PDF 链接: https://arxiv.org/pdf/2412.19437v2.pdf 发布状态: 预印本 (arXiv preprint)
2. 整体概括
2.1. 研究背景与动机
大型语言模型 (Large Language Models, LLMs) 近年来快速迭代和发展,逐步缩小了与通用人工智能 (Artificial General Intelligence, AGI) 之间的差距。除了闭源模型,开源模型也在努力追赶闭源模型的性能。为了进一步推动开源模型能力的边界,DeepSeek-AI 团队在模型规模上进行了扩展,并推出了 DeepSeek-V3。
本文试图解决的核心问题是如何在保持甚至超越现有最先进模型性能的同时,显著降低训练和推理成本,并提升训练稳定性。现有研究中,大型模型往往面临巨大的计算资源需求、复杂的训练过程(易出现损失震荡或收敛问题)以及推理效率低下等挑战。传统的混合专家 (MoE) 模型虽然能提升参数规模,但往往需要辅助损失 (auxiliary loss) 来平衡专家负载,这可能损害模型性能。此外,模型对未来词元的预测往往局限于下一个词元,可能未能充分利用训练信号。
这篇论文的切入点和创新思路在于:
- 经济高效性 (Cost-effectiveness): 通过继承和优化 DeepSeek-V2 的架构(多头潜在注意力 (MLA) 和 DeepSeekMoE),并在训练框架、低精度训练 (FP8) 和通信优化上进行创新,实现极高的训练效率和成本效益。
- 性能提升 (Performance Enhancement): 引入无需辅助损失的负载均衡策略 (auxiliary-loss-free load balancing) 和多词元预测 (Multi-Token Prediction, MTP) 训练目标,以进一步提升模型性能,同时解决传统 MoE 模型的痛点。
- 训练稳定性 (Training Stability): 强调并实现了整个训练过程的极高稳定性,避免了常见的损失骤升和回滚问题。
2.2. 核心贡献/主要发现
DeepSeek-V3 的核心贡献和主要发现可以总结为以下几点:
2.2.1. 架构创新:负载均衡策略和训练目标
- 无需辅助损失的负载均衡策略 (Auxiliary-Loss-Free Load Balancing): 在 DeepSeek-V2 高效架构的基础上,首创了一种无需辅助损失的负载均衡策略,旨在最小化因促进负载均衡而带来的性能下降。这一策略通过动态调整专家偏置项 (bias term) 来实现专家负载的平衡。
- 多词元预测 (Multi-Token Prediction, MTP) 训练目标: 引入并验证了多词元预测目标对模型性能的益处,它能稠密化训练信号,提高数据效率,并使模型能预先规划其表征以更好地预测未来词元。该机制在推理时也可用于推测解码 (speculative decoding) 加速。
2.2.2. 预训练:极致训练效率
- FP8 混合精度训练框架 (FP8 Mixed Precision Training Framework): 设计并首次在大规模模型上验证了 FP8 混合精度训练的可行性和有效性,显著加速训练并减少 GPU 内存使用。
- 算法、框架和硬件协同设计 (Co-design of Algorithms, Frameworks, and Hardware): 通过 DualPipe 算法、高效的跨节点 (cross-node) 全局通信 (all-to-all communication) 内核以及内存优化,克服了通信瓶颈,实现了近乎完全的计算-通信重叠 (computation-communication overlap),大幅提高了训练效率,降低了成本。
- 经济高效的大规模预训练: 在14.8万亿词元上完成了 DeepSeek-V3 的预训练,总耗时仅为2.664M H800 GPU 小时,成本约为5.328M 美元,生产出目前最强的开源基础模型。预训练后的后续阶段(上下文扩展和后训练)仅需额外0.1M GPU 小时。
2.2.3. 后训练:从 DeepSeek-R1 蒸馏知识
- 推理能力蒸馏 (Reasoning Capability Distillation): 引入了一种创新方法,将 DeepSeek-R1 系列模型中的长思维链 (long Chain-of-Thought, CoT) 推理能力蒸馏到 DeepSeek-V3 中。该流程优雅地整合了 R1 的验证和反思模式,显著提升了 DeepSeek-V3 的推理性能,同时保持了输出风格和长度的控制。
2.2.4. 核心评估结果总结
- 知识 (Knowledge): 在 MMLU、MMLU-Pro 和 GPQA 等教育基准测试中超越所有其他开源模型,性能与 GPT-4o 和 Claude-3.5-Sonnet 等领先闭源模型相当。在事实性基准测试中,中文事实性知识 (Chinese SimpleQA) 表现优于 GPT-4o 和 Claude-3.5-Sonnet。
- 代码、数学和推理 (Code, Math, and Reasoning): 在数学相关基准测试中,实现了非长 CoT 模型的最先进性能,甚至在 MATH-500 等特定基准上超越了 o1-preview。在编码任务上,LiveCodeBench 等编程竞赛基准测试中表现最佳。
- 开放式评估 (Open-Ended Evaluation): 在 Arena-Hard 和 AlpacaEval 2.0 等开放式评估中,DeepSeek-V3 也表现出与领先闭源模型相当或更优的性能,显著缩小了开源模型与闭源模型之间的差距。
- 生成式奖励模型 (Generative Reward Model): DeepSeek-V3 作为生成式奖励模型在 RewardBench 上表现出色,可与 GPT-4o 和 Claude-3.5 相媲美。
3. 预备知识与相关工作
3.1. 基础概念
3.1.1. 大型语言模型 (Large Language Models, LLMs)
LLMs 是指参数量巨大(通常是数十亿到数万亿)的深度学习模型,它们在海量文本数据上进行训练,能够理解、生成和处理人类语言。这些模型通常基于 Transformer 架构,通过预测序列中的下一个词元 (token) 来学习语言的统计规律和语义信息。
3.1.2. Transformer 架构
Transformer (Vaswani et al., 2017) 是一种序列到序列 (sequence-to-sequence) 模型架构,完全依赖于自注意力 (self-attention) 机制来处理输入序列。它摒弃了循环神经网络 (Recurrent Neural Network, RNN) 和卷积神经网络 (Convolutional Neural Network, CNN) 等传统序列模型。Transformer 的核心优势在于其并行处理能力和捕捉长距离依赖 (long-range dependencies) 的能力。
3.1.3. 自注意力 (Self-Attention) 机制
自注意力机制是 Transformer 的核心组成部分,它允许模型在处理序列中的某个词元时,同时考虑到序列中所有其他词元的重要性。 给定输入序列的查询 (Query, )、键 (Key, ) 和值 (Value, ) 矩阵,自注意力机制的计算公式如下: 符号解释:
- : 查询矩阵 (Query matrix),维度为 ,其中 是序列长度, 是键的维度。
- : 键矩阵 (Key matrix),维度为 。
- : 值矩阵 (Value matrix),维度为 ,其中 是值的维度。
- : 查询和键的矩阵乘积,用于计算注意力分数。
- : 缩放因子,用于防止点积过大导致 softmax 函数进入梯度饱和区。
- : Softmax 函数,将注意力分数转换为概率分布。
- : 注意力输出,是 矩阵的加权和。
3.1.4. 多头注意力 (Multi-Head Attention, MHA)
多头注意力机制 (MHA) 是自注意力机制的扩展。它并行地运行多个自注意力头,每个头学习不同的 Q, K, V 投影矩阵,从而捕获输入序列的不同方面或关系。然后将所有头的输出拼接 (concatenate) 起来并通过一个线性层进行投影,得到最终的输出。这使得模型能够从不同的“表征子空间”中学习信息。
3.1.5. 混合专家 (Mixture-of-Experts, MoE)
MoE 是一种稀疏激活模型,它包含多个专家网络 (expert networks),每个专家都是一个小型的前馈神经网络 (Feed-Forward Network, FFN)。对于每个输入词元,一个门控网络 (gating network) 或路由器 (router) 会选择性地激活一个或几个专家来处理该词元。这允许模型拥有大量的总参数,但在推理时只激活一小部分参数,从而在保持计算效率的同时扩大模型容量。
3.1.6. 有监督微调 (Supervised Fine-Tuning, SFT)
SFT 是指在预训练模型的基础上,使用带有明确输入-输出对的标注数据(例如,指令-响应对)对模型进行进一步训练的过程。其目标是使模型更好地遵循指令,生成符合人类偏好的高质量输出。
3.1.7. 强化学习 (Reinforcement Learning, RL)
RL 是一种机器学习范式,智能体 (agent) 通过与环境的交互学习最优行为策略,以最大化累积奖励。在 LLMs 的训练中,RL 通常用于对齐 (alignment),即根据人类偏好或某种奖励函数调整模型的行为。常见的 RL 技术包括使用奖励模型 (Reward Model, RM) 和近端策略优化 (Proximal Policy Optimization, PPO) 等。
3.1.8. FP8 混合精度训练 (FP8 Mixed Precision Training)
FP8 混合精度训练是指在训练深度学习模型时,将部分或大部分计算和存储使用 8 位浮点数 (FP8) 格式,而将一些关键操作或模型参数保留在更高精度(如 BF16 或 FP32)格式的技术。其目的是在保证模型性能的前提下,显著减少内存占用、提高计算速度和降低能耗。
3.1.9. 推测解码 (Speculative Decoding)
推测解码是一种加速大型语言模型推理的技术。它使用一个小型、快速的草稿模型 (draft model) 提前生成多个预测词元,然后由大型、准确的目标模型对这些预测进行并行验证。如果草稿模型的预测被目标模型接受,则可以一次性处理多个词元,从而提高生成速度。
3.2. 前人工作
3.2.1. DeepSeek 系列模型
- DeepSeek-V2 (DeepSeek-AI, 2024c): DeepSeek-V3 的直接前身,首次引入了多头潜在注意力 (MLA) 和 DeepSeekMoE 架构。MLA 通过低秩压缩降低了 KV 缓存,DeepSeekMoE 则通过共享专家 (shared experts) 和更细粒度的专家粒度实现经济高效的训练。DeepSeek-V3 继承并改进了这些核心架构。
- DeepSeek-R1 系列模型: DeepSeek-R1 是专注于推理能力的模型系列,DeepSeek-V3 在后训练阶段从 DeepSeek-R1 蒸馏了长思维链 (long Chain-of-Thought, CoT) 推理能力。
3.2.2. MoE 模型与负载均衡
- GShard (Lepikhin et al., 2021) 和 Switch Transformers (Fedus et al., 2021): 早期的 MoE 架构,通常依赖辅助损失 (auxiliary loss) 来防止专家负载不平衡 (routing collapse),即一些专家被过度使用而另一些专家未被充分使用。
- 辅助损失的局限性: 传统辅助损失在平衡负载的同时,可能引入不必要的梯度,从而影响模型性能 (Wang et al., 2024a)。DeepSeek-V3 的无需辅助损失策略旨在解决这一问题。
3.2.3. 低精度训练
- FP8 格式: 随着硬件发展 (Lu0 et al., 2024; Micikevicius et al., 2022; Rouhani et al., 2023a),FP8 等低精度格式被提出用于深度学习训练,以提高效率 (Dettmers et al., 2022; Kalamkar et al., 2019; Narang et al., 2017; Peng et al., 2023b)。然而,在大规模 LLM 预训练中验证 FP8 的有效性仍面临挑战,如激活值、权重和梯度中的异常值 (outliers) 问题 (Fishman et al., 2024; He et al.; Sun et al., 2024)。
3.2.4. 多词元预测 (Multi-Token Prediction, MTP)
- Gloeckle et al. (2024): 探索了多词元预测作为训练目标,DeepSeek-V3 受其启发,但采用了不同的实现方式,即顺序预测并保持完整的因果链。
- EAGLE (Li et al., 2024b): 类似地维护预测的因果链,但其主要目标是推测解码 (speculative decoding),而非训练性能提升。DeepSeek-V3 将 MTP 用于训练,同时也可用于推理加速。
3.3. 技术演进与差异化分析
3.3.1. 技术演进
从 Dense 模型到 MoE 模型:LLM 的发展趋势之一是扩大模型规模以提升性能。MoE 架构允许模型在总参数量巨大的情况下,每次只激活一小部分参数,从而在计算效率和模型容量之间取得平衡。
从标准注意力到 MLA:为了解决长序列推理中 KV 缓存内存占用大的问题,MLA 通过低秩压缩来减少 KV 缓存,是注意力机制的一种优化。
从传统 MoE 负载均衡到无需辅助损失:传统的 MoE 依赖辅助损失来平衡专家负载,但这可能牺牲模型性能。DeepSeek-V3 提出的无需辅助损失策略是负载均衡技术的一个重要进步。
从单词元预测到多词元预测:传统的语言模型训练目标是预测下一个词元。MTP 扩展了预测范围,旨在提供更密集的训练信号和更强的性能。
3.3.2. 差异化分析
- 与 DeepSeek-V2 的区别: DeepSeek-V3 在 DeepSeek-V2 的 MLA 和 DeepSeekMoE 架构基础上,引入了无需辅助损失的负载均衡策略和多词元预测训练目标,并进一步优化了训练框架和支持 FP8 训练,显著提升了模型规模、训练效率和最终性能。
- 与传统 MoE 的区别: DeepSeek-V3 的 DeepSeekMoE 架构使用更细粒度的专家和共享专家,并且其无需辅助损失的负载均衡策略解决了传统 MoE 中辅助损失可能损害性能的问题,实现了更好的负载平衡和模型性能之间的权衡。
- 与 Dense 模型的区别: DeepSeek-V3 作为一个 MoE 模型,以更低的激活参数实现了与 Dense 模型(如 LLaMA-3.1 405B)相媲美甚至更优的性能,证明了 MoE 在成本效益和性能上的优势。
- FP8 训练的独特性: 首次在大规模模型上验证 FP8 训练,通过细粒度量化和高精度累加等策略克服了 FP8 训练中常见的异常值和精度问题,使其在大规模模型训练中具备实用性。
4. 方法论
DeepSeek-V3 的方法论主要围绕其核心架构、训练目标以及底层的基础设施优化展开,旨在实现高性能、高效率和低成本。
4.1. 基本架构 (Basic Architecture)
DeepSeek-V3 的基本架构仍然是 Transformer (Vaswani et al., 2017) 框架。为了实现高效推理和经济训练,DeepSeek-V3 沿用了 DeepSeek-V2 中经过充分验证的多头潜在注意力 (Multi-head Latent Attention, MLA) 和 DeepSeekMoE 架构。与 DeepSeek-V2 略有不同的是,DeepSeek-V3 引入了无需辅助损失 (auxiliary-loss-free) 的策略来减轻为确保负载均衡而导致的性能下降。
下图(原文 Figure 2)展示了 DeepSeek-V3 的基本架构:
该图像是DeepSeek-V3的基本架构示意图。图中展示了DeepSeekMoE和多头潜在注意力(MLA)的结构,强调了在高效推理和经济训练中的应用。
Figure 2 | Illustration of the basic architecture of DeepSeek-V3. Following DeepSeek-V2, we adopt MLA and DeepSeekMoE for efficient inference and economical training.
4.1.1. 多头潜在注意力 (Multi-Head Latent Attention, MLA)
MLA 是 DeepSeek-V3 用来优化注意力机制的架构,其核心思想是对注意力键 (Key) 和值 (Value) 进行低秩联合压缩,以减少推理时的键值缓存 (Key-Value, KV cache)。同时,对查询 (Query) 也进行低秩压缩以减少训练时的激活内存。
键和值的压缩: 设 为嵌入维度, 为注意力头数, 为每个头的维度, 为给定注意力层中第 个词元的注意力输入。KV 压缩的计算方式如下: \begin{array}{c} { \displaystyle \left[ { \bf c } _ { t } ^ { K V } \right] = W ^ { D K V } { \bf h } _ { t } , } } \\ { \displaystyle [ { \bf k } _ { t , 1 } ^ { C } ; { \bf k } _ { t , 2 } ^ { C } ; . . . ; { \bf k } _ { t , n _ { h } } ^ { C } ] = { \bf k } _ { t } ^ { C } = W ^ { U K } { \bf c } _ { t } ^ { K V } , } } \\ { \displaystyle \left[ { \bf k } _ { t } ^ { R } \right] = \mathrm { R o P E } ( W ^ { K R } { \bf h } _ { t } ) , } } \\ { \displaystyle { \bf k } _ { t , i } = [ { \bf k } _ { t , i } ^ { C } ; { \bf k } _ { t } ^ { R } ] , } } \\ { \displaystyle [ { \bf v } _ { t , 1 } ^ { C } ; { \bf v } _ { t , 2 } ^ { C } ; . . . ; { \bf v } _ { t , n _ { h } } ^ { C } ] = { \bf v } _ { t } ^ { C } = W ^ { U V } { \bf c } _ { t } ^ { K V } , } } \end{array} 符号解释:
- : 压缩后的键值潜在向量 (compressed latent vector for keys and values)。
- : KV 压缩维度,远小于 。
- : 下投影矩阵 (down-projection matrix),用于生成 。
- : 分别是键和值的上投影矩阵 (up-projection matrices)。
- : 压缩后上投影得到的键和值的分量。
- : 用于生成解耦键 (decoupled key) 的矩阵,该解耦键携带着旋转位置嵌入 (Rotary Positional Embedding, RoPE) (Su et al., 2024)。
- : 应用 RoPE 矩阵的操作。
- : 包含 RoPE 的解耦键。
- : 第 个头的最终键,由压缩键分量和解耦键拼接而成。
- : 表示向量拼接操作。
- 推理时缓存: 只有 和 需要在生成过程中缓存,这显著减少了 KV 缓存大小。
查询的压缩: 为了减少训练时的激活内存,注意力查询 (query) 也进行了低秩压缩: \begin{array}{c} { \pmb { \mathrm { c } } _ { t } ^ { Q } = W ^ { D Q } { \bf h } _ { t } , } } \\ { \ \left[ { \pmb { \mathrm { q } } } _ { t , 1 } ^ { C } ; { \pmb { \mathrm { q } } } _ { t , 2 } ^ { C } ; . . . ; { \pmb { \mathrm { q } } } _ { t , n _ { h } } ^ { C } \right] = { \pmb { \mathrm { q } } } _ { t } ^ { C } = W ^ { U Q } { \pmb { \mathrm { c } } } _ { t } ^ { Q } , } } \\ { \ \left[ { \pmb { \mathrm { q } } } _ { t , 1 } ^ { R } ; { \pmb { \mathrm { q } } } _ { t , 2 } ^ { R } ; . . . ; { \pmb { \mathrm { q } } } _ { t , n _ { h } } ^ { R } \right] = { \pmb { \mathrm { q } } } _ { t } ^ { R } = \mathrm { R o P E } ( W ^ { Q R } { \pmb { \mathrm { c } } } _ { t } ^ { Q } ) , } } \\ { \ \ \pmb { \mathrm { q } } } _ { t , i } = [ { \pmb { \mathrm { q } } } _ { t , i } ^ { C } ; { \pmb { \mathrm { q } } } _ { t , i } ^ { R } ] , } \end{array} 符号解释:
- : 压缩后的查询潜在向量 (compressed latent vector for queries)。
- : 查询压缩维度,远小于 。
- : 分别是查询的下投影和上投影矩阵。
- : 用于生成携带有 RoPE 的解耦查询的矩阵。
- : 第 个头的最终查询,由压缩查询分量和解耦查询拼接而成。
最终注意力输出: 最终,注意力查询 ()、键 () 和值 () 结合起来产生最终的注意力输出 : 符号解释:
- : 第 个头的注意力输出。
- : 缩放因子。
- : 最终的注意力输出。
- : 输出投影矩阵。
4.1.2. DeepSeekMoE 与 无辅助损失负载均衡 (Auxiliary-Loss-Free Load Balancing)
DeepSeekMoE 基本架构: 对于前馈网络 (FFN),DeepSeek-V3 采用了 DeepSeekMoE 架构 (Dai et al., 2024)。与传统的 MoE 架构(如 GShard (Lepikhin et al., 2021))相比,DeepSeekMoE 使用更细粒度的专家,并将一些专家隔离为共享专家 (shared ones)。 设 为第 个词元的 FFN 输入,FFN 输出 的计算方式如下: \begin{array}{l} { \displaystyle { \bf h } _ { t } ^ { \prime } = { \bf u } _ { t } + \sum _ { i = 1 } ^ { N _ { s } } \mathrm { F F N } _ { i } ^ { ( s ) } \left( { \bf u } _ { t } \right) + \sum _ { i = 1 } ^ { N _ { r } } g _ { i , t } \mathrm { F F N } _ { i } ^ { ( r ) } \left( { \bf u } _ { t } \right) } , } \\ { \displaystyle g _ { i , t } = \frac { g _ { i , t } ^ { \prime } } { \sum _ { j = 1 } ^ { N _ { r } } g _ { j , t } ^ { \prime } } \mathrm { , } } } \\ { \displaystyle g _ { i , t } ^ { \prime } = \left\{ { { s } _ { i , t } } , \quad { s } _ { i , t } \in \mathrm { T o p k } ( \{ { s } _ { j , t } \} { 1 } \leqslant j \leqslant N _ { r } \Big \} , K _ { r } ) , \right. } } \\ { \displaystyle \left. { { s } _ { i , t } } = { \mathrm { S i g m o i d } \left( { \bf u } _ { t } ^ { \prime } { \bf e } _ { i } \right) } , \right. } \end{array} 符号解释:
- : 共享专家 (shared experts) 的数量。
- : 路由专家 (routed experts) 的数量。
- : 第 个共享专家。
- : 第 个路由专家。
- : 激活的路由专家数量。
- : 第 个专家的门控值 (gating value)。
- : 词元与专家之间的亲和度 (token-to-expert affinity)。
- : 第 个路由专家的质心向量 (centroid vector)。
- : 从一组分数中选择 个最高分数的集合。
- : Sigmoid 函数,用于计算亲和度分数。
- : 门控网络输入,通常是 的线性投影。 与 DeepSeek-V2 略有不同,DeepSeek-V3 使用 Sigmoid 函数计算亲和度分数,并在所有选定亲和度分数之间进行归一化以生成门控值。
无辅助损失负载均衡: 为了解决 MoE 模型中专家负载不平衡问题(导致路由崩溃和计算效率降低),传统方法通常依赖辅助损失 (Fedus et al., 2021; Lepikhin et al., 2021)。然而,过大的辅助损失会损害模型性能 (Wang et al., 2024a)。DeepSeek-V3 首创了一种无需辅助损失的负载均衡策略 (Wang et al., 2024a) 来确保负载平衡,以在负载平衡和模型性能之间取得更好的权衡。 具体来说,为每个专家引入了一个偏置项 ,并将其添加到相应的亲和度分数 中以确定 Top-K 路由: 符号解释:
- : 第 个专家的偏置项。
- : 添加偏置项后的亲和度分数,用于决定路由选择。
- : 用于计算门控值的中间分数。 需要注意的是,偏置项 仅用于路由决策。与 FFN 输出相乘的门控值 仍然是从原始亲和度分数 派生而来。 在训练期间,模型会持续监控每个训练步骤中批次 (batch) 的专家负载。在每个步骤结束时,如果专家过载,其偏置项 将减少 ;如果专家欠载,则增加 。其中 是一个超参数,称为偏置更新速度 (bias update speed)。通过这种动态调整,DeepSeek-V3 在训练期间保持了平衡的专家负载,并比纯粹通过辅助损失来平衡负载的模型取得了更好的性能。
补充序列级辅助损失 (Complementary Sequence-Wise Auxiliary Loss): 尽管 DeepSeek-V3 主要依靠无需辅助损失的策略进行负载均衡,但为了防止任何单个序列内部出现极端不平衡,模型也采用了补充的序列级平衡损失: 符号解释:
- : 序列级平衡损失。
- : 第 个专家被选中的频率。
- : 第 个专家门控值的平均值。
- : 指示函数 (indicator function)。
- : 序列中的词元数量。
- : 平衡因子 (balance factor),超参数,DeepSeek-V3 中被设置为一个极小的值。 该序列级平衡损失鼓励每个序列中的专家负载保持平衡。
节点受限路由 (Node-Limited Routing): 与 DeepSeek-V2 中使用的设备受限路由类似,DeepSeek-V3 也使用了受限路由机制来限制训练期间的通信成本。简而言之,它确保每个词元最多被发送到 个节点,这些节点是根据每个节点上分布的专家中最高 个亲和度分数之和来选择的。在此约束下,MoE 训练框架可以实现近乎完全的计算-通信重叠。
不丢弃词元 (No Token-Dropping): 由于有效的负载均衡策略,DeepSeek-V3 在训练过程中保持了良好的词元利用率。此外,团队还实施了特定的部署策略来确保推理时的负载均衡,因此 DeepSeek-V3 在推理时也不会丢弃任何词元。
4.2. 多词元预测 (Multi-Token Prediction, MTP)
受 Gloeckle et al. (2024) 的启发,DeepSeek-V3 引入并设定了一个多词元预测 (MTP) 目标,该目标将预测范围扩展到每个位置的多个未来词元。一方面,MTP 目标能够稠密化训练信号,从而可能提高数据效率。另一方面,MTP 可能使模型能够预先规划其表征,以便更好地预测未来的词元。
下图(原文 Figure 3)展示了 MTP 的实现方式:
该图像是示意图,展示了多token预测(MTP)实现的结构。图中描述了主模型与两个MTP模块的关系,以及输入tokens和目标tokens的交互关系,包括交叉熵损失的计算流程。
Figure 3 | Illustration of our Multi-Token Prediction (MTP) implementation. We keep the complete causal chain for the prediction of each token at each depth.
MTP 模块:
DeepSeek-V3 的 MTP 实现使用了 个顺序模块来预测 个额外的词元。第 个 MTP 模块由一个共享嵌入层 、一个共享输出头 、一个 Transformer 块 和一个投影矩阵 组成。
对于第 个输入词元 ,在第 个预测深度,首先将第 个词元在第 (k-1) 个深度上的表示 与第 个词元 的嵌入 通过线性投影结合:
符号解释:
- : 结合后的表示。
- : 第 个 MTP 模块的投影矩阵。
- : 表示拼接操作。
- : RMS 归一化操作。
- : 第 个词元的嵌入。 特别地,当 时, 指的是主模型提供的表示。每个 MTP 模块的嵌入层与主模型共享。 结合后的 作为第 个深度 Transformer 块的输入,生成当前深度的输出表示 : 符号解释:
- : 输入序列长度。
- : 第 个 MTP 模块的 Transformer 块。 最后,以 为输入,共享输出头将产生 ,其中 是词汇表大小: 符号解释:
- : 共享输出头,将表示线性映射到 logits,然后应用 Softmax 函数计算预测概率。 MTP 模块的输出头也与主模型共享。这种保持预测因果链的原则类似于 EAGLE (Li et al., 2024b),但 EAGLE 的主要目标是推测解码,而 DeepSeek-V3 则利用 MTP 来改进训练。
MTP 损失: MTP 损失 被定义为第 个 MTP 模块的交叉熵损失: 符号解释:
- : 交叉熵损失函数。
- : 第 个 MTP 模块对第 个位置真实词元 的预测概率。 最终,DeepSeek-V3 的总 MTP 损失 是所有深度 MTP 损失的平均值,并乘以一个加权因子 : 符号解释:
- : MTP 损失的权重因子。
- : 多词元预测的深度。
MTP 在推理中的应用: MTP 策略主要旨在提高主模型的性能,因此在推理时,可以直接丢弃 MTP 模块,主模型可以独立正常运行。此外,这些 MTP 模块也可以用于推测解码 (speculative decoding),以进一步提高生成延迟。
4.3. 基础设施 (Infrastructures)
4.3.1. 计算集群 (Compute Clusters)
DeepSeek-V3 在一个配备 2048 块 NVIDIA H800 GPU 的集群上进行训练。每个 H800 节点包含 8 块 GPU,通过 NVLink 和 NVSwitch 在节点内部互连。不同节点之间通过 InfiniBand (IB) 互连,以实现通信。
4.3.2. 训练框架 (Training Framework)
DeepSeek-V3 的训练由 HAI-LLM 框架支持,这是一个由 DeepSeek 工程师从头构建的高效轻量级训练框架。整体上,DeepSeek-V3 采用了 16 路流水线并行 (Pipeline Parallelism, PP) (Qi et al., 2023a)、跨 8 个节点的 64 路专家并行 (Expert Parallelism, EP) (Lepikhin et al., 2021) 以及 ZeRO-1 数据并行 (Data Parallelism, DP) (Rajbhandari et al., 2020)。
为了促进 DeepSeek-V3 的高效训练,团队实施了精心的工程优化:
- DualPipe 算法: 设计了 DualPipe 算法,用于高效的流水线并行,减少了流水线气泡 (pipeline bubbles),并通过计算-通信重叠 (computation-communication overlap) 隐藏了训练过程中大部分通信。
- 高效跨节点 All-to-All 通信内核: 开发了高效的跨节点 all-to-all 通信内核,充分利用 IB 和 NVLink 带宽,并节省了专用 Streaming Multiprocessors (SMs) 用于通信。
- 极致内存节省: 精心优化了训练期间的内存占用,使得 DeepSeek-V3 可以在不使用昂贵的张量并行 (Tensor Parallelism, TP) 的情况下进行训练。
DualPipe 与计算-通信重叠: 对于 DeepSeek-V3,跨节点专家并行引入的通信开销导致计算与通信比率约为 1:1,效率低下。DualPipe 算法通过重叠前向和后向计算-通信阶段来解决这一挑战。 DualPipe 的关键思想是在一对单独的前向和后向块中重叠计算和通信。具体来说,每个块被分为四个组件:注意力 (attention)、all-to-all 调度 (all-to-all dispatch)、MLP 和 all-to-all 组合 (all-to-all combine)。特别是,对于后向块,注意力 (attention) 和 MLP 被进一步分为两部分:输入的后向 (backward for input) 和权重的后向 (backward for weights),类似于 ZeroBubble (Qi et al., 2023b)。此外,还有一个 PP 通信组件。
下图(原文 Figure 4)展示了 DualPipe 中一对前向和后向块的重叠策略:
该图像是图示,展示了前向和后向计算块的重叠策略。图中橙色表示前向计算,绿色表示输入的后向计算,蓝色表示权重的后向计算,紫色表示PP通信,红色表示障碍。这些计算和通信操作在时间上被有效重叠。
Figure 4 | Overlapping strategy for a pair of individual forward and backward chunks (the boundaries of the transformer blocks are not aligned). Orange denotes forward, green denotes "backward for input", blue denotes "backward for weights", purple denotes PP communication, and red denotes barriers. Both all-to-all and PP communication can be fully hidden.
这种重叠策略确保 all-to-all 和 PP 通信在执行期间可以完全隐藏。 下图(原文 Figure 5)展示了 DualPipe 的完整调度:
该图像是图表,展示了8个PP排名和20个微批次在两个方向上的DualPipe调度。每个设备的前向和反向计算过程以不同颜色表示,图中还突出显示了重叠的前向与反向计算。此图清晰展示了时间进度中的并行操作。
Figure 5 | Example DualPipe scheduling for 8 PP ranks and 20 micro-batches in two directions. The micro-batches in the reverse direction are symmetric to those in the forward direction, so we omit their batch ID for illustration simplicity. Two cells enclosed by a shared black border have mutually overlapped computation and communication.
DualPipe 采用双向流水线调度 (bidirectional pipeline scheduling),同时从流水线的两端馈送微批次 (micro-batches),大部分通信可以完全重叠。这种重叠还确保了,即使模型进一步扩展,只要保持恒定的计算-通信比,仍然可以跨节点使用细粒度专家,同时实现近乎零的 all-to-all 通信开销。 即使在通信负担不重的更一般场景中,DualPipe 仍然具有效率优势。下表(原文 Table 2)总结了不同 PP 方法的流水线气泡 (pipeline bubbles) 和内存使用情况:
| Method | Bubble | Parameter | Activation |
|---|---|---|---|
| 1F1B | (PP - 1)(F + B) | 1x | PP |
| ZB1P | (PP −1)(F+ B−2W) | 1x | PP |
| DualPipe (Ours) | (P 2} 1)(F&B +B 3W) | 2x | PP +1 |
Table 2 | Comparison of pipeline bubbles and memory usage across different pipeline parallel methods. denotes the execution time of a forward chunk, denotes the execution time of a full backward chunk, W denotes the execution time of a "backward for weights" chunk, and F&B denotes the execution time of two mutually overlapped forward and backward chunks.
符号解释:
PP: 流水线并行 (Pipeline Parallelism) 的秩数 (ranks)。- : 前向块的执行时间。
- : 完整后向块的执行时间。
- : “权重的后向”块的执行时间。
F&B: 两个相互重叠的前向和后向块的执行时间。 DualPipe 显著减少了流水线气泡,同时只将峰值激活内存增加了 倍。
高效实现跨节点 All-to-All 通信: 为了确保 DualPipe 足够的计算性能,团队定制了高效的跨节点 all-to-all 通信内核(包括调度和组合),以节省专用于通信的 SMs 数量。内核的实现与 MoE 门控算法和集群网络拓扑协同设计。集群中,跨节点 GPU 通过 IB 完全互连,节点内通信通过 NVLink 处理。NVLink 带宽为 160 GB/s,约为 IB (50 GB/s) 的 3.2 倍。 为了有效利用 IB 和 NVLink 的不同带宽,每个词元最多只被调度到 4 个节点,从而减少 IB 流量。对于每个词元,一旦其路由决策确定,它将首先通过 IB 传输到目标节点上具有相同节点内索引的 GPU。到达目标节点后,将努力确保它通过 NVLink 即时转发到托管其目标专家的特定 GPU,而不会被后续到达的词元阻塞。这样,IB 和 NVLink 之间的通信完全重叠。 在这种通信策略下,仅 20 个 SMs 就足以充分利用 IB 和 NVLink 的带宽。
极致内存节省与最小开销: 为减少训练期间的内存占用,DeepSeek-V3 采用了以下技术:
- RMSNorm 和 MLA 上投影的重计算 (Recomputation): 在反向传播期间重新计算所有 RMSNorm 操作和 MLA 上投影,从而无需持久存储它们的输出激活,显著减少了激活内存需求。
- CPU 中的指数移动平均 (Exponential Moving Average, EMA): EMA 参数存储在 CPU 内存中,并在每个训练步骤后异步更新,避免了额外的内存或时间开销。
- MTP 的共享嵌入和输出头 (Shared Embedding and Output Head): DualPipe 策略将模型的最浅层(包括嵌入层)和最深层(包括输出头)部署在同一 PP 秩上,物理共享参数和梯度,进一步提高了内存效率。
4.3.3. FP8 训练 (FP8 Training)
受低精度训练最新进展的启发 (Dettmers et al., 2022; Noune et al., 2022; Peng et al., 2023b),DeepSeek-V3 提出了一种利用 FP8 数据格式进行训练的细粒度混合精度框架。
混合精度框架: 该框架基于广泛采用的低精度训练技术 (Kalamkar et al., 2019; Narang et al., 2017)。大多数计算密集型操作在 FP8 中进行,而少数关键操作保留其原始数据格式,以平衡训练效率和数值稳定性。 下图(原文 Figure 6)展示了混合精度框架的整体结构:
该图像是示意图,展示了混合精度框架与FP8数据格式的整体结构。图中包含了输入、前向传播(Fprop)、反向传播(Dgrad)等多个模块,以及权重和梯度的处理过程,指示了不同数据格式之间的流动关系。各个计算节点通过FP16和FP32进行转换,以优化模型训练的效率。
Figure 6 | The overall mixed precision framework with FP8 data format. For clarification, only the Linear operator is illustrated.
核心计算:
- GEMM 操作: 大多数核心计算内核,即通用矩阵乘法 (General Matrix Multiplication, GEMM) 操作,都在 FP8 精度下执行。这些 GEMM 操作接受 FP8 张量作为输入,并以 BF16 或 FP32 格式输出。
- FP8 Wgrad: FP8 Wgrad GEMM 允许激活以 FP8 格式存储用于反向传播,显著降低内存消耗。
高精度保留: 某些操作由于对低精度计算敏感,或开销较小,仍需更高精度:
- 模块: 嵌入模块、输出头、MoE 门控模块、归一化操作符和注意力操作符。
- 存储: 主权重 (master weights)、权重梯度 (weight gradients) 和优化器状态 (optimizer states) 以更高精度存储,以确保训练期间的数值稳定性。
量化和乘法改进精度: 在混合精度 FP8 框架基础上,DeepSeek-V3 引入了几种策略来提高低精度训练精度,重点关注量化方法和乘法过程。 下图(原文 Figure 7)展示了细粒度量化方法和高精度累加策略:
该图像是图表,展示了细粒度量化方法以缓解特征异常导致的量化误差,以及提升 FP8 GEMM 精度的方法。图中包括了输入、权重和输出的表示,以及通过 元素的 MMA 来提高积累精度的策略。
Figure 7 | (a) We propose a fine-grained quantization method to mitigate quantization errors caused by feature outliers; for illustration simplicity, only Fprop is illustrated. (b) In conjunction with our quantization strategy, we improve the FP8 GEMM precision by promoting to CUDA Cores at an interval of elements MMA for the high-precision accumulation.
细粒度量化 (Fine-Grained Quantization): 为了解决 FP8 格式动态范围有限导致的溢出和下溢问题,本文提出了一种细粒度量化方法:
- 激活 (Activations): 以 1x128 瓦片 (tile) 为基础(即每个词元每 128 个通道)进行分组和缩放。
- 权重 (Weights): 以 128x128 块 (block) 为基础(即每 128 个输入通道每 128 个输出通道)进行分组和缩放。 这种方法通过根据较小的元素组调整比例,更好地适应异常值。关键修改是在 GEMM 操作的内部维度上引入每组缩放因子 (per-group scaling factors)。
提高累积精度 (Increasing Accumulation Precision): 为了解决 FP8 GEMM 在 NVIDIA H800 GPU 上累积精度有限(约 14 位)的问题,DeepSeek-V3 采用了将精度提升到 CUDA Cores 的策略 (Thakkar et al., 2023):
- 在矩阵乘累加 (Matrix Multiply-Accumulate, MMA) 执行期间,中间结果使用有限位宽累积。
- 当达到 个间隔时,这些部分结果被复制到 CUDA Cores 上的 FP32 寄存器中,在那里执行全精度 FP32 累积。
- 设置 元素,相当于 4 个 WGMMA (Warpgroup-level Matrix Multiply-Accumulate),代表了在不引入显著开销的情况下显著提高精度的最小累积间隔。
尾数优先于指数 (Mantissa over Exponents): 与之前工作 (NVIDIA, 2024b; Peng et al., 2023b; Sun et al., 2019b) 采用的混合 FP8 格式(Fprop 中使用 E4M3,Dgrad 和 Wgrad 中使用 E5M2)不同,DeepSeek-V3 在所有张量上均采用 E4M3 格式以获得更高精度。这得益于其细粒度量化策略。
在线量化 (Online Quantization): 为了确保准确的缩放并简化框架,DeepSeek-V3 在线计算每个 激活瓦片或 权重块的最大绝对值,并基于此导出缩放因子,然后将激活或权重在线量化为 FP8 格式。
低精度存储和通信 (Low-Precision Storage and Communication): 结合 FP8 训练框架,DeepSeek-V3 通过将缓存的激活和优化器状态压缩为低精度格式,进一步减少了内存消耗和通信开销。
- 低精度优化器状态: 使用 BF16 数据格式跟踪 AdamW (Loshchilov and Hutter, 2017) 优化器中的一阶和二阶矩,而主权重和梯度仍保留在 FP32 中。
- 低精度激活: Wgrad 操作以 FP8 执行。为减少内存消耗,在线性算子反向传播时以 FP8 格式缓存激活。
- 注意力算子后的线性输入: 这些激活在注意力算子的反向传播中也被使用,对精度敏感。为此,专门采用 E5M6 数据格式,并将其缩放因子设置为 2 的整数幂,以避免额外的量化误差。
- MoE 中 SwiGLU 算子的输入: 缓存 SwiGLU 算子的输入,并在反向传播中重新计算其输出。这些激活也以 FP8 存储。
- 低精度通信: 在 MoE 上投影前,将激活量化为 FP8,然后应用调度组件,这与 MoE 上投影中的 FP8 Fprop 兼容。
4.3.4. 推理与部署 (Inference and Deployment)
DeepSeek-V3 部署在 H800 集群上,采用分离预填充 (prefilling) 和解码 (decoding) 阶段的部署策略,以同时确保在线服务服务级别目标 (Service-Level Objective, SLO) 和高吞吐量。
预填充 (Prefilling):
- 最小部署单元: 4 个节点,32 块 GPU。
- 并行策略: 注意力部分采用 4 路张量并行 (Tensor Parallelism, TP4) 结合序列并行 (Sequence Parallelism, SP) 和 8 路数据并行 (Data Parallelism, DP8)。MoE 部分采用 32 路专家并行 (EP32)。
- All-to-All 通信: 与训练方法相同,先通过 IB 跨节点传输,再通过 NVLink 节点内转发。
- 冗余专家 (Redundant Experts): 复制高负载专家并冗余部署,以实现专家间的负载均衡。高负载专家根据在线部署期间收集的统计数据定期调整。
解码 (Decoding):
- 最小部署单元: 40 个节点,320 块 GPU。
- 并行策略: 注意力部分采用 TP4 结合 SP 和 DP80。MoE 部分采用 EP320。
- 专家分配: 每个 GPU 托管一个专家,64 块 GPU 负责托管冗余专家和共享专家。
- All-to-All 通信: 通过 IB 的点对点直接传输,以实现低延迟。利用 IBGDA (NVIDIA, 2022) 技术进一步最小化延迟。
- 优化: 探索动态冗余策略和微批次重叠处理,以提高吞吐量并隐藏通信开销。
4.3.5. 硬件设计建议 (Suggestions on Hardware Design)
基于 all-to-all 通信和 FP8 训练方案的实现,DeepSeek-V3 团队向 AI 硬件供应商提出了以下芯片设计建议:
- 通信硬件: 建议开发能将通信任务(如数据转发、RDMA 缓冲区传输、归约操作、细粒度内存布局管理)从 SMs 卸载到 GPU 协处理器或网络协处理器(如 NVIDIA SHARP (Graham et al., 2016))的硬件。并期望实现 IB 和 NVLink 网络从计算单元角度的统一接口。
- 计算硬件:
- Tensor Cores 中更高的 FP8 GEMM 累积精度: 建议未来芯片采用更高的累积精度,因为当前 NVIDIA Hopper 架构的 Tensor Core 在 FP8 GEMM 累积精度方面存在限制。
- 支持瓦片级和块级量化: 建议未来芯片原生支持细粒度量化,使 Tensor Cores 能接收缩放因子并实现带组缩放的 MMA,避免 Tensor Cores 和 CUDA Cores 之间频繁的数据移动。
- 支持在线量化: 建议未来芯片将 FP8 类型转换和张量内存加速器 (Tensor Memory Accelerator, TMA) 访问融合为单一操作,或采用近内存计算 (near-memory computing) 方法,以减少内存访问开销。
- 支持转置 GEMM 操作: 建议未来芯片支持矩阵的直接转置读取,并与 FP8 格式转换和 TMA 访问的融合结合,简化量化工作流。
4.4. 预训练 (Pre-Training)
4.4.1. 数据构建 (Data Construction)
- 语料优化: DeepSeek-V3 优化了预训练语料库,增强了数学和编程样本的比例,并扩展了英语和汉语之外的多语言覆盖。
- 冗余最小化: 数据处理管道经过精炼,以最小化冗余,同时保持语料库的多样性。
- 文档打包 (Document Packing): 采用了文档打包方法来维护数据完整性,但训练期间未包含跨样本注意力掩码 (cross-sample attention masking)。
- 数据规模: DeepSeek-V3 的训练语料库包含 14.8 万亿高质量多样化词元。
- 填充中间 (Fill-in-Middle, FIM) 策略: 借鉴 DeepSeekCoder-V2 的经验,DeepSeek-V3 也引入了 FIM 策略,以增强模型预测中间文本的能力。具体采用了前缀-后缀-中间 (Prefix-Suffix-Middle, PSM) 框架来构建数据:
<|fim_begin|>fpre<|fim_hole|>fsuf<|fim_end|>fmiddle<leos_token|>。 FIM 策略的应用率为 0.1。 - 词元器 (Tokenizer): DeepSeek-V3 的词元器采用字节级 BPE (Byte-level BPE) (Shibata et al., 1999),词汇表扩展到 128K 词元。预词元器 (pretokenizer) 和训练数据经过修改,以优化多语言压缩效率。新词元器引入了结合标点符号和换行符的词元,并通过在训练期间随机拆分这些组合词元,以避免词元边界偏置 (token boundary bias) (Lundberg, 2023)。
4.4.2. 超参数 (Hyper-Parameters)
模型超参数:
- 层数: Transformer 层数为 61。
- 隐藏维度: 7168。
- 参数初始化: 所有可学习参数随机初始化,标准差为 0.006。
- MLA 配置: 注意力头数 ,每个头维度 。KV 压缩维度 ,查询压缩维度 。解耦查询和键的每个头维度 。
- MoE 配置: 除了前三层,所有 FFN 都替换为 MoE 层。每个 MoE 层包含 1 个共享专家和 256 个路由专家,每个专家的中间隐藏维度为 2048。8 个路由专家将被激活,每个词元最多发送到 4 个节点。
- MTP 深度: 多词元预测深度 ,即每个词元除了下一个词元外,还会预测一个额外的词元。
- 总参数量: 671B (总参数),37B (每个词元激活参数)。
训练超参数:
- 优化器: AdamW 优化器 (Loshchilov and Hutter, 2017)。
- ,,
weight_decay = 0.1。
- ,,
- 最大序列长度: 预训练期间设置为 4K。
- 学习率调度:
- 前 2K 步线性增加到 。
- 保持 直到模型消耗 10T 训练词元。
- 随后,在 4.3T 词元内,遵循余弦衰减曲线逐渐衰减到 。
- 最后 500B 词元:前 333B 词元保持 ,剩余 167B 词元切换到 。
- 梯度裁剪范数 (Gradient Clipping Norm): 1.0。
- 批次大小调度:
- 前 469B 词元从 3072 逐渐增加到 15360。
- 剩余训练保持 15360。
- 并行策略: 16 路流水线并行。每个 MoE 层的路由专家部署在 64 块 GPU 上(属于 8 个节点)。
- 节点受限路由: 每个词元最多发送到 4 个节点 ()。
- 无需辅助损失负载均衡: 偏置更新速度 (前 14.3T 词元), (剩余 500B 词元)。
- 平衡损失: ,仅用于避免单个序列内的极端不平衡。
- MTP 损失权重: (前 10T 词元), (剩余 4.8T 词元)。
4.4.3. 长上下文扩展 (Long Context Extension)
DeepSeek-V3 采用了与 DeepSeek-V2 (DeepSeek-AI, 2024c) 类似的方法来实现长上下文能力。
-
方法: 预训练阶段后,应用 YaRN (Peng et al., 2023a) 进行上下文扩展,并执行两个额外的训练阶段,每个阶段包含 1000 步。
-
阶段一: 上下文窗口从 4K 扩展到 32K。
- 序列长度设置为 32K,批次大小为 1920。
-
阶段二: 上下文窗口进一步扩展到 128K。
- 序列长度增加到 128K,批次大小减少到 480。
-
YaRN 配置: 与 DeepSeek-V2 相同,仅应用于解耦共享键 。超参数保持不变:比例 ,,,缩放因子 。
-
学习率: 两个阶段的学习率都设置为 ,与预训练阶段的最终学习率匹配。
下图(原文 Figure 8)展示了 DeepSeek-V3 在“大海捞针” (Needle In A Haystack, NIAH) 测试中的性能表现,证明了其在 128K 上下文窗口长度下的稳健性:
该图像是图表,展示了DeepSeek-V3在"Needle In A Haystack"测试中的压力测试结果。图中显示了不同上下文长度下的文档深度百分比,范围从2K到128K,DeepSeek-V3在各个上下文长度上均表现良好。
Figure 8 | Evaluation results on the "Needle In A Haystack" (NIAH) tests. DeepSeek-V3 performs well across all context window lengths up to 128K.
4.5. 后训练 (Post-Training)
4.5.1. 有监督微调 (Supervised Fine-Tuning, SFT)
- 数据策划: 构建了包含 1.5M 实例的指令微调数据集,涵盖多个领域,每个领域采用定制的数据创建方法。
- 推理数据 (Reasoning Data):
- 生成方式: 利用内部 DeepSeek-R1 模型生成数学、代码竞赛问题和逻辑谜题等推理相关数据。
- 目标: 平衡 DeepSeek-R1 生成数据的高准确性与常规格式数据(如简洁、易读)的清晰度。
- 流程:
- 为特定领域(如代码、数学、通用推理)开发专家模型,通过 SFT 和 RL 训练流程。
- 该专家模型作为数据生成器。为每个实例生成两种 SFT 样本:
<问题, 原始响应><系统提示, 问题, R1 响应>,系统提示包含引导模型生成带有反思和验证机制响应的指令。
- 在 RL 阶段,模型在高温度采样下生成结合 R1 和原始数据模式的响应。
- RL 训练后,通过拒绝采样 (rejection sampling) 筛选高质量 SFT 数据,确保最终训练数据保留 DeepSeek-R1 的优势,同时生成简洁有效的响应。
- 非推理数据 (Non-Reasoning Data):
- 生成方式: 使用 DeepSeek-V2.5 生成创意写作、角色扮演和简单问答等非推理数据。
- 验证: 人工标注员验证数据的准确性和正确性。
- SFT 设置:
- 使用 SFT 数据集对 DeepSeek-V3-Base 进行两个 epoch 的微调。
- 学习率调度为余弦衰减,从 逐渐衰减到 。
- 训练期间,单个序列由多个样本打包而成,但采用样本掩码策略 (sample masking strategy) 确保这些示例相互隔离不可见。
4.5.2. 强化学习 (Reinforcement Learning, RL)
奖励模型 (Reward Model, RM): DeepSeek-V3 在 RL 过程中同时采用了基于规则的 RM (Rule-Based RM) 和基于模型的 RM (Model-Based RM)。
- 基于规则的 RM: 对于可通过特定规则验证的问题(如数学问题的确定性答案、LeetCode 问题的编译器反馈),采用基于规则的奖励系统提供反馈,确保高可靠性。
- 基于模型的 RM:
- 带真值的问题: 对于带有自由形式真值答案的问题,奖励模型判断响应是否与预期真值匹配。
- 无真值的问题: 对于没有明确真值的问题(如创意写作),奖励模型根据问题和相应答案作为输入提供反馈。
- 训练: 奖励模型从 DeepSeek-V3 SFT 检查点训练而来。为增强可靠性,构建了偏好数据,不仅提供最终奖励,还包含导致奖励的思维链 (Chain-of-Thought),以减轻特定任务中的奖励欺骗 (reward hacking) 风险。
组相对策略优化 (Group Relative Policy Optimization, GRPO): 类似于 DeepSeek-V2 (DeepSeek-AI, 2024c),DeepSeek-V3 采用组相对策略优化 (GRPO) (Shao et al., 2024)。GRPO 放弃了通常与策略模型大小相同的评论家模型 (critic model),而是从组分数 (group scores) 中估计基线 (baseline)。 具体地,对于每个问题 ,GRPO 从旧策略模型 中采样一组输出 ,然后通过最大化以下目标来优化策略模型 : 其中 KL 散度 定义为: 符号解释:
- : GRPO 优化目标函数。
- : 期望 (expectation)。
- : 从问题分布
P(Q)中采样问题 。 - : 从旧策略模型 中采样一组 个输出。
- : 当前策略模型 生成输出 的概率。
- : 裁剪函数,将比率限制在 范围内。
- : 超参数,用于 PPO 风格的裁剪。
- : 超参数,用于控制 KL 散度正则化项的权重。
- : 当前策略 与参考模型 之间的 KL 散度,防止策略偏离参考模型过远。
- : 优势函数 (advantage),由采样输出的奖励 计算得出: 符号解释:
- : 第 个输出的奖励。
- : 均值函数。
- : 标准差函数。 RL 过程中整合了来自编码、数学、写作、角色扮演和问答等不同领域的提示 (prompts),旨在使模型更符合人类偏好,并提升在 SFT 数据有限场景下的基准性能。
5. 实验设置
5.1. 数据集
DeepSeek-V3 的预训练语料库由 14.8 万亿高质量多样化词元组成。在后训练阶段,使用了包含 1.5M 实例的指令微调数据集,涵盖推理和非推理数据。
5.1.1. 预训练数据
预训练语料库通过优化数学和编程样本比例、扩展多语言覆盖(超越英语和汉语),并精炼数据处理管道以最小化冗余同时保持多样性。采用文档打包 (document packing) 和填充中间 (Fill-in-Middle, FIM) 策略。
5.1.2. 评估基准 (Evaluation Benchmarks)
基准模型 (base model) 的评估基于其在多语言语料库(以英语和汉语为主)上的预训练。评估使用 DeepSeek 内部评估框架。
多主题选择题数据集 (Multi-subject multiple-choice datasets):
- 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):
- 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):
- TriviaQA (Joshi et al., 2017)
- NaturalQuestions (Kwiatkowski et al., 2019)
阅读理解数据集 (Reading comprehension datasets):
- RACE (Lai et al., 2017)
- DROP (Dua et al., 2019)
- C3 (Sun et al., 2019a)
- CMRC (Cui et al., 2019)
指代消歧数据集 (Reference disambiguation datasets):
- CLUEWSC (Xu et al., 2020)
- WinoGrande (Sakaguchi et al., 2019)
语言建模数据集 (Language modeling datasets):
- Pile (Gao et al., 2020)
中文理解和文化数据集 (Chinese understanding and culture datasets):
- CCPM (Li et al., 2021)
数学数据集 (Math datasets):
- GSM8K (Cobbe et al., 2021)
- MATH (Hendrycks et al., 2021)
- MGSM (Shi et al., 2023)
- CMath (Wei et al., 2023)
代码数据集 (Code datasets):
- 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):
- AGIEval (Zhong et al., 2023) (包含英语和汉语子集)
指令模型评估基准 (Instructed model evaluation benchmarks): 除了基础模型测试基准,指令模型还额外评估了以下基准:
- IFEval (Zhou et al., 2023)
- FRAMES (Krishna et al., 2024)
- LongBench v2 (Bai et al., 2024)
- GPQA (Rein et al., 2023)
- SimpleQA (OpenAI, 2024c)
- CSimpleQA (He et al., 2024)
- SWE-Bench Verified (OpenAI, 2024d)
- Aider 1
- LiveCodeBench (Jain et al., 2024) (2024年8月至11月的问题)
- Codeforces 2
- 中国全国高中数学奥林匹克 (Chinese National High School Mathematics Olympiad, CNMO 2024)
- 美国数学邀请赛 (American Invitational Mathematics Examination, AIME 2024) (MAA, 2024)
5.2. 评估指标
论文中使用的评估指标包括:
5.2.1. 准确率 (Accuracy, Acc. / Exact Match, EM)
概念定义: 准确率是最常见的分类评估指标,表示模型正确预测的样本数量占总样本数量的比例。在问答和推理任务中,当模型的答案与参考答案完全匹配时,被认为是正确。 数学公式: 符号解释:
- : 模型正确预测的样本数量。
- : 总样本数量。
5.2.2. F1 分数 (F1 Score)
概念定义: F1 分数是精确率 (Precision) 和召回率 (Recall) 的调和平均值。它在评估那些类别分布不平衡或者对假阳性和假阴性都很关注的模型时非常有用。F1 分数越高表示模型性能越好。 数学公式: 其中, 符号解释:
- : 正类样本被正确预测为正类的数量。
- : 负类样本被错误预测为正类的数量。
- : 负类样本被正确预测为负类的数量。
- : 正类样本被错误预测为负类的数量。
- : 精确率,表示在所有被预测为正类的样本中,实际为正类的比例。
- : 召回率,表示在所有实际为正类的样本中,被正确预测为正类的比例。
5.2.3. 每字节比特数 (Bits-Per-Byte, BPB)
概念定义: BPB 是一种衡量语言模型压缩效率的指标,表示每个字节的文本数据平均需要多少比特来编码。BPB 越低,表示模型的压缩效率越高,或者说模型对文本数据的预测能力越强。该指标用于公平比较使用不同词元器的模型。
数学公式:
由于交叉熵损失通常是基于词元计算的,对于语言模型来说,更直接的定义是将模型在测试集上预测的平均负对数似然(即交叉熵损失,Perplexity 的对数形式)转换为每字节的比特数。
具体来说,如果一个模型的交叉熵损失为 ,其 Perplexity 为 。BPB 衡量的是每个字节的文本需要多少比特来表示,所以它与文本的压缩比相关。
在实践中,BPB 的计算通常是:
其中,\sum_{i=1}^N \log_2 P(t_i | t_{<i}) 是总的负对数似然的对数基数转换为 2 的形式。
符号解释:
- : 模型预测在给定历史上下文 下词元 的概率。
- : 评估文本的总字节数。
5.2.4. Pass@1 (编码任务)
概念定义: Pass@1 是代码生成任务中常用的评估指标,表示在给定一个代码问题时,模型第一次尝试生成的代码就通过了所有测试用例的比例。通常用于衡量模型生成正确代码的能力,不考虑重试次数。 数学公式: 通常没有一个统一的数学公式,因为它基于测试用例的通过情况。 符号解释:
- : 模型第一次尝试生成并成功通过所有测试的问题数量。
- : 总问题数量。
5.2.5. 百分位数 (Percentile) (Codeforces 竞赛)
概念定义: 在 Codeforces 这类编程竞赛平台中,百分位数通常表示一个模型或参赛者在所有参赛者中的排名位置。例如,90% 百分位数意味着该模型表现优于 90% 的其他参赛者。这是一种相对排名指标,衡量模型在竞争环境中的表现。 数学公式: 通常没有直接的数学公式,而是基于排名分布。 符号解释:
- : 模型在该竞赛中获得的得分。
- : 获得分数低于或等于该模型的参赛者数量。
- : 总参赛者数量。
5.2.6. 已解决 (Resolved) (SWE-Bench Verified)
概念定义: 在 SWE-Bench Verified 基准中,"Resolved" 指的是模型成功识别并修复软件错误,使其通过所有相关测试用例的比例。这是一个衡量模型在软件工程任务中解决实际问题能力的指标。 数学公式: 符号解释:
- : 模型成功修复的错误数量。
- : 总错误数量。
5.3. 对比基线 (Compared Baselines)
5.3.1. 基础模型 (Base Models)
论文将 DeepSeek-V3-Base 与以下代表性开源基础模型进行比较:
- DeepSeek-V2-Base (DeepSeek-AI, 2024c): DeepSeek 团队之前的版本。
- Qwen2.5 72B Base (Qwen, 2024b): 阿里通义千问系列中的一个强大的中文开源模型。
- LLaMA-3.1 405B Base (AI@Meta, 2024b): Meta 发布的 LLaMA 系列中规模最大的开源模型之一。
5.3.2. 对话模型 (Chat Models)
指令模型 (instructed models) 的评估与以下强大的基线模型进行比较:
- DeepSeek-V2-0506
- DeepSeek-V2.5-0905
- Qwen2.5 72B Instruct: Qwen2.5 的指令微调版本。
- LLaMA-3.1 405B Instruct: LLaMA-3.1 的指令微调版本。
- Claude-Sonnet-3.5-1022: Anthropic 发布的领先闭源模型。
- GPT-4o-0513: OpenAI 发布的领先闭源模型。
5.3.3. 评估配置
- 标准基准: MMLU, DROP, GPQA, SimpleQA 采用
simple-evals框架的评估提示。 - MMLU-Redux: 零样本 (zero-shot) 设置下使用
Zero-Eval提示格式 (Lin, 2024)。 - 其他数据集: 遵循原始评估协议,使用数据集创建者提供的默认提示。
- 代码和数学基准:
- HumanEval-Mul 包含 8 种主流编程语言。
- LiveCodeBench 使用思维链 (CoT) 和非思维链 (non-CoT) 方法评估。
- Codeforces 使用选手百分比衡量。
- SWE-Bench Verified 使用无智能体框架 (agentless framework) (Xia et al., 2024) 评估。
- Aider 相关基准使用 "diff" 格式评估。
- AIME 和 CNMO 2024 在温度 (temperature) 0.7 下评估,结果平均 16 次运行。
- MATH-500 采用贪婪解码 (greedy decoding)。
- 最大输出长度: 所有模型最大输出 8192 个词元。
- 样本少于 1000 的基准: 通过改变温度设置多次测试,以获得稳健结果。
6. 实验结果与分析
6.1. 核心结果分析
6.1.1. 基础模型性能对比
以下是原文 Table 3 的结果,比较了 DeepSeek-V3-Base 与其他代表性开源基础模型:
| Benchmark (Metric) | # Shots | DeepSeek-V2 Base | Qwen2.5 72B Base | LLaMA-3.1 405B Base | DeepSeek-V3 Base | |
|---|---|---|---|---|---|---|
| Architecture | MoE | Dense | Dense | MoE | ||
| # Activated Params | 21B | 72B | 405B | 37B | ||
| # Total Params | 236B | 72B | 405B | 671B | ||
| Pile-test (BPB) | - | 0.606 | 0.638 | 0.542 | 0.548 | |
| BBH (EM) MMLU (EM) | 3-shot | 78.8 | 79.8 | 82.9 | ||
| English | 5-shot | 78.4 | 85.0 | 84.4 | 87.5 87.1 | |
| MMLU-Redux (EM) | 5-shot | 75.6 | 83.2 | 81.3 | 86.2 | |
| MMLU-Pro (EM) | 5-shot | 51.4 | 58.3 | |||
| 80.4 | 80.6 | 52.8 | 64.4 | |||
| DROP (F1) | 3-shot 25-shot | 97.6 | 98.4 | 86.0 | 89.0 | |
| ARC-Easy (EM) ARC-Challenge (EM) | 25-shot | 92.2 | 94.5 | 98.4 95.3 | 98.9 | |
| HellaSwag (EM) | 10-shot | 87.1 | 84.8 | 89.2 | 95.3 88.9 | |
| PIQA (EM) | 0-shot | 83.9 | 82.6 | 85.9 | 84.7 | |
| WinoGrande (EM) | 5-shot | 86.3 | 82.3 | 85.2 | ||
| RACE-Middle (EM) | 5-shot | 73.1 | 68.1 | 74.2 | 84.9 | |
| RACE-High (EM) | 5-shot | 52.6 | 50.3 | 56.8 | 67.1 51.3 | |
| TriviaQA (EM) | 5-shot | 80.0 | 71.9 | 82.7 | 82.9 | |
| NaturalQuestions (EM) | 5-shot | 38.6 | 33.2 | 41.5 | 40.0 | |
| AGIEval (EM) | 0-shot | 57.5 | 75.8 | 60.6 | 79.6 | |
| HumanEval (Pass@1) | 0-shot | 43.3 | 53.0 | 54.9 | 65.2 | |
| Code | MBPP (Pass@1) | 3-shot | 65.0 | 72.6 | 68.4 | 75.4 |
| LiveCodeBench-Base (Pass@1) CRUXEval-I (EM) | 3-shot | 11.6 | 12.9 | 15.5 | 19.4 | |
| 2-shot | 52.5 | 59.1 | 58.5 | 67.3 | ||
| CRUXEval-O (EM) | 2-shot | 49.8 | 59.9 | 59.9 | 69.8 | |
| GSM8K (EM) | 8-shot | 81.6 | 88.3 | 83.5 | ||
| MATH (EM) | 4-shot | 43.4 | 54.4 | 49.0 | 89.3 61.6 | |
| Math | MGSM (EM) | 8-shot | 63.6 | 76.2 | 69.9 | 79.8 |
| CMath (EM) | 3-shot | 78.7 | 84.5 | 77.3 | 90.7 | |
| CLUEWSC (EM) | 5-shot | 82.0 | 82.5 | 83.0 | 82.7 | |
| C-Eval (EM) | 5-shot | 81.4 | 89.2 | 72.5 | 90.1 | |
| CMMLU (EM) | 5-shot | 84.0 | 89.5 | 73.7 | 88.8 | |
| Chinese | CMRC (EM) | 1-shot | 77.4 | 75.8 | 76.0 | 76.3 |
| C3 (EM) | 0-shot | 77.4 | 76.7 | 79.7 | 78.6 | |
| CCPM (EM) | 0-shot | 93.0 | 88.5 | 78.6 | 92.0 | |
| MMMLU-non-English (EM) | 5-shot | 64.0 | 74.8 | 73.8 | 79.4 |
Table 3 | Comparison among DeepSeek-V3-Base and other representative open-source base models. All models are evaluated in our internal framework and share the same evaluation setting. Scores with a gap not exceeding 0.3 are considered to be at the same level. DeepSeekV3-Base achieves the best performance on most benchmarks, especially on math and code tasks.
分析:
- DeepSeek-V3-Base 综合性能: DeepSeek-V3-Base 总体上全面超越 DeepSeek-V2-Base 和 Qwen2.5 72B Base,并且在绝大多数基准测试中优于 LLaMA-3.1 405B Base,成为目前最强的开源基础模型。
- 对比 DeepSeek-V2-Base: 由于模型架构改进、模型规模和训练词元数量的扩大以及数据质量的提升,DeepSeek-V3-Base 性能显著优于 DeepSeek-V2-Base,符合预期。
- 对比 Qwen2.5 72B Base: 尽管 DeepSeek-V3-Base 的激活参数仅为 Qwen2.5 72B Base 的一半 (37B vs 72B),但它在英语、多语言、代码和数学基准测试中显示出显著优势。在中文基准测试中,除了 CMMLU 外,DeepSeek-V3-Base 也优于 Qwen2.5 72B Base。
- 对比 LLaMA-3.1 405B Base: LLaMA-3.1 405B Base 是最大的开源模型,其激活参数是 DeepSeek-V3-Base 的 11 倍。然而,DeepSeek-V3-Base 在多语言、代码和数学基准测试中表现显著更好。在英语和中文语言基准测试中,DeepSeek-V3-Base 表现出竞争性或更优的性能,尤其在 BBH、MMLU 系列、DROP、C-Eval、CMMLU 和 CCPM 上表现出色。
- 经济高效性: DeepSeek-V3 凭借其高效架构和全面的工程优化,实现了极高的训练效率。每训练一万亿词元仅需 180K H800 GPU 小时,比训练 72B 或 405B 密集模型便宜得多。
6.1.2. 指令模型性能对比
以下是原文 Table 6 的结果,比较了 DeepSeek-V3 与其他代表性对话模型:
| Benchmark (Metric) | DeepSeek DeepSeekV2-0506 V2.5-0905 | Qwen2.5 LLaMA-3.1 Claude-3.5- GPT-40|72B-Inst.405B-Inst.Sonnet-1022 0513 | DeepSeekV3 | ||
| Architecture# Activated Params# Total Params | MoE MoE | Dense Dense -72B 405B -72B 405B - - | MoE37B671B | ||
| 21B 21B | |||||
| 236B 236B | |||||
| MMLU (EM)MMLU-Redux (EM)MMLU-Pro (EM) | 78.2 80.6 | 85.3 88.6 88.3 87.2 | 88.5 | ||
| 77.9 80.3 | 85.6 86.2 88.9 88.0 | 89.1 | |||
| MMLU-Pro (EM) | 58.5 66.2 | 71.6 73.3 78.0 72.6 | 75.9 | ||
| DROP (3-shot F1)EnglishIF-Eval (Prompt Strict)GPQA-Diamond (Pass@1)SimpleQA (Correct)FRAMES (Acc.)LongBench v2 (Acc.) | DROP (3-shot F1) | 83.0 87.8 | 76.7 88.7 88.3 83.7 | 91.6 | |
| 57.7 80.6 | 84.1 86.0 86.5 84.3 | 86.1 | |||
| 35.3 41.3 | 49.0 51.1 65.0 49.9 | 59.1 | |||
| 9.0 10.2 | 9.1 17.1 28.4 38.2 | 24.9 | |||
| 66.9 65.4 | 69.8 70.0 72.5 80.5 | 73.3 | |||
| 31.6 35.4 | 39.4 36.1 41.0 48.1 | 48.7 | |||
| HumanEval-Mul (Pass@1)LiveCodeBench (Pass@1-COT) | 69.3 77.4 | 77.3 77.2 81.7 80.5 | 82.6 | ||
| 18.8 29.2 | 31.1 28.4 36.3 33.4 | 40.5 | |||
| Code LiveCodeBench (Pass@1)Codeforces (Percentile)SWE Verified (Resolved)Aider-Edit (Acc.)Aider-Polyglot (Acc.) | 20.3 28.4 | 28.7 30.1 32.8 34.2 | 37.6 | ||
| 17.5 35.6 | 24.8 25.3 20.3 23.6 | 51.6 | |||
| - 22.6 | 23.8 24.5 50.8 38.8 | 42.0 | |||
| 60.3 71.6- 18.2 | 65.4 63.9 84.2 72.9 | 79.7 | |||
| 7.6 5.8 45.3 16.0 | 49.6 | ||||
| AIME 2024 (Pass@1)MathMATH-500 (EM)CNMO 2024 (Pass@1) | 4.6 16.756.3 74.7 | 23.3 23.3 16.0 9.3 | 39.2 | ||
| 80.0 73.8 78.3 74.6 | 90.2 | ||||
| 2.8 10.8 | 15.9 6.8 13.1 10.8 | 43.2 | |||
| CLUEWSC (EM)Chinese C-Eval (EM)C-SimpleQA (Correct) | 89.9 90.4 | 91.4 84.7 85.4 87.9 | 90.9 | ||
| 78.6 79.5 | 86.1 61.5 76.7 76.0 | 86.5 | |||
| 48.5 54.1 | 48.4 50.4 51.3 59.3 | 64.8 | |||
Table 6 | Comparison between DeepSeek-V3 and other representative chat models. All models are evaluated in a configuration that limits the output length to 8K. Benchmarks containing fewer than 1000 samples are tested multiple times using varying temperature settings to derive robust final results. DeepSeek-V3 stands as the best-performing open-source model, and also exhibits competitive performance against frontier closed-source models.
分析:
- 整体表现: DeepSeek-V3 是性能最佳的开源模型,并且与 GPT-4o 和 Claude-3.5-Sonnet 等前沿闭源模型具有竞争力。
- 英语基准:
- MMLU 系列: DeepSeek-V3 在 MMLU、MMLU-Redux 和 MMLU-Pro 上表现出色,与顶级闭源模型(如 LLaMA3.1-405B、GPT-4o 和 Claude-Sonnet 3.5)持平或超越。在更具挑战性的 GPQA-Diamond 上,DeepSeek-V3 仅次于 Claude 3.5 Sonnet。
- 长上下文理解: 在 DROP (F1 得分 91.6)、LongBench v2 和 FRAMES 等长上下文基准测试中表现卓越,尤其在处理 100k 词元上下文时,FRAMES 仅略低于 GPT-4o,证明了其强大的长上下文处理能力。
- 事实性知识: 在 SimpleQA 上落后于 GPT-4o 和 Claude-Sonnet,这可能是因为 DeepSeek-V3 将更多训练词元分配给中文知识学习。
- 指令遵循: 在 IF-Eval 上显著优于 DeepSeek-V2 系列,表明其理解和遵守用户定义格式约束的能力增强。
- 代码和数学基准:
- 代码: 在工程任务(如 SWE-Bench-Verified 和 Aider)中,DeepSeek-V3 仅次于 Claude-Sonnet-3.5-1022,但显著优于其他开源模型。在算法任务(如 HumanEval-Mul 和 LiveCodeBench)中,DeepSeek-V3 表现卓越,超越所有基线。
- 数学: 在 AIME、MATH-500 和 CNMO 2024 等数学基准测试中,DeepSeek-V3 表现出类拔萃,显著超越第二名模型 Qwen2.5 72B 约 10% 的绝对分数,这归因于从 DeepSeek-R1 蒸馏的推理技术。
- 中文基准:
- 事实性: 在中文事实性基准 Chinese SimpleQA 上,DeepSeek-V3 领先 Qwen2.5-72B 16.4 分,尽管 Qwen2.5 的训练语料库比 DeepSeek-V3 大 20%。
- 理解和推理: 在 C-Eval 和 CLUEWSC 上,DeepSeek-V3 和 Qwen2.5-72B 表现相似,表明两者在中文语言推理和教育任务方面都经过了良好优化。
6.1.3. 开放式评估
以下是原文 Table 7 的结果,展示了 DeepSeek-V3 在英语开放式对话评估中的表现:
| Model | Arena-Hard AlpacaEval 2.0 |
|---|---|
| DeepSeek-V2.5-0905 | 76.2 50.5 |
| Qwen2.5-72B-Instruct | 81.2 49.1 |
| LLaMA-3.1 405B | 69.3 40.5 |
| GPT-4o-0513 | 80.4 51.1 |
| Claude-Sonnet-3.5-1022 | 85.2 52.0 |
| DeepSeek-V3 | 85.5 70.0 |
Table 7 | English open-ended conversation evaluations. For AlpacaEval 2.0, we use the lengthcontrolled win rate as the metric.
分析:
- Arena-Hard: DeepSeek-V3 在 Arena-Hard 上以超过 86% 的胜率领先基线 GPT-4-0314,与 Claude-Sonnet-3.5-1022 等顶级模型持平。这是首个在 Arena-Hard 基准上突破 85% 的开源模型,显著缩小了开源模型与闭源模型之间的性能差距。
- AlpacaEval 2.0: DeepSeek-V3 在 AlpacaEval 2.0 上表现出色,超越了所有闭源和开源模型,尤其比 DeepSeek-V2.5-0905 高出 20%,显示了其在写作和简单问答任务中的卓越能力。
6.1.4. DeepSeek-V3 作为生成式奖励模型
以下是原文 Table 8 的结果,比较了 GPT-4o, Claude-3.5-Sonnet 和 DeepSeek-V3 在 RewardBench 上的性能:
| Model | Chat | Chat-Hard | Safety | Reasoning | Average |
|---|---|---|---|---|---|
| GPT-4o-0513 | 96.6 | 70.4 | 86.7 | 84.9 | 84.7 |
| GPT-4o-0806 | 96.1 | 76.1 | 88.1 | 86.6 | 86.7 |
| GPT-4o-1120 | 95.8 | 71.3 | 86.2 | 85.2 | 84.6 |
| Claude-3.5-sonnet-0620 | 96.4 | 74.0 | 81.6 | 84.7 | 84.2 |
| Claude-3.5-sonnet-1022 | 96.4 | 79.7 | 91.1 | 87.6 | 88.7 |
| DeepSeek-V3 | 96.9 | 79.8 | 87.0 | 84.3 | 87.0 |
| DeepSeek-V3 (maj@6) | 96.9 | 82.6 | 89.5 | 89.2 | 89.6 |
Table 8 | Performances of GPT-4o, Claude-3.5-sonnet and DeepSeek-V3 on RewardBench.
分析:
- DeepSeek-V3 在 RewardBench 上的表现与 GPT-4o-0806 和 Claude-3.5-Sonnet-1022 的最佳版本持平。
- 通过投票技术 (voting technique),DeepSeek-V3 (maj@6) 的判断能力可以进一步增强,平均得分达到 89.6,超过了所有闭源模型。这表明 DeepSeek-V3 可以作为强大的生成式奖励模型,为开放式问题提供自反馈,从而提高对齐过程的有效性和稳健性。
6.2. 消融实验/参数分析
6.2.1. 多词元预测 (Multi-Token Prediction, MTP) 消融研究
以下是原文 Table 4 的结果,展示了 MTP 策略的消融结果:
| Benchmark (Metric) | # Shots | Small MoE Baseline | Small MoE w/ MTP | Large MoE Baseline | Large MoE w/ 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) | 0.729 | 0.729 | 0.658 | 0.657 | |
| BBH (EM) | 3-shot | 39.0 | 41.4 | 70.0 | 70.7 |
| MMLU (EM) | 5-shot | 50.0 | 53.3 | 67.5 | 66.6 |
| DROP (F1) | 1-shot | 39.2 | 41.3 | 68.5 | 70.6 |
| TriviaQA (EM) | 5-shot | 56.9 | 57.7 | 67.0 | 67.3 |
| NaturalQuestions (EM) | 5-shot | 22.7 | 22.3 | 27.2 | 28.5 |
| HumanEval (Pass@1) | 0-shot | 20.7 | 26.8 | 44.5 | 53.7 |
| MBPP (Pass@1) | 3-shot | 35.8 | 36.8 | 61.6 | 62.2 |
| GSM8K (EM) | 8-shot | 25.4 | 31.4 | 72.3 | 74.0 |
| MATH (EM) | 4-shot | 10.7 | 12.6 | 38.6 | 39.8 |
Table 4 | Ablation results for the MTP strategy. The MTP strategy consistently enhances the model performance on most of the evaluation benchmarks.
分析: MTP 策略在两个不同规模的基线模型上进行了验证:小规模 MoE 模型 (15.7B 总参数,1.33T 词元训练) 和大规模 MoE 模型 (228.7B 总参数,540B 词元训练)。在推理时,MTP 模块被直接丢弃,因此推理成本完全相同。 结果显示,MTP 策略在大多数评估基准测试中一致地提升了模型性能。例如,在 HumanEval (Pass@1) 小规模模型中从 20.7 提升到 26.8,大规模模型中从 44.5 提升到 53.7,显示了 MTP 对代码能力的显著增强。在数学推理任务(如 GSM8K 和 MATH)中也有类似的提升。这表明 MTP 能够有效稠密化训练信号,使模型更好地学习未来词元的预测。
6.2.2. 无辅助损失负载均衡策略消融研究
以下是原文 Table 5 的结果,展示了无辅助损失负载均衡策略的消融结果:
| Benchmark (Metric) | # Shots | Small MoE Aux-Loss-Based | Small MoE Aux-Loss-Free | Large MoE Aux-Loss-Based | Large MoE Aux-Loss-Free |
|---|---|---|---|---|---|
| # Activated Params | 2.4B | 2.4B | 20.9B | 20.9B | |
| # Total Params | 15.7B | 15.7B | 228.7B | 228.7B | |
| # Training Tokens | 1.33T | 1.33T | 578B | 578B | |
| Pile-test (BPB) | - | 0.727 | 0.724 | 0.656 | 0.652 |
| BBH (EM) | 3-shot | 37.3 | 39.3 | 66.7 | 67.9 |
| MMLU (EM) | 5-shot | 51.0 | 51.8 | 68.3 | 67.2 |
| DROP (F1) | 1-shot | 38.1 | 39.0 | 67.1 | 67.1 |
| TriviaQA (EM) | 5-shot | 58.3 | 58.5 | 66.7 | 67.7 |
| NaturalQuestions (EM) | 5-shot | 23.2 | 23.4 | 27.1 | 28.1 |
| HumanEval (Pass@1) | 0-shot | 22.0 | 22.6 | 40.2 | 46.3 |
| MBPP (Pass@1) | 3-shot | 36.6 | 35.8 | 59.2 | 61.2 |
| GSM8K (EM) | 8-shot | 27.1 | 29.6 | 70.7 | 74.5 |
| MATH (EM) | 4-shot | 10.9 | 11.1 | 37.2 | 39.6 |
Table 5 | Ablation results for the auxiliary-loss-free balancing strategy. Compared with the purely auxiliary-loss-based method, the auxiliary-loss-ree strategy consistently achieves better model performance on most of the evaluation benchmarks.
分析: 该策略也在两个不同规模的基线模型上进行了验证:小规模 MoE 模型 (15.7B 总参数,1.33T 词元训练) 和大规模 MoE 模型 (228.7B 总参数,578B 词元训练)。基线模型纯粹使用辅助损失来鼓励负载平衡。 结果表明,与纯粹基于辅助损失的方法相比,无辅助损失策略在大多数评估基准测试中一致地实现了更好的模型性能。例如,在 HumanEval (Pass@1) 大规模模型中,无辅助损失策略从 40.2 提升到 46.3,GSM8K 从 70.7 提升到 74.5。这证实了去除辅助损失对模型性能的积极影响,通过避免干扰模型训练的梯度,使模型能够更好地学习。
6.2.3. 批次级负载均衡 (Batch-Wise Load Balance) 与 序列级负载均衡 (Sequence-Wise Load Balance)
核心区别: 无辅助损失均衡策略与序列级辅助损失 (sequence-wise auxiliary loss) 的主要区别在于它们的均衡范围:批次级 (batch-wise) 与序列级 (sequence-wise)。批次级均衡提供了更灵活的约束,不强制每个序列内部的平衡,这使得专家能够更好地在不同领域进行专业化。
下图(原文 Figure 9)展示了无辅助损失模型在 Pile 测试集上表现出更强的专家专业化模式:
该图像是图表,展示了在 Pile 测试集中辅助损失自由模型与基于辅助损失模型在三个领域的专家负载。图中显示了不同层次的相对专家负载,突显出辅助损失自由模型在专家专业化模式上表现更佳。
Figure 9 | Expert load of auxiliary-loss-free and auxiliary-loss-based models on three domains in the Pile test set. The auxiliary-loss-free model shows greater expert specialization patterns than the auxiliary-loss-based one. The relative expert load denotes the ratio between the actual expert load and the theoretically balanced expert load. Due to space constraints, we only present the results of two layers as an example, with the results of all layers provided in Appendix C.
分析:
- 通过记录和分析 16B 辅助损失基线模型和 16B 无辅助损失模型在 Pile 测试集不同领域(Wikipedia (en), Github, DM Mathematics)上的专家负载,发现无辅助损失模型表现出更强的专家专业化模式。这意味着它允许专家更专注于特定类型的数据,而不是被强制在每个序列内平均分配负载。
- 实验验证: 团队额外设计并验证了一个批次级辅助损失,该损失鼓励每个训练批次而不是每个序列的负载平衡。实验结果表明,在实现类似批次级负载平衡水平时,批次级辅助损失也能达到与无辅助损失方法相似的模型性能。例如,在 1B MoE 模型中,验证损失分别为 2.258 (序列级辅助损失),2.253 (无辅助损失方法),2.253 (批次级辅助损失)。在 3B MoE 模型中,结果相似:2.085 (序列级辅助损失),2.080 (无辅助损失方法),2.080 (批次级辅助损失)。
- 挑战与解决方案: 批次级负载均衡方法虽然性能优势一致,但也面临两个潜在效率挑战:(1) 特定序列或小批次内的负载不平衡;(2) 推理期间领域偏移 (domain-shift) 导致的负载不平衡。第一个挑战通过使用大规模专家并行和数据并行来解决,确保每个微批次规模足够大。第二个挑战通过推理框架中的冗余专家部署来克服。
6.2.4. DeepSeek-R1 知识蒸馏的贡献
以下是原文 Table 9 的结果,展示了从 DeepSeek-R1 蒸馏知识的贡献:
| Model | LiveCodeBench-CoT | MATH-500 | ||
| Pass@1 | Length | Pass@1 | Length | |
| DeepSeek-V2.5 Baseline | 31.1 | 718 | 74.6 | 769 |
| DeepSeek-V2.5 +R1 Distill | 37.4 | 783 | 83.2 | 1510 |
Table 9 | The contribution of distillation from DeepSeek-R1. The evaluation settings of LiveCodeBench and MATH-500 are the same as in Table 6.
分析:
- 在 DeepSeek-V2.5 基础上,通过从 DeepSeek-R1 蒸馏知识,LiveCodeBench (Pass@1) 从 31.1 提升到 37.4,MATH-500 (Pass@1) 从 74.6 提升到 83.2。这显著提升了模型在代码和数学推理任务上的性能。
- 权衡: 蒸馏虽然带来了更好的性能,但同时也显著增加了平均响应长度 (LiveCodeBench 从 718 到 783,MATH-500 从 769 到 1510)。DeepSeek-V3 团队为此仔细选择了最佳设置,以在模型准确性和计算效率之间取得平衡。
- 研究方向: 这项研究表明从推理模型进行知识蒸馏是后训练优化的一个有前景的方向,并且这种方法有望扩展到其他需要复杂推理的任务领域。
6.2.5. 低精度训练消融研究 (Appendix B.1)
以下是原文 Figure 10 的结果,展示了 BF16 和 FP8 训练的损失曲线比较:
该图像是图表,展示了在16B和230B的DeepSeek-V2模型中BF16与FP8训练的损失曲线比较。结果通过指数移动平均(EMA)平滑处理,显示不同训练配置下损失的变化情况。
Figure 10 | Loss curves comparison between BF16 and FP8 training. Results are smoothed by Exponential Moving Average (EMA) with a coefficient of 0.9.
分析:
- 通过与 BF16 训练进行比较,在小规模 MoE 模型 (约 16B 总参数,1.33T 词元训练) 和大规模 MoE 模型 (约 230B 总参数,0.9T 词元训练) 上验证了 FP8 混合精度框架。
- 结果显示,在采用高精度累积和细粒度量化策略后,FP8 训练模型的相对损失误差始终保持在 0.25% 以下,处于可接受的训练随机性范围。这表明 FP8 训练在大规模 LLM 中是可行且有效的。
6.2.6. 曼特萨优先于指数 (Mantissa over Exponents) (Appendix B.2)
DeepSeek-V3 采用 E4M3 格式在所有张量上以获得更高精度,而不是混合 FP8 格式(Fprop 中 E4M3,Dgrad 和 Wgrad 中 E5M2)。这得益于其细粒度量化策略,通过对较小元素组进行操作,有效共享指数位,减轻了有限动态范围的影响。
6.2.7. 块级量化 (Block-Wise Quantization) 讨论 (Appendix B.2)
虽然瓦片级 (tile-wise) 细粒度量化有效缓解了特征异常值带来的误差,但它在激活量化(前向 1x128,后向 128x1)中需要不同的分组。直接采用与权重量化相同的块级量化 (128x128 元素) 进行 Dgrad (激活梯度计算) 会导致模型发散。这表明激活梯度在词元之间高度不平衡,产生与词元相关的异常值,而块级量化无法有效处理这些异常值。
6.3. 多词元预测 (MTP) 推理评估
DeepSeek-V3 通过 MTP 技术预测接下来的 2 个词元。结合推测解码 (speculative decoding) 框架,这显著加速了模型的解码速度。
- 接受率: 第二个词元预测的接受率在各种生成主题上介于 85% 到 90% 之间,显示出一致的可靠性。
- 解码速度: 这种高接受率使得 DeepSeek-V3 实现了显著提升的解码速度,达到 1.8 倍的每秒词元数 (Tokens Per Second, TPS)。
7. 总结与思考
7.1. 结论总结
本文介绍了 DeepSeek-V3,一个具有 6710 亿总参数和 370 亿激活参数的大规模混合专家 (MoE) 语言模型,在 14.8 万亿词元上进行训练。除了继承自 DeepSeek-V2 的多头潜在注意力 (MLA) 和 DeepSeekMoE 架构外,DeepSeek-V3 还开创了无需辅助损失 (auxiliary-loss-free) 的负载均衡策略,并设定了多词元预测 (Multi-Token Prediction, MTP) 训练目标以增强性能。DeepSeek-V3 的训练成本效益高,得益于 FP8 训练的支持和精心的工程优化。后训练阶段成功地从 DeepSeek-R1 系列模型中蒸馏了推理能力。全面的评估表明,DeepSeek-V3 已成为目前最强的开源模型,并且性能与 GPT-4o 和 Claude-3.5-Sonnet 等领先闭源模型相媲美。尽管性能强大,其完整训练(包括预训练、上下文长度扩展和后训练)仅需 2.788 百万 (2.788M) H800 GPU 小时,成本经济。
7.2. 局限性与未来工作
局限性 (Limitations):
- 部署单元较大: 为了确保高效推理,DeepSeek-V3 的推荐部署单元相对较大,这可能对小型团队构成负担。
- 推理速度仍有提升空间: 尽管 DeepSeek-V3 的端到端生成速度已是 DeepSeek-V2 的两倍多,但仍有进一步提升的潜力。 作者指出,随着更先进的硬件发展,这些局限性有望自然解决。
未来研究方向 (Future Directions):
- 模型架构的持续优化: 持续研究和完善模型架构,旨在进一步提高训练和推理效率,并努力实现对无限上下文长度的高效支持。此外,还将尝试突破 Transformer 的架构限制,从而拓展其建模能力的边界。
- 训练数据的数量和质量迭代: 不断迭代训练数据的数量和质量,并探索整合额外的训练信号源,以推动数据在更全面维度上的扩展。
- 模型深度思考能力的探索与迭代: 持续探索和迭代模型的深度思考能力,旨在通过扩展其推理长度和深度来增强其智能和解决问题的能力。
- 更全面多维度的模型评估方法: 探索更全面和多维度的模型评估方法,以防止研究过程中过度优化固定基准的倾向,这可能导致对模型能力产生误导性印象并影响基础评估。
7.3. 个人启发与批判
个人启发 (Personal Insights): 这篇论文展示了在大型语言模型领域,通过深入的工程优化和创新算法设计,可以同时实现顶级性能和显著的成本效益。有几点尤其具有启发性:
- 软硬件协同设计的重要性: DeepSeek-V3 的成功很大程度上归功于其在算法、框架和硬件层面的协同优化,尤其是 FP8 训练和 DualPipe 算法,这些都突破了大规模 MoE 模型训练的瓶颈。这强调了在 AI 系统设计中,不仅要关注模型本身,更要关注整个计算栈的优化。
- “无辅助损失”的哲学: 负载均衡是 MoE 的核心挑战,传统的辅助损失往往是“药”也是“毒”。DeepSeek-V3 提出的无需辅助损失策略,通过动态偏置调整而非直接的损失项,找到了一个更优雅的解决方案,既实现了负载均衡,又避免了对模型性能的负面影响。这启示我们在设计优化目标时,应尽可能寻找与主任务目标更“和谐”的机制。
- 多词元预测的潜力: MTP 作为一个训练目标,不仅提高了数据效率和模型性能,还为推理加速(推测解码)提供了天然的适配。这种“一石二鸟”的设计理念非常值得借鉴,即在训练阶段引入能同时优化训练和推理效率的机制。
- 知识蒸馏的有效性: 从专门的推理模型(DeepSeek-R1)蒸馏知识到通用 LLM(DeepSeek-V3),显著提升了后者的推理能力。这提供了一种模块化、可插拔的技能注入方法,对于构建多功能、高性能的 LLM 具有重要指导意义。
- 训练稳定性是工程基石: 论文特意强调了整个训练过程的稳定性(没有不可恢复的损失骤升或回滚),这在大规模模型训练中是极其困难且关键的成就。这表明 DeepSeek 团队在底层系统、数值精度和超参数调优方面积累了深厚经验。
批判 (Critique): 尽管 DeepSeek-V3 取得了令人瞩目的成就,但仍有一些潜在问题或可以改进之处:
- 部署复杂度与可访问性: 论文明确指出其部署单元较大,对小型团队可能构成负担。虽然这是大型模型常见问题,但对于开源模型而言,降低部署门槛(例如,提供更轻量级的推理方案、量化版本或更灵活的分布式推理工具)将极大地提高其社区影响力。目前来看,其高昂的硬件要求仍限制了广泛应用。
- FP8 训练的通用性与硬件依赖: FP8 训练的成功依赖于细粒度量化、高精度累积以及对 NVIDIA H800 架构的深度优化。这使其在不同硬件平台(如 AMD 或其他专用 AI 芯片)上的通用性可能受限。未来的研究可以探索更普适的低精度训练技术。此外,论文也提出了对硬件设计的建议,这反过来也说明了当前硬件对极致效率的限制。
- 长上下文的真伪与评估细致度: 尽管 NIAH 测试结果喜人,但 NIAH 是一种相对简单的“大海捞针”任务,难以完全评估模型在 128K 甚至更长上下文中的复杂推理、信息整合和噪音鲁棒性。未来评估应包含更多样化、更具挑战性的长上下文任务,如摘要、多文档问答、长篇故事创作等,以更全面地验证模型的长上下文能力。
- 多词元预测的理论基础深度: 论文提及 MTP 可以“稠密化训练信号”和“预先规划表征”,但缺乏更深入的理论分析来解释其为何有效,以及在何种条件下效果最优。例如,预测深度 的选择、 的动态调整策略等,这些经验性的设置如果能有更强的理论支撑或详尽的消融实验,将更有说服力。
- 知识蒸馏的“黑箱”效应: 从 DeepSeek-R1 蒸馏推理能力虽然有效,但 DeepSeek-R1 本身的架构和训练细节未在此文中详述。这使得蒸馏过程在一定程度上成为一个“黑箱”。未来的工作可以更透明地展示 R1 的能力边界和蒸馏过程中的信息损失/增益。同时,蒸馏导致的输出长度增加是一个需要持续关注的问题,如何在保持性能的同时控制输出冗余是一个实践挑战。
相似论文推荐
基于向量语义检索推荐的相关论文。