目录
2.1 Basic Architecture(基础架构)
2.1.1 多头潜注意力 (Multi-Head Latent Attention)
2.1.2 带无辅助损失负载均衡的 DeepSeekMoE(DeepSeekMoE with Auxiliary-Loss-Free Load Balancing)
2.2 Multi-Token Prediction(多令牌预测)
3.1 计算集群(Compute Clusters)
3.2 训练框架(Training Framework)
3.2.1 DualPipe 和计算-通信重叠(Computation-Communication Overlap)
3.4 推理与部署(Inference and Deployment)
3.5 硬件设计建议(Suggestions on Hardware Design)
5.1 监督微调(Supervised Fine-Tuning)
5.2 强化学习(Reinforcement Learning)
5.2.2 组相对策略优化(Group Relative Policy Optimization)
5.4.3 多令牌预测评估(Multi-Token Prediction Evaluation)
6. 结论、局限性与未来方向(Conclusion, Limitations, and Future Directions)
DeepSeek-V3技术报告。文章链接:
2412.19437https://arxiv.org/pdf/2412.19437
摘要
我们提出了 DeepSeek-V3,这是一个强大的专家混合模型(Mixture-of-Experts, MoE)语言模型,总参数为 6710 亿(671B),每个 token 激活 370 亿(37B)参数。为实现高效推理和高性价比训练,DeepSeek-V3 采用了多头潜在注意力(Multi-head Latent Attention, MLA)和 DeepSeekMoE 架构,这些架构已在 DeepSeek-V2 中得到充分验证。此外,DeepSeek-V3 率先引入了无辅助损失(auxiliary-loss-free)的负载均衡策略,并设定了多令牌预测(multi-token prediction)训练目标以提升性能。我们在 14.8 万亿(14.8T)个多样且高质量的 token 上对 DeepSeek-V3 进行预训练,随后通过监督微调(Supervised Fine-Tuning)和强化学习(Reinforcement Learning)阶段充分挖掘其能力。全面评估表明,DeepSeek-V3 超越其他开源模型,并实现了与领先闭源模型相当的性能。尽管性能卓越,DeepSeek-V3 的完整训练仅需 278.8 万(2.788M)个 H800 GPU 小时,且训练过程极为稳定——在整个训练过程中,我们未经历任何不可恢复的损失峰值或进行任何回滚。模型检查点可在 https://github.com/deepseek-ai/DeepSeek-V3 获取。
图1:DeepSeek-V3 与同类模型的基准性能对比
1. Introduction(介绍)
近年来,大型语言模型(Large Language Models, LLMs)经历了快速迭代与演进(Anthropic, 2024; Google, 2024; OpenAI, 2024a),逐步缩小了与通用人工智能(Artificial General Intelligence, AGI)的差距。除闭源模型外,开源模型——包括 DeepSeek 系列(DeepSeek-AI, 2024a,b,c; Guo et al., 2024)、LLaMA 系列(AI@Meta, 2024a,b; Touvron et al., 2023a,b)、Qwen 系列(Qwen, 2023, 2024a,b)以及 Mistral 系列(Jiang et al., 2023; Mistral, 2024)——亦取得显著进展,致力于缩小与闭源模型的差距。为突破开源模型能力的边界,我们扩展模型规模并推出 DeepSeek-V3,这是一个总参数达 6710 亿(671B)的大型专家混合模型(Mixture-of-Experts, MoE),其中每个 token 激活 370 亿(37B)参数。
凭借前瞻性视角,我们始终追求强大模型性能与经济成本。因此在架构层面,DeepSeek-V3 仍采用 多头潜在注意力(Multi-head Latent Attention, MLA)(DeepSeek-AI, 2024c)以实现高效推理,并采用 DeepSeekMoE(Dai et al., 2024)以支持高性价比训练。这两种架构已在 DeepSeek-V2(DeepSeek-AI, 2024c)中得到验证,证明其能在保持稳健模型性能的同时实现高效训练与推理。除基础架构外,我们实施两项额外策略以进一步增强模型能力:其一,DeepSeek-V3 率先引入 无辅助损失(auxiliary-loss-free)的负载均衡策略(Wang et al., 2024a),旨在最小化因强制负载均衡对模型性能的负面影响;其二,DeepSeek-V3 采用 多令牌预测(multi-token prediction)训练目标,我们观察到该策略可提升评估基准上的整体表现。
为实现高效训练,我们支持 FP8 混合精度训练 并对训练框架实施全面优化。低精度训练已成为高效训练的有力解决方案(Dettmers et al., 2022; Kalamkar et al., 2019; Narang et al., 2017; Peng et al., 2023b),其演进与硬件能力进步紧密相关(Luo et al., 2024; Micikevicius et al., 2022; Rouhani et al., 2023a)。本工作中,我们推出 FP8 混合精度训练框架,并首次在超大规模模型上验证其有效性。通过支持 FP8 计算与存储,我们同时实现训练加速和 GPU 内存占用降低。针对训练框架,我们设计 DualPipe 算法 以实现高效流水线并行——该算法减少流水线气泡(pipeline bubbles),并通过计算-通信重叠隐藏训练中大部分通信开销。此重叠确保即使模型进一步扩展,只要维持恒定计算-通信比,我们仍可跨节点部署细粒度专家,同时实现近零的全对全(all-to-all)通信开销。此外,我们还开发高效跨节点全对全通信内核,以充分利用 InfiniBand(IB)和 NVLink 带宽。进一步地,我们精细优化内存占用,使 DeepSeek-V3 无需使用昂贵的张量并行即可完成训练。结合这些努力,我们达成高训练效率。
在预训练阶段,我们在 14.8T 高质量多样化 token 上训练 DeepSeek-V3。预训练过程极为稳定——整个训练过程中,我们未遭遇任何不可恢复的损失峰值或需执行回滚操作。接下来,我们对 DeepSeek-V3 实施两阶段上下文长度扩展:第一阶段将最大上下文长度延至 32K,第二阶段进一步延至 128K。此后,我们进行后训练(post-training),包括 监督微调(Supervised Fine-Tuning, SFT) 和 强化学习(Reinforcement Learning, RL),以对齐人类偏好并充分释放模型潜力。后训练阶段,我们从 DeepSeek-R1 系列模型蒸馏推理能力,同时谨慎维护模型精度与生成长度的平衡。
我们在全面基准测试中评估了 DeepSeek-V3。尽管训练成本经济高效,综合评估表明 DeepSeek-V3-Base 已成为当前最强的开源基础模型,尤其在代码与数学领域。其对话版本(Chat)同样优于其他开源模型,并在标准与开放式基准测试中达到与顶尖闭源模型(包括 GPT-4o 和 Claude-3.5-Sonnet)相媲美的性能。
我们的主要贡献包括:
架构:创新的负载均衡策略和训练目标
在 DeepSeek-V2 高效架构的基础上,我们开创了一种用于负载均衡的无辅助损失(auxiliary-loss-free)策略,旨在最小化因鼓励负载均衡而对模型性能产生的不利影响。
我们研究了多令牌预测(Multi-Token Prediction, MTP)目标,并证明其对模型性能有益。它还可用于推测解码(speculative decoding)以实现推理加速。
预训练:追求极致的训练效率
我们设计了一个 FP8 混合精度训练框架,并首次在超大规模模型上验证了 FP8 训练的可行性和有效性。
通过算法、框架和硬件的协同设计,我们克服了跨节点 MoE 训练中的通信瓶颈,实现了近乎完全的计算-通信重叠。这显著提高了我们的训练效率并降低了训练成本,使我们能够在不增加额外开销的情况下进一步扩大模型规模。
仅以 266.4 万 H800 GPU 小时的经济成本,我们在 14.8 万亿(T)词元上完成了 DeepSeek-V3 的预训练,产生了当前最强的开源基础模型。预训练之后的后续训练阶段仅需 10 万 GPU 小时。
后训练:从 DeepSeek-R1 进行知识蒸馏
我们引入了一种创新方法,将推理能力从长思维链(Long-Chain-of-Thought, CoT)模型(特别是 DeepSeek R1 系列模型之一)蒸馏到标准大语言模型(LLM)中,尤其是 DeepSeek-V3。我们的流程优雅地将 R1 的验证和反思模式融入到 DeepSeek-V3 中,显著提升了其推理性能。同时,我们也保持了对 DeepSeek-V3 输出风格和长度的控制。
核心评估结果总结
知识:
(1) 在教育类基准测试如 MMLU、MMLU-Pro 和 GPQA 上,DeepSeek-V3 优于所有其他开源模型,在 MMLU 上达到 88.5 分,在 MMLU-Pro 上达到 75.9 分,在 GPQA 上达到 59.1 分。其性能可与领先的闭源模型如 GPT-4o 和 Claude-Sonnet-3.5 相媲美,缩小了开源模型与闭源模型在该领域的差距。
(2) 在事实性基准测试方面,DeepSeek-V3 在 SimpleQA 和 Chinese SimpleQA 上都展现出优于其他开源模型的性能。虽然它在英语事实知识(SimpleQA)上落后于 GPT-4o 和 Claude-Sonnet-3.5,但它在中文事实知识(Chinese SimpleQA)上超越了这些模型,突显了其在中文事实知识方面的优势。
代码、数学和推理:
(1) DeepSeek-V3 在数学相关基准测试中取得了所有非长思维链开源和闭源模型中最先进的性能。值得注意的是,它甚至在特定基准测试(如 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. Architecture(架构)
我们首先介绍 DeepSeek-V3 的基础架构,其特点是采用多头潜注意力(Multi-head Latent Attention, MLA)以实现高效推理,并采用 DeepSeekMoE 架构以实现经济的训练。然后,我们介绍一种多令牌预测(Multi-Token Prediction, MTP)训练目标,我们观察到它能提升模型在评估基准上的整体性能。对于其他未明确提及的次要细节,DeepSeek-V3 遵循 DeepSeek-V2 (DeepSeek-AI, 2024c) 的设置。
2.1 Basic Architecture(基础架构)
DeepSeek-V3 的基础架构仍属于 Transformer (Vaswani et al., 2017) 框架。为了实现高效推理和经济训练,DeepSeek-V3 同样采用了经过 DeepSeek-V2 充分验证的 MLA 和 DeepSeekMoE 架构。与 DeepSeek-V2 相比,一个例外是我们额外引入了一种用于负载均衡的无辅助损失策略(Wang et al., 2024a)用于 DeepSeekMoE,以减轻因努力确保负载均衡而对模型性能产生的负面影响。
图 2:展示了 DeepSeek-V3 的基础架构,我们将在本节简要回顾 MLA 和 DeepSeekMoE 的细节。
2.1.1 多头潜注意力 (Multi-Head Latent Attention)
对于注意力机制,DeepSeek-V3 采用 MLA 架构。令 d 表示嵌入维度,表示注意力头数,
表示每个头的维度,
表示在给定注意力层的第 t 个令牌的注意力输入。MLA 的核心是对注意力键(Key)和值(Value)进行低秩联合压缩,以减少推理过程中的键值(Key-Value, KV)缓存:
公式(1)-(5):MLA的KV压缩
其中 是键和值的压缩潜向量;
表示 KV 压缩维度;
表示下投影矩阵;
分别是键和值的上投影矩阵;
是用于生成带有旋转位置嵌入(RoPE)(Su et al., 2024) 的解耦键的矩阵;RoPE(⋅)表示应用 RoPE 矩阵的操作;[⋅;⋅] 表示拼接。请注意,对于 MLA,在生成过程中只需要缓存蓝框标记的向量(即
和
),这显著减少了 KV 缓存,同时保持与标准多头注意力(MHA)(Vaswani et al., 2017) 相当的性能。
对于注意力查询(Query),我们也进行低秩压缩,这可以减少训练期间的激活内存占用:
公式(6)-(9):MLA的查询压缩
其中 是查询的压缩潜向量;
表示查询压缩维度;
,
分别是查询的下投影和上投影矩阵;
是用于生成带有 RoPE 的解耦查询的矩阵。
最终,注意力查询 、键
和值
被组合以产生最终的注意力输出
:
公式(10)-(11):注意力输出计算
其中 表示输出投影矩阵。
2.1.2 带无辅助损失负载均衡的 DeepSeekMoE(DeepSeekMoE with Auxiliary-Loss-Free Load Balancing)
DeepSeekMoE 的基础架构。 对于前馈网络(Feed-Forward Networks, FFNs),DeepSeek-V3 采用 DeepSeekMoE 架构 (Dai et al., 2024)。与 GShard (Lepikhin et al., 2021) 等传统 MoE 架构相比,DeepSeekMoE 使用更细粒度的专家(experts)并将部分专家隔离为共享专家。令 表示第 t 个令牌的 FFN 输入,我们计算 FFN 输出
如下:
公式(12)-(15):DeepSeekMoE架构
其中 和
分别表示共享专家和路由专家(routed experts)的数量;
和
分别表示第 i 个共享专家和第 i 个路由专家;
表示激活的路由专家数量;
是第 i个专家的门控值(gating value);
是令牌到专家的亲和度(affinity);
是第 i 个路由专家的质心向量(centroid vector);
表示包含为第 t个令牌和所有路由专家计算的亲和度得分中前 K 个最高得分的集合。与 DeepSeek-V2 略有不同,DeepSeek-V3 使用 sigmoid 函数计算亲和度得分,并在所有选中的亲和度得分之间应用归一化以产生门控值。
无辅助损失的负载均衡(Auxiliary-Loss-Free Load Balancing)。 对于 MoE 模型,不平衡的专家负载将导致路由崩溃(routing collapse)(Shazeer et al., 2017),并在专家并行场景中降低计算效率。传统的解决方案通常依赖辅助损失(auxiliary loss)(Fedus et al., 2021; Lepikhin et al., 2021) 来避免不平衡负载。然而,过大的辅助损失会损害模型性能 (Wang et al., 2024a)。为了在负载均衡和模型性能之间实现更好的权衡,我们开创了一种无辅助损失的负载均衡策略 (Wang et al., 2024a) 来确保负载平衡。具体来说,我们为每个专家引入一个偏置项(bias term),并将其添加到相应的亲和度得分
中以确定前 K 路由:
公式(16):无辅助损失负载均衡
请注意,偏置项仅用于路由。将被乘以 FFN 输出的门控值仍然来源于原始的亲和度得分 。在训练期间,我们持续监控每个训练步整个批次的专家负载。在每个步结束时,如果其对应的专家过载,我们将偏置项减少 γ;如果其对应的专家负载不足,我们则将其增加 γ,其中 γ 是一个称为偏置更新速度(bias update speed)的超参数。通过这种动态调整,DeepSeek-V3 在训练期间保持平衡的专家负载,并且比仅通过纯辅助损失来鼓励负载均衡的模型实现了更好的性能。
补充的序列级辅助损失(Complementary Sequence-Wise Auxiliary Loss)。 尽管 DeepSeek-V3 主要依赖无辅助损失策略进行负载均衡,但为了防止任何单个序列内出现极端不平衡,我们也采用了一个补充的序列级平衡损失:
公式(17)-(20):序列级平衡损失
其中平衡因子 α 是一个超参数,对于 DeepSeek-V3 将赋予一个极小的值;1(⋅)表示指示函数(indicator function);T 表示序列中的令牌数。该序列级平衡损失鼓励每个序列上的专家负载达到平衡。
节点受限路由(Node-Limited Routing)。 类似于 DeepSeek-V2 使用的设备受限路由(device-limited routing),DeepSeek-V3 也使用一种受限路由机制来限制训练期间的通信成本。简而言之,我们确保每个令牌最多被发送到 M 个节点,这些节点是根据分布在各节点上的专家的最高亲和度得分之和来选择的。在此约束下,我们的 MoE 训练框架几乎可以实现完全的计算-通信重叠。
无令牌丢弃(No Token-Dropping)。 由于有效的负载均衡策略,DeepSeek-V3 在其整个训练过程中保持良好的负载平衡。因此,DeepSeek-V3 在训练期间不丢弃任何令牌。此外,我们还实施了特定的部署策略以确保推理负载平衡,因此 DeepSeek-V3 在推理期间也不丢弃令牌。
2.2 Multi-Token Prediction(多令牌预测)
受 Gloeckle et al. (2024) 的启发,我们研究并为 DeepSeek-V3 设定了一个多令牌预测(Multi-Token Prediction, MTP)目标,该目标将预测范围扩展到每个位置的多个未来令牌。一方面,MTP 目标使训练信号更加密集,可能提高数据效率。另一方面,MTP 可能使模型能够预先规划其表示,以更好地预测未来的令牌。图 3 展示了我们的 MTP 实现。与 Gloeckle et al. (2024) 使用独立的输出头并行预测 D 个额外令牌不同,我们顺序预测额外的令牌,并在每个预测深度保持完整的因果链(causal chain)。我们在本节介绍 MTP 实现的细节。
MTP 模块。 具体来说,我们的 MTP 实现使用 D 个顺序模块来预测 D 个额外的令牌。第 k 个 MTP 模块由一个共享的嵌入层 Emb(·)、一个共享的输出头 OutHead(·)、一个 Transformer 块 TRMk(⋅) 和一个投影矩阵 组成。对于第 i 个输入令牌
,在第 k 个预测深度,我们首先将第 i 个令牌在第 (k-1) 个深度的表示
和第 (i+k) 个令牌的嵌入
通过线性投影进行组合:
公式(21):MTP模块计算
其中 [⋅;⋅]表示拼接。特别地,当 k=1 时,指的是由主模型给出的表示。请注意,对于每个 MTP 模块,其嵌入层与主模型共享。组合后的
作为第 k 个深度的 Transformer 块的输入,以产生当前深度的输出表示
:
公式(22):MTP模块计算
其中 T 表示输入序列长度,i:j表示切片操作(包含左右边界)。最后,以 作为输入,共享输出头将计算第 k 个额外预测令牌
的概率分布,其中 V 是词汇表大小:
公式(23):MTP模块计算
输出头 OutHead(⋅)将表示线性映射为 logits,随后应用 Softmax(⋅)函数来计算第 k 个额外令牌的预测概率。同样,对于每个 MTP 模块,其输出头与主模型共享。我们保持预测因果链的原则类似于 EAGLE (Li et al., 2024b),但其主要目标是推测解码 (Leviathan et al., 2023; Xia et al., 2023),而我们利用 MTP 来改进训练。
MTP 训练目标。 对于每个预测深度,我们计算一个交叉熵损失 :
公式(24):MTP损失函数
其中 T 表示输入序列长度, 表示第 i 个位置的真实令牌,
表示由第 k 个 MTP 模块给出的 的
相应预测概率。最后,我们计算所有深度上的 MTP 损失的平均值,并乘以一个加权因子 λ,得到总的 MTP 损失
,它作为 DeepSeek-V3 的一个额外训练目标:
公式(25):MTP损失函数
图 3:多令牌预测(MTP)实现示意图。我们在每个深度为每个令牌的预测保持完整的因果链。
3. Infrastructures(基础设施)
图 4:单个前向和后向块对的重叠策略(Transformer块的边界未对齐)。橙色表示前向,绿色表示"输入的向后传播",蓝色表示"权重的向后传播",紫色表示PP通信,红色表示屏障。全对全通信和PP通信均可完全隐藏。
3.1 计算集群(Compute Clusters)
DeepSeek-V3 在配备 2048 个 NVIDIA H800 GPU 的集群上进行训练。H800 集群中的每个节点包含 8 个 GPU,通过节点内的 NVLink 和 NVSwitch 连接。不同节点之间,使用 InfiniBand(IB)互连来促进通信。
3.2 训练框架(Training Framework)
DeepSeek-V3 的训练由 HAI-LLM 框架支持,这是一个由我们的工程师从零开始打造的轻量级训练框架。总体上,DeepSeek-V3 应用 16 路流水线并行(Pipeline Parallelism, PP)(Qi et al., 2023a)、跨越 8 个节点的 64 路专家并行(Expert Parallelism, EP)(Lepikhin et al., 2021) 和 ZeRO-1 数据并行(Data Parallelism, DP)(Rajbhandari et al., 2020)。
为了促进 DeepSeek-V3 的高效训练,我们实施了细致的工程优化。首先,我们设计了 DualPipe 算法以实现高效的流水线并行。与现有的 PP 方法相比,DualPipe 具有更少的流水线气泡(pipeline bubbles)。更重要的是,它在前向和后向过程之间重叠了计算和通信阶段,从而解决了跨节点专家并行引入的重通信开销挑战。其次,我们开发了高效的跨节点全对全(all-to-all)通信内核,以充分利用 IB 和 NVLink 带宽,并节省专用于通信的流式多处理器(Streaming Multiprocessors, SMs)。最后,我们精心优化了训练期间的内存占用,从而使得我们能够在训练 DeepSeek-V3 时不使用昂贵的张量并行(Tensor Parallelism, TP)。
3.2.1 DualPipe 和计算-通信重叠(Computation-Communication Overlap)
对于 DeepSeek-V3,跨节点专家并行引入的通信开销导致计算与通信的比例约为 1:1,这是低效的。为了应对这一挑战,我们设计了一种称为 DualPipe 的创新流水线并行算法,该算法不仅通过有效重叠前向和后向计算-通信阶段来加速模型训练,而且减少了流水线气泡。
DualPipe 的关键思想是在单个前向和后向块对(pair of individual forward and backward chunks)内重叠计算和通信。具体来说,我们将每个块分为四个组件:注意力(attention)、全对全分发(all-to-all dispatch)、多层感知机(MLP)和全对全组合(all-to-all combine)。特别地,对于一个后向块,注意力和 MLP 会进一步拆分为两部分:输入的向后传播(backward for input)和权重的向后传播(backward for weights),类似于 ZeroBubble (Qi et al., 2023b)。此外,我们还有一个 PP 通信组件。如图 4 所示,对于一对前向和后向块,我们重新排列这些组件,并手动调整专用于通信与计算的 GPU SM 比例。在这种重叠策略中,我们可以确保全对全和 PP 通信在执行过程中都能完全隐藏。考虑到高效的重叠策略,完整的 DualPipe 调度如图 5 所示。它采用双向流水线调度,同时从流水线的两端输入微批次(micro-batches),并且大部分通信可以完全重叠。这种重叠还确保,随着模型的进一步扩展,只要我们保持恒定的计算与通信比例,我们仍然可以在节点间部署细粒度专家,同时实现近乎零的全对全通信开销。
图 5:针对 8 个 PP 等级(ranks)和两个方向上各 20 个微批次的 DualPipe 调度示例。反向的微批次与正向的微批次对称,因此为简化说明我们省略了它们的批次 ID。由共享黑色边框包围的两个单元具有相互重叠的计算和通信。
表 2:不同流水线并行方法间流水线气泡和内存使用情况的比较。F 表示前向块(forward chunk)的执行时间,B 表示完整后向块(full backward chunk)的执行时间,W 表示“权重的向后传播”("backward for weights")块的执行时间,F&B 表示两个相互重叠的前向和后向块的执行时间。
此外,即使在更通用的没有重通信负担的场景中,DualPipe 仍然展现出效率优势。在表 2 中,我们总结了不同 PP 方法间的流水线气泡和内存使用情况。如表所示,与 ZB1P (Qi et al., 2023b) 和 1F1B (Harlap et al., 2018) 相比,DualPipe 显著减少了流水线气泡,同时仅将峰值激活内存(peak activation memory)增加了 倍。尽管 DualPipe 需要保留两份模型参数副本,但这并不会显著增加内存消耗,因为我们在训练时使用了较大的 EP 规模。与 Chimera (Li and Hoefler, 2021) 相比,DualPipe 仅要求流水线阶段(pipeline stages)和微批次能被 2 整除,而不要求微批次能被流水线阶段整除。此外,对于 DualPipe,气泡和激活内存都不会随着微批次数量的增加而增加。
3.2.2 跨节点全对全通信的高效实现
为了确保 DualPipe 拥有足够的计算性能,我们定制了高效的跨节点全对全通信内核(包括分发(dispatching)和组合(combining))以节省专用于通信的 SM 数量。内核的实现是与我们的 MoE 门控算法和我们集群的网络拓扑共同设计的。具体来说,在我们的集群中,跨节点 GPU 通过 IB 完全互连,节点内通信通过 NVLink 处理。NVLink 提供 160 GB/s 的带宽,大约是 IB(50 GB/s)的 3.2 倍。为了有效利用 IB 和 NVLink 的不同带宽,我们将每个令牌分发限制在最多 4 个节点,从而减少 IB 流量。对于每个令牌,当做出其路由决策后,它将首先通过 IB 传输到其目标节点上具有相同节点内索引(in-node index)的 GPU。一旦到达目标节点,我们将努力确保它通过 NVLink 即时转发到托管其目标专家的特定 GPU,而不会被后续到达的令牌阻塞。通过这种方式,通过 IB 和 NVLink 的通信完全重叠,每个令牌可以高效地选择每个节点平均 3.2 个专家,而不会产生 NVLink 的额外开销。这意味着,尽管 DeepSeek-V3 在实践中仅选择 8 个路由专家,但它可以将此数量最多扩展到 13 个专家(4 个节点 x 3.2 个专家/节点),同时保持相同的通信成本。总体而言,在这种通信策略下,仅需 20 个 SM 就足以充分利用 IB 和 NVLink 的带宽。
详细来说,我们采用线程束专业化技术(warp specialization technique)(Bauer et al., 2014) 并将 20 个 SM 划分为 10 个通信通道。在分发过程中,(1)IB 发送,(2)IB 到 NVLink 的转发,以及(3)NVLink 接收分别由各自的线程束(warps)处理。分配给每个通信任务的线程束数量根据所有 SM 上的实际工作负载动态调整。类似地,在组合过程中,(1)NVLink 发送,(2)NVLink 到 IB 的转发和累加,以及(3)IB 接收和累加也由动态调整的线程束处理。此外,由于分发和组合内核与计算流(computation stream)重叠,因此我们也考虑它们对其他 SM 计算内核的影响。具体来说,我们采用定制的 PTX(Parallel Thread Execution)指令并自动调整通信块大小(communication chunk size),这显著减少了 L2 缓存的使用以及对其他 SM 的干扰。
3.2.3 极致内存节省与最小开销
为了减少训练期间的内存占用,我们采用了以下技术。
RMSNorm 和 MLA 上投影的重计算(Recomputation)。 我们在反向传播期间重计算所有 RMSNorm 操作和 MLA 上投影(up-projections),从而消除了持久存储其输出激活(output activations)的需要。以极小的开销为代价,该策略显著减少了存储激活所需的内存。
CPU 中的指数移动平均(Exponential Moving Average)。 在训练期间,我们保留模型参数的指数移动平均(EMA)以在学习率衰减后早期估计模型性能。EMA 参数存储在 CPU 内存中,并在每个训练步后异步更新。这种方法使我们能够维护 EMA 参数,而不会产生额外的内存或时间开销。
多令牌预测的共享嵌入和输出头(Shared Embedding and Output Head for Multi-Token Prediction)。 通过 DualPipe 策略,我们将模型的最浅层(包括嵌入层)和最深层(包括输出头)部署在同一个 PP 等级上。这种安排使得共享嵌入和输出头的参数和梯度能够在 MTP 模块和主模型之间物理共享(physically shared)。这种物理共享机制进一步提升了我们的内存效率。
3.3 FP8 训练(FP8 Training)
受低精度训练近期进展的启发(Dettmers et al., 2022; Kalamkar et al., 2019; Narang et al., 2017; Peng et al., 2023b),我们提出了一种利用 FP8 数据格式的细粒度混合精度框架用于训练 DeepSeek-V3。虽然低精度训练前景广阔,但它通常受到激活、权重和梯度中异常值(outliers)存在的限制(Fishman et al., 2024; He et al.; Sun et al., 2024)。尽管推理量化(inference quantization)领域已取得显著进展(Frantar et al., 2022; Xiao et al., 2023),但在大规模语言模型预训练中成功应用低精度技术的研究相对较少(Fishman et al., 2024)。为了应对这一挑战并有效扩展 FP8 格式的动态范围,我们引入了一种细粒度的量化策略:包含 元素的瓦片级分组(tile-wise grouping)或包含
元素的块级分组(block-wise grouping)。在增加的精度累加过程(increased-precision accumulation process)下,相关的反量化开销得到了很大程度的缓解,这是实现精确的 FP8 通用矩阵乘法(General Matrix Multiplication, GEMM)的关键方面。此外,为了进一步减少 MoE 训练中的内存和通信开销,我们以 FP8 格式缓存和分发激活(activations),同时以 BF16 格式存储低精度的优化器状态(optimizer states)。我们在两个规模类似于 DeepSeek-V2-Lite 和 DeepSeek-V2 的模型上验证了所提出的 FP8 混合精度框架,训练了大约 1 万亿词元(详见附录 B.1)。值得注意的是,与 BF16 基线相比,我们 FP8 训练模型的相对损失误差始终低于 0.25%,这一水平完全在训练随机性的可接受范围内。
3.3.1 混合精度框架
基于低精度训练中广泛采用的技术(Kalamkar et al., 2019; Narang et al., 2017),我们提出了一个用于 FP8 训练的混合精度框架。在此框架中,大多数计算密集型操作以 FP8 精度执行,而少数关键操作则策略性地保持其原始数据格式,以平衡训练效率和数值稳定性。整体框架如图 6 所示。
图 6:采用 FP8 数据格式的整体混合精度框架。为清晰说明,仅展示线性算子(Linear operator)。
首先,为了加速模型训练,核心计算内核(即 GEMM 操作)主要在 FP8 精度下实现。这些 GEMM 操作接受 FP8 张量作为输入并生成 BF16 或 FP32 的输出。如图 6 所示,与线性算子(Linear operator)相关的所有三个 GEMM,即前向传播(Fprop)、激活反向传播(Dgrad)和权重反向传播(Wgrad),均在 FP8 中执行。该设计理论上使计算速度比原始的 BF16 方法提高一倍。此外,FP8 的 Wgrad GEMM 允许将激活以 FP8 格式存储,供反向传播使用。这显著减少了内存消耗。
尽管 FP8 格式具有效率优势,但由于某些算子对低精度计算敏感,因此仍需要更高精度。此外,一些低成本的算子也可以使用更高精度而不会对整体训练成本产生显著影响。因此,经过仔细研究,我们为以下组件保持原始精度(例如 BF16 或 FP32):嵌入模块(embedding module)、输出头(output head)、MoE 门控模块(gating modules)、归一化算子(normalization operators)和注意力算子(attention operators)。这些有针对性的高精度保留确保了 DeepSeek-V3 的训练动态稳定性。为了进一步保证数值稳定性,我们将主权重(master weights)、权重梯度和优化器状态以更高精度存储。虽然这些高精度组件会产生一些内存开销,但它们的影响可以通过在我们的分布式训练系统中跨多个 DP 等级(DP ranks)进行高效分片(efficient sharding)来最小化。
3.3.2 通过量化和乘法提高精度
基于我们的混合精度 FP8 框架,我们引入了多种策略来增强低精度训练的准确性,重点关注量化方法和乘法过程。
图 7:(a) 我们提出一种细粒度量化方法以减轻特征异常值引起的量化误差;为简化说明,仅展示前向传播(Fprop)。(b) 结合我们的量化策略,我们通过每间隔 𝑁𝐶 = 128 个元素的 MMA(矩阵乘加)提升到 CUDA 核心进行高精度累加,从而提高 FP8 GEMM 的精度。
细粒度量化(Fine-Grained Quantization)。 在低精度训练框架中,由于 FP8 格式有限的动态范围(受其减少的指数位限制),上溢(overflow)和下溢(underflow)是常见的挑战。作为一种标准实践,通过将输入张量的最大绝对值缩放到 FP8 的最大可表示值(Narang et al., 2017),输入分布被对齐到 FP8 的可表示范围。这种方法使得低精度训练对激活异常值高度敏感,这会严重降低量化精度。为了解决这个问题,我们提出了一种细粒度的量化方法,在更细粒度级别上应用缩放(scaling)。如图 7(a) 所示:(1)对于激活,我们在 1×128 瓦片(tile)基础上(即每个令牌每 128 个通道)对元素进行分组和缩放;(2)对于权重,我们在 128×128块(block)基础上(即每 128 个输入通道每 128 个输出通道)对元素进行分组和缩放。这种方法确保量化过程可以通过根据更小的元素组调整缩放比例来更好地适应异常值。在附录 B.2 中,我们进一步讨论了当我们以与权重量化相同的方式对激活进行分组和缩放时(即在块基础上)的训练不稳定性。
我们方法的一个关键修改是沿 GEMM 操作的内维度(inner dimension)引入每组(per-group)缩放因子。此功能在标准 FP8 GEMM 中未直接支持。然而,结合我们精确的 FP32 累加策略,它可以被高效实现。
值得注意的是,我们的细粒度量化策略与微缩放格式(microscaling formats)(Rouhani et al., 2023b) 的思想高度一致,而 NVIDIA 下一代 GPU(Blackwell 系列)的 Tensor Core 已宣布支持具有更小量化粒度的微缩放格式(NVIDIA, 2024a)。我们希望我们的设计能为未来的工作提供参考,以跟上最新的 GPU 架构。
增加累加精度(Increasing Accumulation Precision)。 低精度 GEMM 操作常常受到下溢问题的困扰,其准确性在很大程度上依赖于通常在 FP32 精度下执行的高精度累加(Kalamkar et al., 2019; Narang et al., 2017)。然而,我们观察到在 NVIDIA H800 GPU 上,FP8 GEMM 的累加精度仅限于保留约 14 位,这显著低于 FP32 的累加精度。当内维度 K 很大时(Wortsman et al., 2023),这个问题会更加突出,在大规模模型训练中(批次大小和模型宽度增加)是典型情况。以两个随机矩阵(K=4096)的 GEMM 操作为例,在我们的初步测试中,Tensor Core 中有限的累加精度导致最大相对误差接近 2%。尽管存在这些问题,有限的累加精度在少数 FP8 框架(NVIDIA, 2024b)中仍然是默认选项,严重限制了训练精度。
为了解决这个问题,我们采用了提升到 CUDA Core 以获得更高精度的策略(Thakkar et al., 2023)。该过程如图 7(b) 所示。具体来说,在 Tensor Core 上执行 MMA(矩阵乘加)期间,中间结果使用有限的位宽进行累加。一旦达到 的间隔,这些部分结果将被复制到 CUDA Core 上的 FP32 寄存器中,在那里进行全精度的 FP32 累加。如前所述,我们的细粒度量化沿内维度 K 应用每组缩放因子。这些缩放因子可以在 CUDA Core 上作为反量化过程高效地相乘,只需最小的额外计算成本。
值得注意的是,这种修改降低了单个线程束组(warpgroup)的 WGMMA(线程束组级矩阵乘加)指令发出率。然而,在 H800 架构上,通常可以同时维持两个 WGMMA:当一个线程束组执行提升操作时,另一个能够执行 MMA 操作。这种设计使得两个操作能够重叠,保持 Tensor Core 的高利用率。基于我们的实验,设置 个元素(相当于 4 个 WGMMAs)代表了能够显著提高精度而不引入显著开销的最小累加间隔。
尾数优于指数(Mantissa over Exponents)。 与先前工作采用的混合 FP8 格式(NVIDIA, 2024b; Peng et al., 2023b; Sun et al., 2019b)不同(该格式在 Fprop 中使用 E4M3(4 位指数和 3 位尾数),在 Dgrad 和 Wgrad 中使用 E5M2(5 位指数和 2 位尾数)),我们在所有张量上采用 E4M3 格式以获得更高精度。我们将这种方法的可行性归因于我们的细粒度量化策略,即瓦片和块级缩放。通过对更小的元素组进行操作,我们的方法有效地在这些分组元素之间共享指数位,减轻了有限动态范围的影响。
在线量化(Online Quantization)。 张量级量化框架(NVIDIA, 2024b; Peng et al., 2023b)中采用了延迟量化(delayed quantization),该方法维护先前迭代中最大绝对值的记录以推断当前值。为了确保精确的缩放因子并简化框架,我们在线计算每个 1×128激活瓦片或 128×128权重块的最大绝对值。基于此,我们导出缩放因子,然后将激活或权重在线量化为 FP8 格式。
3.3.3 低精度存储和通信
结合我们的 FP8 训练框架,我们通过将缓存的激活和优化器状态压缩为更低精度格式,进一步减少了内存消耗和通信开销。
低精度优化器状态(Low-Precision Optimizer States)。 我们采用 BF16 数据格式而不是 FP32 来跟踪 AdamW (Loshchilov and Hutter, 2017) 优化器中的一阶矩(first moment)和二阶矩(second moment),而不会引起可观察到的性能下降。然而,主权重(由优化器存储)和梯度(用于批次大小累加)仍保留为 FP32 格式,以确保整个训练过程中的数值稳定性。
低精度激活(Low-Precision Activation)。 如图 6 所示,Wgrad 操作在 FP8 中执行。为了减少内存消耗,以 FP8 格式缓存激活以供线性算子的反向传播使用是一个自然的选择。然而,出于低成本高精度训练的考虑,我们对几个算子进行了特殊处理:
(1) 注意力算子之后的线性算子的输入。 这些激活也用于注意力算子的反向传播,这使其对精度敏感。我们专门为这些激活采用自定义的 E5M6 数据格式。此外,在反向传播期间,这些激活将从 1×128量化瓦片转换为 128×1瓦片。为避免引入额外的量化误差,所有缩放因子都是圆形缩放(round scaled)的,即 2 的整数幂。
(2) MoE 中 SwiGLU 算子的输入。 为了进一步降低内存成本,我们缓存 SwiGLU 算子的输入,并在反向传播期间重新计算其输出。这些激活也使用我们的细粒度量化方法存储在 FP8 中,在内存效率和计算精度之间取得平衡。
低精度通信(Low-Precision Communication)。 通信带宽是 MoE 模型训练的关键瓶颈。为缓解这一挑战,我们在 MoE 上投影之前将激活量化为 FP8,然后应用分发组件(dispatch components),这与 MoE 上投影中的 FP8 Fprop 兼容。与此类激活的缩放因子类似,也是 2 的整数幂。类似的策略应用于 MoE 下投影之前的激活梯度。对于前向和后向组合组件,我们在训练管道的关键部分将它们保留为 BF16 以保持训练精度。
3.4 推理与部署(Inference and Deployment)
我们将 DeepSeek-V3 部署在 H800 集群上,其中每个节点内的 GPU 通过 NVLink 互连,整个集群的所有 GPU 通过 IB 完全互连。为了同时确保在线服务的服务等级目标(Service-Level Objective, SLO)和高吞吐量,我们采用以下将预填充和解码阶段分离的部署策略。
3.4.1 预填充(Prefilling)
预填充阶段的最小部署单元由 4 个节点共 32 个 GPU 组成。注意力部分采用 4 路张量并行(TP4)结合序列并行(Sequence Parallelism, SP),并与 8 路数据并行(DP8)结合。其较小的 TP 规模(4)限制了 TP 通信的开销。对于 MoE 部分,我们使用 32 路专家并行(EP32),这确保每个专家处理足够大的批次大小,从而提升计算效率。对于 MoE 的全对全通信,我们使用与训练相同的方法:首先通过 IB 将令牌传输到目标节点上具有相同节点内索引的 GPU,然后通过 NVLink 在节点内转发。特别是,我们在浅层使用 1 路张量并行处理稠密 MLP 以节省 TP 通信开销。
为了实现 MoE 部分不同专家间的负载均衡,我们需要确保每个 GPU 处理大致相同数量的令牌。为此,我们引入了一种冗余专家部署策略,该策略复制高负载专家并将其冗余部署。高负载专家是基于在线部署期间收集的统计数据检测的,并定期调整(例如每 10 分钟)。确定冗余专家集合后,我们基于观测到的负载,精心地在节点内的 GPU 间重新安排专家,力求在不增加跨节点全对全通信开销的情况下,尽可能平衡 GPU 间的负载。对于 DeepSeek-V3 的部署,我们在预填充阶段设置 32 个冗余专家。对于每个 GPU,除了原始的 8 个托管专家外,它还将托管一个额外的冗余专家。
此外,在预填充阶段,为了提高吞吐量并隐藏全对全和 TP 通信的开销,我们同时处理两个计算负载相似的微批次,将一个微批次的注意力和 MoE 与另一个微批次的分发和组合重叠。
最后,我们正在探索一种动态专家冗余策略,其中每个 GPU 托管更多专家(例如 16 个),但每次推理步骤仅激活其中 9 个。在每层的全对全操作开始之前,我们即时计算全局最优路由方案。考虑到预填充阶段涉及大量计算,计算此路由方案的开销几乎可以忽略不计。
3.4.2 解码(Decoding)
在解码期间,我们将共享专家视为路由专家。从这个角度来看,每个令牌在路由时将选择 9 个专家,其中共享专家被视为始终被选中的高负载专家。解码阶段的最小部署单元由 40 个节点共 320 个 GPU 组成。注意力部分采用 TP4 结合 SP,并与 DP80 结合,而 MoE 部分使用 EP320。对于 MoE 部分,每个 GPU 仅托管一个专家,其中 64 个 GPU 负责托管冗余专家和共享专家。分发和组合部分的全对全通信通过 IB 上的直接点对点传输执行,以实现低延迟。此外,我们利用 IBGDA 技术(NVIDIA, 2022)进一步最小化延迟并提高通信效率。
类似于预填充,我们基于来自我们在线服务的统计专家负载,在特定时间间隔内确定冗余专家集合。然而,由于每个 GPU 仅托管一个专家,因此我们不需要重新安排专家。我们也在探索解码阶段的动态冗余策略。然而,这需要对计算全局最优路由方案的算法及其与分发内核的融合进行更仔细的优化以减少开销。
此外,为了提升吞吐量并隐藏全对全通信的开销,我们也在探索在解码阶段同时处理两个计算负载相似的微批次。与预填充不同,注意力在解码阶段消耗的时间比例更大。因此,我们将一个微批次的注意力与另一个微批次的分发+MoE+组合重叠。在解码阶段,每个专家的批次大小相对较小(通常在 256 个令牌内),瓶颈是内存访问而非计算。由于 MoE 部分只需加载一个专家的参数,内存访问开销很小,因此使用较少的 SM 不会显著影响整体性能。因此,为了避免影响注意力部分的计算速度,我们可以仅分配一小部分 SM 给分发+MoE+组合。
3.5 硬件设计建议(Suggestions on Hardware Design)
基于我们全对全通信和 FP8 训练方案的实现,我们向 AI 硬件供应商提出以下芯片设计建议。
3.5.1 通信硬件
在 DeepSeek-V3 中,我们实现了计算和通信之间的重叠以隐藏计算期间的通信延迟。与串行计算和通信相比,这显著降低了对通信带宽的依赖。然而,当前的通信实现依赖于昂贵的 SM(例如,我们分配了 H800 GPU 中可用的 132 个 SM 中的 20 个用于此目的),这将限制计算吞吐量。此外,使用 SM 进行通信会导致显著的效率低下,因为 Tensor Core 完全未被利用。
目前,SM 主要执行以下全对全通信任务:
● 在 IB(InfiniBand)和 NVLink 域之间转发数据,同时从一个 GPU 聚合发往同一节点内多个 GPU 的 IB 流量。
● 在 RDMA 缓冲区(已注册的 GPU 内存区域)和输入/输出缓冲区之间传输数据。
● 执行全对全组合的归约操作。
● 管理跨 IB 和 NVLink 域向多个专家传输的分块数据传输中的细粒度内存布局。
我们期望未来的供应商开发将通信任务从宝贵的计算单元 SM 上卸载的硬件,作为 GPU 协处理器或网络协处理器(如 NVIDIA SHARP Graham et al. (2016))。此外,为了降低应用程序编程复杂性,我们希望该硬件从计算单元的角度统一 IB(横向扩展)和 NVLink(纵向扩展)网络。通过这种统一接口,计算单元可以通过基于简单原语提交通信请求,轻松完成跨整个 IB-NVLink 统一域的操作,例如读、写、多播和归约。
3.5.2 计算硬件
Tensor Core 中更高的 FP8 GEMM 累加精度。 在 NVIDIA Hopper 架构当前的 Tensor Core 实现中,FP8 GEMM 受限于累加精度低。在根据最大指数右移对齐 32 个尾数乘积后,Tensor Core 仅使用每个尾数乘积的最高 14 位进行加法,并截断超出此范围的位。加法结果的累加到寄存器也采用 14 位精度。我们的实现通过将 128 个 FP8xFP8 乘法的加法结果累加到 CUDA 核心中 FP32 精度的寄存器中,部分缓解了 Hopper 架构在 FP8 GEMM 累加精度方面的硬件缺陷。尽管有助于实现成功的 FP8 训练,但这仅仅是因为 Hopper 架构在 FP8 GEMM 累加精度方面存在硬件缺陷而做出的妥协。未来的芯片需要采用更高精度。
支持瓦片和块级量化(Tile- and Block-Wise Quantization)。 当前的 GPU 仅支持每张量(per-tensor)量化,缺乏对我们瓦片和块级量化等细粒度量化的原生支持。在当前实现中,当达到 Nc 间隔时,部分结果将从 Tensor Core 复制到 CUDA 核心,乘以缩放因子,并添加到 CUDA 核心的 FP32 寄存器中。尽管结合我们精确的 FP32 累加策略,反量化开销得到了显著缓解,但 Tensor Core 和 CUDA 核心之间的频繁数据传输仍然限制了计算效率。因此,我们建议未来的芯片通过使 Tensor Core 能够接收缩放因子并实现带组缩放(group scaling)的 MMA 来支持细粒度量化。这样,整个部分和累加和反量化可以在 Tensor Core 内部直接完成,直到产生最终结果,避免频繁的数据传输。
支持在线量化。 尽管在线量化在我们的研究中显示出有效性,但当前的实现难以有效支持它。在现有流程中,我们需要从 HBM(高带宽内存)中读取 128 个 BF16 激活值(前一计算的输出)进行量化,量化后的 FP8 值写回 HBM,然后再次读取用于 MMA。为了解决这种低效问题,我们建议未来的芯片将 FP8 转换(cast)和 TMA(Tensor Memory Accelerator)访问融合为单个融合操作,以便在激活从全局内存传输到共享内存的过程中完成量化,避免频繁的内存读写。我们还建议支持线程束级(warp-level)转换指令以加速,这进一步促进了层归一化和 FP8 转换的更好融合。或者,可以采用近内存计算方法,将计算逻辑放置在 HBM 附近。在这种情况下,在从 HBM 将 BF16 元素读入 GPU 的过程中可以直接将其转换为 FP8,从而将片外内存访问减少约 50%。
支持转置 GEMM 操作。 当前的架构使得将矩阵转置与 GEMM 操作融合很麻烦。在我们的工作流程中,前向传播期间的激活被量化为 1x128 FP8 瓦片存储。在反向传播期间,需要将矩阵读出、反量化、转置、重新量化为 128x1 瓦片,并存储在 HBM 中。为了减少内存操作,我们建议未来的芯片支持对在训练和推理中所需精度的矩阵进行直接从共享内存转置读取,然后再进行 MMA 操作。结合 FP8 格式转换和 TMA 访问的融合,此增强将显著简化量化工作流。
4. Pre-Training(预训练)
4.1 数据构建
与 DeepSeek-V2 相比,我们通过提高数学和编程样本的比例来优化预训练语料库,同时将多语言覆盖范围扩展到英语和中文之外。此外,我们的数据处理流程经过优化,可在保持语料库多样性的同时最小化冗余。受 Ding et al. (2024) 启发,我们采用文档打包(document packing)方法保证数据完整性,但在训练中未引入跨样本注意力掩码(cross-sample attention masking)。最终,DeepSeek-V3 的训练语料库在我们的分词器中包含 14.8 万亿(T)个高质量且多样化的词元。
在 DeepSeekCoder-V2 (DeepSeek-AI, 2024a) 的训练过程中,我们观察到中间填充(Fill-in-Middle, FIM)策略在使模型能够根据上下文线索准确预测中间文本的同时,不会损害下一个令牌预测能力。与 DeepSeekCoder-V2 一致,我们也在 DeepSeek-V3 的预训练中融入了 FIM 策略。具体来说,我们采用前缀-后缀-中间(Prefix-Suffix-Middle, PSM)框架来结构化数据,如下所示:
此结构在文档级别应用,作为预打包过程的一部分。FIM 策略以 0.1 的速率应用,与 PSM 框架一致。
DeepSeek-V3 的分词器采用字节级 BPE(Byte-level BPE)(Shibata et al., 1999),扩展词表大小为 128K。我们的预分词器(pretokenizer)和分词器训练数据经过修改,以优化多语言压缩效率。此外,与 DeepSeek-V2 相比,新的预分词器引入了结合标点符号和换行符的词元。然而,当模型处理不带终止换行符的多行提示(特别是少样本评估提示)时,此技巧可能会引入令牌边界偏差(token boundary bias)(Lundberg, 2023)。为了解决此问题,我们在训练期间随机拆分一定比例的此类组合词元,使模型暴露于更广泛的特殊案例中,从而减轻这种偏差。
4.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 优化器 (Loshchilov and Hutter, 2017),超参数设为 β1=0.9,β2=0.95,weight_decay=0.1。预训练期间最大序列长度设为 4K,我们在 14.8T 词元上预训练 DeepSeek-V3。关于学习率调度,我们首先在前 2K 步中将其从 0 线性增加到 2.2×10⁻⁴。然后,我们保持 2.2×10⁻⁴ 的恒定学习率,直到模型消耗 10T 训练词元。随后,在 4.3T 词元中,我们按照余弦衰减曲线将学习率逐渐衰减到 2.2×10⁻⁵。在最后 500B 词元的训练期间,我们在前 333B 词元中保持 2.2×10⁻⁵ 的恒定学习率,并在剩余的 167B 词元中切换到另一个恒定学习率 7.3×10⁻⁶。梯度裁剪范数设为 1.0。我们采用批次大小调度策略,在前 469B 词元的训练中,批次大小从 3072 逐渐增加到 15360,然后在剩余训练中保持 15360。我们利用流水线并行将模型的不同层部署在不同 GPU 上,对于每层,路由专家将均匀部署在属于 8 个节点的 64 个 GPU 上。关于节点受限路由,每个令牌最多发送到 4 个节点(即 M=4)。对于无辅助损失负载均衡,我们在前 14.3T 词元中将偏置更新速度 γ 设为 0.001,在剩余 500B 词元中设为 0.0。对于平衡损失,我们将 α 设为 0.0001,仅为避免任何单个序列内出现极端不平衡。MTP 损失权重 λ 在前 10T 词元中设为 0.3,在剩余 4.8T 词元中设为 0.1。
图 8:通过 "大海捞针"(NIAH)测试对 DeepSeek-V3 的 128K 上下文进行压力测试
4.3 长上下文扩展
我们采用类似于 DeepSeek-V2 (DeepSeek-AI, 2024c) 的方法在 DeepSeek-V3 中启用长上下文能力。预训练阶段之后,我们应用 YaRN (Peng et al., 2023a) 进行上下文扩展,并执行两个额外的训练阶段,每个阶段包含 1000 步,以逐步将上下文窗口从 4K 扩展到 32K,再到 128K。YaRN 配置与 DeepSeek-V2 中使用的配置一致,仅应用于解耦共享键 kR。两个阶段的超参数保持相同,缩放因子 s=40,a=1,β=32,缩放因子 。在第一阶段,序列长度设为 32K,批次大小为 1920。在第二阶段,序列长度增加到 128K,批次大小减少到 480。两个阶段的学习率均设为 7.3×10⁻⁶,与预训练阶段的最终学习率匹配。
通过这种两阶段扩展训练,DeepSeek-V3 能够处理长达 128K 的输入,同时保持强大性能。图 8 显示,DeepSeek-V3 在经过监督微调后,在 "大海捞针"(NIAH)测试中取得显著性能,在上下文窗口长度高达 128K 时展现出一致的鲁棒性。
4.4 评估
4.4.1 评估基准
DeepSeek-V3 的基础模型是在英语和中文占主导地位的多语言语料库上预训练的,因此我们主要在英语、中文以及一个多语言基准上评估其性能。我们的评估基于集成在 HAI-LLM 框架中的内部评估框架。考虑的基准分类如下,其中带下划线的基准为中文基准,带双下划线的为多语言基准:
多学科多选题数据集包括 MMLU (Hendrycks et al., 2020)、MMLU-Redux (Gema et al., 2024)、MMLU-Pro (Wang et al., 2024b)、MMMLU (OpenAI, 2024b)、C-Eval (Huang et al., 2023) 和 CMMLU (Li et al., 2023)。
语言理解和推理数据集包括 HellaSwag (Zellers et al., 2019)、PIQA (Bisk et al., 2020)、ARC (Clark et al., 2018) 和 BigBench Hard (BBH) (Suzgun et al., 2022)。
闭卷问答数据集包括 TriviaQA (Joshi et al., 2017) 和 NaturalQuestions (Kwiatkowski et al., 2019)。
阅读理解数据集包括 RACE Lai et al. (2017)、DROP (Dua et al., 2019)、C3 (Sun et al., 2019a) 和 CMRC (Cui et al., 2019)。
指代消解数据集包括 CLUEWSC (Xu et al., 2020) 和 WinoGrande Sakaguchi et al. (2019)。
语言建模数据集包括 Pile (Gao et al., 2020)。
中文理解和文化数据集包括 CCPM (Li et al., 2021)。
数学数据集包括 GSM8K (Cobbe et al., 2021)、MATH (Hendrycks et al., 2021)、MGSM (Shi et al., 2023) 和 CMath (Wei et al., 2023)。
代码数据集包括 HumanEval (Chen et al., 2021)、LiveCodeBench-Base (0801-1101) (Jain et al., 2024)、MBPP (Austin et al., 2021) 和 CRUXEval (Gu et al., 2024)。
标准化考试包括 AGIEval (Zhong et al., 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 执行基于语言建模的评估,并使用每字节比特数(Bits-Per-Byte, BPB)作为指标,以保证使用不同分词器的模型之间的公平比较。
4.4.2 评估结果
表 3:DeepSeek-V3-Base 与其他代表性开源基座模型对比。所有模型均在内部框架中评测且共享相同评测配置。分数差距 ≤0.3 时视为同等水平。DeepSeek-V3-Base 在多数基准测试中表现最佳,尤其在数学与代码任务方面。
在表 3 中,我们将 DeepSeek-V3-Base 基础模型与最先进的开源基础模型进行了比较,包括 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 上表现优异。
由于我们高效的架构和全面的工程优化,DeepSeek-V3 实现了极高的训练效率。在我们的训练框架和基础设施下,训练 DeepSeek-V3 每万亿词元仅需 180K H800 GPU 小时,这比训练 72B 或 405B 稠密模型便宜得多。
表 4:MTP 策略的消融结果。MTP 策略在大多数评估基准上持续提升模型性能。
表 5:无辅助损失平衡策略的消融结果。与纯基于辅助损失的方法相比,无辅助损失策略在大多数评估基准上持续实现更好的模型性能。
4.5 讨论
4.5.1 多令牌预测的消融研究
在表 4 中,我们展示了 MTP 策略的消融结果。具体来说,我们在两种不同规模的基线模型上验证了 MTP 策略。在小规模上,我们在 1.33T 词元上训练了一个包含约 15.7B 总参数的基线 MoE 模型。在大规模上,我们在约 0.9T 词元上训练了一个包含约 228.7B 总参数的基线 MoE 模型。在它们之上,保持训练数据和其他架构相同,我们附加一个 1 深度的 MTP 模块并训练两个带有 MTP 策略的模型进行比较。注意在推理期间,我们直接丢弃 MTP 模块,因此比较模型的推理成本完全相同。从表中我们可以观察到,MTP 策略在大多数评估基准上持续提升模型性能。
4.5.2 无辅助损失平衡策略的消融研究
在表 5 中,我们展示了无辅助损失平衡策略的消融结果。我们在两种不同规模的基线模型上验证了该策略。在小规模上,我们在 1.33T 词元上训练了一个包含约 15.7B 总参数的基线 MoE 模型。在大规模上,我们在 578B 词元上训练了一个包含约 228.7B 总参数的基线 MoE 模型。这两个基线模型纯粹使用辅助损失来鼓励负载均衡,并使用带 top-K 亲和度归一化的 sigmoid 门控函数。它们控制辅助损失强度的超参数分别与 DeepSeek-V2-Lite 和 DeepSeek-V2 相同。在这两个基线模型之上,保持训练数据和其他架构相同,我们移除所有辅助损失并引入无辅助损失平衡策略进行比较。从表中我们可以观察到,无辅助损失策略在大多数评估基准上持续实现更好的模型性能。
4.5.3 批次级负载均衡与序列级负载均衡
无辅助损失平衡和序列级辅助损失之间的关键区别在于它们的平衡范围:批次级(batch-wise)与序列级(sequence-wise)。与序列级辅助损失相比,批次级平衡施加了更灵活的约束,因为它不强制在每个序列上实现域内平衡。这种灵活性允许专家更好地专精于不同领域。为了验证这一点,我们记录并分析了基于辅助损失的 16B 基线模型和无辅助损失模型在 Pile 测试集不同领域上的专家负载。如图 9 所示,我们观察到无辅助损失模型如预期展现出更大的专家专精模式。
图 9:在 Pile 测试集的三个领域上,无辅助损失和基于辅助损失模型的专家负载。无辅助损失模型展现出比基于辅助损失的模型更大的专家专精模式。相对专家负载表示实际专家负载与理论平衡专家负载的比率。由于空间限制,我们仅展示两层结果作为示例,所有层结果见附录 C。
为了进一步研究这种灵活性与模型性能优势之间的相关性,我们额外设计并验证了一个批次级辅助损失,该损失鼓励每个训练批次而非每个序列上的负载均衡。实验结果表明,当实现相似水平的批次级负载平衡时,批次级辅助损失也能实现与无辅助损失方法相似的模型性能。具体来说,在我们使用 1B MoE 模型的实验中,验证损失为:2.258(使用序列级辅助损失),2.253(使用无辅助损失方法),和 2.253(使用批次级辅助损失)。我们在 3B MoE 模型上也观察到类似结果:使用序列级辅助损失的模型验证损失为 2.085,使用无辅助损失方法或批次级辅助损失的模型验证损失相同,为 2.080。
此外,尽管批次级负载平衡方法显示出持续的性能优势,但它们在效率方面也面临两个潜在挑战:(1) 某些序列或小批次内的负载不平衡,和 (2) 推理过程中领域偏移(domain-shift)引起的负载不平衡。第一个挑战通过我们使用大规模专家并行和数据并行的训练框架自然解决,该框架保证了每个微批次的大规模。对于第二个挑战,我们也设计并实现了一个带有冗余专家部署的高效推理框架(如第 3.4 节所述)来克服它。
5. Post-Training(后训练)
5.1 监督微调(Supervised Fine-Tuning)
我们构建指令微调数据集,包含跨多个领域的 1.5M 实例,每个领域采用针对其特定需求定制的数据创建方法。
推理数据。 对于推理相关数据集,包括专注于数学、代码竞赛问题和逻辑谜题的数据,我们通过利用内部 DeepSeek-R1 模型生成数据。具体来说,虽然 R1 生成的数据表现出高准确性,但它存在过度思考(overthinking)、格式差和长度过长等问题。我们的目标是平衡 R1 生成推理数据的高准确性和常规格式化推理数据的清晰度与简洁性。
为建立我们的方法,我们首先为特定领域(如代码、数学或通用推理)开发专家模型,使用组合的监督微调(SFT)和强化学习(RL)训练流程。该专家模型作为最终模型的数据生成器。训练过程涉及为每个实例生成两种不同类型的 SFT 样本:第一种将问题与其原始响应配对,格式为 <问题, 原始响应>;第二种将系统提示与问题和 R1 响应结合,格式为 <系统提示, 问题, R1 响应>。
系统提示经过精心设计,包含指导模型生成富含反思和验证机制响应的指令。在 RL 阶段,模型利用高温采样(high-temperature sampling)生成融合了 R1 生成数据和原始数据模式的响应,即使在没有显式系统提示的情况下也是如此。经过数百个 RL 步后,中间 RL 模型学会融入 R1 模式,从而战略性地提升整体性能。
完成 RL 训练阶段后,我们实施拒绝采样(rejection sampling)来为最终模型精选高质量的 SFT 数据,其中专家模型用作数据生成源。此方法确保最终训练数据保留了 DeepSeek-R1 的优势,同时生成简洁有效的响应。
非推理数据。 对于非推理数据,如创意写作、角色扮演和简单问答,我们利用 DeepSeek-V2.5 生成响应,并聘请人类标注员验证数据的准确性和正确性。
SFT 设置。 我们使用 SFT 数据集对 DeepSeek-V3-Base 进行两个周期的微调,使用从 5×10⁻⁶ 开始逐渐衰减到 1×10⁻⁶ 的余弦衰减学习率调度。训练期间,单个序列由多个样本打包而成。然而,我们采用样本掩码策略确保这些示例相互隔离且不可见。
5.2 强化学习(Reinforcement Learning)
5.2.1 奖励模型(Reward Model)
我们在 RL 过程中采用基于规则的奖励模型(Reward Model, RM)和基于模型的 RM。
基于规则的 RM。 对于可以使用特定规则验证的问题,我们采用基于规则的奖励系统来确定反馈。例如,某些数学问题具有确定性结果,我们要求模型在指定格式(例如框内)提供最终答案,允许我们应用规则验证正确性。类似地,对于 LeetCode 问题,我们可以利用编译器根据测试用例生成反馈。通过尽可能利用基于规则的验证,我们确保了更高水平的可靠性,因为这种方法不易被操纵或利用。
基于模型的 RM。 对于具有自由形式真实答案的问题,我们依赖奖励模型来确定响应是否符合预期的真实答案。相反,对于没有明确真实答案的问题,例如涉及创意写作的问题,奖励模型的任务是基于问题和相应答案作为输入提供反馈。奖励模型从 DeepSeek-V3 SFT 检查点训练而来。为增强其可靠性,我们构建不仅提供最终奖励还包含通向奖励的思维链(chain-of-thought)的偏好数据。此方法有助于减轻特定任务中奖励破解(reward hacking)的风险。
5.2.2 组相对策略优化(Group Relative Policy Optimization)
类似于 DeepSeek-V2(DeepSeek-AI, 2024c),我们采用组相对策略优化(Group Relative Policy Optimization, GRPO)(Shao et al., 2024)。该方法移除了通常与策略模型大小相当的评论家模型(critic model),转而从组分数(group scores)中估计基线。具体而言,对于每个问题 q,GRPO 从旧策略模型 采样一组输出
,然后通过最大化以下目标函数来优化策略模型
:
其中 ε和 β是超参数;是参考模型;
是优势函数,源自每个组内输出对应的奖励
:
我们在强化学习(RL)过程中整合了来自不同领域(例如编程、数学、写作、角色扮演和问答)的提示。该方法不仅使模型更加符合人类偏好,还提升了基准测试性能,尤其是在监督微调(SFT)数据有限的场景中。
5.3 评估
5.3.1 评估基准
与开源模型比较。 在表 6 中,我们将 DeepSeek-V3 与强大的开源模型(包括 DeepSeek-V2、Qwen1.5 110B、LLaMA-3.1 405B 和 Mixtral 8x22B)在多个标准基准上进行比较。此外,我们还将其与专有模型(包括 GPT-4-turbo、Claude-3-Opus 和 Gemini 1.5 Pro)进行了对比。DeepSeek-V3 在各种基准测试中展现出卓越性能,成为开源模型中最强大的模型。值得注意的是,在 LiveCodeBench 竞赛编程基准上,DeepSeek-V3 大幅领先于 Claude-3-Opus 和 Gemini-1.5-Pro,显著缩小了开源模型与闭源模型之间的差距。在中文基准(如 CMMLU、C-Eval 和 AGIEval-zh)上,DeepSeek-V3 也取得了顶级结果,优于所有对比的开源模型和部分闭源模型(如 Gemini-1.5-Pro)。此外,在 MATH-500(MATH 测试集的 500 个难题子集)上,DeepSeek-V3 的表现超越了 GPT-4-turbo 和 Gemini-1.5-Pro。图 10 展示了 DeepSeek-V3 的基准测试结果。
表 6:DeepSeek-V3 与开源和闭源模型的比较。所有结果均来自公开报告或我们的内部评估(使用相同设置)。对于开源模型,我们通过贪婪解码(greedy decoding)进行评估。对于闭源模型,我们使用官方 API 或 Web UI 进行评估(采用默认参数),*表示官方报告分数。符号 ≈ 表示差距 ≤1%,↑ 表示 DeepSeek-V3 更优,↓ 表示略低。
注:
LiveCBR:LiveCodeBench-Base;HumanE.:HumanEval;AGI-zh:AGIEval-zh;AGI-en:AGIEval-en
*表示官方报告数据
5.3.2 人类评估
在表 7 中,我们展示了在 HumanEval、LiveCodeBench 和 MATH-500 上与 Claude-3-Opus、Gemini-1.5-Pro、GPT-4-turbo 以及 DeepSeek-R1 的详细人类评估结果。评估由三名具有计算机科学或数学背景的标注员进行,针对每个问题模型响应进行盲测评分(评分范围 1-10)。结果表明:DeepSeek-V3 在代码任务上的表现优于 Claude-3-Opus,在数学任务上的表现接近 Claude-3-Opus,且在中文理解任务(表 8)中超越所有对比模型。
表 7:DeepSeek-V3 与闭源模型在编程和数学任务上的人工评估结果(基于三个数据集,10 分制)。DeepSeek-V3 在代码竞赛任务上超越 Claude-3-Opus,在数学推理任务上与其相当。
表 8:DeepSeek-V3 与闭源模型在中文理解任务上的人工评估(10 分制)。DeepSeek-V3 在整体中文能力上超越所有对比模型。
5.4 消融研究与讨论
5.4.1 从 DeepSeek-R1 蒸馏的影响
我们在 DeepSeek-V2.5 上对 DeepSeek-R1 蒸馏的效果进行了消融研究。基线模型在短思维链(short CoT)数据上训练,而对比模型则使用前述专家检查点生成的数据训练。
表 9 证明了蒸馏数据的有效性:LiveCodeBench 和 MATH-500 基准上的性能均显著提升。实验揭示了有趣的权衡——蒸馏虽带来更好的性能,但也显著增加了平均响应长度。为平衡模型准确性和计算效率,我们在 DeepSeek-V3 蒸馏过程中精心选择了最优配置。
研究表明,从推理模型进行知识蒸馏是后训练优化的有前景方向。虽然当前工作聚焦于数学和编程领域的蒸馏,但此方法显示出在需复杂推理的各类认知任务中广泛应用的潜力。特定领域的有效性表明,长思维链蒸馏对增强其他任务领域的模型性能可能极具价值。进一步探索此方法在不同领域中的应用仍是未来研究的重要方向。
表 9:DeepSeek-R1 蒸馏的贡献。LiveCodeBench 和 MATH-500 的评估设置与表 6 相同。
5.4.2 自我奖励(Self-Rewarding)
奖励在强化学习(RL)中扮演着关键角色,引导着优化过程。在那些通过外部工具进行验证相对直接的领域,例如某些编程或数学场景,强化学习展现出卓越的有效性。然而,在更通用的场景中,通过硬编码构建反馈机制是不切实际的。在 DeepSeek-V3 的开发过程中,针对这些更广泛的场景,我们采用了宪制人工智能(Constitutional AI)方法(Bai et al., 2022),利用 DeepSeek-V3 自身的投票评估结果作为反馈来源。这种方法产生了显著的校准效果,显著提升了 DeepSeek-V3 在主观评估中的性能。通过整合额外的宪制输入,DeepSeek-V3 能够朝着宪制方向进行优化。我们相信,这种将补充信息与大型语言模型(LLM)作为反馈源相结合的范式至关重要。LLM 充当了一个多功能处理器,能够将来自不同场景的非结构化信息转化为奖励,最终促进 LLM 的自我改进。除了自我奖励之外,我们也致力于发掘其他通用且可扩展的奖励方法,以持续提升模型在通用场景中的能力。
5.4.3 多令牌预测评估(Multi-Token Prediction Evaluation)
DeepSeek-V3 并非仅预测下一个单一令牌,而是通过多令牌预测(MTP)技术预测接下来的 2 个令牌。结合推测解码(speculative decoding)框架(Leviathan et al., 2023; Xia et al., 2023),它可以显著加速模型的解码速度。一个自然产生的问题是关于额外预测令牌的接受率(acceptance rate)。根据我们的评估,在不同生成主题下,第二个令牌预测的接受率介于 85% 至 90% 之间,展现出一致的可靠性。这种高接受率使得 DeepSeek-V3 能够实现显著提升的解码速度,提供 1.8 倍的 TPS(每秒令牌数)。
6. 结论、局限性与未来方向(Conclusion, Limitations, and Future Directions)
在本文中,我们介绍了 DeepSeek-V3,这是一个大型混合专家(MoE)语言模型,总参数量为 671B,激活参数量为 37B,在 14.8T 词元上进行了训练。除了多头潜注意力(MLA)和 DeepSeekMoE 架构外,它还开创性地采用了用于负载均衡的无辅助损失策略,并设定了多令牌预测训练目标以获得更强的性能。得益于 FP8 训练的支持和细致的工程优化,DeepSeek-V3 的训练具有高成本效益。后训练也在从 DeepSeek-R1 系列模型蒸馏推理能力方面取得了成功。全面的评估表明,DeepSeek-V3 已成为当前可用的最强开源模型,并实现了与领先闭源模型(如 GPT-4o 和 Claude-3.5-Sonnet)相媲美的性能。尽管性能强大,它仍保持了经济的训练成本。其完整训练(包括预训练、上下文长度扩展和后训练)仅需 278.8 万 H800 GPU 小时。
在承认其强大性能和成本效益的同时,我们也认识到 DeepSeek-V3 存在一些局限性,尤其是在部署方面。首先,为确保高效推理,DeepSeek-V3 推荐的部署单元相对较大,这可能对小规模团队构成负担。其次,尽管 DeepSeek-V3 的部署策略已实现端到端生成速度超过 DeepSeek-V2 的两倍,但仍存在进一步优化的潜力。幸运的是,随着更先进硬件的发展,这些局限性有望得到自然解决。
DeepSeek 始终坚持长线主义(longtermism)的开源模型路线,旨在稳步接近通用人工智能(AGI)的终极目标。未来,我们计划在以下方向进行战略性投入研究:
我们将持续研究和改进我们的模型架构,旨在进一步提高训练和推理效率,努力接近对无限上下文长度的高效支持。此外,我们将尝试突破 Transformer 的架构限制,从而拓展其建模能力的边界。
我们将持续迭代训练数据的数量和质量,并探索整合额外的训练信号源,旨在推动数据在更全面维度上的扩展。
我们将持续探索和迭代模型的深度思考能力,旨在通过扩展其推理长度和深度来增强其智能和问题解决能力。
我们将探索更全面和多维度的模型评估方法,以防止在研究过程中出现过度优化固定基准测试集的倾向,这种倾向可能造成对模型能力的误导性印象,并影响我们的基础评估。