备注:回顾看过的论文,对目前看过的DeepSeek-V3进行整理在此总结(注:笔者水平有限,若有描述不当之处,欢迎大家留言。后期会继续更新LLM系列,文生图系列,VLM系列,agent系列等。如果看完有收获,可以【点赞】【收藏】【加粉】)

阐述的思维逻辑:会给出论文中的核心点和核心点的描述。   

一句话总结:DeepSeek-V3 是目前极具代表性的一款超大规模 MoE 语言模型,通过 MLA + DeepSeekMoE 架构(沿用deepseekv2[2])、无辅助损失负载均衡multi-token 预测目标FP8 混合精度训练等多项创新,实现了 强性能 + 高训练 / 推理效率 + 较低训练成本 的平衡。

技术亮点

1 无辅助损失负载均衡首创通过动态调整路由器的偏差项$b_i$实现专家负载均衡。避免了传统辅助损失(Auxiliary Loss)对模型精度的干扰,最大限度地减少了为平衡负载而牺牲的性能。

2 多 Token 预测(MTP)目标: 将训练目标从单 Token 预测扩展到多 Token 预测。经验证能显著提升模型整体性能(如知识、推理)。

3 MoE 与 MLA 的高效融合:沿用 V2 的两大效率引擎:MLA (Multi-head Latent Attention,通过 KV 压缩降低推理延迟) 和 DeepSeekMoE (细粒度专家分割与共享专家,提升参数效率)。

备注:后续为机器翻译·

摘要

        我们提出了 DeepSeek-V3,一种强大的混合专家(MoE)语言模型,具有 671B 总参数,其中每个 token 激活 37B 参数。为了实现高效推理和具有成本效益的训练,DeepSeek-V3 采用了在 DeepSeek-V2 中经过充分验证的多头潜在注意力(MLA)和 DeepSeekMoE 架构。此外,DeepSeek-V3 首创了一种无辅助损失的负载平衡策略,并设置了多 token 预测训练目标,以实现更强的性能。我们在 14.8 万亿多样化且高质量的 token 上预训练了 DeepSeek-V3,随后进行了监督微调和强化学习阶段,以充分挖掘其能力。综合评估结果表明,DeepSeek-V3 超越了其他开源模型,并达到了与领先闭源模型相当的性能。尽管表现出色,DeepSeek-V3 完全训练所需的 GPU 时间仅为 2.788M H800 GPU 小时。此外,它的训练过程非常稳定。在整个训练过程中,我们没有遇到任何无法恢复的损失激增,也没有进行任何回滚。模型检查点可在 https://github.com/deepseek-ai/DeepSeek-V3 获取。

图1 DeepSeek-V3 及其同类产品的基准性能

一 介绍    

        近年来,大规模语言模型(LLMs) 正在经历快速迭代和进化(Anthropic,2024;Google,2024;OpenAI,2024a),逐步缩小了与**人工通用智能(AGI)**的差距。除了闭源模型,开源模型也在取得重大进展,包括 DeepSeek 系列(DeepSeek-AI,2024a,b,c;Guo 等人,2024)、LLaMA 系列(AI@Meta,2024a,b;Touvron 等人,2023a,b)、Qwen 系列(Qwen,2023,2024a,b)和 Mistral 系列(Jiang 等,2023;Mistral,2024)也在努力缩小与闭源同行的差距。为了进一步拓展开源模型功能的边界,我们扩展了我们的模型,并推出了 DeepSeek-V3,这是一个具有 671B 个参数的大型混合专家(MoE)模型,其中每个令牌激活 37B 个参数。

        凭借前瞻性的视角,我们始终追求强大的模型性能和经济的成本。因此,在架构方面,DeepSeek-V3 仍然采用多头潜在注意力(MLA)(DeepSeek-AI,2024c)进行高效推理,并采用 DeepSeekMoE(Dai 等,2024)进行经济高效的训练。这两种架构已在 DeepSeek-V2(DeepSeek-AI,2024c)中得到验证,证明了它们在实现高效训练和推理的同时保持稳健模型性能的能力。除了基本架构之外,我们还实施了两个额外的策略来进一步增强模型功能。首先,DeepSeek-V3 开创了一种用于负载平衡的辅助无损耗策略(Wang 等人,2024a),旨在最大限度地减少鼓励负载平衡对模型性能的不利影响。其次,DeepSeek-V3 采用了多令牌预测训练目标,我们观察到这提高了评估基准的整体性能。

        为了实现高效训练,我们支持 FP8 混合精度训练,并对训练框架进行全面优化。低精度训练已成为高效训练的有前景的解决方案(Dettmers 等,2022;Kalamkar 等人,2019;Narang 等人,2017;Peng 等,2023b),其演变与硬件能力的进步密切相关(Luo 等,2024;Micikevicius 等,2022;Rouhani 等,2023a)。在这项工作中,我们引入了 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 只需要 180K H800 GPU 小时,即在我们拥有 2048 个 H800 GPU 的集群上需要 3.7 天。因此,我们的预训练阶段在不到两个月的时间内完成,花费 2664K GPU 小时。结合 119K GPU 小时用于上下文长度扩展和 5K GPU 小时用于训练后,DeepSeek-V3 的完整训练仅花费 278.8 万 GPU 小时。假设 H800 GPU 的租金为每 GPU 小时 2 美元,我们的总培训成本仅为 557.6 万美元。需要注意的是,上述费用仅包括 DeepSeek-V3 的正式训练,不包括前期对架构、算法或数据的研究和消融实验相关的费用。

表1 DeepSeek-V3 的训练成本,假设 H800 的租用价格为每 GPU 小时 2 美元

        我们的主要贡献包括:

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

  •  在 DeepSeek-V2【2】 高效架构的基础上,我们首创了一种无辅助损失的负载平衡策略,最大限度地减少了鼓励负载平衡所带来的性能下降。

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

        预训练:追求终极训练效率

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

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

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

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

  • 我们引入了一种创新的方法,将推理能力从长链思维(CoT)模型中蒸馏出来,特别是从 DeepSeek R1 系列模型中蒸馏至标准的 LLM,特别是 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 和 Chinese SimpleQA 中的开源模型中表现优越。虽然在英语事实知识(SimpleQA)上稍逊于 GPT-4o 和 Claude-Sonnet-3.5,但在中文事实知识(Chinese SimpleQA)上超越了这些模型,突显了其在中文事实知识上的强大优势。

  • 代码、数学和推理:(1)DeepSeek-V3 在所有非长链思维(long-CoT)开源和闭源模型中的数学基准上表现出色。特别是在 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 节)。

二 架构

        我们首先介绍了DeepSeek-V3的基本架构,其特征是用于高效推理的多头潜在注意力(MLA)(DeepSeek AI,2024c)和用于经济训练的DeepSeekMoE(Dai等人,2024)。然后,我们提出了一个多令牌预测(MTP)训练目标,我们观察到该目标可以提高评估基准的整体性能。对于其它未明确提及的,DeepSeek-V3 延续了 DeepSeek-V2 的设计方案。

2.1 基本架构

       DeepSeek-V3 的基本架构仍然属于 Transformer(Vaswani et al., 2017)框架。为了实现高效推理和经济训练,DeepSeek-V3 沿用了已被 DeepSeek-V2 充分验证的 MLADeepSeekMoE 架构。与 DeepSeek-V2 相比,一个例外是我们额外引入了无辅助损失(auxiliary-loss-free)的负载均衡策略(Wang et al., 2024a)用于 DeepSeekMoE,以减轻为确保负载均衡而带来的性能下降。图 2 展示了 DeepSeek-V3 的基本架构,本节我们将简要回顾MLA和DeepSeekMoE的细节。

图2展示了 DeepSeek-V3 的基本架构。与DeepSeek-V2 类似,我们采用了MLA 和DeepseekMoE 来实现高效的推理和经济的训练,
2.1.1  多头潜在注意力

        对于注意力,DeepSeek-V3 采用了 MLA 架构。设 𝑑 为嵌入维度,𝑛ℎ 为注意力头的数量,𝑑ℎ 为每个头的维度,h𝑡 ∈ R𝑑 为给定注意力层中第 𝑡 个令牌的注意力输入。MLA 的核心是对注意力键和值进行低秩联合压缩,以减少推理过程中的键值(KV)缓存:

        其中 c𝐾𝑉𝑡 ∈ R𝑑𝑐 为键和值的压缩潜在向量;𝑑𝑐(≪ 𝑑ℎ𝑛ℎ)表示 KV 压缩维度;𝑊𝐷𝐾𝑉 ∈ R𝑑𝑐×𝑑 表示降维矩阵;𝑊𝑈𝐾,𝑊𝑈𝑉 ∈ R𝑑ℎ𝑛ℎ×𝑑𝑐 分别为键和值的上升投影矩阵;𝑊𝐾𝑅 ∈ R𝑑𝑅ℎ×𝑑 是用于生成携带旋转位置编码(RoPE)(Su 等,2024)的解耦键的矩阵;RoPE(·) 表示应用 RoPE 矩阵的操作;[·; ·] 表示拼接操作。需要注意的是,对于 MLA,只有蓝框中的向量(即 c𝐾𝑉𝑡 和 k𝑅𝑡)在生成过程中需要被缓存,这大大减少了 KV 缓存的使用,同时保持了与标准多头注意力(MHA)(Vaswani 等,2017)相当的性能。

        对于注意力查询,我们还进行低秩压缩,这可以在训练期间减少激活内存:

        其中,c𝑄𝑡 ∈ R𝑑′𝑐 是查询的压缩潜在向量;𝑑′𝑐(≪ 𝑑ℎ𝑛ℎ)表示查询压缩维度;𝑊𝐷𝑄 ∈ R𝑑′𝑐×𝑑,𝑊𝑈𝑄 ∈ R𝑑ℎ𝑛ℎ×𝑑′𝑐 分别为查询的降维矩阵和上升投影矩阵;𝑊𝑄𝑅 ∈ R𝑑𝑅ℎ𝑛ℎ×𝑑′𝑐 是用于生成携带 RoPE 的解耦查询的矩阵。

        最终,注意力查询(q𝑡,𝑖)、键(k𝑗,𝑖)和值(v𝐶𝑗,𝑖)被组合以产生最终的注意力输出 u𝑡:

        其中 𝑊𝑂 ∈ R𝑑×𝑑ℎ𝑛ℎ 表示输出投影矩阵。

2.1.2 无辅助损耗的负载平衡方法        

        DeepSeekMoE 基本架构。对于前馈网络(FFNs),DeepSeek-V3 采用了 DeepSeekMoE 架构(Dai 等,2024)。与传统的 MoE 架构(如 GShard(Lepikhin 等,2021))相比,DeepSeekMoE 使用了更细粒度的专家,并将一些专家隔离为共享专家。设 u𝑡 为第 𝑡 个令牌的 FFN 输入,我们计算 FFN 输出 h′𝑡 如下:

        其中,𝑁𝑠 和 𝑁𝑟 分别表示共享专家和路由专家的数量;FFN(𝑠)𝑖(·) 和 FFN(𝑟)𝑖(·) 分别表示第 𝑖 个共享专家和第 𝑖 个路由专家;𝐾𝑟 表示激活的路由专家数量;𝑔𝑖,𝑡 为第 𝑖 个专家的门控值;𝑠𝑖,𝑡 是令牌与专家的亲和度;e𝑖 是第 𝑖 个路由专家的质心向量;Topk(·, 𝐾) 表示从计算出的亲和度得分中选出的前 𝐾 个最高得分的集合。与 DeepSeek-V2 略有不同,DeepSeek-V3 使用 sigmoid 函数来计算亲和度得分,并对所有选定的亲和度得分进行归一化,以生成门控值。

        无辅助损失负载平衡。对于 MoE 模型,负载不平衡会导致路由崩溃(Shazeer 等,2017),并在专家并行的场景中降低计算效率。传统的解决方案通常依赖辅助损失(Fedus 等,2021;Lepikhin 等,2021)来避免负载不平衡。然而,过大的辅助损失会损害模型性能(Wang 等,2024a)。为了在负载平衡和模型性能之间实现更好的权衡,我们首创了一种无辅助损失的负载平衡策略(Wang 等,2024a)以确保负载平衡。具体而言,我们为每个专家引入一个偏置项 𝑏𝑖,并将其添加到相应的亲和度得分 𝑠𝑖,𝑡 中,以确定前 K 个路由:

        需要注意的是,偏置项仅用于路由。门控值(将与 FFN 输出相乘的值)仍然来源于原始的亲和度得分 𝑠𝑖,𝑡。在训练过程中,我们持续监控每个训练步骤中整个批次的专家负载。在每个步骤结束时,如果对应的专家负载过重,我们会将偏置项减少 𝛾,如果对应的专家负载过轻,我们会将其增加 𝛾,其中 𝛾 是一个超参数,称为偏置更新速度。通过动态调整,DeepSeek-V3 在训练过程中保持平衡的专家负载,并且相比于通过纯辅助损失来鼓励负载平衡的模型,它取得了更好的性能。

        互补的序列级辅助损失。尽管 DeepSeek-V3 主要依赖于无辅助损失的负载平衡策略,为了防止单个序列内的极端负载不平衡,我们还采用了互补的序列级平衡损失:

        其中平衡因子 𝛼 是一个超参数,对于 DeepSeek-V3 将赋予一个极小的值;1(·) 表示指示函数;𝑇 表示序列中的令牌数量。序列级平衡损失鼓励每个序列中的专家负载保持平衡。

        节点限制路由。与 DeepSeek-V2 中使用的设备限制路由类似,DeepSeek-V3 也使用了一种受限路由机制,在训练期间限制通信成本。简而言之,我们确保每个令牌最多只会发送到 𝑀 个节点,这些节点是根据每个节点上分布的专家亲和度得分的前 𝐾𝑟𝑀 个得分之和来选择的。在此约束下,我们的 MoE 训练框架几乎可以实现完全的计算-通信重叠。

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

2.2 多令牌预测机制

        受Gloeckle等人(2024)的启发,我们为DeepSeek-V3研究并设置了一个多令牌预测( Multi-Token Prediction, MTP) 目标,该目标将预测范围扩展到每个位置的多个后续 token。一方面,MTP目标使训练信号更加密集,并可能提高数据效率。另一方面,MTP可以使模型预先规划其表示,以便更好地预测后续的token。图3说明了我们对MTP的实现。与Gloeckle等人(2024)使用独立的输出头并行预测额外令牌不同,我们顺序预测额外的令牌,并在每个预测层级保持完整的因果链。我们将在本节中介绍MTP实施的详细信息。

图 3 展示了我们的多词元预测 (MTP) 实现。我们保留了每个深度下每个词元预测的完整因果链。

        MTP 模块。具体而言,我们的 MTP 实现使用 𝐷 个顺序模块来预测 𝐷 个额外的令牌。第 𝑘 个 MTP 模块由一个共享嵌入层 Emb(·)、一个共享输出头 OutHead(·)、一个 Transformer 块 TRM𝑘 (·) 和一个投影矩阵 𝑀𝑘 ∈ R𝑑×2𝑑 组成。对于第 𝑖 个输入令牌 𝑡𝑖,在第 𝑘 个预测深度上,我们首先将第 𝑖 个令牌在第(𝑘−1)个深度的表示 h𝑘−1𝑖 ∈ R𝑑 与第(𝑖+𝑘)个令牌的嵌入 𝐸𝑚𝑏(𝑡𝑖+𝑘) ∈ R𝑑 进行线性投影合并:

        其中 [·; ·] 表示拼接操作。特别地,当 𝑘 = 1 时,h𝑘−1𝑖 指的是由主模型给出的表示。需要注意的是,对于每个 MTP 模块,它的嵌入层是与主模型共享的。合并后的 h′𝑘𝑖 作为第 𝑘 个深度的 Transformer 块的输入,以生成当前深度的输出表示 h𝑘𝑖:

        其中 𝑇 代表输入序列的长度,𝑖:𝑗 表示切片操作(包括左边界和右边界)。最后,将 h𝑘𝑖 作为输入,共享输出头将计算第 𝑘 个额外预测令牌的概率分布 𝑃𝑘𝑖+1+𝑘 ∈ R𝑉,其中 𝑉 是词汇表的大小:

        输出头 OutHead(·) 将表示线性映射到 logits,并随后应用 Softmax(·) 函数来计算第 𝑘 个额外令牌的预测概率。同样,对于每个 MTP 模块,它的输出头是与主模型共享的。我们保持预测因果链的原则类似于 EAGLE(Li 等,2024b),但其主要目标是推测解码(Leviathan 等,2023;Xia 等,2023),而我们利用 MTP 来改进训练。

        MTP 训练目标。对于每个预测深度,我们计算交叉熵损失 L𝑘 MTP:

        其中 𝑇 表示输入序列的长度,𝑡𝑖 表示第 𝑖 个位置的真实令牌,𝑃𝑘𝑖[𝑡𝑖] 表示第 𝑘 个 MTP 模块给出的对应的预测概率。最后,我们计算所有深度的 MTP 损失的平均值,并乘以一个权重因子 𝜆,得到整体的 MTP 损失 LMTP,该损失作为 DeepSeek-V3 的额外训练目标:

        推理中的 MTP。我们的 MTP 策略主要旨在提高主模型的性能,因此在推理过程中,我们可以直接丢弃 MTP 模块,主模型可以独立且正常地工作。此外,我们还可以将这些 MTP 模块重新用于推测解码,以进一步提高生成延迟。

三 基础设施

3.1 计算集群

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

3.2 训练框架

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

        为了促进 DeepSeek-V3 的高效训练,我们进行了精细的工程优化。首先,我们设计了用于高效流水线并行的 DualPipe 算法。与现有的 PP 方法相比,DualPipe 具有更少的流水线停滞。更重要的是,它通过有效地重叠前向和反向过程中的计算与通信阶段,解决了跨节点专家并行引入的重通信开销问题。其次,我们开发了高效的跨节点全到全通信内核,以充分利用 InfiniBand 和 NVLink 的带宽,并节省了专用于通信的流处理单元(SMs)。最后,我们精心优化了训练过程中的内存占用,从而使我们能够在不使用昂贵的张量并行(TP)技术的情况下训练 DeepSeek-V3。

3.2.1 DualPipe 和计算-通信重叠

        对于 DeepSeek-V3,由于跨节点专家并行引入的通信开销,导致计算与通信的比例大约为 1:1,效率低下。为了解决这个问题,我们设计了一种创新的流水线并行算法,称为 DualPipe,它不仅通过有效地重叠前向和反向计算-通信阶段来加速模型训练,还减少了流水线停滞。

        DualPipe 的关键理念是在一对前向和反向的处理块中重叠计算和通信。具体而言,我们将每个处理块分为四个部分:注意力、全到全分发、MLP 和全到全合并。特别地,对于反向处理块,注意力和 MLP 进一步分为两部分,即输入反向和权重反向,类似于 ZeroBubble(Qi 等,2023b)。此外,我们还设有 PP 通信组件。如图 4 所示,对于一对前向和反向处理块,我们重新排列这些组件,并手动调整专用于通信与计算的 GPU SMs 的比例。在这种重叠策略下,我们可以确保在执行过程中,所有的全到全通信和 PP 通信都能完全隐藏。鉴于高效的重叠策略,完整的 DualPipe 调度如图 5 所示。它采用双向流水线调度,同时从流水线的两端输入微批次,并且可以完全重叠大部分通信。这种重叠还确保随着模型的进一步扩展,只要我们保持恒定的计算与通信比率,我们仍然可以在节点之间使用细粒度的专家,同时实现接近零的全到全通信开销。

图 4 展示了一对独立的前向和后向模块的重香策略(Transformer 模块的边界未对产)。橙色表示前向,绿色表示“输入后向”,蓝色表示“权重后向",紫色表示 PP 通信,红色表示屏障。所有通信和 PP 通信均可完全隐藏。
图 5 展示了8个 PP 等级和 20 个微批次在两个方向上的 DualPipe 调度示例。反向的微批次与正向的微批次对称,因此为了简化图示,我们省略了它们的批次 ID。由共享黑色边框包围的两个单元格表示计算和通信相互重委。

        此外,即使在没有繁重通信负担的更一般场景中,DualPipe仍然表现出效率优势。在表2 中,我们总结了不同PP方法在流水线阻塞和内存使用的情况。如表2 所示,与ZB1P(Qi等人,2023b)和 1F1B(Harlap等人,2018)相比,DualPipe显著减少了流水线阻塞,同时仅将峰值激活记忆增加了1倍。尽管DualPipe需要保留模型参数的两个副本,但这并不会显著增加内存消耗,因为我们在训练过程中使用了大规模的EP。与Chimera(Li和Hoefler,2021)相比,DualPipe只要求管道阶段数和微批次数可被2整除,而不要求微批次可由管道阶段整除。此外,对于DualPipe,流水线阻塞和激活和内存都不会随着微批次数量的增加而增加。

表 2 不同流水线并行方法中流水线气泡和内存使用情况的比较。 表示前向块的执行时间,表示完整反向块的执行时间, 表示”权重反向”块的执行时间,F&B 表示两个相互重春的前向块和反向块的执!行时间。
3.2.2 跨节点全节点通信的高效实现

        为了确保 DualPipe 的充分计算性能,我们定制了高效的跨节点全到全通信内核(包括调度和合并),以节省专用于通信的 SM 数量。这些内核的实现与 MoE 路由算法以及我们集群的网络拓扑共同设计。具体而言,在我们的集群中,跨节点的 GPU 完全通过 InfiniBand(IB)互连,而节点内部的通信通过 NVLink 进行。NVLink 的带宽为 160 GB/s,约为 IB(50 GB/s)的 3.2 倍。为了有效利用 IB 和 NVLink 的不同带宽,我们将每个令牌的调度限制为最多 4 个节点,从而减少 IB 流量。对于每个令牌,当其路由决策完成时,它首先通过 IB 发送到目标节点上的具有相同节点索引的 GPU。一旦到达目标节点,我们将确保它通过 NVLink 立即转发到承载目标专家的特定 GPU,而不会被后续到达的令牌阻塞。通过这种方式,IB 和 NVLink 的通信得到了充分的重叠,并且每个令牌可以有效地选择每个节点平均 3.2 个专家,而不会增加 NVLink 的额外开销。这意味着,尽管 DeepSeek-V3 实际上只选择了 8 个路由专家,但它可以将这个数量扩展到最多 13 个专家(4 个节点 × 3.2 个专家/节点),同时保持相同的通信成本。总体来说,在这种通信策略下,只有 20 个 SM 足以充分利用 IB 和 NVLink 的带宽。

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

3.2.3  极小开销下的内存节省

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

        RMSNorm 和 MLA 上投影的重新计算。我们在反向传播过程中重新计算所有 RMSNorm 操作和 MLA 上投影,从而消除了持久存储其输出激活的需要。这个策略虽然带来少量的开销,但显著减少了存储激活所需的内存。

        CPU 中的指数移动平均(EMA)。在训练过程中,我们保存模型参数的指数移动平均(EMA),以便在学习率衰减后提前估算模型性能。EMA 参数存储在 CPU 内存中,并在每个训练步骤后异步更新。这种方法使我们能够在不增加额外内存或时间开销的情况下保持 EMA 参数。

        多令牌预测的共享嵌入和输出头。通过 DualPipe 策略,我们将模型的最浅层(包括嵌入层)和最深层(包括输出头)部署在同一个 PP 排名上。这种安排使得共享嵌入和输出头的参数和梯度在 MTP 模块和主模型之间物理共享。这种物理共享机制进一步增强了我们的内存效率。

3.3 FP8 训练

        受到近期低精度训练进展的启发(Dettmers 等,2022;Noune 等,2022;Peng 等,2023b),我们提出了一个细粒度混合精度框架,利用 FP8 数据格式来训练 DeepSeek-V3。虽然低精度训练具有很大的潜力,但通常会受到激活、权重和梯度中的离群值(Fishman 等,2024;He 等;Sun 等,2024)的限制。尽管推理量化(Frantar 等,2022;Xiao 等,2023)方面取得了显著进展,但在超大规模语言模型预训练中成功应用低精度技术的研究相对较少(Fishman 等,2024)。为了应对这一挑战并有效扩展 FP8 格式的动态范围,我们引入了一种细粒度量化策略:使用 1 × 𝑁𝑐 元素的 tile-wise 分组或使用 𝑁𝑐 × 𝑁𝑐 元素的 block-wise 分组。在我们的增加精度累积过程中,相关的去量化开销在很大程度上得到了缓解,这对于实现准确的 FP8 一般矩阵乘法(GEMM)至关重要。此外,为了进一步减少 MoE 训练中的内存和通信开销,我们缓存并调度 FP8 激活,并将低精度优化器状态存储为 BF16。我们在与 DeepSeek-V2-Lite 和 DeepSeek-V2 类似的两个模型规模上验证了提出的 FP8 混合精度框架,训练大约 1 万亿个令牌(更多细节见附录 B.1)。值得注意的是,与 BF16 基准相比,我们的 FP8 训练模型的相对损失误差始终保持在 0.25% 以下,这是训练随机性的可接受范围内。

3.3.1 混合精度框架

        基于低精度训练中广泛采用的技术(Kalamkar 等,2019;Narang 等,2017),我们提出了一种用于 FP8 训练的混合精度框架。在这个框架中,大部分计算密集型操作都采用 FP8 精度,而一些关键操作则保持其原始数据格式,以平衡训练效率和数值稳定性。整个框架如图 6 所示。

图 6 展示了采用 FP8 数据格式的混合精度框架。为便于理解,图中仅展示了线性算子。

        首先,为了加速模型训练,大多数核心计算内核,即 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 可表示的最大值,来与 FP8 格式的可表示范围对齐(Narang 等,2017)。这种方法使得低精度训练对激活离群值非常敏感,这可能严重降低量化精度。为了解决这个问题,我们提出了一种细粒度的量化方法,在更细粒度的层次上应用缩放。如图 7(a)所示,(1)对于激活,我们基于 1x128 瓷砖(即每个令牌每 128 个通道)分组并进行缩放;(2)对于权重,我们基于 128x128 块(即每 128 个输入通道每 128 个输出通道)分组并进行缩放。这种方法确保量化过程能够更好地适应离群值,通过根据较小的元素组来调整缩放因子。在附录 B.2 中,我们进一步讨论了当我们以与权重量化相同的方式基于块对激活进行分组和缩放时,训练不稳定的问题。

图 7(a) 我们提出了一种细粒度量化方法来减轻特征异常值引起的量化误差:为便于说明,图中仅展示了 Fprop。(b) 结合我们的量化策略,我们通过将高精度累加的 MMA 以 N/C =128 个元素的间隔提升到 CUDA 核心,从而提高了 FP8 GEMM 的精度。

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

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

        增加累积精度。低精度 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),这严重限制了训练精度。

        为了解决这个问题,我们采用了将 CUDA 核心用于更高精度的策略(Thakkar 等,2023)。具体而言,在 Tensor Cores 上执行 MMA(矩阵乘法累积)时,中间结果使用有限的位宽进行累积。一旦达到 𝑁𝐶 的间隔,这些部分结果将被复制到 CUDA Cores 上的 FP32 寄存器中,在这里进行全精度的 FP32 累积。如前所述,我们的细粒度量化应用了每组缩放因子,这些缩放因子可以在 CUDA Cores 上有效地进行乘法计算,作为去量化过程,且几乎不会增加额外的计算成本。

        值得注意的是,这种修改减少了单个 Warpgroup 的 WGMMA(Warpgroup-level Matrix Multiply-Accumulate)指令问题率。然而,在 H800 架构上,通常会同时存在两个 WGMMA:当一个 Warpgroup 执行提升操作时,另一个可以执行 MMA 操作。这个设计使得两种操作能够重叠,从而保持 Tensor Cores 的高利用率。根据我们的实验,设置 𝑁𝐶 = 128 元素,相当于 4 个 WGMMA,代表了显著提高精度而不会引入过多开销的最小累积间隔。

        尾数大于指数。与先前工作采用的混合 FP8 格式(NVIDIA,2024b;Peng 等,2023b;Sun 等,2019b)不同,该工作在 Fprop 中使用 E4M3(4 位指数和 3 位尾数),在 Dgrad 和 Wgrad 中使用 E5M2(5 位指数和 2 位尾数),我们在所有张量中采用 E4M3 格式以提高精度。我们将这种方法的可行性归功于我们的细粒度量化策略,即瓷砖和块级别的缩放。通过在较小的元素组上操作,我们的做法有效地在这些分组元素之间共享指数位,从而减轻了有限动态范围的影响。

        在线量化。延迟量化在张量级量化框架中被采用(NVIDIA,2024b;Peng 等,2023b),它保持之前迭代中的最大绝对值历史,以推断当前值。为了确保精确的缩放并简化框架,我们在线计算每个 1x128 激活瓷砖或 128x128 权重块的最大绝对值。基于此,我们得出缩放因子,并在线将激活或权重量化为 FP8 格式。

3.3.3 低精度存储和通信

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

        低精度优化器状态。我们采用 BF16 数据格式来跟踪 AdamW 优化器中的一阶和二阶矩(Loshchilov 和 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 推理与部署

        我们在 H800 集群上部署 DeepSeek-V3,其中每个节点内的 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 之间的负载,而不增加跨节点的全到全通信开销。在 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 进行通信会导致显著的低效,因为张量核心完全未被充分利用。

目前,SM 主要执行以下任务来进行全到全通信

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

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

  • 执行全到全合并的减少操作。

  • 在通过 IB 和 NVLink 域将数据传输到多个专家时,管理细粒度的内存布局。

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

3.5.2 计算硬件

        Tensor Cores 中的 FP8 GEMM 累积精度提高。在当前的 NVIDIA Hopper 架构的 Tensor Core 实现中,FP8 GEMM 存在累积精度受限的问题。在基于最大指数右移对 32 个尾数乘积进行对齐后,Tensor Core 仅使用每个尾数乘积的最高 14 位进行加法,并截断超出此范围的位。累积的加法结果进入寄存器时也使用 14 位精度。我们的实现通过在 CUDA 核心中将 128 个 FP8×FP8 乘法的加法结果累积到 FP32 精度的寄存器中,部分缓解了这一限制。尽管这种做法有助于成功实现 FP8 训练,但它仅仅是一个妥协,因为 Hopper 架构在 FP8 GEMM 累积精度上的硬件缺陷。未来的芯片需要采用更高的精度。

        支持瓷砖和块级量化。目前的 GPU 仅支持每个张量的量化,缺乏对细粒度量化(如我们的瓷砖和块级量化)的原生支持。在当前的实现中,当达到 𝑁𝐶 间隔时,部分结果会从 Tensor Cores 复制到 CUDA 核心,乘以缩放因子并加到 CUDA 核心中的 FP32 寄存器中。尽管结合我们的精确 FP32 累积策略显著减轻了反量化开销,但在 Tensor Cores 和 CUDA 核心之间频繁的数据移动仍然限制了计算效率。因此,我们建议未来的芯片支持细粒度量化,使 Tensor Cores 能接收缩放因子并实现带组缩放的 MMA。通过这种方式,整个部分和反量化过程可以直接在 Tensor Cores 内部完成,直到产生最终结果,从而避免频繁的数据移动。

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

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

四  预训练

4.1 数据构建

        与 DeepSeek-V2 相比,我们通过增强数学和编程样本的比例,同时扩展多语言覆盖范围,优化了预训练语料库,超越了英语和中文。此外,我们的数据处理管道进行了精细优化,以最小化冗余,同时保持语料库的多样性。受到 Ding 等人(2024)的启发,我们实现了文档打包方法以确保数据完整性,但在训练过程中没有加入跨样本注意力掩蔽。最后,DeepSeek-V3 的训练语料库由 14.8T 高质量且多样化的令牌构成,并使用我们的分词器。

        在 DeepSeekCoder-V2(DeepSeek-AI,2024a)的训练过程中,我们观察到 Fill-in-Middle(FIM)策略不会妥协下一个令牌预测能力,同时能够使模型根据上下文线索准确地预测中间文本。与 DeepSeekCoder-V2 保持一致,我们还将 FIM 策略纳入 DeepSeek-V3 的预训练中。具体而言,我们采用了前缀-后缀-中间(PSM)框架来构建数据,如下所示:

        这个结构在文档级别作为预打包过程的一部分应用。FIM 策略的应用比例为 0.1,与 PSM 框架一致。

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

4.2 超参数

        模型超参数:我们将 Transformer 层数设置为 61,隐藏维度为 7168。所有可学习的参数都随机初始化,标准差为 0.006。在 MLA 中,我们将注意力头数 𝑛ℎ 设置为 128,每头的维度 𝑑ℎ 设置为 128。KV 压缩维度 𝑑𝑐 设置为 512,查询压缩维度 𝑑′𝑐 设置为 1536。对于解耦的查询和键,我们将每头维度 𝑑𝑅ℎ 设置为 64。我们将除前三层外的所有 FFN 替换为 MoE 层。每个 MoE 层由 1 个共享专家和 256 个路由专家组成,其中每个专家的中间隐藏维度为 2048。在路由专家中,每个令牌将激活 8 个专家,每个令牌将确保最多发送到 4 个节点。多令牌预测深度 𝐷 设置为 1,即除了精确的下一个令牌外,每个令牌还将预测一个附加令牌。与 DeepSeek-V2 一样,DeepSeek-V3 还在压缩的潜在向量后面使用了额外的 RMSNorm 层,并在宽度瓶颈处乘以额外的缩放因子。根据这个配置,DeepSeek-V3 总共有 671B 参数,其中每个令牌激活 37B。

        训练超参数:我们使用 AdamW 优化器(Loshchilov 和 Hutter,2017),其超参数设置为 𝛽1 = 0.9,𝛽2 = 0.95,weight_decay = 0.1。我们将最大序列长度设置为 4K,并在 14.8T 令牌上进行 DeepSeek-V3 的预训练。至于学习率调度,我们首先在前 2K 步中将其从 0 线性增加到 2.2 × 10−4。然后,我们保持常数学习率 2.2 × 10−4,直到模型消耗 10T 训练令牌。随后,我们在 4.3T 令牌中逐渐将学习率衰减到 2.2 × 10−5,遵循余弦衰减曲线。在最后的 500B 令牌训练过程中,我们保持常数学习率 2.2 × 10−5,在前 333B 令牌中,并在剩余的 167B 令牌中切换到另一个常数学习率 7.3 × 10−6。梯度裁剪范数设置为 1.0。我们采用批量大小调度策略,在前 469B 令牌的训练过程中,批量大小逐渐从 3072 增加到 15360,然后在剩余的训练中保持 15360。我们利用流水线并行将模型的不同层部署到不同的 GPU 上,对于每层,路由专家将均匀部署在 8 个节点的 64 个 GPU 上。至于节点限制路由,每个令牌最多会发送到 4 个节点(即 𝑀 = 4)。对于辅助无损耗负载平衡,我们将偏置更新速度 𝛾 设置为 0.001,持续前 14.3T 令牌,并在剩余的 500B 令牌中将其设置为 0.0。对于平衡损失,我们将 𝛼 设置为 0.0001,以避免在任何单个序列中出现极端的不平衡。MTP 损失权重 𝜆 在前 10T 令牌中设置为 0.3,在剩余的 4.8T 令牌中设置为 0.1。

4.3 长上下文扩展

        我们采用与 DeepSeek-V2(DeepSeek-AI,2024c)类似的方法来启用 DeepSeek-V3 的长上下文能力。在预训练阶段之后,我们应用 YaRN(Peng 等,2023a)进行上下文扩展,并进行两个额外的训练阶段,每个阶段包括 1000 步,以逐步将上下文窗口从 4K 扩展到 32K,然后再扩展到 128K。YaRN 配置与 DeepSeek-V2 中使用的配置一致,仅应用于解耦的共享键 k𝑅𝑡。在两个阶段中,超参数保持相同,设置为 scale 𝑠 = 40,𝛼 = 1,𝛽 = 32,并且缩放因子 √𝑡 = 0.1 ln 𝑠 + 1。在第一个阶段,序列长度设置为 32K,批量大小为 1920。在第二个阶段,序列长度增加到 128K,批量大小减少到 480。两个阶段的学习率设置为 7.3 × 10−6,匹配预训练阶段的最终学习率。

        通过这个两阶段的扩展训练,DeepSeek-V3 能够处理最多 128K 长度的输入,同时保持强大的性能。如图 8 所示,DeepSeek-V3 在监督微调后,在“Needle In A Haystack” (NIAH) 测试中表现出色,并展示了在最大 128K 上下文窗口长度下的一致性和强健性。

图 8“大海捞针”(NIAH)测试的评估结果。DeepSeek-V3 在所有上下文窗口长度(最大128K)下均表现良好。

4.4 评估

4.4.1 评估基准

        DeepSeek-V3的基础模型在一个多语言语料库上进行预训练,其中英语和中文占大多数,因此我们主要在英语和中文基准测试上评估其性能,同时还在一个多语言基准测试上进行评估。我们的评估基于我们内部的评估框架,该框架集成在我们的HAI-LLM框架中。所考虑的基准被分类并列出如下,其中下划线表示中文基准,双下划线表示多语言基准:

        多学科多项选择数据集包括 MMLU (Hendrycks 等,2020)、MMLU-Redux (Gema 等,2024)、MMLU-Pro (Wang 等,2024b)、MMMLU (OpenAI,2024b)、C-Eval (Huang 等,2023) 和 CMMLU (Li 等,2023)。

        语言理解和推理数据集包括 HellaSwag (Zellers 等,2019)、PIQA (Bisk 等,2020)、ARC (Clark 等,2018)、BigBench Hard (BBH) (Suzgun 等,2022)。

        闭卷问答数据集包括 TriviaQA (Joshi 等,2017) 和 NaturalQuestions (Kwiatkowski 等,2019)。

        阅读理解数据集包括 RACE (Lai 等,2017)、DROP (Dua 等,2019)、C3 (Sun 等,2019a) 和 CMRC (Cui 等,2019)。

        参考消歧数据集包括 CLUEWSC (Xu 等,2020) 和 WinoGrande (Sakaguchi 等,2019)。

        语言建模数据集包括 Pile (Gao 等,2020)。

        中文理解和文化数据集包括 CCPM (Li 等,2021)。

        数学数据集包括 GSM8K (Cobbe 等,2021)、MATH (Hendrycks 等,2021)、MGSM (Shi 等,2023) 和 CMath (Wei 等,2023)。

        代码数据集包括 HumanEval (Chen 等,2021)、LiveCodeBench-Base (0801-1101) (Jain 等,2024)、MBPP (Austin 等,2021) 和 CRUXEval (Gu 等,2024)。

        标准化考试包括 AGIEval (Zhong 等,2023)。请注意,AGIEval 包括英语和中文子集。

        按照我们之前的工作(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)作为指标,以确保使用不同分词器的模型之间的公平比较。

4.4.2 评估结果

        在表 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,基本上成为了最强大的开源模型。

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

        从更详细的角度来看,我们分别将 DeepSeek-V3-Base 与其他开源基础模型进行比较。(1)与 DeepSeek-V2-Base 相比,由于我们模型架构的改进、模型规模和训练令牌的增加,以及数据质量的提升,DeepSeek-V3-Base 如预期地取得了显著更好的表现。(2)与 Qwen2.5 72B Base(目前最先进的中文开源模型)相比,尽管 DeepSeek-V3-Base 只激活了 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 MTP策略的消融结果。MTP策略在大多数评估基准测试中均能持续提升模型性能。
4.5.2 无辅助损失平衡策略的消融研究

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

表5 辅助损耗无损平衡策略的消融结果。与纯粹基于辅助损耗的方法相比,辅助损耗无损策略在大多数评估基准上始终取得更好的模型性能。
4.5.3 批次负载平衡与序列负载平衡

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

图 9 展示了桩基测试集中三个领域中无辅助损失模型和基于辅助损失模型的专家负载情况。无辅助损失模型比基于辅助损失模型表现出更明显的专家专业化模式。相对专家负载是指实际专家负载与理论平衡专家负载之比。由于篇幅限制,我们仅以两层模型为例展示结果,所有层模型的结果见附录 C。

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

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

五 后训练

5.1 监督微调

        我们精心策划了我们的指令调优数据集,包括1.5M个跨多个领域的实例,每个领域采用不同的数据创建方法,专门针对其特定要求。

        推理数据:对于推理相关的数据集,包括数学、编程竞赛问题和逻辑难题,我们通过利用内部的DeepSeek-R1模型来生成数据。具体来说,虽然R1生成的数据表现出较强的准确性,但也存在过度推理、格式不良和长度过长等问题。我们的目标是平衡R1生成推理数据的高准确性与常规格式化推理数据的清晰性和简洁性。

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

        系统提示经过精心设计,包括指导模型生成带有反思和验证机制的响应的说明。在RL阶段,模型利用高温采样生成整合了R1生成数据和原始数据模式的响应,即使没有显式的系统提示。经过数百步RL训练,最终模型学会了结合R1模式,从而战略性地提高了整体表现。

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

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

        SFT设置:我们使用SFT数据集对DeepSeek-V3-Base进行了两轮微调,采用了从5 × 10^−6到1 × 10^−6逐渐递减的余弦衰减学习率调度。在训练期间,每个单独的序列都由多个样本组成。但是,我们采用了样本掩蔽策略,以确保这些示例保持独立且相互不可见。

5.2 强化学习

5.2.1 奖励模型

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

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

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

5.2.2 群体相对策略优化(GRPO)

        与DeepSeek-V2(DeepSeek-AI, 2024c)类似,我们采用了群体相对策略优化(GRPO)(Shao et al., 2024),该方法不使用与策略模型相同规模的评判模型,而是通过群体得分来估计基线。具体来说,对于每个问题𝑞,GRPO从旧的策略模型𝜋𝜃𝑜𝑙𝑑中采样一个输出群体{𝑜1,𝑜2,···,𝑜𝐺},然后通过最大化以下目标来优化策略模型𝜋𝜃:

        其中,𝜖和𝛽是超参数;𝜋𝑟𝑒𝑓是参考模型;𝐴𝑖是优势值,源自与群体中每个输出对应的奖励{𝑟1,𝑟2,...,𝑟𝐺}:

        在RL过程中,我们从多个领域(如编程、数学、写作、角色扮演和问答)引入了提示。这种方法不仅让模型更加贴合人类偏好,还增强了在基准测试中的表现,特别是在可用的SFT数据有限的情况下。

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, 2024c)、CSimpleQA(He et al., 2024)、SWE-Bench Verified(OpenAI, 2024d)、Aider 1、LiveCodeBench(Jain et al., 2024)(2024年8月至11月的问题)、Codeforces、2024年中国全国中学生数学奥林匹克(CNMO 2024)、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框架中的评估提示。

        我们使用Zero-Eval提示格式(Lin, 2024)对MMLU-Redux进行零-shot设置评估。对于其他数据集,我们遵循数据集创建者提供的原始评估协议,使用默认提示。对于代码和数学基准,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)面前也具有竞争力。

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

        英语基准: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设置中,DeepSeek-V3取得了91.6的F1分数,超越了该类别的所有其他模型。在FRAMES(一个需要在10万令牌上下文上进行问答的基准)上,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是两种在中文和英语上均有强大支持的代表性模型系列。在事实知识基准中文SimpleQA上,DeepSeek-V3超越了Qwen2.5-72B 16.4分,尽管Qwen2.5在更大的语料库(包含18T令牌,比DeepSeek-V3的14.8T令牌多20%)上进行了训练。在C-Eval(中国教育知识评估基准)和CLUEWSC(中文Winograd Schema Challenge)上,DeepSeek-V3与Qwen2.5-72B表现相近,表明这两个模型都在中文推理和教育任务中得到了良好的优化。

5.3.3 开放性评估

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

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

        类似地,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与投票技术提供开放性问题的自反馈,从而提高对齐过程的有效性和鲁棒性。        

表8 GPT-40、Claude-3.5-sonnet和DeepSeek-V3 在 RewardBench 上的性能

5.4 讨论

5.4.1 来自DeepSeek-R1的蒸馏

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

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

表9 DeepSeek-R1 的蒸馏贡献。LiveCodeBench和 MATH-500 的评估设置与表 6 相同。

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

5.4.2 自奖励

        奖励在强化学习中发挥着关键作用,引导优化过程。在通过外部工具验证相对直接的领域,如某些编码或数学场景中,强化学习展现出了卓越的效果。然而,在更一般的场景下,通过硬编码构建反馈机制是不切实际的。在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(每秒令牌数)。

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

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

        尽管DeepSeek-V3表现强劲且具备成本效益,我们也认识到其在部署上的一些局限性。首先,为确保高效的推理,DeepSeek-V3的推荐部署单元较大,这可能对小型团队造成负担。其次,尽管我们的部署策略使得DeepSeek-V3的端到端生成速度是DeepSeek-V2的两倍多,但仍然存在进一步提升的潜力。幸运的是,随着更先进硬件的发展,这些局限性预计将得到自然解决。

        DeepSeek始终坚持开源模型的长期路线,致力于稳步实现AGI(通用人工智能)的最终目标。未来,我们计划战略性地投资于以下几个研究方向:

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

  • 我们将不断迭代我们的训练数据的数量和质量,探索纳入更多训练信号来源,推动数据在更多维度上的扩展。

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

  • 我们将探索更全面的多维模型评估方法,防止在研究过程中倾向于优化固定基准集,从而避免给模型能力带来误导性印象,并影响我们对模型的基础评估。

参考文献

1DeepSeek-v3 : https://arxiv.org/abs/2412.19437

2 DeepSeek-v2 : https://arxiv.org/abs/2412.19437

3 DeepSeek-v2讲解: 

https://blog.csdn.net/qq_29296685/article/details/155325238?sharetype=blogdetail&sharerId=155325238&sharerefer=PC&sharesource=qq_29296685&spm=1011.2480.3001.8118

Logo

Agent 垂直技术社区,欢迎活跃、内容共建。

更多推荐