这篇文章介绍了 DeepSeek-V3,一个强大的混合专家(MoE)语言模型,具有 6710 亿总参数,每个令牌激活 370 亿参数。以下是文章的主要内容总结:

  1. 模型架构

    • 采用了 多头潜在注意力(MLA) 和 DeepSeekMoE 架构,分别用于高效推理和经济训练。

    • 引入了 无辅助损失的负载平衡策略,以减少负载平衡对模型性能的负面影响。

    • 采用了 多令牌预测(MTP) 训练目标,增强了模型的整体性能。

  2. 训练基础设施

    • 使用 FP8 混合精度训练,显著加速训练并减少 GPU 内存使用。

    • 设计了 DualPipe 算法,用于高效的流水线并行,减少了管道气泡,并通过计算-通信重叠隐藏了大部分通信开销。

    • 优化了跨节点的全对全通信,充分利用了 InfiniBand 和 NVLink 的带宽。

  3. 预训练

    • 在 14.8 万亿个高质量且多样化的令牌上进行了预训练,训练过程非常稳定,未出现不可恢复的损失峰值或回滚。

    • 通过两阶段扩展,将上下文长度从 4K 扩展到 32K,再扩展到 128K。

  4. 后训练

    • 进行了 监督微调(SFT) 和 强化学习(RL),以进一步释放模型的潜力。

    • 从 DeepSeek-R1 系列模型中蒸馏了推理能力,显著提升了模型的数学和代码生成能力。

  5. 评估结果

    • DeepSeek-V3 在多个基准测试中表现优异,成为目前最强的开源模型,尤其在代码和数学任务上表现突出。

    • 在长上下文理解、事实知识、指令遵循等任务上,DeepSeek-V3 与领先的闭源模型(如 GPT-4o 和 Claude-3.5-Sonnet)表现相当。

  6. 训练成本

    • DeepSeek-V3 的训练成本非常经济,完整训练仅需 2.788M H800 GPU 小时,总成本约为 557.6 万美元。

  7. 未来方向

    • 持续优化模型架构,支持无限上下文长度,突破 Transformer 的架构限制。

    • 提升训练数据的数量和质量,探索更多训练信号源。

    • 增强模型的深度思考能力,扩展其推理长度和深度。

    • 开发更全面的模型评估方法,避免过度优化固定基准集。

DeepSeek-V3 通过创新的架构设计、高效的训练框架和低成本训练,成为了当前最强大的开源语言模型之一,并在多个任务上表现出与顶级闭源模型相当的性能。这里是自己的论文阅读记录,感兴趣的话可以参考一下,如果需要阅读原文的话可以看这里,如下所示:

官方项目地址在这里,如下所示:

三天时间已经狂揽6k+的star了,非常强的了。 

摘要

我们提出了 DeepSeek-V3,一个强大的专家混合(MoE)语言模型,总参数为 671B,每个 token 激活 37B 参数。为了实现高效的推理和成本效益的训练,DeepSeek-V3 采用了多头潜在注意力(MLA)和 DeepSeekMoE 架构,这些架构在 DeepSeek-V2 中得到了充分验证。此外,DeepSeek-V3 率先采用了无辅助损失的负载均衡策略,并设置了多 token 预测训练目标以增强性能。我们在 14.8 万亿个多样且高质量的 token 上对 DeepSeek-V3 进行了预训练,随后进行了监督微调和强化学习阶段,以充分发挥其能力。综合评估显示,DeepSeek-V3 优于其他开源模型,并实现了与领先的闭源模型相媲美的性能。尽管其表现出色,DeepSeek-V3 的完整训练仅需 2.788M H800 GPU 小时。此外,其训练过程非常稳定。在整个训练过程中,我们没有遇到任何不可恢复的损失峰值或执行任何回滚。

图 1 | DeepSeek-V3 及其对应模型的基准性能。

目录

  • 1 引言

  • 2 架构

    • 2.1 基本架构

      • 2.1.1 多头潜在注意力

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

    • 2.2 多 token 预测

  • 3 基础设施

    • 3.1 计算集群

    • 3.2 训练框架

      • 3.2.1 DualPipe 和计算-通信重叠

      • 3.2.2 跨节点全对全通信的高效实现

      • 3.2.3 极低内存开销的优化

    • 3.3 FP8 训练

      • 3.3.1 混合精度框架

      • 3.3.2 量化和乘法的精度提升

      • 3.3.3 低精度存储和通信

    • 3.4 推理和部署

      • 3.4.1 预填充

      • 3.4.2 解码

    • 3.5 硬件设计建议

      • 3.5.1 通信硬件

      • 3.5.2 计算硬件

  • 4 预训练

    • 4.1 数据构建

    • 4.2 超参数

    • 4.3 长上下文扩展

    • 4.4 评估

      • 4.4.1 评估基准

      • 4.4.2 评估结果

    • 4.5 讨论

      • 4.5.1 多 token 预测的消融研究

      • 4.5.2 无辅助损失均衡策略的消融研究

      • 4.5.3 批次级负载均衡与序列级负载均衡

5 后训练

5.1 监督微调
5.2 强化学习
5.2.1 奖励模型
5.2.2 组相对策略优化
5.3 评估
5.3.1 评估设置
5.3.2 标准评估
5.3.3 开放式评估
5.3.4 DeepSeek-V3 作为生成式奖励模型

5.4 讨论

5.4.1 从 DeepSeek-R1 蒸馏
5.4.2 自我奖励
5.4.3 多 token 预测评估

6 结论、局限性和未来方向

6.1 贡献和致谢

6.2 低精度训练的消融研究

6.2.1 FP8 与 BF16 训练
6.2.2 块级量化的讨论

6.3 16B 辅助损失和无辅助损失模型的专家专业化模式

1 引言

近年来,大型语言模型(LLMs)经历了快速的迭代和演进(Anthropic, 2024; Google, 2024; OpenAI),逐步缩小了与人工通用智能(AGI)的差距。除了闭源模型,开源模型,包括 DeepSeek 系列(DeepSeek-AI; Guo et al., 2024)、LLaMA 系列(Al@Meta; Touvron et al.)、Qwen 系列(Qwen, 2023)和 Mistral 系列(Jiang et al., 2023; Mistral, 2024),也在取得显著进展,努力缩小与闭源模型的差距。为了进一步推动开源模型能力的边界,我们扩展了模型规模,并推出了 DeepSeek-V3,一个拥有 671B 参数的大型专家混合(MoE)模型,其中每个 token 激活 37B 参数。

我们始终以前瞻性的视角,追求强大的模型性能和经济的成本。因此,在架构方面,DeepSeek-V3 仍然采用多头潜在注意力(MLA)(DeepSeek-AI)以实现高效推理,并采用 DeepSeekMoE(Dai et al., 2024)以实现经济的训练。这两种架构在 DeepSeek-V2(DeepSeek-AI)中得到了验证,证明了它们在保持强大模型性能的同时,能够实现高效的训练和推理。除了基本架构外,我们还实施了两项额外策略以进一步增强模型能力。首先,DeepSeek-V3 率先采用了无辅助损失的负载均衡策略(Wang et al.),旨在最小化因鼓励负载均衡而对模型性能产生的不利影响。其次,DeepSeek-V3 采用了多 token 预测训练目标,我们观察到这可以增强评估基准上的整体性能。

为了实现高效训练,我们支持 FP8 混合精度训练,并对训练框架进行了全面优化。低精度训练已成为高效训练的一种有前途的解决方案(Dettmers et al., 2022; Kalamkar et al., 2019; Narang et al., 2017; Peng et al.),其发展与硬件能力的进步密切相关(Luo et al., 2024; Micikevicius et al., 2022; Rouhani et al.)。在这项工作中,我们引入了 FP8 混合精度训练框架,并首次在超大规模模型上验证了其有效性。通过支持 FP8 计算和存储,我们实现了加速训练和减少 GPU 内存使用。至于训练框架,我们设计了 DualPipe 算法以实现高效的流水线并行,减少了流水线气泡,并通过计算-通信重叠隐藏了大部分通信。这种重叠确保了随着模型的进一步扩展,只要我们保持恒定的计算-通信比,我们仍然可以在节点间使用细粒度专家,同时实现接近零的全对全通信开销。此外,我们还开发了高效的跨节点全对全通信内核,以充分利用 InfiniBand(IB)和 NVLink 的带宽。此外,我们精心优化了内存占用,使得在不使用昂贵的张量并行的情况下训练 DeepSeek-V3 成为可能。结合这些努力,我们实现了高训练效率。

在预训练期间,我们在 14.8T 高质量和多样化的 token 上训练了 DeepSeek-V3。预训练过程非常稳定。在整个训练过程中,我们没有遇到任何不可恢复的损失峰值或执行任何回滚。接下来,我们对 DeepSeek-V3 进行了两阶段的上下文长度扩展。在第一阶段,最大上下文长度扩展到 32K,在第二阶段进一步扩展到 128K。随后,我们对 DeepSeek-V3 的基础模型进行了后训练,包括监督微调(SFT)和强化学习(RL),以使其与人类偏好对齐,并进一步释放其潜力。在后训练阶段,我们从 DeepSeek-R1 系列模型中蒸馏了推理能力,同时仔细保持了模型准确性和生成长度之间的平衡。

我们在全面的基准测试中评估了 DeepSeek-V3。尽管其训练成本经济,综合评估显示,DeepSeek-V3-Base 已成为目前最强的开源基础模型,尤其是在代码和数学方面。其聊天版本也优于其他开源模型,并在一系列标准和开放式基准测试中实现了与领先的闭源模型(包括 GPT-4o 和 Claude-3.5-Sonnet)相媲美的性能。

最后,我们再次强调 DeepSeek-V3 的经济训练成本,总结在表 1 中,这是通过我们优化的算法、框架和硬件的协同设计实现的。在预训练阶段,训练 DeepSeek-V3 每万亿 token 仅需 180K H800 GPU 小时,即在我们拥有 2048 个 H800 GPU 的集群上需要 3.7 天。因此,我们的预训练阶段在不到两个月内完成,成本为 2664K GPU 小时。结合 119K GPU 小时的上下文长度扩展和 5K GPU 小时的后训练,DeepSeek-V3 的完整训练仅需 2.788M GPU 小时。假设 H800 GPU 的租赁价格为每小时 2 美元,我们的总训练成本仅为 557.6 万美元。请注意,上述成本仅包括 DeepSeek-V3 的官方训练,不包括在架构、算法或数据上的先前研究和消融实验的成本。

我们的主要贡献包括:

架构:创新的负载均衡策略和训练目标

  • 在 DeepSeek-V2 的高效架构基础上,我们率先采用了无辅助损失的负载均衡策略,最小化了因鼓励负载均衡而导致的性能下降。

  • 我们研究了多 token 预测(MTP)目标,并证明其对模型性能有益。它还可用于推理加速的推测解码。

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

  • 我们设计了 FP8 混合精度训练框架,并首次在超大规模模型上验证了 FP8 训练的可行性和有效性。

  • 通过算法、框架和硬件的协同设计,我们克服了跨节点 MoE 训练中的通信瓶颈,实现了接近完全的计算-通信重叠。这显著提高了我们的训练效率,降低了训练成本,使我们能够在不增加额外开销的情况下进一步扩展模型规模。

  • 以仅 2.664M H800 GPU 小时的经济成本,我们完成了 DeepSeek-V3 在 14.8T token 上的预训练,生成了目前最强的开源基础模型。预训练后的训练阶段仅需 0.1M GPU 小时。

后训练:从 DeepSeek-R1 蒸馏知识

  • 我们引入了一种创新方法,从长链思维(CoT)模型(特别是 DeepSeek R1 系列模型之一)中蒸馏推理能力到标准 LLMs,特别是 DeepSeek-V3。我们的管道优雅地将 R1 的验证和反思模式融入 DeepSeek-V3,显著提高了其推理性能。同时,我们还控制了 DeepSeek-V3 的输出风格和长度。

核心评估结果总结

  • 知识:(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)上超越了这些模型,突出了其在中文事实知识上的优势。

  • 代码、数学和推理:(1) DeepSeek-V3 在数学相关基准测试中实现了所有非长链思维开源和闭源模型中的最先进性能。值得注意的是,它甚至在特定基准测试如 MATH-500 上超越了 o1-preview,展示了其强大的数学推理能力。(2) 在编码相关任务中,DeepSeek-V3 成为编码竞赛基准测试(如 LiveCodeBench)中的顶级模型,巩固了其在这一领域的领先地位。对于工程相关任务,虽然 DeepSeek-V3 的表现略低于 Claude-Sonnet-3.5,但仍显著领先于所有其他模型,展示了其在多样化技术基准测试中的竞争力。

在本文的其余部分,我们首先详细介绍了 DeepSeek-V3 模型架构(第 2 节)。随后,我们介绍了我们的基础设施,包括计算集群、训练框架、FP8 训练支持、推理部署策略以及我们对未来硬件设计的建议。接下来,我们描述了我们的预训练过程,包括训练数据的构建、超参数设置、长上下文扩展技术、相关评估以及一些讨论(第 4 节)。此后,我们讨论了我们在后训练方面的努力,包括监督微调(SFT)、强化学习(RL)、相应的评估和讨论(第 5 节)。最后,我们总结了这项工作,讨论了 DeepSeek-V3 的现有局限性,并提出了未来研究的潜在方向(第 6 节)。

2 架构

我们首先介绍 DeepSeek-V3 的基本架构,其特点是采用多头潜在注意力(MLA)(DeepSeek-AI)以实现高效推理,并采用 DeepSeekMoE(Dai et al., 2024)以实现经济的训练。然后,我们介绍了多 token 预测(MTP)训练目标,我们观察到这可以增强评估基准上的整体性能。对于其他未明确提及的细节,DeepSeek-V3 遵循 DeepSeek-V2(DeepSeek-AI)的设置。

2.1 基本架构

DeepSeek-V3 的基本架构仍然在 Transformer(Vaswani et al., 2017)框架内。为了实现高效推理和经济的训练,DeepSeek-V3 也采用了 MLA 和 DeepSeekMoE,这些架构在 DeepSeek-V2 中得到了充分验证。与 DeepSeek-V2 相比,一个例外是我们额外引入了无辅助损失的负载均衡策略(Wang et al.)用于 DeepSeekMoE,以减轻因确保负载均衡而导致的性能下降。图 2 展示了 DeepSeek-V3 的基本架构,我们将在本节简要回顾 MLA 和 DeepSeekMoE 的细节。

2.1.1 多头潜在注意力

图 2:DeepSeek-V3 基本架构示意图。遵循 DeepSeek-V2,我们采用 MLA 和 DeepSeekMoE 以实现高效推理和经济的训练。

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

无 token 丢弃。由于有效的负载均衡策略,DeepSeek-V3 在整个训练期间保持了良好的负载均衡。因此,DeepSeek-V3 在训练期间不会丢弃任何 token。此外,我们还实施了特定的部署策略以确保推理负载均衡,因此 DeepSeek-V3 在推理期间也不会丢弃 token。

2.2 多 token 预测

受 Gloeckle et al. (2024) 的启发,我们研究并设置了 DeepSeek-V3 的多 token 预测(MTP)目标,该目标将预测范围扩展到每个位置的多个未来 token。一方面,MTP 目标增加了训练信号的密度,可能提高数据效率。另一方面,MTP 可能使模型能够预先规划其表示,以更好地预测未来 token。图 3 展示了我们的 MTP 实现。与 Gloeckle et al. (2024) 不同,后者使用独立的输出头并行预测 D 个额外 token,我们顺序预测额外 token,并在每个预测深度保持完整的因果链。我们在本节介绍了我们的 MTP 实现的细节。

3 基础设施

3.1 计算集群

DeepSeek-V3 在一个配备 2048 个 NVIDIA H800 GPU 的集群上进行训练。H800 集群中的每个节点包含 8 个 GPU,通过 NVLink 和 NVSwitch 在节点内连接。跨不同节点,使用 InfiniBand(IB)互连以促进通信。

3.2 训练框架

DeepSeek-V3 的训练由 HAI-LLM 框架支持,这是一个由我们的工程师从头开始构建的高效轻量级训练框架。总体而言,DeepSeek-V3 应用了 16 路流水线并行(PP)Qi et al. (),64 路专家并行(EP)Lepikhin et al. (2021) 跨越 8 个节点,以及 ZeRO-1 数据并行(DP)Rajbhandari et al. (2020)。

为了促进 DeepSeek-V3 的高效训练,我们实施了细致的工程优化。首先,我们设计了 DualPipe 算法以实现高效的流水线并行。与现有的 PP 方法相比,DualPipe 具有更少的流水线气泡。更重要的是,它在正向和反向过程中重叠了计算和通信阶段,从而解决了跨节点专家并行引入的沉重通信开销的挑战。其次,我们开发了高效的跨节点全对全通信内核,以充分利用 IB 和 NVLink 带宽,并节省用于通信的流式多处理器(SMs)。最后,我们精心优化了训练期间的内存占用,从而使得在不使用昂贵的张量并行(TP)的情况下训练 DeepSeek-V3 成为可能。

3.2.1 DualPipe 和计算-通信重叠

对于 DeepSeek-V3,跨节点专家并行引入的通信开销导致计算-通信比约为 1:1。为了应对这一挑战,我们设计了一种创新的流水线并行算法,称为 DualPipe,它不仅通过有效重叠正向和反向计算-通信阶段加速了模型训练,还减少了流水线气泡。

DualPipe 的关键思想是在一对独立的正向和反向块中重叠计算和通信。具体来说,我们将每个块分为四个组件:注意力、全对全调度、MLP 和全对全组合。特别地,对于反向块,注意力和 MLP 进一步分为两部分,反向输入和反向权重,如 ZeroBubble Qi et al. ()。此外,我们还有一个 PP 通信组件。如图 4 所示,对于一对正向和反向块,我们重新排列这些组件,并手动调整用于通信与计算的 GPU SMs 的比例。在这种重叠策略中,我们可以确保全对全和 PP 通信在执行期间完全隐藏。鉴于高效的重叠策略,完整的 DualPipe 调度如图 5 所示。它采用双向流水线调度,从流水线的两端同时馈送微批次,并且大部分通信可以完全重叠。这种重叠还确保了随着模型的进一步扩展,只要我们保持恒定的计算-通信比,我们仍然可以在节点间使用细粒度专家,同时实现接近零的全对全通信开销。

图 4:一对独立的正向和反向块的重叠策略(Transformer 块的边界未对齐)。橙色表示正向,绿色表示“反向输入”,蓝色表示“反向权重”,紫色表示 PP 通信,红色表示屏障。全对全和 PP 通信都可以完全隐藏。

3.2.2 跨节点全对全通信的高效实现

为了确保 DualPipe 的足够计算性能,我们定制了高效的跨节点全对全通信内核(包括调度和组合),以节省用于通信的 SMs 数量。内核的实现与 MoE 门控算法和我们集群的网络拓扑共同设计。具体来说,在我们的集群中,跨节点 GPU 通过 IB 完全互连,节点内通信通过 NVLink 处理。NVLink 提供 160 GB/s 的带宽,大约是 IB(50 GB/s)的 3.2 倍。为了有效利用 IB 和 NVLink 的不同带宽,我们将每个 token 最多调度到 4 个节点,从而减少 IB 流量。对于每个 token,当做出路由决策时,它将首先通过 IB 传输到其目标节点上具有相同节点内索引的 GPU。一旦到达目标节点,我们将努力确保它通过 NVLink 即时转发到托管其目标专家的特定 GPU,而不会被随后到达的 token 阻塞。通过这种方式,IB 和 NVLink 的通信完全重叠,每个 token 可以高效地选择每个节点平均 3.2 个专家,而不会因 NVLink 产生额外开销。这意味着,尽管 DeepSeek-V3 在实践中仅选择 8 个路由专家,但它可以将此数量扩展到最多 13 个专家(4 个节点 × 3.2 个专家/节点),同时保持相同的通信成本。总体而言,在这种通信策略下,仅需 20 个 SMs 即可充分利用 IB 和 NVLink 的带宽。

详细来说,我们采用了 warp 专业化技术(Bauer et al., 2014),并将 20 个 SMs 划分为 10 个通信通道。在调度过程中,(1) IB 发送,(2) IB 到 NVLink 转发,和 (3) NVLink 接收由各自的 warps 处理。分配给每个通信任务的 warps 数量根据所有 SMs 的实际工作负载动态调整。类似地,在组合过程中,(1) NVLink 发送,(2) NVLink 到 IB 转发和累积,和 (3) IB 接收和累积也由动态调整的 warps 处理。此外,调度和组合内核与计算流重叠,因此我们还考虑了它们对其他 SM 计算内核的影响。具体来说,我们采用了定制的 PTX(并行线程执行)指令,并自动调整通信块大小,这显著减少了 L2 缓存的使用和对其他 SMs 的干扰。

3.2.3 极低内存开销的优化

为了减少训练期间的内存占用,我们采用了以下技术。

RMSNorm 和 MLA 上投影的重计算:我们在反向传播过程中重新计算所有的 RMSNorm 操作和 MLA 上投影,从而避免了持久化存储它们的输出激活。尽管这会带来一些额外的计算开销,但这一策略显著减少了存储激活所需的内存。

CPU 中的指数移动平均:在训练过程中,我们保留了模型参数的指数移动平均(EMA),以便在学习率衰减后对模型性能进行早期评估。EMA 参数存储在 CPU 内存中,并在每个训练步骤后异步更新。这种方法使我们能够在不需要额外内存或时间开销的情况下维护 EMA 参数。

多令牌预测的共享嵌入和输出头:通过 DualPipe 策略,我们将模型的最浅层(包括嵌入层)和最深层(包括输出头)部署在同一个流水线并行(PP)节点上。这种安排使得多令牌预测模块和主模型之间能够物理共享参数和梯度,从而进一步提高了内存效率。

3.3 FP8 训练

受到低精度训练最新进展的启发(Dettmers et al., 2022; Noune et al., 2022; Peng et al., ),我们提出了一种细粒度的混合精度框架,利用 FP8 数据格式来训练 DeepSeek-V3。尽管低精度训练具有很大的潜力,但它通常受到激活、权重和梯度中异常值的限制(Fishman et al., 2024; He et al.; Sun et al., 2024)。尽管在推理量化方面取得了显著进展(Frantar et al., 2022; Xiao et al., 2023),但在大规模语言模型预训练中成功应用低精度技术的研究相对较少。为了应对这一挑战并有效扩展 FP8 格式的动态范围,我们引入了一种细粒度的量化策略:基于 1×Nc 元素的瓦片分组或基于 Nc​×Nc​ 元素的块分组。在我们的高精度累加过程中,相关的反量化开销得到了大幅缓解,这是实现精确 FP8 通用矩阵乘法(GEMM)的关键。此外,为了进一步减少 MoE 训练中的内存和通信开销,我们以 FP8 格式缓存和分发激活,同时以 BF16 格式存储低精度的优化器状态。我们在与 DeepSeek-V2-Lite 和 DeepSeek-V2 相似的两个模型规模上验证了所提出的 FP8 混合精度框架,训练了大约 1 万亿个令牌(更多细节见附录 B.1)。值得注意的是,与 BF16 基线相比,我们的 FP8 训练模型的相对损失误差始终低于 0.25%,这一水平在训练随机性的可接受范围内。

3.3.1 混合精度框架

基于低精度训练中广泛采用的技术(Kalamkar et al., 2019; Narang et al., 2017),我们提出了一个用于 FP8 训练的混合精度框架。在该框架中,大多数计算密集型操作以 FP8 精度进行,而少数关键操作则战略性地保持其原始数据格式,以平衡训练效率和数值稳定性。整体框架如图 6 所示。

首先,为了加速模型训练,大多数核心计算内核(即 GEMM 操作)以 FP8 精度实现。这些 GEMM 操作接受 FP8 张量作为输入,并生成 BF16 或 FP32 的输出。如图 6 所示,与线性算子相关的三个 GEMM 操作(即前向传播 Fprop、激活反向传播 Dgrad 和权重反向传播 Wgrad)都以 FP8 执行。这一设计理论上比原始的 BF16 方法提高了一倍的计算速度。此外,FP8 的 Wgrad GEMM 允许以 FP8 格式存储激活,以便在反向传播中使用,这显著减少了内存消耗。

尽管 FP8 格式具有效率优势,但某些算子由于对低精度计算敏感,仍然需要更高的精度。此外,一些低成本的算子也可以以更高的精度运行,而对整体训练成本的影响可以忽略不计。因此,经过仔细研究,我们保留了以下组件的原始精度(例如 BF16 或 FP32):嵌入模块、输出头、MoE 门控模块、归一化算子和注意力算子。这些有针对性的高精度保留确保了 DeepSeek-V3 的训练动态稳定性。为了进一步保证数值稳定性,我们将主权重、权重梯度和优化器状态以更高的精度存储。尽管这些高精度组件会带来一些内存开销,但通过在我们的分布式训练系统中高效地跨多个数据并行(DP)节点进行分片,可以将其影响降到最低。

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

基于我们的混合精度 FP8 框架,我们引入了多种策略来增强低精度训练的准确性,重点关注量化方法和乘法过程。

细粒度量化:在低精度训练框架中,由于 FP8 格式的动态范围有限,溢出和下溢是常见的挑战。作为一种标准做法,输入分布通过将输入张量的最大绝对值缩放到 FP8 格式的最大可表示值来对齐(Narang et al., 2017)。这种方法使得低精度训练对激活异常值高度敏感,可能会严重降低量化精度。为了解决这个问题,我们提出了一种细粒度的量化方法,在更细的粒度上应用缩放。如图 7 (a) 所示,(1)对于激活,我们以 1x128 的瓦片为单位(即每个令牌每 128 个通道)进行分组和缩放;(2)对于权重,我们以 128x128 的块为单位(即每 128 个输入通道每 128 个输出通道)进行分组和缩放。这种方法确保量化过程能够更好地适应异常值,通过根据较小的元素组调整缩放比例。在附录 B.2 中,我们进一步讨论了以与权重量化相同的方式对激活进行块分组和缩放时导致的训练不稳定性。

我们方法中的一个关键修改是引入了沿 GEMM 操作内部维度的每组缩放因子。这一功能在标准的 FP8 GEMM 中并不直接支持。然而,结合我们精确的 FP32 累加策略,它可以高效地实现。

值得注意的是,我们的细粒度量化策略与微缩放格式(Rouhani et al., )的理念高度一致,而 NVIDIA 下一代 GPU(Blackwell 系列)的 Tensor Core 已宣布支持具有更小量化粒度的微缩放格式(NVIDIA, )。我们希望我们的设计能够为未来的工作提供参考,以跟上最新的 GPU 架构。

提高累加精度:低精度 GEMM 操作通常面临下溢问题,其准确性在很大程度上依赖于高精度累加,通常以 FP32 精度进行(Kalamkar et al., 2019; Narang et al., 2017)。然而,我们观察到,在 NVIDIA H800 GPU 上,FP8 GEMM 的累加精度仅保留约 14 位,显著低于 FP32 累加精度。当内部维度 K 较大时,这一问题将变得更加明显(Wortsman et al., 2023),这是大规模模型训练中的典型场景,其中批量大小和模型宽度都会增加。以两个随机矩阵的 GEMM 操作为例,在我们的初步测试中,Tensor Core 中有限的累加精度导致最大相对误差接近 2%。尽管存在这些问题,有限的累加精度仍然是少数 FP8 框架(NVIDIA, )中的默认选项,严重限制了训练精度。

为了解决这个问题,我们采用了提升到 CUDA Core 的策略以实现更高精度(Thakkar et al., 2023)。该过程如图 7 (b) 所示。具体来说,在 Tensor Core 上执行 MMA(矩阵乘加)时,中间结果使用有限的位宽进行累加。一旦达到 NC​ 的间隔,这些部分结果将被复制到 CUDA Core 上的 FP32 寄存器中,在那里进行全精度的 FP32 累加。如前所述,我们的细粒度量化沿内部维度 K 应用每组的缩放因子。这些缩放因子可以在 CUDA Core 上高效地作为反量化过程的一部分进行乘法运算,且额外的计算成本最小。

值得注意的是,这一修改降低了单个 warpgroup 的 WGMMA(Warpgroup 级矩阵乘加)指令的发出率。然而,在 H800 架构上,通常可以同时执行两个 WGMMA:当一个 warpgroup 执行提升操作时,另一个可以执行 MMA 操作。这种设计使得两个操作能够重叠,保持 Tensor Core 的高利用率。根据我们的实验,设置 NC=128 个元素(相当于 4 个 WGMMA)是显著提高精度而不引入显著开销的最小累加间隔。

尾数优先于指数:与之前工作采用的混合 FP8 格式(NVIDIA, ; Peng et al., ; Sun et al., )不同,我们在所有张量上采用 E4M3 格式(4 位指数和 3 位尾数)以获得更高的精度。我们将这种方法的可行性归因于我们的细粒度量化策略,即瓦片和块级缩放。通过在较小的元素组上操作,我们的方法有效地在这些分组元素之间共享指数位,从而缓解了有限动态范围的影响。

在线量化:张量级量化框架(NVIDIA, ; Peng et al., )中采用了延迟量化,即保留先前迭代的最大绝对值历史记录以推断当前值。为了确保准确的缩放比例并简化框架,我们在线计算每个 1x128 激活瓦片或 128x128 权重块的最大绝对值。基于此,我们推导出缩放因子,然后将激活或权重在线量化为 FP8 格式。

3.3.3 低精度存储和通信

结合我们的 FP8 训练框架,我们通过将缓存的激活和优化器状态压缩为低精度格式,进一步减少了内存消耗和通信开销。

低精度优化器状态:我们采用 BF16 数据格式来跟踪 AdamW 优化器(Loshchilov and Hutter, 2017)中的第一和第二矩,而不会导致可观察到的性能下降。然而,主权重(由优化器存储)和梯度(用于批量大小累积)仍然以 FP32 格式保留,以确保整个训练过程中的数值稳定性。

低精度激活:如图 6 所示,Wgrad 操作以 FP8 执行。为了减少内存消耗,自然选择是将激活以 FP8 格式缓存,以便在线性算子的反向传播中使用。然而,对于某些算子,我们采取了特殊考虑,以确保低成本的训练精度:

(1) 注意力算子后的线性算子输入:这些激活也用于注意力算子的反向传播,因此对精度敏感。我们为这些激活采用了定制的 E5M6 数据格式。此外,这些激活在反向传播过程中将从 1x128 量化瓦片转换为 128x1 瓦片。为了避免引入额外的量化误差,所有的缩放因子都是 2 的整数幂。

(2) MoE 中 SwiGLU 算子的输入:为了进一步降低内存成本,我们缓存了 SwiGLU 算子的输入,并在反向传播中重新计算其输出。这些激活也以 FP8 格式存储,采用我们的细粒度量化方法,在内存效率和计算精度之间取得了平衡。

低精度通信:通信带宽是 MoE 模型训练中的关键瓶颈。为了缓解这一挑战,我们在 MoE 上投影之前将激活量化为 FP8,然后应用分发组件,这与 MoE 上投影中的 FP8 Fprop 兼容。与注意力算子后的线性算子输入类似,这些激活的缩放因子也是 2 的整数幂。类似的策略也应用于 MoE 下投影之前的激活梯度。对于前向和反向的组合组件,我们将其保留为 BF16,以确保训练管道中关键部分的训练精度。

3.4 推理与部署

我们将 DeepSeek-V3 部署在 H800 集群上,其中每个节点内的 GPU 通过 NVLink 互连,集群中的所有 GPU 通过 InfiniBand(IB)完全互连。为了同时确保在线服务的服务水平目标(SLO)和高吞吐量,我们采用了以下部署策略,将预填充解码阶段分开。

3.4.1 预填充

预填充阶段的最小部署单元由 4 个节点和 32 个 GPU 组成。注意力部分采用 4 路张量并行(TP4)结合序列并行(SP),并与 8 路数据并行(DP8)结合。其较小的 TP 大小(4)限制了 TP 通信的开销。对于 MoE 部分,我们使用 32 路专家并行(EP32),确保每个专家处理足够大的批量大小,从而提高计算效率。对于 MoE 的全对全通信,我们使用与训练相同的方法:首先通过 IB 在节点之间传输令牌,然后通过 NVLink 在节点内的 GPU 之间转发。特别是,我们在浅层中的密集 MLP 中使用 1 路张量并行,以节省 TP 通信。

为了在 MoE 部分实现不同专家之间的负载均衡,我们需要确保每个 GPU 处理大致相同数量的令牌。为此,我们引入了冗余专家的部署策略,即复制高负载专家并将其冗余部署。高负载专家基于在线部署期间收集的统计数据进行检测,并定期调整(例如每 10 分钟)。在确定冗余专家集合后,我们根据观察到的负载仔细重新安排节点内 GPU 上的专家,尽可能在不增加跨节点全对全通信开销的情况下平衡 GPU 之间的负载。对于 DeepSeek-V3 的部署,我们在预填充阶段设置了 32 个冗余专家。对于每个 GPU,除了其原本托管的 8 个专家外,还将托管一个额外的冗余专家。

此外,在预填充阶段,为了提高吞吐量并隐藏全对全和 TP 通信的开销,我们同时处理两个计算工作量相似的微批次,将一个微批次的注意力和 MoE 与另一个微批次的调度和组合重叠。

最后,我们正在探索一种动态冗余策略,即每个 GPU 托管更多专家(例如 16 个专家),但在每个推理步骤中仅激活 9 个专家。在每层的全对全操作开始之前,我们实时计算全局最优的路由方案。鉴于预填充阶段涉及大量计算,计算该路由方案的开销几乎可以忽略不计。

3.4.2 解码

在解码过程中,我们将共享专家视为路由专家。从这个角度来看,每个令牌在路由时将选择 9 个专家,其中共享专家被视为始终被选择的高负载专家。解码阶段的最小部署单元由 40 个节点和 320 个 GPU 组成。注意力部分采用 TP4 结合 SP,并与 DP80 结合,而 MoE 部分使用 EP320。对于 MoE 部分,每个 GPU 仅托管一个专家,64 个 GPU 负责托管冗余专家和共享专家。调度和组合部分的全对全通信通过 IB 上的直接点对点传输实现,以实现低延迟。此外,我们利用 IBGDA(NVIDIA, 2022)技术进一步最小化延迟并提高通信效率。

与预填充类似,我们定期基于在线服务的统计专家负载确定冗余专家集合。然而,由于每个 GPU 仅托管一个专家,因此我们不需要重新安排专家。我们也在探索解码阶段的动态冗余策略。然而,这需要更仔细地优化计算全局最优路由方案的算法,并与调度内核融合以减少开销。

此外,为了提高吞吐量并隐藏全对全通信的开销,我们还在解码阶段探索同时处理两个计算工作量相似的微批次。与预填充不同,解码阶段注意力消耗的时间比例较大。因此,我们将一个微批次的注意力与另一个微批次的调度+MoE+组合重叠。在解码阶段,每个专家的批量大小相对较小(通常在 256 个令牌以内),瓶颈是内存访问而非计算。由于 MoE 部分只需要加载一个专家的参数,内存访问开销最小,因此使用较少的 SM 不会显著影响整体性能。因此,为了避免影响注意力部分的计算速度,我们可以仅分配一小部分 SM 给调度+MoE+组合。

3.5 硬件设计建议

基于我们对全对全通信和 FP8 训练方案的实现,我们向 AI 硬件供应商提出以下芯片设计建议。

3.5.1 通信硬件

在 DeepSeek-V3 中,我们实现了计算和通信之间的重叠,以隐藏计算期间的通信延迟。这显著降低了对通信带宽的依赖,相比于串行计算和通信。然而,当前的通信实现依赖于昂贵的 SM(例如,我们分配了 H800 GPU 中 132 个 SM 中的 20 个用于此目的),这将限制计算吞吐量。此外,使用 SM 进行通信会导致显著的效率低下,因为 Tensor Core 完全未被利用。

目前,SM 主要执行以下任务以完成全对全通信:

  • 在 IB(InfiniBand)和 NVLink 域之间转发数据,同时聚合来自单个 GPU 的、目标为同一节点内多个 GPU 的 IB 流量。

  • 在 RDMA 缓冲区(注册的 GPU 内存区域)和输入/输出缓冲区之间传输数据

  • 执行全对全组合的归约操作

  • 在跨 IB 和 NVLink 域的块数据传输期间管理细粒度的内存布局

我们期望未来的供应商能够开发硬件,将这些通信任务从宝贵的计算单元 SM 中卸载,作为 GPU 协处理器或网络协处理器,类似于 NVIDIA SHARP(Graham et al., 2016)。此外,为了降低应用程序编程的复杂性,我们希望该硬件能够从计算单元的角度统一 IB(横向扩展)和 NVLink(纵向扩展)网络。通过这种统一的接口,计算单元可以轻松地通过提交基于简单原语的通信请求,在整个 IB-NVLink 统一域中完成读取、写入、多播和归约等操作。

3.5.2 计算硬件

Tensor Core 中更高的 FP8 GEMM 累加精度:在 NVIDIA Hopper 架构的当前 Tensor Core 实现中,FP8 GEMM(通用矩阵乘法)采用定点累加,基于最大指数右移对齐尾数乘积。我们的实验表明,它仅使用每个尾数乘积的最高 14 位进行符号填充右移,并截断超出此范围的位。然而,例如,要从 32 个 FP8xFP8 乘法的累加中获得精确的 FP32 结果,至少需要 34 位精度。因此,我们建议未来的芯片设计提高 Tensor Core 中的累加精度,以支持全精度累加,或根据训练和推理算法的精度要求选择合适的累加位宽。这种方法确保误差保持在可接受的范围内,同时保持计算效率。

支持瓦片和块级量化:当前的 GPU 仅支持每张量量化,缺乏对我们瓦片和块级量化等细粒度量化的原生支持。在当前实现中,当达到 NC​ 间隔时,部分结果将从 Tensor Core 复制到 CUDA Core,乘以缩放因子,并添加到 CUDA Core 上的 FP32 寄存器中。尽管结合我们精确的 FP32 累加策略,反量化开销得到了显著缓解,但 Tensor Core 和 CUDA Core 之间的频繁数据移动仍然限制了计算效率。因此,我们建议未来的芯片通过使 Tensor Core 能够接收缩放因子并实现具有组缩放的 MMA 来支持细粒度量化。这样,整个部分和累加和反量化可以直接在 Tensor Core 内完成,直到生成最终结果,避免了频繁的数据移动。

支持在线量化:当前的实现难以有效支持在线量化,尽管我们的研究证明了其有效性。在现有过程中,我们需要从 HBM(高带宽内存)中读取 128 个 BF16 激活值(前一次计算的输出)进行量化,然后将量化的 FP8 值写回 HBM,仅为了再次读取以进行 MMA。为了解决这种低效问题,我们建议未来的芯片将 FP8 转换和 TMA(Tensor 内存加速器)访问集成到单个融合操作中,以便在将激活从全局内存传输到共享内存的过程中完成量化,避免频繁的内存读写。我们还建议支持 warp 级的转换指令以加速,这进一步促进了层归一化和 FP8 转换的更好融合。或者,可以采用近内存计算方法,将计算逻辑放置在 HBM 附近。在这种情况下,BF16 元素可以在从 HBM 读取到 GPU 时直接转换为 FP8,从而将片外内存访问减少约 50%。

支持转置 GEMM 操作:当前架构使得将矩阵转置与 GEMM 操作融合变得繁琐。在我们的工作流程中,前向传播期间的激活被量化为 1x128 FP8 瓦片并存储。在反向传播期间,矩阵需要被读取、反量化、转置、重新量化为 128x1 瓦片,并存储在 HBM 中。为了减少内存操作,我们建议未来的芯片能够在 MMA 操作之前直接从共享内存中转置读取矩阵,适用于训练和推理中所需的精度。结合 FP8 格式转换和 TMA 访问的融合,这一增强将显著简化量化工作流程。

4 预训练

4.1 数据构建

与 DeepSeek-V2 相比,我们通过增加数学和编程样本的比例,并扩展了除英语和中文之外的多语言覆盖范围,优化了预训练语料库。此外,我们的数据处理流程经过优化,以在保持语料库多样性的同时最小化冗余。受 Ding et al. (2024) 的启发,我们实现了文档打包方法以确保数据的完整性,但在训练过程中未引入跨样本的注意力掩码。最终,DeepSeek-V3 的训练语料库由 14.8 万亿个高质量且多样化的令牌组成,使用我们的分词器进行分词。

在 DeepSeekCoder-V2 的训练过程中(DeepSeek-AI, ),我们观察到“中间填充”(Fill-in-Middle, FIM)策略在保持下一个令牌预测能力的同时,能够使模型根据上下文线索准确预测中间文本。与 DeepSeekCoder-V2 一致,我们也在 DeepSeek-V3 的预训练中引入了 FIM 策略。具体来说,我们采用“前缀-后缀-中间”(Prefix-Suffix-Middle, PSM)框架来结构化数据,如下所示:

DeepSeek-V3 的分词器采用字节级 BPE(Shibata et al., 1999),并扩展了 128K 个令牌的词汇表。我们的分词器和训练数据经过修改,以优化多语言压缩效率。此外,与 DeepSeek-V2 相比,新的分词器引入了结合标点符号和换行符的令牌。然而,当模型处理没有终止换行符的多行提示时,这种技巧可能会引入令牌边界偏差(Lundberg, 2023),特别是在少样本评估提示中。为了解决这个问题,我们在训练过程中随机拆分一定比例的此类组合令牌,使模型暴露于更广泛的特殊情况,从而缓解这种偏差。

4.2 超参数设置
4.3 长上下文扩展

图 8 展示了 DeepSeek-V3 在“Needle In A Haystack”(NIAH)测试中的评估结果。DeepSeek-V3 在所有上下文窗口长度(最高 128K)上均表现出色。

4.4 评估
4.4.1 评估基准

DeepSeek-V3 的基础模型在英语和中文为主的多语言语料库上进行预训练,因此我们主要在英语和中文以及多语言基准上评估其性能。我们的评估基于集成在 HAI-LLM 框架中的内部评估框架。考虑的基准分类如下,其中下划线的基准为中文,双下划线的基准为多语言:

多学科选择题数据集包括 MMLU与我们之前的工作(DeepSeek-AI, , )一致,我们对包括 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)作为指标,以确保在使用不同分词器的模型之间进行公平比较。

4.4.2 评估结果

在表 3 中,我们将 DeepSeek-V3 的基础模型与其他代表性的开源基础模型进行了比较,包括 DeepSeek-V2-Base(DeepSeek-AI, )(我们之前的发布)、Qwen2.5 72B Base(Qwen, )和 LLaMA-3.1 405B Base(Al@Meta, )。我们使用内部评估框架评估所有这些模型,并确保它们共享相同的评估设置。请注意,由于我们的评估框架在过去几个月中的变化,DeepSeek-V2-Base 的性能与我们之前报告的结果略有不同。总体而言,DeepSeek-V3-Base 在大多数基准上全面超越了 DeepSeek-V2-Base 和 Qwen2.5 72B Base,并且在大多数基准上超越了 LLaMA-3.1 405B Base,基本上成为了最强的开源模型。

从更详细的角度来看,我们将 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 相比,这是最大的开源模型,激活参数是 DeepSeek-V3-Base 的 11 倍,DeepSeek-V3-Base 在多语言、代码和数学基准上也表现出更好的性能。在英语和中文语言基准上,DeepSeek-V3-Base 表现出竞争性或更好的性能,尤其是在 BBH、MMLU 系列、DROP、C-Eval、CMMLU 和 CCPM 上表现突出。

由于我们高效的架构和全面的工程优化,DeepSeek-V3 实现了极高的训练效率。在我们的训练框架和基础设施下,训练 DeepSeek-V3 每万亿令牌仅需 180K H800 GPU 小时,这比训练 72B 或 405B 密集模型的成本要低得多。

4.5 讨论
4.5.1 多令牌预测的消融研究

在表 4 中,我们展示了多令牌预测(MTP)策略的消融结果。具体来说,我们在两个不同规模的基线模型上验证了 MTP 策略。在小规模上,我们训练了一个包含 15.7B 总参数的基线 MoE 模型,训练了 1.33T 个令牌。在大规模上,我们训练了一个包含 228.7B 总参数的基线 MoE 模型,训练了 540B 个令牌。在此基础上,保持训练数据和其他架构不变,我们附加了一个 1 层深度的 MTP 模块,并训练了两个带有 MTP 策略的模型进行比较。请注意,在推理过程中,我们直接丢弃 MTP 模块,因此比较模型的推理成本完全相同。从表中可以看出,MTP 策略在大多数评估基准上持续提升了模型性能。

4.5.2 无辅助损失平衡策略的消融研究

在表 5 中,我们展示了无辅助损失平衡策略的消融结果。我们在两个不同规模的基线模型上验证了这一策略。在小规模上,我们训练了一个包含 15.7B 总参数的基线 MoE 模型,训练了 1.33T 个令牌。在大规模上,我们训练了一个包含 228.7B 总参数的基线 MoE 模型,训练了 578B 个令牌。这两个基线模型都纯粹使用辅助损失来鼓励负载平衡,并使用带有 top-K 亲和力归一化的 sigmoid 门控函数。它们的辅助损失强度控制超参数与 DeepSeek-V2-Lite 和 DeepSeek-V2 相同。在这两个基线模型的基础上,保持训练数据和其他架构不变,我们移除了所有辅助损失,并引入了无辅助损失平衡策略进行比较。从表中可以看出,无辅助损失策略在大多数评估基准上持续实现了更好的模型性能。

4.5.3 批次级负载平衡与序列级负载平衡

无辅助损失平衡与序列级辅助损失的关键区别在于它们的平衡范围:批次级与序列级。与序列级辅助损失相比,批次级平衡施加了更灵活的约束,因为它不强制在每个序列内实现域内平衡。这种灵活性使得专家能够更好地专注于不同的领域。为了验证这一点,我们记录并分析了 16B 辅助损失基线模型和 16B 无辅助损失模型在 Pile 测试集上不同领域的专家负载。如图 9 所示,我们观察到无辅助损失模型表现出更大的专家专业化模式,符合预期。

为了进一步研究这种灵活性与模型性能优势之间的相关性,我们额外设计并验证了一种批次级辅助损失,该损失鼓励每个训练批次内的负载平衡,而不是每个序列内的负载平衡。实验结果表明,当达到相似的批次级负载平衡水平时,批次级辅助损失也可以实现与无辅助损失方法相似的模型性能。具体来说,在我们使用 1B MoE 模型的实验中,验证损失分别为:2.258(使用序列级辅助损失)、2.253(使用无辅助损失方法)和 2.253(使用批次级辅助损失)。我们在 3B MoE 模型上也观察到了类似的结果:使用序列级辅助损失的模型验证损失为 2.085,而使用无辅助损失方法或批次级辅助损失的模型验证损失均为 2.080。

此外,尽管批次级负载平衡方法显示出持续的性能优势,但它们也面临两个潜在的效率挑战:(1)某些序列或小批次内的负载不平衡,以及(2)推理过程中由领域转移引起的负载不平衡。第一个挑战通过我们使用大规模专家并行和数据并行的训练框架自然解决,这保证了每个微批次的规模较大。对于第二个挑战,我们还设计并实现了一个带有冗余专家部署的高效推理框架,如第 3.4 节所述,以克服这一问题。

5 后训练

5.1 监督微调

我们精心策划了指令微调数据集,包含 1.5M 个实例,涵盖多个领域,每个领域采用针对其特定需求的数据创建方法。

推理数据:对于推理相关的数据集,包括数学、代码竞赛问题和逻辑谜题,我们通过内部 DeepSeek-R1 模型生成数据。具体来说,虽然 R1 生成的数据表现出较高的准确性,但它存在过度思考、格式不佳和长度过长的问题。我们的目标是平衡 R1 生成推理数据的高准确性和常规格式推理数据的清晰性和简洁性。

为了建立我们的方法论,我们首先为特定领域(如代码、数学或一般推理)开发专家模型,使用结合监督微调(SFT)和强化学习(RL)的训练管道。该专家模型作为最终模型的数据生成器。训练过程涉及为每个实例生成两种不同类型的 SFT 样本:第一种将问题与其原始响应配对,格式为 <问题, 原始响应>;第二种将系统提示与问题和 R1 响应配对,格式为 <系统提示, 问题, R1 响应>。

系统提示经过精心设计,包含指导模型生成带有反思和验证机制的响应的指令。在 RL 阶段,模型利用高温采样生成响应,整合了 R1 生成数据和原始数据的模式,即使在没有明确系统提示的情况下也是如此。经过数百个 RL 步骤后,中间 RL 模型学会了整合 R1 模式,从而战略性地提升整体性能。

在完成 RL 训练阶段后,我们实施拒绝采样以筛选高质量的 SFT 数据用于最终模型,其中专家模型作为数据生成源。这种方法确保最终训练数据保留了 DeepSeek-R1 的优势,同时生成简洁有效的响应。

非推理数据:对于非推理数据,如创意写作、角色扮演和简单问答,我们使用 DeepSeek-V2.5 生成响应,并聘请人类标注员验证数据的准确性和正确性。

SFT 设置:我们使用 SFT 数据集对 DeepSeek-V3-Base 进行两个 epoch 的微调,采用余弦衰减学习率调度,从 5×10−6 开始,逐渐降低到 1×10−6。在训练过程中,每个单一序列由多个样本打包而成。然而,我们采用样本掩码策略,确保这些示例保持隔离且相互不可见。

5.2 强化学习
5.2.1 奖励模型

我们在 RL 过程中采用了基于规则的奖励模型(RM)和基于模型的 RM。

基于规则的 RM:对于可以通过特定规则验证的问题,我们采用基于规则的奖励系统来确定反馈。例如,某些数学问题具有确定性的结果,我们要求模型在指定格式(例如在方框中)提供最终答案,从而允许我们应用规则来验证正确性。类似地,对于 LeetCode 问题,我们可以使用编译器根据测试用例生成反馈。通过尽可能利用基于规则的验证,我们确保了更高的可靠性,因为这种方法不易被操纵或利用。

基于模型的 RM:对于具有自由形式真实答案的问题,我们依赖奖励模型来确定响应是否符合预期的真实答案。相反,对于没有明确真实答案的问题,例如涉及创意写作的问题,奖励模型的任务是根据问题和相应的答案提供反馈。奖励模型从 DeepSeek-V3 SFT 检查点进行训练。为了增强其可靠性,我们构建了偏好数据,不仅提供最终奖励,还包括导致奖励的思维链。这种方法有助于减轻特定任务中奖励黑客攻击的风险。

5.2.2 组相对策略优化
5.3 评估
5.3.1 评估设置

评估基准:除了用于基础模型测试的基准外,我们还在 IFEval(Zhou et al., 2023)、FRAMES(Krishna et al., 2024)、LongBench v2(Bai et al., 2024)、GPQA(Rein et al., 2023)、SimpleQA(OpenAI, )、C-SimpleQA(He et al., 2024)、SWE-Bench Verified(OpenAI, )、Aider 1、LiveCodeBench(Jain et al., 2024)(2024 年 8 月至 11 月的问题)、Codeforces 2、中国高中数学奥林匹克(CNMO 2024)3 和美国数学邀请赛 2024(AIME 2024)(MAA, 2024)上进一步评估了指令模型。

对比基线:我们对我们的聊天模型进行了全面评估,对比了多个强大的基线,包括 DeepSeek-V2-0506、DeepSeek-V2.5-0905、Qwen2.5 72B Instruct、LLaMA-3.1 405B Instruct、Claude-Sonnet-3.5-1022 和 GPT-4o-0513。对于 DeepSeek-V2 模型系列,我们选择了最具代表性的变体进行比较。对于闭源模型,评估通过其各自的 API 进行。

详细评估配置:对于包括 MMLU、DROP、GPQA 和 SimpleQA 在内的标准基准,我们采用了 simple-evals 框架4 中的评估提示。对于 MMLU-Redux,我们在零样本设置中使用了 Zero-Eval 提示格式 Lin (2024)。对于其他数据集,我们遵循其原始评估协议,使用数据集创建者提供的默认提示。对于代码和数学基准,HumanEval-Mul 数据集包括 8 种主流编程语言(Python、Java、Cpp、C#、JavaScript、TypeScript、PHP 和 Bash)。我们使用 CoT 和非 CoT 方法评估模型在 LiveCodeBench 上的表现,其中数据收集自 2024 年 8 月至 11 月。Codeforces 数据集使用参赛者百分比进行衡量。SWE-Bench verified 使用无代理框架 Xia et al. (2024) 进行评估。我们使用“diff”格式评估 Aider 相关基准。对于数学评估,AIME 和 CNMO 2024 在温度为 0.7 的情况下进行评估,结果在 16 次运行中取平均值,而 MATH-500 使用贪婪解码。我们允许所有模型在每个基准上最多输出 8192 个令牌。

5.3.2 标准评估

表 6 展示了评估结果,表明 DeepSeek-V3 是最佳的开源模型,并且在面对前沿的闭源模型(如 GPT-4o 和 Claude-3.5-Sonnet)时也表现出竞争力。

英语基准:MMLU 是一个广泛认可的基准,旨在评估大语言模型在多样化知识领域和任务中的表现。DeepSeek-V3 表现出竞争力,与 LLaMA-3.1-405B、GPT-4o 和 Claude-Sonnet 3.5 等顶级模型持平,同时显著优于 Qwen2.5 72B。此外,DeepSeek-V3 在 MMLU-Pro 上表现出色,这是一个更具挑战性的教育知识基准,紧随 Claude-Sonnet 3.5 之后。在 MMLU-Redux 上,这是 MMLU 的改进版本,DeepSeek-V3 超越了其他模型。此外,在 GPQA-Diamond 上,这是一个博士级别的评估测试平台,DeepSeek-V3 取得了显著的成绩,仅次于 Claude 3.5 Sonnet,并大幅领先于其他竞争对手。

在长上下文理解基准(如 DROP、LongBench v2 和 FRAMES)上,DeepSeek-V3 继续展示其作为顶级模型的地位。它在 DROP 的 3-shot 设置中取得了令人印象深刻的 91.6 F1 分数,超越了该类别中的所有其他模型。在 FRAMES 上,这是一个需要超过 100k 令牌上下文的问题回答基准,DeepSeek-V3 紧随 GPT-4o,同时大幅领先于其他模型。这展示了 DeepSeek-V3 在处理极长上下文任务中的强大能力。DeepSeek-V3 的长上下文能力进一步通过其在 LongBench v2 上的最佳表现得到验证,该数据集在 DeepSeek V3 发布前几周刚刚发布。在事实知识基准 SimpleQA 上,DeepSeek-V3 落后于 GPT-4o 和 Claude-Sonnet,这主要是由于其设计重点和资源分配。DeepSeek-V3 将更多训练令牌用于学习中文知识,从而在 C-SimpleQA 上表现出色。在指令遵循基准上,DeepSeek-V3 显著优于其前身 DeepSeek-V2 系列,展示了其改进的理解和遵守用户定义格式约束的能力。

代码和数学基准:编码是 LLM 面临的一项具有挑战性且实用的任务,涵盖了以工程为重点的任务(如 SWE-Bench-Verified 和 Aider)以及算法任务(如 HumanEval 和 LiveCodeBench)。在工程任务中,DeepSeek-V3 落后于 Claude-Sonnet-3.5-1022,但显著优于开源模型。开源的 DeepSeek-V3 有望推动编码相关工程任务的进步。通过提供其强大能力的访问权限,DeepSeek-V3 可以推动软件工程和算法开发等领域的创新和改进,赋能开发者和研究人员,推动开源模型在编码任务中的边界。在算法任务中,DeepSeek-V3 表现出色,在 HumanEval-Mul 和 LiveCodeBench 等基准上超越了所有基线。这一成功归功于其先进的知识蒸馏技术,有效增强了其在算法任务中的代码生成和问题解决能力。

在数学基准上,DeepSeek-V3 表现出色,显著超越了基线模型,为非 o1 类模型设定了新的最先进水平。具体来说,在 AIME、MATH-500 和 CNMO 2024 上,DeepSeek-V3 比第二好的模型 Qwen2.5 72B 高出约 10% 的绝对分数,这对于如此具有挑战性的基准来说是一个显著的差距。这一显著能力突显了从 DeepSeek-R1 蒸馏技术的有效性,该技术已被证明对非 o1 类模型非常有益。

中文基准:Qwen 和 DeepSeek 是两个具有强大中英文支持的代表性模型系列。在事实基准 Chinese SimpleQA 上,DeepSeek-V3 比 Qwen2.5-72B 高出 16.4 分,尽管 Qwen2.5 在 18T 令牌的更大语料库上进行了训练,比 DeepSeek-V3 预训练的 14.8T 令牌多出 20%。

在 C-Eval 上,这是一个代表性的中文教育知识评估基准,以及 CLUEWSC(中文 Winograd 模式挑战)上,DeepSeek-V3 和 Qwen2.5-72B 表现出相似的水平,表明这两个模型在具有挑战性的中文语言推理和教育任务上均得到了良好优化。

5.3.3 开放式评估

除了标准基准外,我们还使用 LLM 作为评判者对开放式生成任务进行了评估,结果如表 7 所示。具体来说,我们遵循 AlpacaEval 2.0 Dubois et al. (2024) 和 Arena-Hard Li et al. () 的原始配置,使用 GPT-4-Turbo-1106 作为评判者进行成对比较。在 Arena-Hard 上,DeepSeek-V3 对基线 GPT-4-0314 的胜率超过 86%,与 Claude-Sonnet-3.5-1022 等顶级模型持平。这突显了 DeepSeek-V3 在处理复杂提示(包括编码和调试任务)方面的强大能力。此外,DeepSeek-V3 实现了开源模型在 Arena-Hard 基准上首次超过 85% 的里程碑。这一成就显著缩小了开源模型与闭源模型之间的性能差距,为开源模型在具有挑战性的领域中能够实现的目标设定了新标准。

同样,DeepSeek-V3 在 AlpacaEval 2.0 上展示了出色的表现,超越了闭源和开源模型。这展示了其在写作任务和处理简单问答场景中的卓越能力。值得注意的是,它比 DeepSeek-V2.5-0905 高出 20%,突显了其在处理简单任务方面的显著改进,并展示了其进步的有效性。

5.3.4 DeepSeek-V3 作为生成式奖励模型

我们将 DeepSeek-V3 的判断能力与最先进的模型(即 GPT-4o 和 Claude-3.5)进行了比较。表 8 展示了这些模型在 RewardBench Lambert et al. (2024) 上的表现。DeepSeek-V3 与 GPT-4o-0806 和 Claude-3.5-Sonnet-1022 的最佳版本表现相当,同时超越了其他版本。此外,DeepSeek-V3 的判断能力也可以通过投票技术进一步增强。因此,我们使用 DeepSeek-V3 结合投票来提供对开放式问题的自我反馈,从而提高对齐过程的有效性和鲁棒性。

5.4 讨论
5.4.1 从 DeepSeek-R1 蒸馏

我们基于 DeepSeek-V2.5 消融了从 DeepSeek-R1 蒸馏的贡献。基线模型在短 CoT 数据上进行训练,而其竞争对手使用上述专家检查点生成的数据。

表 9 展示了蒸馏数据的有效性,显示了在 LiveCodeBench 和 MATH-500 基准上的显著改进。我们的实验揭示了一个有趣的权衡:蒸馏带来了更好的性能,但也显著增加了平均响应长度。为了在模型准确性和计算效率之间保持平衡,我们仔细选择了 DeepSeek-V3 在蒸馏中的最佳设置。

我们的研究表明,从推理模型中进行知识蒸馏为后训练优化提供了一个有前景的方向。虽然我们目前的工作集中在从数学和编码领域蒸馏数据,但这种方法在需要复杂推理的其他认知任务中显示出潜力。在这些特定领域展示的有效性表明,长 CoT 蒸馏对于增强模型在其他领域的性能可能具有重要价值。进一步探索这一方法在不同领域的应用仍然是未来研究的重要方向。

5.4.2 自我奖励

奖励在 RL 中起着关键作用,指导优化过程。在通过外部工具验证较为直接的领域(如某些编码或数学场景)中,RL 表现出色。然而,在更一般的场景中,通过硬编码构建反馈机制是不切实际的。在 DeepSeek-V3 的开发过程中,对于这些更广泛的上下文,我们采用了宪法 AI 方法(Bai et al., 2022),利用 DeepSeek-V3 自身的投票评估结果作为反馈源。这种方法产生了显著的对齐效果,显著提升了 DeepSeek-V3 在主观评估中的表现。通过整合额外的宪法输入,DeepSeek-V3 可以朝着宪法方向优化。我们相信,这种将补充信息与 LLM 作为反馈源相结合的范式至关重要。LLM 作为一个多功能处理器,能够将来自多样化场景的非结构化信息转化为奖励,最终促进 LLM 的自我改进。除了自我奖励外,我们还致力于发现其他通用且可扩展的奖励方法,以持续提升模型在一般场景中的能力。

5.4.3 多令牌预测评估

与仅预测下一个单一令牌不同,DeepSeek-V3 通过 MTP 技术预测接下来的 2 个令牌。结合推测解码框架(Leviathan et al., 2023; Xia et al., 2023),它可以显著加速模型的解码速度。一个自然的问题是,额外预测的令牌的接受率如何。根据我们的评估,第二个令牌预测的接受率在不同生成主题中介于 85% 到 90% 之间,表现出了一致的可靠性。这种高接受率使 DeepSeek-V3 能够实现显著提升的解码速度,提供 1.8 倍的 TPS(每秒令牌数)。

6 结论、局限性与未来方向

在本文中,我们介绍了 DeepSeek-V3,这是一个具有 671B 总参数和 37B 激活参数的大型 MoE 语言模型,训练了 14.8T 个令牌。除了 MLA 和 DeepSeekMoE 架构外,它还率先提出了无辅助损失的负载平衡策略,并设定了多令牌预测训练目标以增强性能。由于支持 FP8 训练和细致的工程优化,DeepSeek-V3 的训练具有成本效益。后训练还成功地从 DeepSeek-R1 系列模型中蒸馏了推理能力。综合评估表明,DeepSeek-V3 已成为目前最强的开源模型,并且在性能上与领先的闭源模型(如 GPT-4o 和 Claude-3.5-Sonnet)相当。尽管其表现出色,但它仍保持了经济的训练成本。其完整训练(包括预训练、上下文扩展和后训练)仅需 2.788M H800 GPU 小时。

在承认其强大性能和成本效益的同时,我们也认识到 DeepSeek-V3 存在一些局限性,尤其是在部署方面。首先,为了确保高效的推理,DeepSeek-V3 的推荐部署单元相对较大,这可能会对小型团队造成负担。其次,尽管我们的 DeepSeek-V3 部署策略实现了比 DeepSeek-V2 快两倍的端到端生成速度,但仍存在进一步优化的潜力。幸运的是,随着更先进硬件的发展,这些局限性有望自然得到解决。

DeepSeek 始终坚持开源模型的长期主义路线,旨在稳步接近 AGI(人工通用智能)的终极目标。未来,我们计划在以下方向进行战略性投资研究:

  • 我们将持续研究和改进我们的模型架构,旨在进一步提高训练和推理效率,努力实现对无限上下文长度的高效支持。此外,我们将尝试突破 Transformer 的架构限制,从而推动其建模能力的边界。

  • 我们将持续迭代训练数据的数量和质量,并探索引入额外的训练信号源,旨在推动数据在更全面维度上的扩展。

  • 我们将持续探索和迭代模型的深度思考能力,旨在通过扩展其推理长度和深度来增强其智能和问题解决能力。

  • 我们将探索更全面和多维的模型评估方法,以防止在研究过程中过度优化固定基准集的倾向,这可能会对模型能力的评估产生误导,影响我们的基础判断。