DeepSeek-V3 Technical Report

技术

Abstract

我们提出了DeepSeek-V3,这是一个强大的专家混合(MoE)语言模型,具有671B 个总参数,每个令牌激活37B 。为了实现高效的推理和低成本的训练,DeepSeek-V3采用了多头潜在注意(MLA )和DeepSeekMoE 架构,这两种架构在DeepSeek-V2中得到了充分的验证。此外,DeepSeek-V3开创了负载平衡的 auxiliary-loss-free 策略 ,并为更强的性能设置了multi-token prediction 训练目标。我们在14.8万亿个 不同的高质量令牌 上预训练DeepSeek-V3,然后进行监督微调和强化学习阶段,以充分利用其能力。综合评估表明,DeepSeek-V3优于其他开源模型,并实现了与领先的闭源模型相当的性能。尽管性能优异,但DeepSeek-V3的完整训练只需要 2.788M H800 GPU小时。此外,它的训练过程非常稳定 。在整个训练过程中,我们没有经历任何不可恢复的 loss spikes 或执行任何回滚。模型检查点可在https://github.com/deepseek-ai/DeepSeek-V3上获得。

picture.image

在这里插入图片描述

| Model | Total Params | Activated Params | Training Data | Training Time | Context Length | Github | | --- | --- | --- | --- | --- | --- | --- | | DeepSeek LLM | 67B | 67B | 2T |

| 4K | https://github.com/deepseek-ai/DeepSeek-LLM | | DeepSeek MoE | 16.4B | 16.4B | 2T |

| 4096 | https://github.com/deepseek-ai/DeepSeek-MoE | | Deepseek v2 | 236B | 21B | 8.1T |

| 128K | https://github.com/deepseek-ai/DeepSeek-V2 | | Deepseek v3 | 671B | 37B | 14.8T | 2.788M H800 GPU hours | 128K | https://github.com/deepseek-ai/DeepSeek-V3 |

Introduction

为了进一步推动开源模型功能的边界,我们扩展了模型并引入了DeepSeek-V3,这是一个具有671B 个参数的大型混合专家(MoE)模型,其中每个令牌激活37B 个参数。

以前瞻性的视角,我们始终追求强大的模型性能和经济的成本。因此,在架构上,DeepSeek-V3仍然采用 Multi-head Latent Attention(MLA ) 进行高效推理,采用DeepSeekMoE 进行高性价比的训练。这两种架构已经在DeepSeekV2 中进行了验证,证明了它们在实现高效训练和推理的同时保持稳健模型性能的能力。除了基本体系结构之外,我们还实现了两个额外的策略来进一步增强模型功能。首先,DeepSeek-V3为负载平衡 开创了一种 auxiliary-loss-free 策略 ,旨在最大限度地减少由于鼓励负载平衡而对模型性能产生的不利影响 。其次,DeepSeek-V3采用了一个 multi-token prediction训练目标 ,我们已经观察到它在评估基准上提高了整体性能。

为了实现高效训练,我们支持FP8混合精确训练 ,并对训练框架进行全面优化。低精度训练 已成为高效训练的一种有希望的解决方案,其演变与硬件能力的进步密切相关。在这项工作中,我们引入了一个FP8混合精度训练框架,并首次在一个非常大规模的模型上验证了它的有效性。通过支持FP8计算和存储 ,我们实现了加速训练和减少GPU内存使用 。在训练框架方面,我们设计了DualPipe 算法来实现高效的管道并行性 ,该算法具有较少的管道气泡,并且通过计算-通信重叠隐藏了训练过程中的大部分通信。这种重叠确保了,随着模型的进一步扩展,只要我们保持恒定的计算与通信比率,我们仍然可以跨节点雇用细粒度的专家,同时实现接近于零的all-to-all通信开销。此外,我们还开发了高效的跨节点all-to-all通信内核,以充分利用InfiniBand和NVLink带宽。此外,我们精心优化了内存占用,使得在不使用代价高昂的张量并行性的情况下训练DeepSeek-V3成为可能。结合这些努力,我们实现了高的训练效率。

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

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

picture.image

在这里插入图片描述

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

我们的主要贡献包括:

Architecture: Innovative Load Balancing Strategy and Training Objective

  • 在DeepSeek-V2的高效架构之上,我们开创了一种 auxiliary-loss-free 负载平衡策略,最大限度地减少了由于鼓励负载平衡而引起的性能下降。
  • 我们研究了一个 Multi-Token Prediction (MTP)目标,并证明了它有利于模型的性能。它也可以用于推理加速的推测解码。

Pre-Training: Towards Ultimate Training Efficiency

  • 我们设计了一个FP8混合精度训练框架,并首次在一个极大规模模型上验证了FP8混合精度训练的可行性和有效性。
  • 通过算法、框架和硬件的协同设计,克服了跨节点MoE训练中的通信瓶颈,实现了近乎完全的计算通信重叠。这大大提高了我们的训练效率,降低了训练成本,使我们能够在没有额外开销的情况下进一步扩大模型大小。
  • 在仅2664万H800 GPU小时的经济成本下,我们在14.8T令牌上完成了DeepSeek-V3的预训练,产生了目前最强的开源基础模型。预训练后的后续训练阶段只需要0.1M GPU小时。

Post-Training: Knowledge Distillation from DeepSeek-R1

我们引入了一种创新的方法,将 long-Chain-of-Thought(CoT)模型 (特别是 DeepSeek R1系列模型之一)的推理能力提取到标准llm中 ,特别是DeepSeek-v3。我们的管道将R1的verification和reflection patterns 优雅地整合到DeepSeek-V3中,并显着提高了其 reasoning 性能 。同时,我们还对DeepSeek-V3的输出样式和长度进行了控制。

Summary of Core Evaluation Results

  • Knowledge : (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)上超过了这些模型,突出了它在中文事实知识方面的优势。
  • Code, Math, and Reasoning : (1) DeepSeek-V3 在所有 non-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部分)。

Architecture

我们首先介绍了DeepSeek-V3的基本架构,其特点是用于高效推理的Multi-head Latent Attention (MLA ) 和用于经济训练的DeepSeekMoE 。然后,我们提出了一个 Multi-Token Prediction(MTP )训练目标,我们已经观察到它可以提高评估基准的整体性能。对于其他没有明确提到的小细节,DeepSeek-V3遵循DeepSeekV2 的设置。

Basic Architecture

DeepSeek-V3的基本架构仍然在 Transformer 框架内。为了高效的推理和经济的训练,DeepSeek-V3还采用了MLA和DeepSeekMoE,这两种方法都经过了DeepSeek-V2的彻底验证。与DeepSeek-V2相比,一个例外是,我们为DeepSeekMoE额外引入了一个 auxiliary-loss-free 负载平衡策略 (Wang等人,2024a),以减轻由于确保负载平衡而引起的性能下降 。图2说明了DeepSeek-V3的基本架构,我们将在本节中简要回顾MLA和DeepSeekMoE的细节。

picture.image

在这里插入图片描述

Multi-Head Latent Attention

picture.image

DeepSeekMoE with Auxiliary-Loss-Free Load Balancing

picture.image

与DeepSeek-V2略有不同的是,DeepSeek-V3使用sigmoid函数来计算亲和分数,并在所有选定的亲和分数之间应用归一化来产生门控制值。

picture.image

在这里插入图片描述

Auxiliary-Loss-Free Load Balancing . 对于MoE模型,不平衡的专家负载将导致 routing collapse,并降低专家并行场景下的计算效率。传统的解决方案通常依赖于auxiliary loss 以避免不平衡负载。但是,过大的 auxiliary loss 会影响模型的性能。为了在负载平衡和模型性能之间实现更好的权衡,我们首创了一种 auxiliary-loss-free 负载平衡策略 来确保负载平衡。具体来说,我们 **为每个专家引入一个偏差项

,并将其与相应的亲和分数

相加,以确定top-K路由** :

picture.image

在这里插入图片描述

注意,bias项仅用于路由 。**将与 FFN 输出相乘的 gating value 仍然来自原始亲和评分

在训练过程中,我们持续监控每个 training step 的 whole batch 专家负荷** 。**在每 step 结束时,如果对应的专家过载,我们将减少bias项

,如果对应的专家负载不足,我们将增加bias项

,其中

是一个称为bias更新速度的超参数** 。通过动态调整,DeepSeek-V3在训练过程中保持专家负载平衡,比单纯通过辅助损失来促进负载平衡的模型获得更好的性能

这个 auxiliary-loss-free 简单有效,大道至简呀。

Complementary Sequence-Wise Auxiliary Loss . 虽然DeepSeek-V3主要依赖于辅助无丢失策略进行负载平衡,但为了防止任何单个序列内的极端不平衡 ,我们还采用了互补的序列明智的平衡损失:picture.imageNode-Limited Routing . 与DeepSeek-V2使用的设备受限路由一样,DeepSeek-V3也使用受限路由机制来限制训练期间的通信成本。简而言之,**我们确保每个令牌将被发送到最多𝑀个节点,这些节点是根据分布在每个节点上的专家的最高

亲和分数的总和选择的** 。在此约束下,我们的MoE训练框架几乎可以实现完全的计算-通信重叠。

No Token-Dropping . 由于有效的负载平衡策略,DeepSeek-V3在其完整训练过程中保持了良好的负载平衡。因此,DeepSeek-V3在训练过程中不会drop任何令牌 。此外,我们还实现了特定的部署策略来确保推理负载平衡,因此DeepSeek-V3在推理期间也不会drop令牌

负载优化后,也不用 Token-Dropping 了。

Multi-Token Prediction

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

picture.image

picture.image

在这里插入图片描述

picture.image

在这里插入图片描述

Infrastructures

Compute Clusters

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

2048/8=256 node

Training Framework

DeepSeek-V3的训练由 HAI-LLM 框架支持,HAI-LLM 框架是由我们的工程师从头开始制作 的高效轻量级训练框架。总体而言,DeepSeek-V3采用了16管道并行 (PP), 跨越8 个节点的64专家并行 (EP),以及 ZeRO-1 数据并行 (DP)。

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

DualPipe and Computation-Communication Overlap

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

DualPipe的关键思想是在一对独立的前向和后向块中重叠计算和通信 。具体来说,我们将每个块划分为四个组件:attentionall-to-all dispatch , MLPall-to-all combine 。特别地,对于后向块,attentionMLP 都进一步分成两部分,backward for inputbackward for weights ,如 ZeroBubble。此外,我们有一个PP通信组件 。如图4所示,对于一对前向和后向块,我们重新排列这些组件,并手动调整专用于通信与计算的GPU SMs的比例。在这种重叠策略中,我们可以确保在执行过程中完全隐藏all-to-all 通信 和 PP通信

picture.image此外,即使在没有沉重通信负担的更一般的场景中,DualPipe 仍然显示出效率优势。在表2中,我们总结了不同 PP 方法的管道气泡和内存使用情况。如表所示,与 ZB1P 和 1F1B 相比,DualPipe显著减少了管道气泡,而峰值激活内存仅增加了

倍。尽管DualPipe需要保留模型参数的两个副本,但这并没有显著增加内存消耗,因为我们在训练期间使用了较大的EP大小。与Chimera 相比,DualPipe只要求管道级和微批能被2整除,而不要求微批能被管道级整除。此外,对于DualPipe,气泡和激活内存都不会随着微批数量的增加而增加。

picture.image

在这里插入图片描述

Efficient Implementation of Cross-Node All-to-All Communication

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

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

Extremely Memory Saving with Minimal Overhead

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

Recomputation of RMSNorm and MLA Up-Projection. 我们在反向传播期间重新计算所有RMSNorm操作和MLA up-projections,从而消除了持久存储其输出激活的需要。这种策略的开销很小,但显著降低了存储激活的内存需求。

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

Shared Embedding and Output Head for Multi-Token Prediction . 使用DualPipe策略,我们将模型的最浅层(包括嵌入层)和最深层(包括输出头)部署在相同的PP rank 上。这种安排使得MTP模块和 main 模型之间能够物理共享 shared embedding和输出头的参数和梯度。这种物理共享机制进一步提高了我们的内存效率。

FP8 Training

受到低精度训练最新进展的启发,我们提出了一个细粒度混合精度框架,利用FP8 数据格式来训练DeepSeek-V3。虽然低精度训练具有很大的前景,但它通常受到激活、权重和梯度中存在异常值的限制 。尽管在推理量化方面取得了重大进展,在大规模语言模型预训练中成功应用低精度技术的研究相对较少。为了应对这一挑战并有效地扩展FP8格式的动态范围,我们引入了一种细粒度的量化策略:**使用

元素进行分层分组或使用

元素进行分组** 。在我们提高精度的累积过程中,相关的去量化开销在很大程度上得到了缓解,这是实现精确的FP8通用矩阵乘法(GEMM)的关键方面。此外,为了进一步减少MoE训练中的内存和通信开销,我们在FP8中缓存和调度激活 ,而在BF16中存储低精度优化器状态 。我们在两个类似于DeepSeek-V2-Lite和DeepSeekV2的模型尺度上验证了提出的FP8混合精度框架,训练了大约1万亿个令牌(参见附录B.1中的更多细节)。值得注意的是,与BF16基线相比,我们的fp8训练模型的相对损失误差始终保持在0.25%以下,这一水平完全在训练随机性的可接受范围内

Mixed Precision Framework

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

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

尽管FP8格式具有效率优势,但由于对低精度计算的敏感性,某些运算符仍然需要更高的精度 。此外,一些低成本的operator也可以利用更高的精度,而总体训练成本可以忽略不计。因此,经过仔细研究,我们对以下组件保持原始精度(例如BF16或FP32)embedding 模块,output headMoE gating 模块,normalization 运算符和 attention 运算符。这些有针对性的高精度保留确保了DeepSeek-V3的稳定训练dynamics。为了进一步保证数值稳定性,我们以更高的精度存储master权重、weight gradients和optimizer states状态 。虽然这些高精度组件会产生一些内存开销,但通过在分布式训练系统中跨多个DP ranks进行有效的分片,可以将其影响降到最低。

Improved Precision from Quantization and Multiplication

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

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

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

Increasing Accumulation Precision . 低精度GEMM操作通常会遇到underflow问题,其精度在很大程度上取决于高精度积累,这通常在FP32精度中进行。然而,我们观察到FP8 GEMM在NVIDIA H800 gpu上的积累精度被限制在14位左右,明显低于FP32的积累精度 。当内部维度K很大时,这个问题会变得更加明显,这是大规模模型训练中的典型场景,其中批量大小和模型宽度都会增加。以K = 4096的两个随机矩阵的GEMM操作为例,在我们的初步测试中,Tensor Cores有限的累积精度导致最大相对误差接近2%。尽管存在这些问题,有限的积累精度仍然是少数FP8框架的默认选项,严重制约了训练精度。

为了解决这个问题,我们采用提升到CUDA内核的策略以获得更高的精度。该过程如图7 (b)所示。具体而言,在张量核上执行MMA(Matrix Multiply-Accumulate)期间,中间结果使用有限的位宽度累积一旦达到了一个时间间隔,这些部分结果将被复制到CUDA内核上的FP32寄存器,在那里执行全精度的FP32累积 。如前所述,我们的细粒度量化沿着内部维度k应用每组缩放因子。这些缩放因子可以在CUDA内核上有效地被乘作为去量化过程,而额外的计算成本最小。

值得注意的是,这种修改降低了单个 warpgroup 的WGMMA (warpgroup -level Matrix Multiply-Accumulate)指令 issue 率。然而,在H800架构上,典型的情况是两个WGMMA同时持久化:当一个warpgroup执行提升操作时,另一个warpgroup能够执行MMA操作。这种设计使两个操作重叠,保持张量核的高利用率。根据我们的实验,设置

为128个元素,相当于4个wgmma,它代表了最小的累积间隔,可以在不引入大量开销的情况下显著提高精度。

Mantissa over Exponents . 与先前工作采用的混合FP8格式在Fprop中使用E4M3(4位指数和3位尾数),在Dgrad和Wgrad中使用E5M2(5位指数和2位尾数),我们在所有张量上采用E4M3格式以获得更高的精度。我们将这种方法的可行性归因于我们的细粒度量化策略,即逐块缩放。通过在较小的元素组上操作,我们的方法有效地在这些分组元素之间共享指数位,减轻了有限动态范围的影响。

Online Quantization. 延迟量化被用于张量量化框架,它在之前的迭代中维护最大绝对值的历史,以推断当前值。为了确保准确的尺度并简化框架,我们在线计算每个1x128激活块或128x128权重块的最大绝对值。在此基础上推导出比例因子,然后将激活或权重在线量化为FP8格式。

Low-Precision Storage and Communication

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

Low-Precision Optimizer States . 我们采用BF16 数据格式而不是FP32来跟踪AdamW 优化器中的第一和第二moments,而不会产生可观察到的性能下降。然而,master权重 (由优化器存储)和梯度 (用于批量大小累积)仍然保留在FP32中 ,以确保整个训练过程中的数值稳定性。

Low-Precision Activation . 如图6所示,Wgrad操作是在FP8中执行的。为了减少内存消耗,自然会选择以FP8格式缓存 Linear 运算符的后向传递的激活。然而,对一些operator进行低成本高精度训练需要特别考虑:

  • Inputs of the Linear after the attention operator. 这些激活也用于注意操作符的反向传递,这使得它对精度很敏感。我们专门为这些激活采用定制的E5M6数据格式。此外,这些激活将在反向传递中从1x128的量化tile转换为128x1的tile。为了避免引入额外的量化误差,所有的比例因子都是四舍五入的,即2的整数次幂。
  • Inputs of the SwiGLU operator in MoE . 为了进一步降低内存开销,我们缓存SwiGLU操作符的输入,并在反向传递中重新计算其输出。这些激活也通过我们的细粒度量化方法存储在FP8中,在内存效率和计算精度之间取得平衡。

Low-Precision Communication . 通信带宽是MoE模型训练的关键瓶颈。为了缓解这一挑战,我们量化了MoE上投影到FP8之前的激活,然后应用调度组件,这与FP8 Fprop在MoE上投影中兼容。与注意算子之后的线性输入一样,该激活的缩放因子是2的整数次幂。在MoE向下投射之前,对激活梯度应用了类似的策略。对于前向和后向组合组件,我们在BF16中保留它们,以保持训练管道关键部分的训练精度。

Inference and Deployment

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

Prefilling

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

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

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

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

Decoding

解码 过程中,我们将共享专家视为路由专家 。从这个角度来看,每个令牌将在路由过程中选择9个专家,其中共享的专家被视为将始终被选择的 heavy-load 专家。解码阶段的最小部署单元由40个节点和320个gpu组成attention部分 采用TP4 + SP,结合DP80, MoE部分 采用EP320。对于MoE部分,每个GPU只承载一个专家,64个GPU负责托管冗余专家和共享专家 。dispatch和combine部分的all-to-all通信通过IB上的直接点对点传输来执行,以实现低延迟。此外,我们还利用IBGDA (NVIDIA, 2022)技术进一步减少延迟并提高通信效率。

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

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

Suggestions on Hardware Design

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

Communication Hardware

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

目前,SMs主要执行以下任务,用于all-to-all通信:

  • IB (InfiniBand)和NVLink域之间的 数据转发 ,同时将去往同一节点内多个GPU的IB流量从单个GPU汇聚。
  • 在RDMA缓冲区(注册的GPU内存区域)和输入/输出缓冲区之间传输数据。
  • 执行all-to-all combine 的reduce操作。
  • 管理细粒度的内存布局期间,块数据传输到跨IB和NVLink领域的多位专家。

我们渴望看到未来的供应商开发硬件,从有价值的计算单元SM中卸载这些通信任务,作为GPU协处理器或网络协处理器 ,如NVIDIA SHARP Graham等。此外,为了降低应用程序编程的复杂性,我们的目标是从计算单元的角度统一IB (scale-out)和NVLink (scale-up)网络。有了这个统一的接口,计算单元可以通过提交基于简单原语的通信请求,轻松地在整个IB-NVLink统一域完成read、write、multicast和reduce等操作。

Compute Hardware

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

Support for Tile- and Block-Wise Quantization . 目前的gpu只支持逐张量量化,缺乏对细粒度量化的原生支持,比如我们的tile量化和block量化。在当前的实现中,当达到

间隔时,部分结果将从张量核心复制到CUDA核心,乘以缩放因子,并添加到CUDA核心上的FP32寄存器。尽管与我们精确的FP32累积策略相结合,去量化开销显着减轻,但张量核和CUDA核之间频繁的数据移动仍然限制了计算效率。因此,我们建议未来的芯片支持细粒度量化,使张量核能够接收缩放因子,并实现MMA与组缩放 。这样,整个部分和累积和去量化可以直接在张量核内部完成,直到产生最终结果,避免了频繁的数据移动。

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

Support for Transposed GEMM Operations . 当前的体系结构使得矩阵变换与GEMM操作的融合非常麻烦。在我们的工作流程中,向前传递期间的激活被量化为1x128 FP8块并存储。在反向传递期间,矩阵需要被读出、去量化、转置、重新量化为128x1块,并存储在HBM中。为了减少内存操作,我们建议未来的芯片能够在MMA操作之前从共享内存中直接转置读取矩阵,以满足训练和推理所需的精度。结合FP8格式转换和TMA访问的融合,该增强将大大简化量化工作流程。

Pre-Training

与DeepSeek-V2相比,我们优化了预训练语料库,提高了数学和编程样本的比例 ,同时扩大了英语和汉语以外的多语言覆盖 范围。此外,我们的数据处理管道进行了改进,以尽量减少冗余,同时保持语料库的多样性 。受 Ding等人(2024)的启发,我们实现了数据完整性的文档打包方法,但在训练过程中没有结合 cross-sample attention masking。最后,DeepSeek-V3的训练语料库由我们的标记器中的14.8T 高质量和多样化的标记组成。

预训练数据,增加code和math的样本比例,扩大了多语言的覆盖。总量14.8T。

Data Construction

在DeepSeekCoder-V2 的训练过程中,我们观察到中间填充(FIM, Fill-in-Middle)策略在使模型能够根据上下文线索准确预测中间文本的同时,不会影响下一个令牌的预测能力 。为了与DeepSeekCoder-V2保持一致,我们还将FIM策略纳入DeepSeek-V3的预训练中 。具体来说,我们采用 Prefix-Suffix-Middle (PSM)框架对数据进行如下结构:

该结构作为pre-packing过程的一部分应用于document level 。FIM策略以0.1的概率应用,与PSM框架一致。

FIM策略不会影响next-token generation任务,同时也支持code/math能力。在普通的文档上应用这个策略也可以增加LLM对信息抽取的能力。

DeepSeek-V3的tokenizer 采用Byte-level BPE,扩展了128K 标记的词汇表。我们的标记器的预标记器和训练数据进行了修改,以优化多语言压缩 效率。此外,与DeepSeek-V2相比,新的预标记器引入了结合标点换行符 的标记。然而,当模型处理没有终止换行的多行提示时,这种技巧可能会引入令牌边界偏差(Lundberg, 2023),特别是对于少量的评估提示。为了解决这个问题,我们在训练期间随机分割了一定比例的这种组合令牌,这使模型暴露在更广泛的特殊情况下,并减轻了这种偏差。

词表扩展到128K。

Hyper-Parameters

Model Hyper-Parameters. 我们将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在compressed latent vectors后还使用了额外的RMSNorm层 ,并在宽度bottlenecks处增加了额外的缩放因子。在这种配置下,DeepSeek-V3总共包含671B 个参数,其中37B 为每个令牌激活。

MTP中的D设置为1,除了预测next-token外,多预测一个next-next-token。 next-next-token的loss会被next-token的大。

Training Hyper-Parameters . 我们使用AdamW 优化器,超参数设置为𝛽1 = 0.9,𝛽2 = 0.95, weight_decay = 0.1 。我们在预训练期间将最大序列长度设置为4K ,并在14.8T token上预训练DeepSeek-V3。对于学习率调度,我们首先在前2K 步中从0线性增加到2.2 × 10−4 。然后,我们保持2.2 × 10−4的恒定学习率,直到模型消耗10T 个训练令牌。随后,我们按照余弦衰减曲线 ,在4.3T 令牌中将学习率逐渐衰减到2.2 × 10−5 。在最后500B 个token的训练过程中,我们在前333B 个token中保持2.2 × 10−5 的恒定学习率,在剩下的167B 个token中切换到7.3 × 10−6 的恒定学习率。 gradient clipping norm 设置为1.0 。我们采用批大小调度策略,在第一个469B 令牌的训练中,批大小从3072 逐渐增加到15360 ,然后在剩余的训练中保持15360 。我们利用流水线并行性将模型的不同层部署在不同的gpu上,对于每一层,路由专家将统一部署在属于8个节点的64个gpu上 。对于节点限制路由,每个令牌将最多发送到4个节点(即𝑀= 4) 。对于auxiliary-loss-free负载平衡,我们将前14.3T 令牌的偏差更新速度设置

0.001 ,其余500B 令牌的偏差更新速度设置为0.0 。对于平衡损失,我们将

设置为0.0001 ,只是为了避免任何单个序列内的极端不平衡。对于前10T tokens,MTP损失权重为0.3 ,对于剩下的4.8T 代币,MTP损失权重为0.1

Long Context Extension

我们采用了与DeepSeek-V2 (DeepSeek-AI, 2024c)类似的方法来实现DeepSeek-V3的长上下文功能。在预训练阶段之后,我们应用YaRN (Peng et al., 2023a)进行上下文扩展,并执行两个额外的训练阶段每个阶段包括1000个step ,逐步将上下文窗口从4K 扩展到32K ,然后扩展到128K 。YaRN配置与DeepSeek-V2中使用的配置一致,专门应用于解耦的shared key

。两个阶段的超参数保持相同,尺度为

,比例因子

在第一阶段,序列长度设置为32K,批量大小为1920在第二阶段,序列长度增加到128K,批量大小减少到480 。两个阶段的学习率设置为7.3 × 10−6 ,与预训练阶段的最终学习率相匹配

YaRN这个阶段应该是Full Params Finetuning.

通过这两阶段的扩展训练,DeepSeek-V3能够处理长达128K的输入,同时保持强大的性能。图8显示了DeepSeek-V3在经过监督微调后,在“大海捞针”(NIAH)测试中取得了显著的性能,在长达128K的上下文窗口长度上表现出一致的鲁棒性。

picture.image

在这里插入图片描述

Evaluations

Evaluation Benchmarks

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

picture.image在我们之前的工作(DeepSeek-AI, 2024b,c)的基础上,我们对HellaSwag、PIQA、WinoGrande、RACE-Middle、RACE-High、MMLU、MMLU- redux、MMLU- pro、MMLU、ARC-Easy、ARC-Challenge、c-eval、CMMLU、C3和CCPM等数据集采用基于perplexity的评估方法,对TriviaQA、NaturalQuestions、DROP、MATH、GSM8K、MGSM、HumanEval、MBPP、LiveCodeBench-Base、CRUXEval、BBH、ageval、CLUEWSC、CMRC和CMath等数据集采用基于生成的评估方法。此外,我们对Pile-test执行基于语言建模的评估,并使用比特每字节(BPB)作为度量,以保证使用不同标记器的模型之间的公平比较。

Evaluation Results

picture.image在表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,本质上成为最强的开源模型。

从更详细的角度来看,我们将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(激活参数的11倍)相比,DeepSeek-V3-Base在多语言、代码和数学基准测试中也表现出更好的性能。在英语和汉语的基准测试中,DeepSeek-V3-Base表现出相当或更好的性能,特别是在BBH, mmlu系列,DROP, C-Eval, CMMLU和CCPM上表现出色。

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

Discussion

Ablation Studies for Multi-Token Prediction

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

Ablation Studies for the Auxiliary-Loss-Free Balancing Strategy

picture.image

在这里插入图片描述

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

Batch-Wise Load Balance VS. Sequence-Wise Load Balance

auxiliary-loss-free 平衡和 sequence-wise auxiliary loss 之间的关键区别在于它们的平衡范围:batch-wise与sequence-wise。与sequence-wise auxiliary loss,batch-wise balancing 施加了更灵活的约束,因为它不强制每个序列上的域内平衡。这种灵活性使专家能够更好地专注于不同的领域。为了验证这一点,我们记录并分析了在Pile test set 中不同域上基于16B辅助损耗的基线和16B辅助无损耗模型的专家负载。如图9所示,我们观察到无辅助损失模型如预期的那样展示了更多的专家专门化模式。

picture.image

在这里插入图片描述

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

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

Post-Training

Supervised Fine-Tuning

我们对指令调优数据集 进行了管理,使其包含跨越多个域150万 个实例,每个域使用针对其特定需求量身定制的不同数据创建方法

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

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

system prompt是精心设计的,包括指导模型产生丰富的反映和验证机制的响应的说明。在 RL阶段,即使在没有显式系统提示的情况下,该模型也利用 high-temperature sampling 来生成响应,该响应集成了r1生成的模式和原始数据。经过数百个RL步骤后,中间RL模型学会合并R1模式,从而战略性地提高整体性能。

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

Non-Reasoning Data . 对于非推理数据,如创意写作、角色扮演和简单的问答,我们使用DeepSeek-V2.5来生成响应,并招募人类注释者 来验证数据的准确性和正确性。

SFT Settings. 我们使用SFT数据集对DeepSeek-V3-Base进行了2 个epoch的微调,使用从5 × 10−6 开始逐渐降低到1 × 10−6余弦衰减 学习率调度。在训练过程中,每个序列都是由多个样本打包而成的。然而,我们采用了一个样本掩蔽策略,以确保这些例子保持孤立和相互不可见。

Reinforcement Learning

Reward Model

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

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

Model-Based RM . 对于具有 free-form 的 ground-truth 的问题,我们依靠奖励模型来确定response 是否与预期的 ground-truth 相匹配 。相反,对于那些没有明确的基本事实的问题,比如那些涉及创造性写作的问题,奖励模型的任务是根据 question 和相应的 answer 作为输入提供反馈奖励模型是从DeepSeek-V3 SFT检查点训练的为了提高其可靠性,我们构建了偏好数据,该数据不仅提供最终奖励,还包括导致奖励的思维链 。这种方法有助于降低在特定任务中被奖励黑客攻击的风险。

Group Relative Policy Optimization

picture.image

在这里插入图片描述

其中,{o_1, o_2, ..., o_G}= Policy(q), r_i = Critic(q, o_i)。第一项中的 clip 保证 新旧 policy 的分数比在

范围内,即第一项(min)的值有界。第二项,保证

不能变化太多,即 与

的距离要小,用于稳定训练收敛;当

相等时,第二项为0。

Evaluation

Standard Evaluation

picture.image

在这里插入图片描述

Open-Ended Evaluation

picture.image

在这里插入图片描述

DeepSeek-V3 as a Generative Reward Model

picture.image

在这里插入图片描述

Discussion

Distillation from DeepSeek-R1

我们在DeepSeek-V2.5的基础上去掉了DeepSeek-R1的蒸馏贡献。基线是在短CoT数据上训练的,而它的竞争对手使用由上面描述的专家检查点生成的数据。

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

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

Self-Rewarding

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

Multi-Token Prediction Evaluation

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

Conclusion, Limitations, and Future Directions

在本文中,我们介绍了DeepSeek-V3,这是一个大型MoE语言模型,具有671B个总参数和37B个激活参数,在14.8T token上训练。除了MLA和DeepSeekMoE架构外,它还开创了用于负载平衡的 auxiliary-loss-free 策略,并为更强的性能设置了 multi-token prediction 训练目标。由于支持FP8训练和细致的工程优化,DeepSeek-V3的训练具有成本效益。后训练还成功地从DeepSeek-R1系列模型中提取了推理能力 。综合评估表明,DeepSeek-V3已成为目前可用的最强大的开源模型,其性能可与gpt - 4o和Claude-3.5-Sonnet等领先的闭源模型相媲美。尽管它的性能很强,但它也保持了经济的培训成本。它的完整训练只需要2.788M H800 GPU小时,包括预训练、上下文长度扩展和后训练。

在承认其强大的性能和成本效益的同时,我们也认识到DeepSeek-V3有一些局限性,特别是在部署方面。首先,为了确保高效的推理,DeepSeek-V3的推荐部署单元相对较大,这可能会给小型团队带来负担。其次,虽然我们的DeepSeekV3部署策略已经实现了端到端生成速度是DeepSeek-V2的两倍以上,但仍有进一步增强的潜力。幸运的是,随着更高级硬件的开发,这些限制有望自然得到解决。

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

  • 我们将不断研究和完善我们的模型架构,旨在进一步提高训练和推理效率,努力接近对无限上下文长度的有效支持。此外,我们将尝试突破Transformer的架构限制,从而推动其建模功能的边界。
  • 我们将不断迭代训练数据的数量和质量,并探索纳入额外的训练信号源,旨在推动数据在更全面的维度范围内扩展。
  • 我们将不断探索和迭代我们的模型的深度思考能力,旨在通过扩展他们的推理长度和深度来提高他们的智能和解决问题的能力。
  • 我们将探索更全面和多维的模型评估方法,以防止在研究过程中倾向于优化一套固定的基准,这可能会造成对模型能力的误导印象,并影响我们的基础评估。

参考文献

0
0
0
0
关于作者

文章

0

获赞

0

收藏

0

相关资源
火山引擎边缘渲染的探索与实践 | 第 11 期边缘云主题Meetup
《火山引擎边缘渲染的探索与实践》黄旭能|火山引擎边缘渲染产品经理
相关产品
评论
未登录
看完啦,登录分享一下感受吧~
暂无评论