欢迎来到尧图网

客户服务 关于我们

您的位置:首页 > 汽车 > 时评 > DeepSeek-V3 技术报告-学习

DeepSeek-V3 技术报告-学习

2025/3/1 15:39:03 来源:https://blog.csdn.net/hao_wujing/article/details/144873070  浏览:    关键词:DeepSeek-V3 技术报告-学习

打开读完觉得有意义记得关注及点赞!!!

        我们介绍了 DeepSeek-V3,这是一个强大的专家混合 (MoE) 语言模型,总共有 671B 个参数,每个令牌激活了 37B。 为了实现高效的推理和具有成本效益的训练,DeepSeek-V3 采用了多头潜在注意力 (MLA) 和 DeepSeekMoE 架构,这些架构在 DeepSeek-V2 中得到了全面验证。 此外,DeepSeek-V3 开创了一种用于负载均衡的辅助无损策略,并设定了多标记预测训练目标以获得更强的性能。 我们在 14.8 万亿个多样化和高质量的代币上对 DeepSeek-V3 进行预训练,然后是监督微调和强化学习阶段,以充分利用其功能。 综合评估表明,DeepSeek-V3 的性能优于其他开源模型,并实现了与领先的闭源模型相当的性能。 尽管性能出色,但 DeepSeek-V3 只需要 2.788M H800 GPU 小时即可进行完整训练。 此外,它的训练过程非常稳定。 在整个训练过程中,我们没有遇到任何无法恢复的损失峰值或执行任何回滚。 模型检查点可在 https://github.com/deepseek-ai/DeepSeek-V3 获取。

                        DeepSeek-V3 及其对应产品的基准测试性能

1、介绍

近年来,大型语言模型 (LLM) 一直在经历快速迭代和演变(OpenAI,2024 年一;人为型 /2024;谷歌2024),逐步缩小与通用人工智能 (AGI) 的差距。 除了闭源模型之外,还有开源模型,包括 DeepSeek 系列(DeepSeek-AI,2024b,c;Guo et al.,2024;DeepSeek-AI、2024 年一)、LLaMA 系列(Touvron 等人,2023 年一,b;AI@Meta,2024 年一,b)、Qwen 系列(Qwen,2023,2024 年一,2024b)和 Mistral 系列(江 et al.,2023;Mistral,2024)也取得了重大进展,努力缩小与闭源同行的差距。 为了进一步突破开源模型能力的界限,我们扩展了我们的模型并引入了 DeepSeek-V3,这是一个大型专家混合 (MoE) 模型,具有 671B 参数,其中 37B 为每个令牌激活。

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

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

在预训练期间,我们在 14.8T 高质量和多样化的 Token 上训练 DeepSeek-V3。 预训练过程非常稳定。 在整个训练过程中,我们没有遇到任何无法挽回的 loss sutage 或不得不回滚。 接下来,我们对 DeepSeek-V3 进行两阶段上下文长度扩展。在第一阶段,最大上下文长度扩展到 32K,在第二阶段,它进一步扩展到 128K。 在此之后,我们对 DeepSeek-V3 的基础模型进行后训练,包括监督微调 (SFT) 和强化学习 (RL),以使其与人类偏好保持一致并进一步释放其潜力。 在后期训练阶段,我们从 DeepSeek-R1 系列模型中提炼出推理能力,同时小心翼翼地保持模型准确性和生成长度之间的平衡。

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

培训费用训练前上下文扩展培训后
以 H800 GPU 小时为单位2664K119K5千米2788K
以美元为单位$5.328M$0.238M$0.01M$5.576M

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

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

我们的主要贡献包括:

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

  • • 

    除了 DeepSeek-V2 的高效架构之外,我们还开创了一种用于负载均衡的辅助无损策略,该策略可以最大限度地减少因鼓励负载均衡而引起的性能下降。

  • • 

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

训练前:迈向终极训练效率

  • • 

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

  • • 

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

  • • 

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

培训后:DeepSeek-R1 的知识提炼

  • • 

    我们引入了一种创新方法,将长链思维 (CoT) 模型的推理能力,特别是 DeepSeek R1 系列模型之一的推理能力提炼到标准 LLM 中,特别是 DeepSeek-V3。 我们的 pipeline 将 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,但它在中国事实知识 (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 节)。

2、建筑

我们首先介绍了 DeepSeek-V3 的基本架构,其特点是多头潜在注意力 (MLA)(DeepSeek-AI,2024年)用于高效推理和 DeepSeekMoE(Dai 等人,2024)用于经济的培训。 然后,我们提出了一个多标记预测 (MTP) 训练目标,我们观察到该目标可以提高评估基准的整体性能。 对于其他未明确提及的次要细节,DeepSeek-V3 遵循 DeepSeek-V2 的设置(DeepSeek-AI,2024年).

请参阅标题

图 2:DeepSeek-V3 的基本架构图示。 在 DeepSeek-V2 之后,我们采用 MLA 和 DeepSeekMoE 进行高效推理和经济训练。

2.1基本架构

DeepSeek-V3 的基本架构仍在 Transformer 中(Vaswani 等人,2017)框架。 为了实现高效的推理和经济的训练,DeepSeek-V3 还采用了 MLA 和 DeepSeekMoE,它们已经被 DeepSeek-V2 彻底验证。 与 DeepSeek-V2 相比,一个例外是,我们额外引入了辅助无损负载均衡策略(Wang 等人,2024 年一)用于 DeepSeekMoE,以减轻因确保负载均衡而引起的性能下降。 图 2 说明了 DeepSeek-V3 的基本架构,我们将在本节中简要回顾 MLA 和 DeepSeekMoE 的详细信息。

2.1.1多头潜在注意力

为了引起注意,DeepSeek-V3 采用了 MLA 架构。 让d表示嵌入维度,nh表示 attention head 的数量,dh表示每个头部的尺寸,以及𝐡t∈ℝd表示t-th 标记。 MLA 的核心是对注意力键和值的低秩联合压缩,以减少推理过程中的键值 (KV) 缓存:

哪里𝐜tK⁢V∈ℝdc是键和值的压缩潜在向量;dc(≪dh⁢nh)表示 KV 压缩维度;WD⁢K⁢V∈ℝdc×d表示向下投影矩阵;WU⁢K,WU⁢V∈ℝdh⁢nh×dc分别是键和值的向上投影矩阵;WK⁢R∈ℝdhR×d是用于生成带有旋转位置嵌入 (RoPE) 的解耦键的矩阵(Su 等人,2024)绳⁡(⋅)表示应用 RoPE 矩阵的操作; 和[⋅;⋅]表示串联。 请注意,对于 MLA,只有蓝色方框向量(即𝐜tK⁢V和𝐤tR) 需要在生成过程中进行缓存,这会导致 KV 缓存显著降低,同时保持与标准多头注意力 (MHA) 相当的性能(Vaswani 等人,2017).

对于注意力查询,我们还执行了低秩压缩,这可以减少训练期间的激活记忆:

哪里𝐜tQ∈ℝdc′是查询的压缩潜在向量;dc′(≪dh⁢nh)表示查询压缩维度;WD⁢Q∈ℝdc′×d,WU⁢Q∈ℝdh⁢nh×dc′分别是查询的 down-projection 和 up-projection 矩阵; 和WQ⁢R∈ℝdhR⁢nh×dc′是生成携带 RoPE 的解耦查询的矩阵。

Ultimately, the attention queries (𝐪t,i), keys (𝐤j,i), and values (𝐯j,iC) are combined to yield the final attention output 𝐮t:

where WO∈ℝd×dh⁢nh denotes the output projection matrix.

2.1.2具有辅助无损负载均衡的 DeepSeekMoE
DeepSeekMoE 的基本架构。

对于前馈网络 (FFN),DeepSeek-V3 采用 DeepSeekMoE 架构(Dai 等人,2024). 与 GShard 等传统 MoE 架构相比(Lepikhin 等人,2021)中,DeepSeekMoE 使用更细粒度的专家,并将一些专家隔离为共享专家。 让𝐮t表示t-th token,我们计算 FFN 输出𝐡t′如下:

where Ns and Nr denote the numbers of shared experts and routed experts, respectively; FFNi(s)⁡(⋅) and FFNi(r)⁡(⋅) denote the i-th shared expert and the i-th routed expert, respectively; Kr denotes the number of activated routed experts; gi,t is the gating value for the i-th expert; si,t is the token-to-expert affinity; 𝐞i is the centroid vector of the i-th routed expert; and Topk⁡(⋅,K) denotes the set comprising K highest scores among the affinity scores calculated for the t-th token and all routed experts. Slightly different from DeepSeek-V2, DeepSeek-V3 uses the sigmoid function to compute the affinity scores, and applies a normalization among all selected affinity scores to produce the gating values.

辅助无损负载均衡。

对于 MoE 模型,不平衡的 expert load 将导致布线崩溃(Shazeer 等人,2017)并在具有专家并行的场景中降低计算效率。 常规解决方案通常依赖于辅助损耗(Fedus 等人,2021;Lepikhin 等人,2021)以避免负载不平衡。 但是,过大的辅助损耗会影响模型性能(Wang 等人,2024 年一). 为了在负载均衡和模型性能之间实现更好的权衡,我们开创了一种辅助无损负载均衡策略(Wang 等人,2024 年一)以确保负载均衡。 具体来说,我们引入了一个偏倚术语b我,并将其添加到相应的 Affinity 分数中s我,t要确定 top-K 路由:

请注意,bias 项仅用于 routing。 门控值(将与 FFN 输出相乘)仍来自原始亲和力分数s我,t. 在训练期间,我们会持续监控每个训练步骤的整个批次的专家负载。 在每个步骤结束时,我们将把偏差项减少γ如果其对应的 EA 超载,则将其增加γ如果其对应的 EA 系统负载不足,则其中γ是一个称为 bias update speed 的超参数。 通过动态调整,DeepSeek-V3 在训练过程中保持平衡的专家负载,并取得了比通过纯辅助损失鼓励负载均衡的模型更好的性能。

互补序列辅助损失。

虽然 DeepSeek-V3 主要依靠辅助无损失策略进行负载均衡,但为了防止任何单个序列内的极端不平衡,我们还采用了互补序列平衡损失:

其中 balance factorα是一个超参数,对于 DeepSeek-V3,它将被分配一个非常小的值;1⁢(⋅)表示指标功能; 和T表示序列中的标记数。 序列平衡损失鼓励每个序列上的 EA 负载保持平衡。

节点限制路由。

与 DeepSeek-V2 使用的设备限制路由一样,DeepSeek-V3 也使用限制路由机制来限制训练期间的通信成本。 简而言之,我们确保每个 Token 最多会被发送到M节点,根据最高KrM分布在每个节点上的专家的亲和力分数。 在此约束下,我们的 MoE 训练框架几乎可以实现完全的计算-通信重叠。

没有 token-dropping。

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

图 3:我们的多令牌预测 (MTP) 实施图示。 我们保留了完整的因果链,用于预测每个深度的每个代币。

2.2多 Token 预测

灵感来源Gloeckle 等人 (2024),我们调查并为 DeepSeek-V3 设置了多令牌预测 (MTP) 目标,将预测范围扩展到每个位置的多个未来令牌。 一方面,MTP 目标使训练信号致密,并可能提高数据效率。 另一方面,MTP 可能使模型能够预先规划其表示形式,以便更好地预测未来的代币。 图 3 说明了我们对 MTP 的实现。 不同于Gloeckle 等人 (2024),它并行预测D附加代币使用独立的输出头,我们按顺序预测额外的代币,并在每个预测深度保持完整的因果链。 本节将介绍 MTP 实施的详细信息。

MTP 模块

To be specific, our MTP implementation uses D sequential modules to predict D additional tokens. The k-th MTP module consists of a shared embedding layer Emb⁡(⋅), a shared output head OutHead⁡(⋅), a Transformer block TRMk⁡(⋅), and a projection matrix Mk∈ℝd×2⁢d. For the i-th input token ti, at the k-th prediction depth, we first combine the representation of the i-th token at the (k−1)-th depth 𝐡ik−1∈ℝd and the embedding of the (i+k)-th token E⁢m⁢b⁢(ti+k)∈ℝd with the linear projection:

𝐡i′⁣k=Mk⁢[RMSNorm⁡(𝐡ik−1);RMSNorm⁡(Emb⁡(ti+k))],(21)

where [⋅;⋅] denotes concatenation. Especially, when k=1, 𝐡ik−1 refers to the representation given by the main model. Note that for each MTP module, its embedding layer is shared with the main model. The combined 𝐡i′⁣k serves as the input of the Transformer block at the k-th depth to produce the output representation at the current depth 𝐡ik:

𝐡1:T−kk=TRMk⁡(𝐡1:T−k′⁣k),(22)

where T represents the input sequence length and i:j denotes the slicing operation (inclusive of both the left and right boundaries). Finally, taking 𝐡ik as the input, the shared output head will compute the probability distribution for the k-th additional prediction token Pi+1+kk∈ℝV, where V is the vocabulary size:

Pi+k+1k=OutHead⁡(𝐡ik).(23)

The output head OutHead⁡(⋅) linearly maps the representation to logits and subsequently applies the Softmax⁡(⋅) function to compute the prediction probabilities of the k-th additional token. Also, for each MTP module, its output head is shared with the main model. Our principle of maintaining the causal chain of predictions is similar to that of EAGLE (Li et al., 2024b), but its primary objective is speculative decoding (Xia et al., 2023; Leviathan et al., 2023), whereas we utilize MTP to improve training.

MTP 训练目标

For each prediction depth, we compute a cross-entropy loss ℒMTPk:

ℒMTPk=CrossEntropy⁡(P2+k:T+1k,t2+k:T+1)=−1T⁢∑i=2+kT+1log⁡Pik⁢[ti],(24)

where T denotes the input sequence length, ti denotes the ground-truth token at the i-th position, and Pik⁢[ti] denotes the corresponding prediction probability of ti, given by the k-th MTP module. Finally, we compute the average of the MTP losses across all depths and multiply it by a weighting factor λ to obtain the overall MTP loss ℒMTP, which serves as an additional training objective for DeepSeek-V3:

ℒMTP=λD⁢∑k=1DℒMTPk.(25)
推理中的 MTP

Our MTP strategy mainly aims to improve the performance of the main model, so during inference, we can directly discard the MTP modules and the main model can function independently and normally. Additionally, we can also repurpose these MTP modules for speculative decoding to further improve the generation latency.

3基础 设施

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 等人,2023 年一)、64 路专家并行度 (EP)(Lepikhin 等人,2021)跨越 8 个节点,以及 ZeRO-1 数据并行性 (DP)(Rajbhandari 等人,2020).

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

3.2.1DualPipe 和 Computation-Communication 重叠

Refer to caption

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

对于 DeepSeek-V3 ,跨节点专家并行性引入的通信开销导致计算与通信的比率低下,约为 1:1。 为了应对这一挑战,我们设计了一种名为 DualPipe 的创新管道并行算法,它不仅通过有效地重叠前向和后向计算通信阶段来加速模型训练,而且还减少了管道气泡。

DualPipe 的关键思想是在一对单独的前向和后向数据块中重叠计算和通信。 具体来说,我们将每个块分为四个部分:attention、all-to-all dispatch、MLP 和 all-to-all combine。 特别地,对于向后 chunk,注意力和 MLP 都进一步分为两部分,向后用于输入,向后用于权重,就像在 ZeroBubble 中一样(Qi 等人,2023b). 此外,我们还有一个 PP 通信组件。 如图 4 所示,对于一对前向和后向块,我们重新排列这些组件,并手动调整专用于通信与计算的 GPU SM 的比率。 在这种重叠策略中,我们可以确保在执行过程中可以完全隐藏 all-to-all 和 PP 通信。 鉴于高效的重叠策略,完整的 DualPipe 调度如图 5 所示。 它采用双向管道调度,同时从管道的两端馈送微批次,并且很大一部分通信可以完全重叠。 这种重叠还确保了,随着模型的进一步扩展,只要我们保持恒定的计算与通信比率,我们仍然可以跨节点聘请细粒度的专家,同时实现接近零的全对全通信开销。

Refer to caption

图 5:8 个 PP 等级和两个方向的 20 个微批次的 DualPipe 调度示例。 相反方向的微批次与正向的微批次对称,因此为了简单说明,我们省略了它们的批次 ID。 由共享黑色边框包围的两个单元格具有相互重叠的计算和通信。

此外,即使在通信负担不重的更通用的场景中,DualPipe 仍然表现出效率优势。 在表 2 中,我们总结了不同 PP 方法的管道气泡和内存使用情况。 如图所示,与 ZB1P 相比(Qi 等人,2023b)和 1F1B(Harlap 等人,2018)中,DualPipe 显著减少了管道气泡,同时仅将峰值激活内存增加1P⁢P次。 尽管 DualPipe 需要保留模型参数的两个副本,但这不会显著增加内存消耗,因为我们在训练期间使用较大的 EP 大小。 与 Chimera 相比(李和霍夫勒,2021),DualPipe 只要求管道阶段和微批次能被 2 整除,而不要求微批次能被管道阶段整除。 此外,对于 DualPipe,气泡和激活内存都不会随着微批处理数量的增加而增加。

表 2:不同管道并行方法的管道气泡和内存使用情况的比较。F表示正向 chunk 的执行时间,B表示一个完整的 backward chunk 的执行时间,W表示 “backward for weights” 块的执行时间,以及F&B表示两个相互重叠的 forward 和 backward chunk 的执行时间。

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

为了保证 DualPipe 有足够的计算性能,我们定制了高效的跨节点 all-to-all 通信内核(包括 dispatching 和 combining),以节省专用于通信的 SM 数量。 内核的实现是与 MoE 门控算法和我们集群的网络拓扑共同设计的。 具体来说,在我们的集群中,跨节点 GPU 与 IB 完全互连,节点内通信通过 NVLink 处理。 NVLink 提供 160 GB/s 的带宽,大约是 IB 的 3.2 倍 (50 GB/s)。 为了有效利用 IB 和 NVLink 的不同带宽,我们将每个代币的分发限制最多为 4 个节点,从而减少 IB 流量。 对于每个代币,当做出路由决策时,它将首先通过 IB 传输到其目标节点上具有相同节点内索引的 GPU。 一旦它到达目标节点,我们将努力确保它通过 NVLink 立即转发到托管目标专家的特定 GPU,而不会被随后到达的令牌阻止。 通过这种方式,通过 IB 和 NVLink 的通信完全重叠,每个代币可以有效地为每个节点选择平均 3.2 名专家,而不会产生 NVLink 的额外开销。 这意味着,尽管 DeepSeek-V3 在实践中只选择了 8 个路由专家,但它可以将这个数字扩展到最多 13 个专家(4 个节点×3.2 个 experts/node),同时保持相同的通信成本。 总体而言,在这样的通信策略下,只需 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 处理。 此外,dispatching 和 combining kernel 都与计算流重叠,因此我们还考虑了它们对其他 SM 计算内核的影响。 具体来说,我们采用定制的 PTX(并行线程执行)指令并自动调整通信块大小,这大大减少了 L2 缓存的使用和对其他 SM 的干扰。

3.2.3以最小的开销节省大量内存

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

RMSNorm 和 MLA Up-Projection 的重新计算。

我们在反向传播期间重新计算所有 RMSNorm 操作和 MLA 向上投影,因此无需持久存储其输出激活。 此策略的开销很小,可显著降低存储激活的内存要求。

CPU 中的指数移动平均线。

在训练过程中,我们保留模型参数的指数移动平均线 (EMA),以便在学习率衰减后对模型性能进行早期估计。 EMA 参数存储在 CPU 内存中,并在每个训练步骤后异步更新。 这种方法允许我们维护 EMA 参数,而不会产生额外的内存或时间开销。

用于多标记预测的共享嵌入和输出头。

使用 DualPipe 策略,我们将模型最浅的层(包括嵌入层)和最深的层(包括输出头)部署在相同的 PP 等级上。 这种安排允许在 MTP 模块和主模型之间物理共享参数和梯度,共享嵌入和输出头。 这种物理共享机制进一步提高了我们的内存效率。

3.3FP8 训练

图 6:具有 FP8 数据格式的整体混合精度框架。为澄清起见,仅说明了 Linear 运算符。

受到低精度训练最新进展的启发(Peng 等人,2023b;Dettmers 等人,2022;Noune 等人,2022),我们提出了一个利用 FP8 数据格式训练 DeepSeek-V3 的细粒度混合精度框架。 虽然低精度训练前景广阔,但它通常受到激活、权重和梯度中存在异常值的限制(Sun 等人,2024; 他等人,;Fishman 等人,2024). 尽管在推理量化方面取得了重大进展(Xiao 等人,2023;Frantar 等人,2022),证明低精度技术在大规模语言模型预训练中成功应用的研究相对较少(Fishman 等人,2024). 为了应对这一挑战并有效扩展 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 等人,2019;Narang 等人,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 等级的高效分片来最大限度地减少它们的影响。

图 7:(a) 我们提出了一种细粒度量化方法来减轻由特征异常值引起的量化误差;为简单起见,仅对 Fprop 进行了说明。 (b) 结合我们的量化策略,我们以NC=128元素 MMA 进行高精度累积。

3.3.2提高量化和乘法的精度

基于我们的混合精度 FP8 框架,我们引入了几种提高低精度训练精度的策略,重点关注量化方法和乘法过程。

精细量化。

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

我们方法中的一个关键修改是沿 GEMM 操作的内部维度引入每组缩放因子。 标准 FP8 GEMM 不直接支持此功能。 但是,结合我们精确的 FP32 累积策略,它可以有效地实施。

值得注意的是,我们的细粒度量化策略与微缩放格式的理念高度一致(Rouhani 等人,2023b),而 NVIDIA 下一代 GPU(Blackwell 系列)的 Tensor Core 已宣布支持具有较小量化粒度的微缩放格式(英伟达,2024 年一). 我们希望我们的设计可以作为未来工作的参考,以跟上最新的 GPU 架构。

提高累积精度。

低精度 GEMM 操作通常存在下溢问题,其精度在很大程度上取决于高精度累积,这通常以 FP32 精度执行(Kalamkar 等人,2019;Narang 等人,2017). 然而,我们观察到 FP8 GEMM 在 NVIDIA H800 GPU 上的累积精度仅限于保留 14 位左右,这明显低于 FP32 累积精度。 当内部维度 K 较大时,此问题将变得更加明显(Wortsman 等人,2023),这是大规模模型训练中 batch size 和 model width 增加的典型场景。 以 K = 4096 的两个随机矩阵的 GEMM 运算为例,在我们的初步测试中,Tensor Core 中的有限累积精度导致最大相对误差接近 2%。 尽管存在这些问题,但有限的累积精度仍然是一些 FP8 框架的默认选项(英伟达,2024b),严重制约了训练精度。

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

值得注意的是,此修改降低了单个 warpgroup 的 WGMMA (Warpgroup level Matrix Multiply-Accumulate) 指令发出率。但是,在 H800 架构上,两个 WGMMA 通常会同时存在:当一个 warpgroup 执行提升操作时,另一个 warpgroup 能够执行 MMA 操作。这种设计支持两个操作的重叠,从而保持 Tensor Core 的高利用率。 根据我们的实验,设置NC=128元素,相当于 4 个 WGMMA,表示可以显著提高精度而不会引入大量开销的最小累积区间。

Mantissa over Exponents.

与之前工作采用的混合 FP8 格式相比(英伟达,2024b;Peng 等人,2023b;Sun 等人,2019 年b),它在 Fprop 中使用 E4M3(4 位指数和 3 位尾数),在 Dgrad 和 Wgrad 中使用 E5M2(5 位指数和 2 位尾数),我们在所有张量上采用 E4M3 格式以获得更高的精度。 我们将这种方法的可行性归因于我们的细粒度量化策略,即平铺和块级缩放。 通过对较小的元素组进行操作,我们的方法有效地在这些分组元素之间共享指数位,从而减轻了有限动态范围的影响。

在线量化。

延迟量化用于张量量化框架(英伟达,2024b;Peng 等人,2023b),它维护先前迭代中最大绝对值的历史记录以推断当前值。 为了确保准确的比例并简化框架,我们在线计算每个 1x128 激活图块或 128x128 权重块的最大绝对值。 基于它,我们推导出缩放因子,然后将激活或权重在线量化为 FP8 格式。

3.3.3低精度存储和通信

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

Low-Precision Optimizer 状态。

我们采用 BF16 数据格式而不是 FP32 来跟踪 AdamW 中的第一和第二矩(洛什奇洛夫和胡特尔,2017)optimizer 的 Analyzer,而不会造成可观察到的性能下降。 但是,主权重(由优化器存储)和梯度(用于批量大小累积)仍保留在 FP32 中,以确保整个训练过程中的数值稳定性。

低精度激活。

如图 6 所示,Wgrad 操作在 FP8 中执行。 为了减少内存消耗,自然选择以 FP8 格式缓存激活,以便线性运算符的向后传递。 但是,对于低成本、高精度的训练,需要特别考虑几个运算符:

(1) attention 运算符之后的 Linear 的输入。这些激活也用于 attention 运算符的向后传递,这使得它对精度很敏感。我们采用定制的 E5M6 数据格式,专门用于这些激活。此外,这些激活将在向后通道中从 1x128 量化图块转换为 128x1 图块。为避免引入额外的量化误差,所有缩放因子都是四舍五入的,即 2 的积分幂。

(2) SwiGLU 运算符在 MoE 中的输入。为了进一步降低内存成本,我们缓存 SwiGLU 运算符的输入,并在向后传递中重新计算其输出。这些激活也通过我们的细粒度量化方法存储在 FP8 中,从而在内存效率和计算准确性之间取得平衡。

低精度通信。

通信带宽是 MoE 模型训练中的关键瓶颈。 为了缓解这一挑战,我们将 MoE 上投影之前的激活量化到 FP8 中,然后应用调度组件,这与 MoE 上投影中的 FP8 Fprop 兼容。就像 attention 运算符之后的 Linear 输入一样,此激活的比例因子是 2 的整数幂。 类似的策略应用于 MoE 下投影之前的激活梯度。 对于前向和后向组合组件,我们都将它们保留在 BF16 中,以保持训练管道关键部分的训练精度。

3.4推理和部署

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

3.4.1预填充

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

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

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

最后,我们正在探索一种面向 expert 的动态冗余策略,其中每个 GPU 托管更多的 expert (例如,16 个 expert),但在每个推理步骤中只会激活 9 个。 在每一层的 all-to-all 操作开始之前,我们动态计算全局最优路由方案。 考虑到预填充阶段涉及的大量计算,计算此路由方案的开销几乎可以忽略不计。

3.4.2译码

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

与预填充类似,我们会根据我们在线服务的统计专家负载,在一定时间间隔内定期确定冗余专家组。 但是,我们不需要重新排列专家,因为每个 GPU 只托管一名专家。 我们还在探索用于解码的动态冗余策略。 但是,这需要更仔细地优化计算全局最优路由方案的算法,并与 dispatch 内核进行融合以减少开销。

此外,为了提高吞吐量并隐藏 all-to-all 通信的开销,我们还在探索在解码阶段同时处理具有相似计算工作负载的两个微批次。 与预填充不同,注意力在解码阶段消耗了更多的时间。因此,我们将一个微批次的注意力与另一个微批次的 dispatch+MoE+combine 重叠。 在解码阶段,每个 EA 的 batch size 相对较小(通常在 256 个 token 以内),瓶颈是内存访问而不是计算。 由于 MoE 部分只需要加载一个 expert 的参数,因此内存访问开销很小,因此使用较少的 SM 不会对整体性能产生显著影响。 因此,为了避免影响注意力部分的计算速度,我们可以只分配一小部分 SM 给 dispatch+MoE+combine。

3.5硬件设计建议

基于我们对 all-toall communication 和 FP8 训练方案的实施,我们向 AI 硬件厂商提出以下芯片设计建议。

3.5.1通信硬件

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

目前,SM 主要执行以下任务以进行 all-to-all 通信:

  • • 

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

  • • 

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

  • • 

    执行 all 对 all 组合的 reduce 操作

  • • 

    在向 IB 和 NVLink 域中的多个专家传输分块数据期间管理精细的内存布局

我们希望看到未来的供应商开发硬件,从宝贵的计算单元 SM 中卸载这些通信任务,充当 GPU 协处理器或网络协处理器,如 NVIDIA SHARPGraham 等人 (2016). 此外,为了降低应用程序编程的复杂性,我们的目标是从计算单元的角度让该硬件统一 IB(横向扩展)和 NVLink(纵向扩展)网络。 借助此统一接口,计算单元可以通过提交基于简单基元的通信请求,轻松完成整个 IB-NVLink 统一域中的读取、写入、多播和归约等操作。

3.5.2计算硬件
在 Tensor Core 中具有更高的 FP8 GEMM 累积精度。

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

支持 Tile-Wise 和 Block-wise 量化。

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

支持在线量化。

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

支持转置 GEMM 操作。

当前的架构使得将矩阵转置与 GEMM 操作融合起来很麻烦。 在我们的工作流程中,前向通道期间的激活被量化为 1x128 FP8 图块并存储。 在向后传递期间,需要读出矩阵、去量化、转置、重新量化为 128x1 图块,并存储在 HBM 中。 为了减少内存操作,我们建议未来的芯片在 MMA 操作之前启用从共享内存中直接转置读取矩阵,以实现训练和推理所需的精度。结合 FP8 格式转换和 TMA 访问的融合,此增强功能将显著简化量化工作流程。

4训练前

4.1数据构建

与 DeepSeek-V2 相比,我们通过提高数学和编程样本的比例来优化预训练语料库,同时将多语言覆盖范围扩展到英文和中文之外。 此外,我们的数据处理管道经过改进,可在保持语料库多样性的同时最大限度地减少冗余。 灵感来源Ding 等人 (2024),我们实现了文档打包方法以实现数据完整性,但在训练期间没有合并跨样本注意力掩码。 最后,DeepSeek-V3 的训练语料由我们的分词器中的 14.8T 高质量和多样化的 token 组成。

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

此结构作为预打包过程的一部分应用于文档级别。 FIM 策略的应用速率为 0.1,与 PSM 框架一致。

DeepSeek-V3 的分词器采用字节级 BPE(Shibata 等人,1999)具有 128K 令牌的扩展词汇表。 修改了 tokenizer 的 pretokenizer 和训练数据,以优化多语言压缩效率。 此外,与 DeepSeek-V2 相比,新的 pretokenizer 引入了组合标点符号和换行符的标记。 但是,这个技巧可能会引入 token 边界偏差(伦德伯格,2023)当模型处理不带终端换行符的多行提示时,特别是对于少数镜头的求值提示。 为了解决这个问题,我们在训练过程中随机拆分了一定比例的此类组合标记,这使模型暴露在更广泛的特殊情况下并减轻了这种偏差。

4.2超参数

模型超参数。

我们将 Transformer 层数设置为 61,将隐藏维度设置为 7168。 所有可学习的参数都以 0.006 的标准差随机初始化。 在 MLA 中,我们设置了 attention head 的数量nh设置为 128 和每头尺寸dh到 128。 KV 压缩维度dc设置为 512,并且 Query Compression 维度dc′设置为 1536。 对于解耦的 queries 和 key,我们设置 per-head 维度dhR到 64。 我们将除前三层之外的所有 FFN 替换为 MoE 层。 每个 MoE 层由 1 个共享 Expert 和 256 个路由 Expert 组成,其中每个 Expert 的中间隐藏维度为 2048。 在路由的 Expert 中,每个 Token 将激活 8 个 Expert,并确保每个 Token 最多发送到 4 个节点。 多标记预测深度D设置为 1,即除了确切的下一个 Token 外,每个 Token 将预测一个额外的 Token。 与 DeepSeek-V2 一样,DeepSeek-V3 也在压缩的潜在向量之后使用了额外的 RMSNorm 层,并在宽度瓶颈处增加了额外的缩放因子。 在此配置下,DeepSeek-V3 总共包含 671B 个参数,其中每个 Token 激活了 37B。

训练超参数。

我们使用 AdamW 优化器(洛什奇洛夫和胡特尔,2017)将 hyper-parameters 设置为β1=0.9,β2=0.95和重量⁢_⁢衰变=0.1. 我们在预训练期间将最大序列长度设置为 4K,并在 14.8T 令牌上预训练 DeepSeek-V3。 至于学习率调度,我们首先将其从 0 线性增加到2.2×10−4在前 2K 步中。 然后,我们保持恒定的学习率2.2×10−4直到模型消耗 10T 训练 Token。 随后,我们逐渐将学习率衰减为2.2×10−5在 4.3T 代币中,遵循余弦衰减曲线。 在最后 500B token 的训练过程中,我们保持恒定的学习率2.2×10−5在前 333B 标记中,并切换到另一个恒定的学习率7.3×10−6在剩余的 167B 代币中。 渐变剪切规范设置为 1.0。 我们采用一种批量大小调度策略,在前 469B 令牌的训练中,批量大小从 3072 逐渐增加到 15360,然后在剩余的训练中保持 15360。 我们利用管道并行性将模型的不同层部署在不同的 GPU 上,对于每个层,路由的专家将统一部署在属于 8 个节点的 64 个 GPU 上。 至于节点限制路由,每个 Token 最多会被发送到 4 个节点(即M=4). 为了实现辅助无损负载均衡,我们设置了 bias 更新速度γ前 14.3T Token 为 0.001,其余 500B Token 为 0.0。 对于余额损失,我们设置α设置为 0.0001,只是为了避免任何单个序列中的极端不平衡。 MTP 减肥λ前 10T 代币设置为 0.3,其余 4.8T 代币设置为 0.1。

Refer to caption

图 8:“Needle In A Haystack” (NIAH) 测试的评估结果。 DeepSeek-V3 在高达 128K 的所有上下文窗口长度上都表现良好。

4.3长上下文扩展

我们采用与 DeepSeek-V2 类似的方法(DeepSeek-AI,2024年)在 DeepSeek-V3 中启用长上下文功能。 在预训练阶段之后,我们应用 YaRN(Peng 等人,2023 年一)进行上下文扩展,并执行两个额外的训练阶段(每个阶段包含 1000 个步骤),以逐步将上下文窗口从 4K 扩展到 32K,然后扩展到 128K。 YaRN 配置与 DeepSeek-V2 中使用的配置一致,专门应用于解耦的共享密钥𝐤tR. 超参数在两个阶段中保持不变,比例尺s=40,α=1,β=32和 Scaling 因子t=0.1⁢在⁡s+1. 在第一阶段,序列长度设置为 32K,批处理大小为 1920。 在第二阶段,序列长度增加到 128K,批量大小减少到 480。 这两个阶段的学习率都设置为7.3×10−6匹配预训练阶段的最终学习率。

通过这个两阶段的扩展训练,DeepSeek-V3 能够处理长达 128K 的输入,同时保持强大的性能。 图 8 表明,DeepSeek-V3 在经过监督微调后,在 “Needle In A Haystack” (NIAH) 测试中取得了显著的性能,在高达 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-评估 (Huang 等人,2023)和CMMLU 公司 (Li 等人,2023).

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

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

阅读理解数据集包括 RACELai et al. (2017)落(Dua 等人,2019),C3 系列 (Sun 等人,2019 年a)和中共 (Cui 等人,2019).

参考消歧数据集包括CLUEWSC 公司 (Xu 等人,2020)和 WinoGrandeSakaguchi et al. (2019).

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

中国理解和文化数据集包括CCPM的 (Li 等人,2021).

数学数据集包括 GSM8K(Cobbe 等人,2021)数学(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) 作为指标,以保证使用不同分词器的模型之间的公平比较。

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

4.4.2评估结果

在表 3 中,我们将 DeepSeek-V3 的基本模型与最先进的开源基本模型(包括 DeepSeek-V2-Base)进行了比较(DeepSeek-AI,2024年)(我们之前的版本),Qwen2.5 72B Base(Qwen,2024b)和 LLaMA-3.1 405B 基座(AI@Meta,2024b). 我们使用内部评估框架评估所有这些模型,并确保它们共享相同的评估设置。 请注意,由于我们在过去几个月中评估框架发生了变化,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 在多语言、代码和数学基准测试中也表现出更好的性能。 在中英文基准测试方面,DeepSeek-V3-Base 表现出有竞争力或更好的性能,在 BBH、MMLU 系列、DROP、C-Eval、CMMLU 和 CCPM 上表现尤为出色。

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

表 4:MTP 策略的消融结果。 MTP 策略在大多数评估基准上始终如一地增强模型性能。

4.5讨论

4.5.1用于多标记预测的消融研究

在表 4 中,我们显示了 MTP 策略的消融结果。 具体来说,我们在不同尺度的两个基线模型之上验证了 MTP 策略。 在小规模上,我们在 1.33T 代币上训练了一个基线 MoE 模型,该模型包含 15.7B 总参数。 在大规模上,我们训练了一个基线 MoE 模型,该模型包含 540B 令牌上的 228.7B 总参数。 最重要的是,保持训练数据和其他架构相同,我们在它们上面附加了一个 1 深度的 MTP 模块,并使用 MTP 策略训练两个模型进行比较。 注意,在推理过程中,我们直接丢弃 MTP 模块,因此比较模型的推理成本完全相同。 从表中,我们可以观察到 MTP 策略在大多数评估基准上始终如一地提高了模型性能。

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

在表 5 中,我们显示了辅助无损平衡策略的消融结果。 我们在不同尺度的两个基线模型之上验证了这一策略。 在小规模上,我们在 1.33T 代币上训练了一个基线 MoE 模型,该模型包含 15.7B 总参数。 在大规模上,我们训练了一个基线 MoE 模型,该模型在 578B 标记上包含 228.7B 总参数。 这两个基线模型都纯粹使用辅助损失来鼓励负载均衡,并使用具有 top-K 亲和力归一化的 sigmoid 门控函数。 它们用于控制辅助损失强度的超参数分别与 DeepSeek-V2-Lite 和 DeepSeek-V2 相同。 在这两个基线模型之上,在保持训练数据和其他架构相同的情况下,我们去除了所有辅助损失,并引入了辅助无损平衡策略进行比较。 从表中可以观察到,辅助无损失策略在大多数评估基准上始终保持更好的模型性能。

4.5.3批次负载均衡 VS.顺序负载均衡

辅助无损平衡和序列辅助损失之间的主要区别在于它们的平衡范围:批次与序列。 与 sequence-wise auxiliary loss 相比,batch-wise balance 施加了更灵活的约束,因为它不会在每个 sequence 上强制执行域内平衡。 这种灵活性使专家能够更好地专注于不同的领域。 为了验证这一点,我们记录并分析了 16B 基于辅助损失的基线和 16B 辅助无损模型在 Pile 测试集中不同域上的专家负载。 如图 9 所示,我们观察到辅助无损模型表现出更强的专家专业化模式,正如预期的那样。

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

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

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

5训练后

5.1监督微调

我们管理我们的指令调优数据集,包括跨多个域的 1.5M 实例,每个域都采用根据其特定要求量身定制的不同数据创建方法。

推理数据。

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

为了建立我们的方法,我们首先使用组合的监督微调 (SFT) 和强化学习 (RL) 训练管道,为特定领域(例如代码、数学或一般推理)开发一个量身定制的专家模型。 此专家模型用作最终模型的数据生成器。 训练过程涉及为每个实例生成两种不同类型的 SFT 样本:第一种以 <problem, original response> 格式将问题与其原始响应耦合,而第二种类型将系统提示与问题和 R1 响应<system prompt, problem, R1 response>格式的 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组相对策略优化

与DeepSeek-V2相似(DeepSeek-AI,2024年),我们采用组相对策略优化 (GRPO)(Shao 等人,2024),它放弃了通常与策略模型大小相同的批评者模型,而是根据组分数来估计基线。 具体来说,对于每个问题q中,GRPO 对一组输出进行采样{o1,o2,⋯,oG}从旧策略模型πθo⁢l⁢d然后优化策略模型πθ通过最大化以下目标:

5.3评估

5.3.1评估设置
评估基准。

除了我们用于基本模型测试的基准外,我们还在 IFEval 上进一步评估了指导模型(周 et al.,2023)框架(Krishna 等人,2024)、LongBench v2(Bai 等人,2024)、GPQA(Rein 等人,2023)、SimpleQA(OpenAI,2024年)、C-SimpleQA(他等人,2024), SWE-Bench 验证(OpenAI,2024 年)、 艾德11https://aider.chat、LiveCodeBench(Jain 等人,2024)(问题从 2024 年 8 月到 2024 年 11 月),Codeforces22https://codeforces.com, 中国高中数学奥林匹克 (CNMO 2024)33数学竞赛 - 中国数学会和 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 框架中的评估提示44https://github.com/openai/simple-evals. 我们使用 Zero-Eval 提示格式(林,2024)对于 MMLU-Redux 的 zero-shot 设置。 对于其他数据集,我们遵循其原始评估协议,并使用数据集创建者提供的默认提示。 在代码和数学基准测试方面,HumanEval-Mul 数据集总共包括 8 种主流编程语言(Python、Java、Cpp、C#、JavaScript、TypeScript、PHP 和 Bash)。 我们使用 CoT 和非 CoT 方法来评估 LiveCodeBench 上的模型性能,数据收集时间为 2024 年 8 月至 2024 年 11 月。 Codeforces 数据集是使用竞争对手的百分比来衡量的。 SWE-Bench 验证使用无代理框架进行评估(Xia 等人,2024). 我们使用 “diff” 格式来评估与 Aider 相关的基准测试。 对于数学评估,AIME 和 CNMO 2024 以 0.7 的温度进行评估,结果在 16 次运行中取平均值,而 MATH-500 采用贪婪解码。 我们允许所有模型为每个基准测试输出最多 8192 个代币。

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

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 中表现出色,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 次拍摄设置中取得了令人印象深刻的 91.6 F1 分数,优于该类别中的所有其他型号。 在 FRAMES(一个需要超过 100k 个令牌上下文的问答的基准测试)上,DeepSeek-V3 紧随 GPT-4o 之后,同时性能明显优于所有其他模型。 这表明 DeepSeek-V3 在处理超长上下文任务方面的强大能力。 DeepSeek-V3 的长上下文功能在 LongBench v2 上的最佳性能进一步验证了它,该数据集在 DeepSeek V3 发布前几周发布。 在事实知识基准 SimpleQ 上,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 模式挑战赛)上,DeepSeek-V3 和 Qwen2.5-72B 表现出相似的性能水平,表明这两个模型都很好地优化了具有挑战性的中文推理和教育任务。

竞技场-困难羊驼评估 2.0
深度搜索-V2.5-090576.250.5
Qwen2.5-72B-指令81.249.1
LLaMA-3.1 405B69.340.5
GPT-4o-051380.451.1
克劳德-十四行诗-3.5-102285.252.0
深度搜索-V385.570.0

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

5.3.3开放式评估

除了标准基准外,我们还使用 LLM 作为评判者评估了我们在开放式生成任务上的模型,结果如表 7 所示。 具体来说,我们坚持 AlpacaEval 2.0 的原始配置(Dubois 等人,2024)和 Arena-Hard(Li 等人,2024 年一),它利用 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.4DeepSeek-V3 作为生成奖励模型

我们将 DeepSeek-V3 的判断能力与最先进的模型 GPT-4o 和 Claude-3.5 进行了比较。 表 8 显示了这些模型在 RewardBench 中的表现(Lambert 等人,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 蒸馏的最佳设置。

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

5.4.2自我奖励

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

5.4.3多 Token 预测评估

DeepSeek-V3 不是只预测下一个 token,而是通过 MTP 技术预测接下来的 2 个token。 结合思辨解码框架(Leviathan 等人,2023;Xia 等人,2023),它可以显著加快模型的解码速度。 自然会出现一个关于额外预测的代币的接受率的问题。 根据我们的评估,在各个生成主题中,第二个代币预测的接受率在 85% 到 90% 之间,显示出一致的可靠性。 这种高接受率使 DeepSeek-V3 能够显著提高解码速度,提供 1.8 倍的 TPS(每秒令牌数)。

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

在本文中,我们介绍了 DeepSeek-V3,这是一个大型 MoE 语言模型,具有 671B 总参数和 37B 激活参数,在 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(Artificial General Intelligence)的最终目标。 未来,我们计划在以下方向的战略性投资研究。

  •  

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

  •  

    我们将不断迭代训练数据的数量和质量,并探索整合额外的训练信号源,旨在推动更全面维度的数据扩展。

  •  

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

  •  

    我们将探索更全面、多维的模型评价方法,以防止在研究过程中倾向于优化一套固定的基准,这可能会对模型能力产生误导性印象,影响我们的基础评价。

    目录

    1、介绍

    2、建筑

    2.1基本架构

    2.1.1多头潜在注意力

    2.1.2具有辅助无损负载均衡的 DeepSeekMoE

    DeepSeekMoE 的基本架构。

    辅助无损负载均衡。

    互补序列辅助损失。

    节点限制路由。

    没有 token-dropping。

    2.2多 Token 预测

    MTP 模块

    MTP 训练目标

    推理中的 MTP

    3基础 设施

    3.1计算集群

    3.2培训框架

    3.2.1DualPipe 和 Computation-Communication 重叠

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

    3.2.3以最小的开销节省大量内存

    RMSNorm 和 MLA Up-Projection 的重新计算。

    CPU 中的指数移动平均线。

    用于多标记预测的共享嵌入和输出头。

    3.3FP8 训练

    3.3.1混合精度框架

    3.3.2提高量化和乘法的精度

    精细量化。

    提高累积精度。

    Mantissa over Exponents.

    在线量化。

    3.3.3低精度存储和通信

    Low-Precision Optimizer 状态。

    低精度激活。

    低精度通信。

    3.4推理和部署

    3.4.1预填充

    3.4.2译码

    3.5硬件设计建议

    3.5.1通信硬件

    3.5.2计算硬件

    在 Tensor Core 中具有更高的 FP8 GEMM 累积精度。

    支持 Tile-Wise 和 Block-wise 量化。

    支持在线量化。

    支持转置 GEMM 操作。

    4训练前

    4.1数据构建

    4.2超参数

    模型超参数。

    训练超参数。

    4.3长上下文扩展

    4.4评估

    4.4.1评估基准

    4.4.2评估结果

    4.5讨论

    4.5.1用于多标记预测的消融研究

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

    4.5.3批次负载均衡 VS.顺序负载均衡

    5训练后

    5.1监督微调

    推理数据。

    非推理数据。

    SFT 设置。

    5.2强化学习

    5.2.1奖励模式

    基于规则的 RM。

    基于模型的 RM。

    5.2.2组相对策略优化

    5.3评估

    5.3.1评估设置

    评估基准。

    比较基线。

    详细的评估配置。

    5.3.2标准评估

    英语基准测试。

    代码和数学基准测试。

    中国基准。

    5.3.3开放式评估

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

    5.4讨论

    5.4.1从 DeepSeek-R1 蒸馏

    5.4.2自我奖励

    5.4.3多 Token 预测评估

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


版权声明:

本网仅为发布的内容提供存储空间,不对发表、转载的内容提供任何形式的保证。凡本网注明“来源:XXX网络”的作品,均转载自其它媒体,著作权归作者所有,商业转载请联系作者获得授权,非商业转载请注明出处。

我们尊重并感谢每一位作者,均已注明文章来源和作者。如因作品内容、版权或其它问题,请及时与我们联系,联系邮箱:809451989@qq.com,投稿邮箱:809451989@qq.com

热搜词