DeepSeek-V3技术报告
目录
5.5.3. Batch-Wise负载均衡与Sequence-Wise负载均衡
1. 摘要
DeepSeek-V3是一款强大的混合专家(Mixture-of-Experts, MoE)语言模型,总参数量为671B,每个Token激活37B参数。
为了实现高效的推理和成本效益高的训练,DeepSeek-V3采用了多头潜在注意力(Multi-head Latent Attention, MLA)和DeepSeekMoE混合专家模型架构,这些架构已经在DeepSeek-V2中得到了充分验证。
此外还采用了两个策略,DeepSeek-V3开创了无辅助损失的负载均衡策略(auxiliary-loss-free strategy),并设定了多Token预测训练目标(Multi-Token Prediction, MTP)以增强性能。
DeepSeek-V3在14.8万亿高质量且多样化的token上进行了预训练,随后经过监督微调(SFT)和强化学习(RL)阶段,充分发挥了其能力。
全面评估表明,DeepSeek-V3在性能上超越了大部分开源模型,并达到了与领先闭源模型相当的水平。尽管性能卓越,DeepSeek-V3的完整训练仅需2.788M H800 GPU小时。此外,其训练过程非常稳定,整个训练过程中没有出现任何不可恢复的损失峰值,也未进行过任何回滚。
模型检查点可在https://github.com/deepseek-ai/DeepSeek-V3获取。
2. 引言
近年来,大语言模型经历了快速迭代和演进,逐步缩小了与通用人工智能(AGI) 的差距。除了闭源模型外,开源模型也取得显著进展,包括 DeepSeek 系列(MoE)、LLaMA 系列(Dense)、Qwen 系列(Dense)和 Mistral 系列(MoE),这些模型正在努力缩小与闭源模型之间的差距。为了进一步突破开源模型的能力边界,研究团队开发了 DeepSeek-V3,这是一个拥有67B参数的大规模专家混合(MoE)模型,其中每个Token激活37B参数。
基于提升性能和降低成本的双重目标,在架构设计方面,DeepSeek-V3 采用了MLA来确保推理效率,并使用 DeepSeekMoE来实现经济高效的训练。这两种架构在 DeepSeek-V2 中已经得到验证,证实了它们能够在保持模型性能的同时实现高效的训练和推理。除了延续这些基础架构外,研究团队还引入了两项创新策略来进一步提升模型性能。首先,DeepSeek-V3 首创了无辅助损失的负载均衡策略,有效降低了负载均衡对模型性能的负面影响。另外,DeepSeek-V3 采用了多 token 预测训练目标MTP,这种方法在评估基准测试中展现出了显著的性能提升。
为了提高训练效率,该研究采用了FP8 混合精度训练技术并对训练框架进行了全面优化。低精度训练作为一种高效的训练方案,其发展与硬件性能的提升密切相关。本研究首次在超大规模模型上成功验证了 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小时。结合1用于上下文长度扩展的19K GPU小时和用于后训练的5K GPU小时,DeepSeek-V3的完整训练仅花费2.788M GPU小时。假设H800 GPU的租金为每小时2美元,我们的总培训成本仅为5.576M美元。请注意,上述成本仅包括DeepSeek-V3的正式训练,不包括前期对架构、算法或数据的研究和消融实验相关的成本。
我们的主要贡献包括:
架构:创新的负载平衡策略和训练目标
- 在DeepSeek-V2高效架构的基础上,我们创新性提出了一种用于无辅助损失的负载均衡策略,最大限度地减少了因负载平衡而导致的性能下降。
- 我们研究了多令牌预测(MTP)训练目标并证明它对模型性能有益。它还可以用于推测解码以加速推理。
预训练:迈向终极的训练效率
- 我们设计了一个FP8混合精度训练框架,并首次在超大规模模型上验证了FP8训练的可行性和有效性。
- 通过算法、框架和硬件的共同设计,我们克服了跨节点MoE训练中的通信瓶颈,实现了近乎完全的计算与通信高度重叠。这显著提高了我们的训练效率,降低了训练成本,使我们能够在不增加额外成本的情况下进一步扩大模型规模。
- 我们仅以2.664M H800 GPU小时的经济成本,在14.8T的 token 上完成了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-Connect-3.5等领先的闭源模型相媲美,缩小了该领域开源和闭源模型之间的差距。(2) 对于真实性基准测试,DeepSeek-V3在SimpleQA和中文SimpleQA上的开源模型中表现出了卓越的性能。虽然它在英语事实知识(SimpleQA)方面落后于GPT-4o和Claude-Connect-3.5,但在汉语事实知识(Chinese SimpleQA)上超越了这些模型,突显了它在汉语事实信息方面的优势。
代码、数学和推理:(1)DeepSeek-V3在所有非长期CoT开源和闭源模型中的数学相关基准测试中取得了最先进的性能。值得注意的是,它甚至在特定的基准测试(如MATH-500)上表现优于o1预览版,展示了其强大的数学推理能力。(2)在编码相关任务方面,DeepSeek-V3成为LiveCodeBench等编码竞争基准测试中表现最佳的模型,巩固了其作为该领域领先模型的地位。对于工程相关任务,虽然DeepSeek-V3的性能略低于Claude-Connect-3.5,但它仍然远远超过了所有其他模型,这表明了它在各种技术基准上的竞争力。
在本文的其余部分,我们首先详细介绍DeepSeek-V3模型架构(第3节)。随后,我们介绍我们的基础设施,包括计算集群、训练框架、FP8训练支持、推理部署策略以及对未来硬件设计的建议(第4节)。接下来,我们描述预训练过程,包括训练数据构建、超参数设置、长上下文扩展技术、相关评估及讨论(第5节)。然后,我们讨论后训练的努力,包括监督微调(SFT)、强化学习(RL)、相应的评估和讨论(第6节)。最后,我们总结这项工作,讨论DeepSeek-V3的现有局限性,并提出未来研究的潜在方向(第7节)。
3. DeepSeek V3 架构
我们首先介绍DeepSeek-V3的基本架构,其特点是由多头潜在注意力(MLA) 实现高效推理和DeepSeekMoE 实现经济训练模型架构。然后,我们提出一个多令牌预测(MTP)训练目标,我们观察到这可以提高在评估基准上的整体性能。DeepSeek-V3整体遵循DeepSeek-V2的设计方案。
3.1 基础架构
DeepSeek-V3的基本架构仍在Transformer框架内。为了高效推理和经济训练,DeepSeek-V3还采用了由DeepSeek-V2充分验证过的MLA和DeepSeekMoE。与DeepSeek-V2相比,一个例外是我们为DeepSeekMoE引入了一种无辅助损失的负载平衡策略,以减轻确保负载平衡的努力而导致的性能下降。图2展示了DeepSeek-V3的基本架构,本节我们将简要回顾MLA和DeepSeekMoE的细节。
3.1.1. 多头潜在注意力
DeepSeek-V3 在注意力机制方面采用了 MLA 架构。设向量维度为 d,注意力头数为 ,每个头的维度为
,
表示给定注意力层中第 t 个 token 的注意力输入。MLA 的核心是,对注意力键和值进行低秩联合压缩,以减少推理过程中的键值(KV)缓存开销:
其中 表示键值的压缩潜在向量,
表示 KV 压缩维度,
为维度下投影变换矩阵,
分别为键和值的维度上投影变换矩阵。
用于生成携带旋转位置编码(Rotary Positional Embedding, RoPE) 的解耦键矩阵;RoPE(·)表示旋转位置编码矩阵的应用操作;[·;·]表示向量连接操作。注意,对于MLA ,仅需在生成过程中缓存蓝色方框内高亮标记的向量( 即
和
),这种设计显著降低了 KV 缓存空间,同时保持了与标准多头注意力相当的性能水平。
对于注意力查询部分,我们也进行了低秩压缩,可以在训练过程中有效减少激活内存占用:
其中 表示查询的压缩潜在向量,
表示查询压缩维度,
,
分别为查询的维度降维和升维变换矩阵,
用于生成携带旋转位置编码的解耦查询矩阵。
最终,将注意力查询( )、键(
)和值(
)组合得到最终的注意力输出
:
其中为输出维度变换矩阵。
3.1.2. DeepSeekMoE和无辅助损失的负载均衡
DeepSeekMoE的基本架构。对于前馈网络(FFNs),DeepSeelk-V3使用DeepSeekMoE架构。与传统的MoE架构如GShard 相比,DeepSeekMoE使
用更细粒度的专家,并将一些专家隔离为共享专家。令表示第t个标记的FFN输入,我们计算FFN输出
如下:
其中,和
分别表示共享专家和路由专家的数量;
和
分别表示第 i 位共享专家和第 i 位路由专家;
表示已激活的路由专家的数量;
是第 i 位专家的门控值;
是专家亲和力的象征;
是第i个路由专家的质心向量;
表示在为第 K 个令牌和所有路由专家计算的亲和度得分中,包含 K 最高得分的集合。与DeepSeek-V2略有不同,DeepSeek-V3使用 sigmoid 函数计算亲和度分数,并在所有选定的亲和度分数之间应用归一化以产生门控值。
无辅助损失的负载均衡。对于MoE模型,不平衡的专家负载我将导致路由崩溃,并降低在具有专家并行性的场景中的计算效率。传统解决方案通常依赖于辅助损失来避免负载不平衡。然而,过大的辅助损失会损害模型性能。为了在负载均衡和模型性能之间取得更好的权衡,我们开创了一种无辅助损失的负载均衡策略以确保负载均衡。具体来说,我们为每个专家引入一个偏置项并将其添加到相应的亲和力得分
中以确定top-K路由:
请注意,偏置项仅用于路由。门控值,将乘以FFN输出,仍然从原始亲和力得分派生。在训练期间,我们持续监控每个训练步骤中整个批次的专家负载在每个步骤结束时,如果对应的专家负载过重,则将偏置项减少 𝛾;如果对应的专家负载不足,则增加 𝛾,其中 𝛾是一个称为偏置更新速度的超参数。通过动态调整,DeepSeek-V3在训练期间保持专家负载的平衡,并比通过纯辅助损失鼓励负载平衡的模型表现出更好的性能。
互补的序列级辅助损失。虽然 DeepSeek-V3 主要采用无辅助损失策略来实现负载均衡,但为了防止单个序列中出现显著的负载不均衡现象,我们还引入了补充性的序列级平衡损失:
其中平衡因子是一个超参数,在 DeepSeek-V3 中被设置为极小值;
表示指示函数; T 代表序列中的 token 总数。这种序列级平衡损失机制有助于保持单个序列内专家负载的均衡性。
节点限制路由。类似于 DeepSeek-V2 的设备限制路由策略,DeepSeek-V3 采用了受控路由机制来优化训练过程中的通信开销。简而言之,我们限制每个 token 最多只能分配给 M 个计算节点,这些节点根据分布在每个节点上专家的最高个亲和力得分之和选择。在这种约束下,MoE 训练框架能几乎可以实现计算与通信的完全重叠并行处理。
无Token丢弃。由于有效的负载平衡策略,DeepSeek-V3 在整个训练过程中都保持着良好的负载平衡状态。因此,训练过程中不存在 token 丢弃现象。此外,我们还实施了特定的部署策略,以确保推理负载均衡,因此DeepSeek-V3在推理期间也不丢弃token。
3.2 多令牌预测
受Gloeckle的启发,我们研究并为DeepSeek-V3设置了一个多令牌预测(MTP)目标,这将预测范围扩展到每个位置的多个未来token。一方面,MTP目标可以密集化训练信号,并可能提高数据效率。另一方面,MTP可能使模型预先规划其表示,以更好地预测未来的token。图3说明了我们的MTP实现。不同于Gloeckle并行使用独立输出头预测D个额外令牌,我们顺序预测额外令牌,并在每个预测深度保持完整的因果链。我们在本节中介绍MTP实现的详细信息。
MTP模块。具体来说,我们的MTP实现使用 D 个顺序模块来预测 D 个额外的令牌。
第 k个MTP模块由一个共享向量层Emb(⋅)、一个共享输出层 OutHead(⋅),一个 Transformer 块 TRM(⋅) 和一个维度投影矩阵
组成。对于输入序列中的第 i 个 token ,在第 k 层预测时,我们的模型首先将两个向量进行组合:该 token 在第(k−1) 层的特征表示
和第(i+k) 个 token 的向量
,通过线性变换进行融合:
其中 [⋅;⋅] 表示向量拼接操作。特别是在 k=1时,代表主模型输出的特征表示。值得注意的是,每个 MTP 模块,其嵌入层都与主模型共享。经过组合的特征向量
作为第 k 层的 Transformer 处理单元的输入,生成当前该层的输出特征表示
:
其中 T 代表输入序列的长度, i:j表示切片操作(包括左右边界)。最后,以为输入,共享输出层将计算第 k 个预测 token 的概率分布
,其中 V 为词汇表大小:
输出层 OutHead(·) 首先通过线性变换将特征表示转换为 logits,然后使用 Softmax(·) 函数计算第 k 个预测 token 的概率分布。同样,每个MTP模块的输出层也与主模型共享。这种保持预测因果链的设计思路与 EAGLE 类似,但两者目标不同:EAGLE 主要用于推测解码,而本研究中的MTP主要用于优化训练效果。
MTP训练目标。对于每个预测层级,计算交叉熵损失:
其中,T 表示输入序列长度, $$t_i$$代表第 i 个位置的目标 token, 表示第 k 个 MTP 模块对
的预测概率。最终,我们计算所有层级 MTP 损失的平均值,并乘以权重系数
,得到总体 MTP 损失
,作为 DeepSeek-V3 的补充训练目标:
推理阶段的 MTP:我们的MTP策略主要是为了提高主模型的性能,因此在推理过程中,我们可以直接丢弃MTP模块,主模型可以独立正常运行。此外,我们还可以将这些MTP模块重新用于推测解码,以进一步改善生成延迟。
4. 基础设施
4.1 计算集群
DeepSeek-V3在一个配备2048个 NVIDIA H800 GPU的集群上进行训练。H800集群中的每个节点都包含8个GPU,通过节点内的NVLink和NVSwitch连接。不同节点之间使用InfiniBand(IB)互连以促进通信。
4.2 训练框架
DeepSeek-V3的训练由HAI-LLM框架支持,这是一个由我们的工程师从头开始构建的高效轻量级的培训框架。总体而言,DeepSeek-V3应用了16路流水线并行(PP),跨越8个节点的64路专家并行(EP)和ZeRO-1数据并行(DP)。
为了便于DeepSeek-V3的高效训练,我们实施了细致的工程优化。首先,我们设计了DualPipe算法以实现高效的管道并行。与现有的PP方法相比,DualPipe 算法显著减少了流水线气泡现象。更重要的是,它在前向和后向过程中重叠了计算和通信阶段,从而解决了跨节点专家并行性带来的繁重通信开销的挑战。其次,我们开发了高效的跨节点全对全通信内核,以充分利用IB和NVLink带宽,并节省专用于通信的流式多处理器(SMs)。最后,我们在训练过程中精心优化了内存占用,从而使我们能够在不使用昂贵的张量并行(TP)的情况下训练DeepSeek-V3。
4.2.1. DualPipe算法与计算通信协同优化
对于DeepSeek-V3,跨节点专家并行性引入的通信开销导致大致大约1:1得计算与通信比率效率低下。为了应对这一挑战,我们设计了一种创新的管道并行算法称为DualPipe,该算法不仅通过有效地重叠前向和反向计算通信阶段来加速模型训练,还减少了管道气泡。
DualPipe的核心思想是在一对单独的前向和反向块内重叠计算和通信。具体来说,我们将每个块分为四个模块:注意力机制,全节点数据分发, MLP 处理,全节点数据整合。特别是对于反向计算块,注意力和MLP进一步分为两部分:输入梯度计算和权重梯度计算,类似于ZeroBubble。此外,我们还有一个PP通信组件。如图4所示,对于一对前向和反向块,我们重新排列这些组件并手动调整专用于通信与计算并精确调控用于通信和计算的 GPU 流处理器资源分配比例,系统能够在运行过程中有效隐藏全节点通信和 PP 通信开销。
考虑到有效的重叠策略,完整的DualPipe调度如图5所示。它采用创新的双向管道调度策略,同时从流水线两端输入微批次数据,并且大部分通信过程能够与计算过程完全重叠。这种设计确保了即使在模型规模进一步扩大的情况下,只要我们保持恒定的计算通信比率,我们仍然可以在节点间使用细粒度的专家分配,同时将全节点通信开销降至接近于零。
此外,即使在没有沉重通信负担的更一般场景中,DualPipe仍表现出效率优势。我们总结了不同PP方法的管道气泡和内存使用情况。如表2所示,与ZB1P 和1F1B相比,DualPipe显著减少了管道气泡,同时仅将峰值激活记忆增加了1倍。尽管DualPipe需要保留两份模型参数,但这不会显著增加内存消耗,因为我们训练时使用较大的EP大小。与Chimera相比,DualPipe仅要求管道阶段和微批次可被2整除,而不要求微批次必须被管道阶段整除。此外,对于DualPipe算法,无论是气泡还是激活内存都不会随着微批次数量的增加而增加。
4.2.2. 高效实现跨节点全到全通信
为了确保DualPipe有足够的计算性能,我们定制了高效的跨节点全到全通信内核(包括调度和组合),以节省专用于通信的SMs数量。内核的实现与MoE门控算法和集群网络拓扑共同设计。具体来说,在我们的集群中,跨节点GPU通过IB完全互连,节点内通信通过NVLink处理。NVLink提供160 GB/s的带宽,大约是IB(50 GB/s)的3.2倍。为了有效地利用IB和NVLink的不同带宽,我们将每个令牌最多分配给4个节点,从而减少IB流量。对于每个令牌,当做出路由决定时,它将首先通过IB传输到目标节点上具有相同节点索引的GPU。一旦到达目标节点,我们将努力确保它即时通过NVLink转发到托管其目标专家的特定GPU,而不会被随后到达的令牌阻塞。这样,通过IB和NVLink的通信完全重叠,每个令牌可以高效地选择每个节点平均3.2名专家,而不会产生额外的NVLink开销。这意味着,虽然DeepSeek-V3实际上只选择了8个路由专家,但它可以将这个数字扩展到最多13个专家(4个节点×3.2个专家/节点),同时保持相同的通信成本。总体而言,在这种通信策略下,只有20个SM足以充分利用IB和NVLink的带宽。
详细地说,我们采用了warp specialization技术,将20个SM划分为10个通信信道。在调度过程中,(1)IB发送,(2)IB到NVLink转发,以及(3)NVLink接收分别由各自的warp处理。分配给每个通信任务的wrap数量,根据所有SM的实际工作负载动态调整。同样,在组合过程中,(1)NVLink发送,(2)NVLink到IB的转发和累积,以及(3)IB接收和累积也由动态调整的warp处理。此外,调度和组合内核都与计算流重叠,因此我们还考虑了它们对其他SM计算内核的影响。具体来说,我们采用定制的PTX(并行线程执行)指令并自动调整通信块大小,这显著减少了L2缓存的使用和对其他SM的干扰。
4.2.3. 以最小的开销节省大量内存
为了减少训练过程中的内存占用,我们采用了以下技术:
- RMSNorm和MLA上投影的重新计算。我们在反向传播过程中重新计算所有RMSNorm操作和MLA上投影,从而消除了持续存储其输出激活的需要。通过较小的开销,该策略显著降低了存储激活的内存需求。
- CPU中的指数移动平均。在训练过程中,我们保留了模型参数的指数移动平均(EMA),以提前估计学习率衰减后的模型性能。EMA参数存储在CPU内存中,并在每个训练步骤后异步更新。这种方法允许我们在不会产生额外的内存或时间开销的情况下维护EMA参数。
- MTP的共享嵌入和输出头。采用 DualPipe 策略,我们将模型的最浅层(包括嵌入层)和最深层(包括输出头)部署在相同的 PP等级上。这种布置使得MTP模块和主模型之间能够物理共享参数和梯度,进一步提高了我们的内存效率。
4.3 FP8 训练
受低精度训练最新进展的启发,我们提出了一种利用FP8数据格式训练DeepSeek-V3的细粒度混合精度框架。虽然低精度训练有很大的希望,但它往往受到激活、权重和梯度中异常值的限制。尽管在推理量化方面取得了重大进展,但很少有研究证明低精度技术在大规模语言模型预训练中的成功应用。为了应对这一挑战并有效地扩展FP8格式的动态范围,我们引入了一种细粒度量化策略:使用元素的分块分组,或使用
元素的分块分组。在我们提高精度的累积过程中,相关的去量化开销大大减轻,这是实现精确FP8通用矩阵乘法(GEMM)的关键方面。此外,为了进一步减少MoE训练中的内存和通信开销,我们在FP8中缓存和调度激活,同时在BF16中存储低精度优化器状态。我们在两个与DeepSeek-V2-Lite和DeepSeek-V2相似的模型规模上验证了所提出的FP8混合精度框架,训练了大约 1T token。值得注意的是,与BF16基线相比,我们的FP8训练模型的相对损失误差始终保持在0.25%以下,这一水平完全在训练随机性的可接受范围内。
4.3.1. 混合精度框架
基于已有广泛采用的低精度训练技术的基础上,我们设计了专门用于 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等级高效分片来最小化其影响。
4.3.2. 量化和乘法精度优化
基于我们的混合精度FP8框架,我们介绍了几种提高低精度训练精度的策略,重点介绍了量化方法和乘法过程。
细粒度量化
在低精度训练框架中,由于FP8格式的动态范围有限,溢出和欠流是常见的挑战,而FP8格式受到其缩减指数位的限制。作为标准做法,通过将输入张量的最大绝对值缩放到FP8的最大可表示值,将输入分布与FP8格式的可表示范围对齐。这种方法使低精度训练对激活异常值高度敏感,这会严重降低量化精度。为了解决这个问题,我们提出了一种细粒度量化方法,该方法在更细粒度的级别上应用缩放。如图7(a)所示:
(1)对于激活,我们在 1x128 图块为基础对元素进行分组和缩放(即每个token对应每 128 个通道);
(2)对于权重,我们在 128x128 块为基础对元素进行分组和缩放(即每 128 个输入通道对应每 128 个输出通道)。
这种方法通过根据较小的元素组调整尺度,确保量化过程能够更好地适应异常值。在附录B.2中,我们进一步讨论了当我们以与权重量化相同的方式在块的基础上对激活进行分组和缩放时的训练不稳定性。
我们方法中的一个关键修改是沿GEMM操作的内部维度引入每组缩放因子。标准FP8 GEMM不直接支持此功能。然而,结合我们精确的FP32累积策略,它可以有效地实施。
值得注意的是,我们的细粒度量化策略与微尺度格式的理念高度一致,而NVIDIA下一代GPU(Blackwell系列)的Tensor内核已经宣布支持具有较小量化粒度的微尺度格式。我们希望我们的设计可以作为未来工作的参考,以跟上最新GPU架构的步伐。
增加累积精度
低精度GEMM操作经常遇到下溢问题,其准确性在很大程度上取决于高精度累积,这通常在FP32精度下进行。然而,我们观察到,FP8 GEMM在NVIDIA H800 GPU上的累积精度仅限于保留约14位,远低于FP32的累积精度。当内部维度K较大时,这个问题将变得更加明显,这是大规模模型训练中批量大小和模型宽度增加的典型场景。以两个随机矩阵的GEMM运算,K=4096为例,在我们的初步测试中,Tensor Cores中有限的累积精度导致最大相对误差接近2%。尽管存在这些问题,有限的累积精度仍然是少数FP8框架的默认选项,严重限制了训练精度。
为了解决这个问题,我们采取了推广CUDA Cores以提高精度的策略。该过程如图7(b)所示。具体来说,在Tensor Cores上执行MMA(矩阵乘法累加)期间,使用有限的位宽累加中间结果。一旦达到的间隔,这些部分结果将被复制到CUDA Cores上的FP32寄存器,在那里进行全精度FP32累积。如前所述,我们的细粒度量化沿着内部维度K应用每组缩放因子。这些缩放因子可以在CUDA Cores上有效地相乘,作为去量化过程,额外的计算成本最小。
值得注意的是,此修改降低了单个战组的WGMMA(战组级矩阵乘累加)指令发布率。然而,在H800架构上,两个WGMMA同时存在是很典型的:当一个战组执行升级操作时,另一个能够执行MMA操作。这种设计实现了两个操作的重叠,保持了Tensor核心的高利用率。根据我们的实验,设置⻓ =128个元素,相当于4个WGMMA,代表了可以在不引入大量开销的情况下显著提高精度的最小累积间隔。
尾数超过指数
与之前工作采用的混合FP8格式不同,该格式在Fprop中使用E4M3(4位指数和3位尾数),在Dgrad和Wgrad中使用E5M2(5位指数和2位尾数)。我们在所有张量上采用E4M3格式以获得更高的精度。我们将这种方法的可行性归因于我们的细粒度量化策略,即分片和分块缩放。通过对较小的元素组进行操作,我们的方法在这些分组的元素之间有效地共享指数位,减轻了有限动态范围的影响。
在线量化
延迟量化用于张量量化框架中,该框架维护了先前迭代中最大绝对值的历史来推断当前值。为了确保准确的比例并简化框架,我们在线计算每个1x128激活图块或128x128权重块的最大绝对值。基于此,我们推导出缩放因子,然后将激活或权重在线量化为FP8格式。
4.3.3. 低精度存储和通信
结合我们的FP8训练框架,我们通过将缓存的激活和优化器状态压缩为较低精度的格式,进一步减少了内存消耗和通信开销。
低精度优化器状态。
我们采用BF16数据格式而不是FP32来跟踪AdamW优化器中的第一和第二时刻,而不会导致可观察到的性能下降。然而,主权重(由优化器存储)和梯度(用于批量累积)仍保留在FP32中,以确保整个训练过程中的数值稳定性。
低精度激活。
如图6所示,Wgrad操作在FP8中执行。为了减少内存消耗,自然选择以FP8格式缓存激活,以便线性运算符反向传递。然而,对于低成本高精度培训,需要特别考虑几个操作:
(1) 注意力运算的线性输入。这些激活也用于注意力运算的反向传递,这使得它对精度很敏感。我们采用专门针对这些激活的定制E5M6数据格式。此外,这些激活将在反向传播过程中从1x128量化块转换为128x1块。为了避免引入额外的量化误差,所有缩放因子都是四舍五入的,即2的整数幂。
(2) MoE中SwiGLU运算符的输入。为了进一步降低内存成本,我们缓存SwiGLU运算符的输入,并在反向传播过程中重新计算其输出。这些激活也通过我们的细粒度量化方法存储在FP8中,在内存效率和计算精度之间取得了平衡。
低精度通信。
通信带宽是MoE模型训练的关键瓶颈。为了缓解这一挑战,我们将MoE向上投影之前的激活量化为FP8,然后应用调度组件,该组件与MoE向上来投影中的FP8 Fprop兼容。与注意力运算后的线性输入一样,此激活的缩放因子是2的整数次幂。在MoE向下投影之前,对激活梯度应用了类似的策略。考虑到训练精度的重要性,前向和反向传播中的组合运算环节都保持 BF16 格式,以确保训练管道关键环节的计算精度。
4.4 推理和部署
我们将DeepSeek-V3部署在H800集群上,其中每个节点内的GPU通过NVVLink互连,整个集群的所有GPU通过IB完全互连。为了同时确保在线服务的服务级别目标(SLO)和高吞吐量,我们采用了以下部署策略,分离预填充和解码阶段。
4.4.1. 预填充
预填充阶段的最小部署单元由4个节点组成,共有32个GPU。attention部分采用4路张量并行(TP4)结合序列并行(SP),再加上8路数据并行(DP8)。其小规模的TP大小限制了TP通信的开销。对于MoE部分,我们使用32路专家并行(EP32),确保每个专家处理足够大的批量,从而提高计算效率。对于MoE的全连接通信,我们使用与训练相同的方法:首先通过IB跨节点传输token,然后通过NVLink在节点内部的GPU间转发。特别是,我们对浅层的密集MLP使用1路张量并行以节省TP通信。
为了在MoE部分的不同专家之间实现负载均衡,我们需要确保每个GPU处理大约相同数量的token。为此,我们引入了冗余专家的部署策略,复制高负载专家并冗余部署。高负载专家基于在线部署期间收集的统计信息检测,并定期调整(例如每10分钟一次)。确定冗余专家集后,我们根据观察到的负载仔细重新安排节点内GPU上的专家,尽量在不增加跨节点全连接通信开销的情况下平衡GPU之间的负载。对于DeepSeek-V3的部署,我们在预填充阶段设置了32个冗余专家。对于每个GPU,除了原本托管的8个专家外,还将托管一个额外的冗余专家。
此外,在预填充阶段,为了提高吞吐量并隐藏全连接和TP通信音的开销,我们同时处理两个具有相似计算工作量的微批次,使一个微批次的attention和MoE与另一个微批次的dispatch和combine重叠。
最后,我们正在探索一种动态冗余策略,每个GPU托管更多专家(例如16个专家),但在每次推理步骤中只激活9个。在每一层的全连接操作开始之前,我们实时计算全局最优路由方案。鉴于预填充阶段涉及大量计算,计算此路由方案的开销几乎可可以忽略不计。
4.4.2. 解码
在解码过程中,我们将共享专家视为路由专家。从这个角度来看,每个Token在路由时会选择9个专家,其中共享专家被视为一个重载专家,总是会被选择。解码阶段的最小部署单元由40个节点组成,配备320个GPU。attention部分采用TP4与SP结合,加上DP80,而MoE部分使用EP320。对于MoE部分,每个GPU仅托管一个专家,64个GPU负责托管冗余专家和共享专家。dispatch和combine部分的所有对所有通信通过IB直接点对点什转输以实现低延迟。此外,我们利用IBGDA技术进一步减少延迟并提高通信效率。
类似于预填充,我们定期根据在线服务的统计专家负载确定一定间隔内的冗余专家集。然而,由于每个GPU仅托管一个专家,因此无需重新安排专家。我们还在探索解码的动态冗余策略。然而,这需要更仔细地优化计算全局最优路由方案的算法,并将dispatch内核融合以减少开销。
此外,为了提高吞吐量并隐藏所有对所有通信的开销,我们还正在探索同时处理两个具有相似计算工作量的微批次。与预填充不同,attention在解码阶段占用更多时间。因此,我们将一个微批次的attention与另一个微批次的dispatch+MOE+combine重叠。在解码阶段,每个专家的批量大小相对较小(通常在256个token以内),瓶颈是内存访问而非计算。由于MoE部分只需加载一个专家的参数,内存访问开销很小,因此使用较少的SM不会显著影响整体性能。因此,为了避免影响attention部分的计算算速度,我们可以只分配一小部分SM给dispatch+MoE+combine。
4.5 硬件设计的建议
基于我们对全对全通信和FP8训练方案的实践经验,我们向AI硬件供应商提出以下芯片设计建议。
4.5.1. 通信硬件
在DeepSeek-V3中,我们实现了计算与通信的重叠,以在计算过程中隐藏通信延迟。这大大减少了与串行计算和通信相比对通信带宽的依赖。然而,当前的的通信实现依赖于昂贵的SM(例如,在H800 GPU可用的132个SM中,我们分配了20个用于此目的),这将限制计算吞吐量。此外,使用SM进行通信会导致显著的效率低下,因为Tensor Cores完全未得到充分利用。
目前,SM主要为所有对所有通信执行以下任务:
- 在IB(InfiniBand)和NVLink域之间转发数据,同时聚合来自单个GPU的目的地为同一节点内多个GPU的IB流量。
- 在RDMA缓冲区(注册的GPU内存区域)和输入/输出缓冲区之间传输数据。
- 执行reduce操作用于all-to-all combine。
- 在分块数据传输期间管理细粒度内存布局,以跨IB和NVLink域向多个专家传输数据。
我们希望未来供应商开发能够将这些通信任务从宝贵的计算单元SM中卸载,充当GPU协处理器或网络协处理器的的硬件。此外,为了减少应用程序编程复杂性,我们希望这种硬件能够统一IB(扩展)和NVLink(扩展)网络,使计算单元可以通过提交基于简单原语的通信请求轻松完成在整个IB-NVLink统一域中的读取、写入、组播和reduce等操作。
4.5.2.计算硬件
Tensor内核中FP8 GEMM累积精度更高。在当前NVIDIA Hopper架构的Tensor Core实现中,FP8 GEMM(通用矩阵乘法)采用定点累积,根据最大指数右移对齐尾数乘积后进行加法。我们的实验表明,它只使用每次尾数乘积最高14位的符号填充右移后的结果,并截断超出此范围的位。然而,例如,要从32个FP8xFP8乘法的累积中获得精确的的FP32结果,至少需要34位精度。因此,我们建议未来的芯片设计增加Tensor Core中的累积精度,以支持全精度累积,或者根据训练和推理算法的精度要求选择适当的累积位宽。这种方法确保误差保持在可接受范围内,同时保持计算效率。
支持分片和分块量化。当前的GPU仅支持每张量量化,缺乏对我们分片和分块量化的本地支持。在当前实现中,当达到间隔时,部分结果将从Tensor Core复制到CUDA Core,乘以缩放因子,并添加到CUDA Core上的FP32寄存器。虽然结合我们精确角的FP32累积策略显著减轻了去量化开销,但Tensor Core和CUDA Core之间的频繁数据移动仍然限制了计算效率。因此,我们建议未来的芯片支持细粒度量化,使Tensor Core能够接收缩放收因子并实现带组缩放的MMA。这样,整个部分和累积和去量化可以直接在Tensor Core中完成,直到产生最终结果,避免频繁的数据移动。
在线量化提供支持。当前的实现难以有效支持在线量化,尽管我们的研究已证明其有效性。在现有过程中,我们需要从HBM(高带宽内存)读取128个BEF16激活值(前一次计算的输出)以进行量化,并将量化的FP8值写回HBM,然后再次读取用于MMA。为解决这一效率问题,我们建议未来的芯片将FP8转换和TMA(张量内存加速器)访问整合为单一融合操作,从而在将激活从全局内存传输到共享内存的过程中完成量化,避免费预繁的内存读写。我们还建议支持warp级别的转换指令以加速,这进一步促进了层归一化和FP8转换的更好子融合。或者,可以采用近内存计算方法,即将计算逻辑放置在接近HBM的位置。在这种情况下,BF16元素可以直接在从HBM读入GPU时转换为FP8,减少大约50%的片外小内存访问。
对转置GEMM操作的支持。当前架构使得将矩阵转置与GEMM操作融合变得繁琐。在我们的工作流程中,前向传播期间的激活被量化为1x128 FP8块并存储。在反向传播期间,需要读出矩阵,去量化,转置,重新量化为128x1块,并存储在HBM中。为了减少内存操作,我们建议未来的芯片在MMA操作之前启用直接从共享内存读取矩阵的转置,对于训练和推理所需的精度。结合FP8格式转换和TMA访问的融合,此增强将显著简化量化工作流。
5. 预训练
5.1 数据结构
与DeepSeek-V2相比,我们通过提高数学和编程样本的比例来优化预训练语料库,不仅限于英语和中文。此外,我们的数据处理管道经过改进,以尽量减少冗余的同时保持语料库多样性。受启发,我们实现了文档打包方法以确保数据完整性,但在训练过程中没有引入跨样本注意力掩码。最后,DeepSeek-V3的训练语料库由14.8T高质量和多样化的token组成。
在DeepSeekCoder-V2的训练过程中,我们观察到Fill-in-Middle(FIM)策略不会损害下一个token预测能力,同时使模型能够根据上下文线索准确预测中间文本。为了与DeepSeekCoder-V2保持一致,我们在DeepSeek-V3的预训练中还纳入了FIM策略。具体来说,我们采用Prefix-Suffix-Middle(PSM)框架来结构化数据,如下所示:
这种结构在文档级别应用于预打包过程。FIM策略的应用率为0.1,与PSM框架一致。
DeepSeek-V3的分词器采用Byte-BPE(BBPE),词汇表扩展至128K个token。我们对预分词器和训练数据进行了修改,以优化多语言压缩效率。此外,与DeepSeek-V2相比,新的预分词器引入了结合标点和换行的标记。然而,当模型处理没有终端换行符的多行提示时,特别是对于少样本评估提示,可能会引入token边界偏差。为了解决这个问题,我们在训练过程中随机拆分一定比例的这种组合token,从而这使模型接触到更广泛的特殊情况,减轻这种偏差。
5.2 超参数
模型超参数。我们将Transformer层的数量设置为61,隐藏维度设置为7168。所有可学习的参数均用标准差为0.006的随机初始化。在MLA中,我们将注意力头的数量设置为128,每个头的维度
设置为128。KV压缩维度
设置为512,查询压缩维度
设置为1536。对于解耦的查询和键,我们将每个头维度
设置为64。我们用MoE层替换除前三层之外的所有FFN层。每个MoE层由1个共享专家和256个路由专家组成,其中每个专家的中间隐藏维度为2048。在路由的专家中,每个令牌将激活8个专家,并且每个令牌将确保发送到最多4个节点。多令牌预测深度 D 设置为1,即除了精确的下一个令牌外,每个令牌还将预测一个额外的令牌。与DeepSeek-V2一样,DeepSeek-V3也在压缩潜在向量之后使用了额外的RMSNorm层,并在宽度瓶颈处乘以额外的缩放因子。在此配置下,DeepSeek-V3包括671B个总参数,其中37B参数为每个令牌激活。
训练超参数。我们使用AdamW优化器,将超参数设置为𝛽1=0.9,𝛽2=0.95,并且weight_decay=0.1。我们在预训练期间将最大序列长度设置为4K,并在14.8T令牌上预训练DeepSeek-V3。对于学习率调度,我们首先在前2K个步骤中将其线性增加从0到2.2×10−4。然后,我们保持 的恒定学习率,直到模型消耗10T的训练 token。随后,我们按照余弦衰减曲线,在4.3T token中将学习率逐渐衰减到
。在最后500B个token的训练过程中,我们在前333B个token中保持
的恒定学习率,并在剩余的167B个token中将学习率切换到另一个恒定学习率
。梯度剪裁范数设置为1.0。我们采用批量大小调度策略,在前469B个token的训练中,批量大小从3072逐渐增加到15360,然后在剩余的训练中保持15360。我们利用管道并行性将模型的不同层部署到不同的GPU上,并且对于每一层,路由专家将在属于8个节点的64个GPU上均匀部署。对于节点限制路由,每个token 最多将发送到4个节点(即𝑀=4)。对于无辅助损失负载平衡,我们将前14.3T token 的偏置更新速度𝛾设置为0.001,并在剩余500B token的偏差更新速度设为0.0。对于平衡损失,我们将𝛼设置为0.0001,以避免任何单个序列内的极端不平衡。MTP损失权重𝜆对于前10T token设置为0.3,对于剩余的4.8T token设置为0.1。
5.3 长上下文扩展
DeepSeek-V3 采用与 DeepSeek-V2 相似的方法实现长上下文处理能力。在预训练完成后,我们使用 YaRN 进行上下文扩展,并执行两个额外的训练阶段,每个阶段包含 1000 步,逐步将上下文窗口从 4K 扩展至 32K, 然后再扩展至128K。系统沿用了 DeepSeek-V2 的 YaRN 配置,仅将其应用于解耦的共享键 。两个阶段的超参数设置保持相同,包括比例 s = 40, α=1 , β = 32,以及缩放因子
。在第一阶段,序列长度设置为 32K,批量大小为 1920。在第二阶段,序列长度增加至 128K,相应地将批量大小调整为 480。两个阶段的学习率都设置为
,与预训练阶段的最最终学习率匹配。
通过这种两阶段扩展训练,DeepSeek-V3能够处理长达128K的输入,同时保持强大的性能。图8 所示,经过监督微调后,DeepSeek-V3 在“Needle In A Haystack”(NIAH)测试中取得了显著的性能,证明了在高达128K的上下文窗口长度上的持续稳健性。
5.4 评估
5.4.1. 评估基准
DeepSeek-V3的基础模型是在以英语和中文为主的多语言语料库上进行预训练的,因此我们主要在英语和中文的一系列基准以及多语言基准上评估其性能。我们的评估基于我们集成在HAI-LLM框架中的内部评估框架。考虑的基准分类如下,其中下划线基准为中文,双下划线基准为多语言基准:
- 多学科多项选择题数据集包括MMLU、MMLURedux、MMLU Pro、MMMLU、C-Eval和CMMLU。
- 语言理解和推理数据集包括HellaSwag、PIQA、ARC和BigBench Hard(BBH)。
- 闭式问答数据集包括TriviaQA和NaturalQuestions。
- 阅读理解数据集包括RACE、DROP、C3和CMRC。
- 参考消歧数据集包括CLUEWSC和WinoGrande。
- 语言建模数据集包括Pile。
- 中国理解和文化数据集包括CCPM。
- 数学数据集包括GSM8K、Math、MGSM和CMath。
- 代码数据集包括HumanEval、LiveCodeBench Base(0801-1101)、MBPP和CRUXEval。
标准化检查包括AGIEval。请注意,AGIEval包括英文和中文子集。根据我们之前的工作(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)作为指标,以确保使用不同标记器的模型之间的公平比较。
5.4.2. 评估结果
在表3中,我们将DeepSeek-V3的基础模型与最先进的开源基础模型进行了比较,包括DeepSeek-V2-base(我们之前的版本)、Qwen2.5 72B base和LLaMA-3.1 405B base。我们使用内部评估框架评估所有这些模型,并确保它们共享相同的评估设置。请注意,由于过去几个月我们的评估框架发生了变化,DeepSeek-V2-Base的性能与我们之前报告的结果略有不同。总体而言,DeepSeek-V3-Base在大多数基准测试中全面优于DeepSeek-V2-Base和Qwen2.5 72B Base,并超过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每个万亿token仅需180K H800 GPU小时,这比训练72B或405B密集模型便宜得多。
5.5 讨论
5.5.1. 多令牌预测(MTP)策略的消融研究
表4,显示了MTP策略的消融结果。具体来说,我们在不同尺度的两个基线模型上验证了MTP策略。在小规模上,我们训练了一个基线MoE模型,该模型在1.33T token上包含15.7B个总参数。在大规模上,我们训练了一个基线MoE模型,该模型在540B token上包含228.7B个总参数。在它们之上,保持训练数据和其他架构不变,我们在其上添加了一个深度为1的MTP模块,并用MTP策略训练两个模型进行比较。请注意,在推理过程中,我们直接丢弃了MTP模块,因此比较模型的推理成本完全相同。从表中可以看出,MTP 策略在大多数评估基准上持续提高了模型性能。
5.5.2. 无辅助损失负载均衡策略的消融研究
表5,显示了无辅助损失负载均衡策略的消融结果。我们在不同尺度的两个基线模型上验证了这一策略。在小规模上,我们训练了一个基线MoE模型,该模型在1.33T token上包含15.7B个总参数。在大规模上,我们训练了一个基线MoE模型,该模型在578B个 token上包含228.7B个总参数。这两个基线模型都纯粹使用无辅助损失负载均衡策略来促进负载均衡,并使用带有 top-K 亲和度归一化的sigmoid门控函数。它们控制辅助损失强度的超参数分别与DeepSeek-V2-Lite和DeepSeek-V2相同。在这两个基线模型之上,保持训练数据和其他架构不变的情况下,我们删除了所有辅助损失并引入了无辅助损失负载均衡策略进行比较。从表中我们可以观察到,无辅助损失负载均衡策略在大多数评估基准上始终取得了更好的模型性能。
5.5.3. Batch-Wise负载均衡与Sequence-Wise负载均衡
辅助损失自由平衡与序列式辅助损失之间的关键区别在于它们的平衡范围:批次级与序列级相比于序列式的辅助损失,批次级的平衡施加了更灵活的约束,因为它并不强制每个序列内的领域平衡。这种灵活性使专家能够更好地专注于不同的领域。为了验证这一点,我们在Pile测试集的不同领域中记录并分析了一个基于16B辅助损失的基线和一个16B辅助损失自由模型的专家负载。如图9所示,我们观察到,辅助损失自由模型确实表现出更强的专家专业化模式。
为了进一步研究这种灵活性与模型性能优势之间的相关性,我我们还设计并验证了一种批处理级别的辅助损失,它鼓励在每个训练批次上进行负载均衡,而不是在每个序列上。实验结果表明,在实现相似的批处理级别负载均衡时,批处理级别的辅助损失也可以达到与辅助损失自由方法相似的模型性能。具体来说,在我们的1BMoE模型实验中,验证损失分别为:使用序列式辅助损失为2.258,使用辅助损失自由方法为2.253,使用批处理级别辅助损失为2.253。我们也在3B MoE模型上观察到了类似的结果:使用序列式辅助损失的模型验证损失为2.085,而使用辅助损失自由方法或批处理级别辅助损失的模型验证损失均为2.080。
此外,尽管批处理级别的负载均衡方法显示出一致的性能优势,但它们也面临两个潜在的效率挑战:(1)某些序列或小批次内的负载不均衡,(2)推理过过程中由于领域转移引起的负载不均衡。第一个挑战通过我们使用大规模专家并行性和数据并行性的训练框架自然得到解决,这保证了每个微批次的较大规模。对于第二个挑战,我们还设计并实现了一个高效的推理框架、采用冗余专家部署,如第3.4节所述,以克服这一问题。
6. 后训练
6.1 监督微调(SFT)
我们整理了指令微调数据集,包含多个领域的150 万个实例,每个领域采用了特定的数据创建方法。
推理数据: 在数学、代码竞赛和逻辑谜题等推理类任务中,系统采用内部 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进行两次迭代的微调,采用从开始逐渐减少到
$余弦衰减学习率调度。在训练期间,每个单序列由多个样本打包而成。然而,我们采用样本掩码策略以确保这些示例保持独立且互不可见。
6.2 强化学习(RL)
- 奖励模型设计
我们在强化学习过程中,系统同时采用规则型和模型型两种奖励模型(Reward Model, RM)。
基于规则的RM。对于可以使用特定规则验证的问题,我们采用基于规则的奖励系统来确定反馈。例如,某些数学问题有确定的结果,我们要求模型在指定格式(如方框内)提供最终答案,以便我们应用规则验证其正确性。同样,对于LeetCode问题,我们可以使用编译器根据测试用例生成反馈。通过尽可能利用基于规则的验证,我们确保更高的可靠性,因为这种方法不易受到操纵或利用。
基于模型的RM。对于具有自由形式真实答案的问题,我们依赖奖励模型来确定响应是否与预期的真实答案匹配。相反,对于没有明确真实答案的问题,例如涉及创意写作的问题,奖励模型的任务是根据问题和相应的答案作为输入提供反馈。奖励模型从DeepSeek-V3 SFT检查点进行训练。为了增强其可靠性,我们构建了偏好数据,这些数据不仅提供了最终的奖励,还包括导致奖励的思考链。这种方法有助于减轻特定任务中奖励勤欺骗的风险。
群组相对策略优化(GRPO)
系统采用与 DeepSeek-V2 相似的GRPO方法。这种方法放弃了通常与策略模型大小相同的批评模型,并从组分数中估计基线。具体实现中,对每个问题q,GRPO 从原策略模型中采样一组输出
,然后通过最大化以下目标函数来优化策略模型
:
其中𝜀和𝛽是超参数; 是参考模型;
是优势,来源于与每个组内的产出相对应的奖励
:
在强化学习过程中,我们整合了来自不同领域的提示,如编码、数学、写作、角色扮演和问答。这种方法不仅使模型更符合人类偏好,而且提高了基准测试的性能,特别是在可用SFT数据有限的情况下。
6.3 评估
6.3.1. 评估设置
评估基准。除了用于基础模型测试的基准外,我们还进一步评估了IFEval、FRAMES、LongBench v2、GPQA、SimpleQA、C-SimpleQA、SWE-Bench Verified 、Aider 、LiveCodeBench (2024年83月至11月的问题)、Codeforces、中国全国高中数学奥林匹克竞赛和美国邀请数学考试2024上评估指令模型。
比较基线。我们根据几个强基线对我们的聊天模型进行了全面评估,包括DeepSeek-V2-0506、DeepSeek-V2.5-0905、Qwen2.5 72B指令、LLaMA-3.1 405B指令、Claude-Connect 3.5-1022和GPT-4o-0513。对于DeepSeek-V2型号系列,我们选择最具代表性的变体进行比较。对于闭源模型,评估是通过其各自的API进行的。
详细评估配置。对于包括MMLU、DROP、GPQA和SimpleQA在内的标准基准测试,我们采用简单evals框架4中的评估提示。我们在零样本设置中使用MMLU-Redux的零值提示格式。对于其他数据集,我们遵循其原始评估协议,并使用数据集创建者提供的默认提示。对于代码和数学基准测试,HumanEval-Mul数据集总共包括8种主流编程语言(Python、Java、Cpp、C#、JavaScript、TypeScript、PHP和Bash)。我们使用CoT和非CoT方法来评估LiveCodeBench上的模型性能,数据收集于2024年8月至2024年11月。Codeforces数据集是使用竞争对手的百分比来衡量的。使用无代理框架对验证的SWE Bench进行评估。我们使用“diff”格式来评估Aider相关的基准。对于数学评估,AIME和CNMO 2024在0.7的温度下进行评估,结果在16次运行中取平均值,而MATH-500采用贪婪解码。我们允许所有模型为每个基准输出最多8192个令牌。
6.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上,DeepSeek-V3超越了同行,这是MMLU的改进版本,标签已更正。此外,在博士级评估测试平台GPQA Diamond上,DeepSeek-V3取得了显著成绩,排名仅次于Claude 3.5 Sonnet,远远超过了所有其他竞争对手。
在DROP、LongBench v2和FRAMES等长上下文理解基准测试中,DeepSeek-V3继续证明其作为顶级模型的地位。它在DROP的3-shot设置中获得了令人印象深刻的91.6 F1分数,超过了该类别中的所有其他型号。在FRAMES上,一个需要回答超过10万个令牌上下文的基准测试,DeepSeek-V3紧随GPT-4o之后,同时以显著的优势超越了所有其他模型。这展示了DeepSeek-V3在处理超长上下文任务方面的强大能力。DeepSeek-V3的长上下文功能通过其在LongBench v2上的一流性能得到了进一步验证,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-Connect-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表现出相似的性能水平,表明这两个模型都很好地针对具有挑战性的中文推理和教育任务进行了优化。
6.3.3. 开放式评估
除了标准基准测试外,我们还使用LLM作为评判标准,对开放式生成任务的模型进行评估,结果如表7所示。具体来说,我们坚持AlpacaEval 2.0和Arena Hard的原始配置,它们利用GPT-4-Turbo-1106作为成对比较的判断标准。在Arena Hard上,DeepSeek-V3在GPT-4-0314的基础上取得了超过86%的胜率,与Claude-Connect 3.5-1022等顶级机型的表现不相上下。这突显了DeepSeek-V3的强大功能,特别是在处理复杂的提示方面,包括编码和调试任务。此外,DeepSeek-V3取得了突破性的里程碑,成为第一个在Arena Hard基准测试中超过85%的开源模型。这一成就显著弥合了开源和闭源模型之间的性能差距,为开源模型在具有挑战性的领域中可以实现的目标设定了新的标准。
同样,DeepSeek-V3在AlpacaEval 2.0上表现出色,表现优于闭源和开源模型。这表明它在写作任务和处理直截了当的问答场景方面表现出色。值得注意的是,它以20%的显著优势超过了DeepSeek-V2.5-0905,突出了在处理简单任务方面的实质性改进,并展示了其进步的有效性。
6.3.4. DeepSeek-V3作为生成奖励模型
我们将DeepSeek-V3的判断能力与最先进的模型GPT-4o和Claude-3.5进行了比较。表8显示了RewardBench中这些模型的性能。DeepSeek-V3的性能可与GPT-4o-0806和Claude-3.5-Sonnet-1022的最佳版本相媲美,同时超越了其他版本。此外,DeepSeek-V3的判断能力也可以通过投票技术得到增强。因此,我们使用DeepSeek-V3和投票来对开放式问题提供自我反馈,从而提高了对齐过程的有效性和稳健性。
6.4 讨论
6.4.1. DeepSeek-R1蒸馏
我们基于DeepSeek-V2.5对从DeepSeek-R1蒸馏的贡献进行了消融分析。基线模型是在短CoT数据上训练的,而其竞争对手使用上述专家检查点生成的数据。
表9展示了蒸馏数据的有效性,显示LiveCodeBench和MATH-500基准测试都有显著改进。我们的实验揭示了一个有趣的权衡:蒸馏可以带来更好的性能,但也大大增加了平均响应长度。为了在模型精度和计算效率之间保持平衡,我们仔细选择了蒸馏中DeepSeek-V3的最佳设置。
我们的研究表明,从推理模型中提取知识为训练后优化提供了一个有前景的方向。虽然我们目前的工作重点是从数学和编码领域提取数据,但这种方法在各种任务领域显示出更广泛的应用潜力。在这些特定领域证明的有效性表明,长CoT蒸馏对于提高其他需要复杂推理的认知任务中的模型性能可能很有价值。在不同领域进一步探索这种方法仍然是未来研究的重要方向。
6.4.2. 自我奖励
奖励在强化学习中起着关键作用,指导优化过程。在通过外部工具进行验证很简单的领域,例如一些编码或数学场景,强化学习RL表现出了非凡的功效。然而,在更一般的情况下,通过硬编码构建反馈机制是不切实际的。在DeepSeek-V3的开发过程中,针对这些更广泛的上下文,我们采用了宪法AI方法,利用DeepSeek-V3本身的投票评估结果作为反馈源。该方法产生了显著的对齐效果,显著提高了DeepSeek-V3在主观评价中的性能。通过整合额外的宪法输入,DeepSeek-V3可以朝着宪法方向进行优化。我们认为,这种将补充信息与LLMs相结合作为反馈来源的范式至关重要。LLM是一个多功能处理器,能够将来自不同场景的非结构化信息转化为奖励,最终促进LLM的自我改进。除了自我奖励,我们还致力于发现其他通用和可扩展的奖励方法,以在一般场景中持续提高模型能力。
6.4.3. 多令牌(MTP)预测评估
DeepSeek-V3不是只预测下一个令牌,而是通过MTP技术预测接下来的2个令牌。结合推测解码框架,可以显著加快模型的解码速度。一个自然的问题是关于额外预测令牌的接受率。根据我们的评估,第二个token预测的接受率在各种代主题中在85%到90%之间,证明了一致的可靠性。这种高接受率使DeepSeek-V3能够显著提高解码速度,提供1.8倍的TPS(每秒token数)。
7. 结论,局限和未来的工作
本研究介绍了 DeepSeek-V3 大规模混合专家语言模型,该模型总参数量达到 671B,每次处理激活 37B 参数,训练数据规模达 14.8T token。
模型在延续 MLA 和 DeepSeekMoE 架构优势的基础上,创新性地提出了无辅助损失负载均衡策略,并引入多 token 预测训练目标以提升性能。
通过采用 FP8 训练技术和精细的工程优化,模型实现了高效的训练过程。后训练阶段,成功将 DeepSeek-R1 系列模型的推理能力迁移至新模型。
综合评估表明,DeepSeek-V3 不仅成为当前性能最强的开源模型,其性能可与GPT-4o 和 Claude-3.5-Sonnet 等领先闭源模型相媲美。同时,模型维持了极具经济的训练成本,整个训练过程只需 2.788M H800 GPU 小时,包括预训练、上下文长度扩展和后训练。
尽管模型在性能和训练效率上表现出色,但仍存在一些局限性,特别是在部署方面。首先,为保证高效推理,模型的推荐部署单元规模较大,可能超出小型团队的资源负担;其次,尽管DeepSeek-V3的部署策略实现了端到端的生成速度,是DeepSeek-V2的两倍多,但仍有优化空间。幸运的是,这些局限性有望随着硬件技术的进步得到自然解决。
DeepSeek 将继续坚持开源路线,秉持长期发展理念,稳步推进通用人工智能(AGI)的研究。未来研究将重点关注以下方向:
- 持续研究和优化模型架构,提升训练和推理效率,探索支持无限上下文长度的高效方案。同时突破 Transformer 架构的固有局限,拓展模型建模能力边界。
- 深化训练数据的质量提升和规模扩展,探索新的训练信号来源,实现数据在多个维度的全面扩展。
- 加强模型的深层推理能力,通过扩展推理的广度和深度,提升模型的智能水平和解决问题能力。
- 建立更全面的多维度评估体系,避免过度优化特定基准测试集而产生的能力误判,确保模型评估的科学性和全面性。