超详细解读:DeepSeek-V3技术报告全解析,掌握最新进展!

📌 研究内容


⚙️ 解决的核心问题

主要解决了在大规模语言模型领域提升性能、降低成本、优化训练和推理效率以及增强多领域任务处理能力等核心问题

🔨 是否是新问题:

🔬 科学假说


论文中虽未明确以传统形式提出科学假说,但在模型研发过程中蕴含了如下关键假设:

  • 无辅助损失负载均衡策略

  • 假设假设采用无辅助损失的负载均衡策略能够有效解决混合专家(MoE)模型中专家负载不均衡问题,且相较于传统依赖辅助损失的方法,可在不损害模型性能的前提下实现更好的负载平衡,避免因负载失衡导致的计算效率降低和性能下降。

  • 通过在不同规模模型上对比基于辅助损失和无辅助损失的负载均衡方法,实验结果显示无辅助损失策略在多数评估基准测试中表现更优,有力地支持了这一假设,表明该策略能有效提升模型性能。

  • 多tokens预测提升性能

  • 假定设置多tokens预测(MTP)训练目标可增强模型对未来多个tokens的预测能力,从而提升模型在各类任务上的整体性能,并能应用于推测解码以加速推理过程,提高生成效率。

  • 论文通过在不同规模模型上添加 MTP 模块并进行训练和对比实验,发现 MTP 策略在多数评估基准上显著增强了模型性能,验证了此假设的合理性,证明其对模型性能提升的积极作用。

  • 架构与训练方法协同有效

  • 推测多头潜在注意力(MLA)、DeepSeekMoE 架构以及 FP8 混合精度训练等方法相互兼容且协同作用,能够在大规模模型训练中实现高效训练和出色性能表现,共同推动模型能力提升。

  • 文中展示的模型训练稳定性、较低的训练成本以及在多个领域基准测试中的优异成绩,从侧面支持了这些架构和训练方法兼容性与有效性的假设,表明它们能有效提升模型的综合能力。

✨ 相关工作


论文中提及了以下相关研究:

  • 模型架构方面

  • - 基于 Transformer 框架的研究,如 Vaswani 等人提出的原始 Transformer 架构,为 DeepSeek-V3 的基础架构提供了重要参考,在此基础上 DeepSeek-V3 采用了 Multi - head Latent Attention (MLA) 和 DeepSeekMoE 等架构进行改进和创新。

  • 对混合专家(MoE)架构的研究,如 GShard(Lepikhin 等人)的工作,DeepSeek-V3 的 DeepSeekMoE 架构在其基础上进行了优化,采用更精细的专家设置和独特的负载均衡策略,与传统 MoE 架构形成对比和发展。

  • 训练方法方面

  • 低精度训练的相关研究,包括 Dettmers 等人、Kalamkar 等人、Narang 等人的工作,这些研究为 DeepSeek-V3 的 FP8 混合精度训练框架提供了背景和基础,论文在此基础上针对大规模语言模型训练的特点进行了改进和创新,如采用细粒度量化、提高积累精度等策略。

  • 流水线并行(“Pipeline Parallelism” (pdf) ,PP)、专家并行(“Expert Parallelism” (pdf) ,EP)和数据并行(“Data Parallelism” (pdf) ,DP)等并行训练方法的研究,如 Qi 等人、Rajbhandari 等人的相关工作,DeepSeek-V3 综合应用了 16 路 Pipeline Parallelism (PP)、64 路 Expert Parallelism (EP) 和 ZeRO - 1 Data Parallelism (DP),并通过 DualPipe 算法等对流水线并行进行优化,借鉴了前人在并行训练方面的经验和成果。

  • - 数据处理方面

  • 关于文本数据编码的研究,如 Byte - level BPE(Shibata 等人),DeepSeek-V3 的 tokenizer 采用了类似的方法并进行了扩展和优化,以适应多语言和提高压缩效率等需求。

  • 数据增强和预处理方法的研究,如 Ding 等人的文档打包方法,论文受其启发在数据构建中采用了类似思路,并对可能出现的问题(如 token 边界偏差)进行了处理和改进。

  • 模型评估方面

  • 多任务语言理解基准测试: 使用MMLU、MMLU-Pro等基准测试来评估模型在多个知识领域和任务上的性能(Hendrycks et al., 2020; Wang et al., 2024b).

  • 代码和数学基准测试: 使用HumanEval、LiveCodeBench、MATH等基准测试来评估模

  • 强化学习中Reward Model的相关研究,为 DeepSeek-V3 的强化学习阶段采用的基于规则和基于模型的Reward Model提供了理论和实践基础,论文在其基础上结合自身模型特点进行了应用和改进,如采用 Group Relative Policy Optimization (GRPO) 方法等。

🔁 核心方法


模型架构方法

  • 多头潜在注意力(MLA)

  • 对于键值压缩,,其中是压缩后的潜在向量,为 KV 压缩维度,是下投影矩阵。然后,是上投影矩阵。同时,。

  • 对于查询压缩,,,,。

  • 最终注意力输出计算为,,其中是输出投影矩阵。

  • 对于注意力机制,通过对注意力键值和查询进行低秩联合压缩来减少推理时的 KV 缓存和训练时的激活内存。具体公式如下:

  • DeepSeekMoE 与负载均衡

  • 基本架构:在 Feed - Forward Networks (FFNs)中采用 DeepSeekMoE 架构,使用更精细的专家设置,计算 FFN 输出的公式为,其中和分别是共享专家和路由专家的数量,,,。

  • 无辅助损失负载均衡:引入偏差项到亲和分数来确定 top - K 路由,即,在训练过程中动态调整偏差项以保持专家负载平衡。同时采用互补的sequence-wise辅助损失,其中,,,为平衡因子。

  • 节点限制路由:采用限制路由机制,确保每个tokens最多发送到个节点,根据节点上专家的亲和分数总和选择节点,以限制通信成本,实现计算 - 通信重叠。

多tokens预测(MTP)方法

  • 预测模块设置:使用个顺序模块预测个额外tokens。对于第个 MTP 模块,在处理第个输入tokens时,先进行线性投影,然后经 Transformer 块处理,最后由共享输出头计算概率分布,其中。

  • 训练损失计算:对于每个预测深度,计算交叉熵损失,最终总体 MTP 损失为,为加权因子。

基础设施方法

  • 计算集群与训练框架

  • 在配备 2048 个 NVIDIA H800 GPU 的集群上训练,节点内 GPU 用 NVLink 和 NVSwitch 连接,节点间用 InfiniBand (IB)互连。基于 HAI - LLM 框架,应用 16 路 Pipeline Parallelism (PP)、64 路 Expert Parallelism (EP)和 ZeRO - 1 Data Parallelism (DP)。

  • 设计 DualPipe 算法实现高效流水线并行,通过重叠计算和通信阶段减少pipeline bubbles和通信开销。将每个 chunk 分为注意力、全对全调度、MLP 和全对全合并等组件,在正向和反向过程中重新排列和调整 GPU SMs 比例,确保全对全和 PP 通信可隐藏。

  • FP8 训练方法

  • 细粒度量化:对激活和权重采用不同的分组量化方式,激活按 tile 分组,权重按块分组,并引入组缩放因子,以更好地处理特征异常值,提高量化精度。

  • 提高积累精度:针对 FP8 GEMM 运算在 NVIDIA H800 GPUs 上积累精度有限的问题,采用在 Tensor Cores 上执行一定间隔后将中间结果复制到 CUDA Cores 进行全精度 FP32 积累的策略,如设置元素可显著提高精度且不引入过多开销。

  • 其他策略:采用 E4M3 格式在所有张量上提高精度,通过在线计算缩放因子进行量化,并对不同算子的存储和通信格式进行优化,如采用 BF16 跟踪 AdamW 优化器的部分参数,对某些算子的激活采用定制格式等。

  • 混合精度框架:多数计算密集型操作采用 FP8 精度,如 GEMM 操作,同时对部分关键操作(如嵌入模块、输出头、MoE 门控模块、归一化和注意力算子等)保留原精度(如 BF16 或 FP32),以平衡训练效率和数值稳定性。

  • 精度提升策略

预训练与后训练方法

  • 预训练

  • 数据构建:优化预训练语料库,增加数学和编程样本比例,扩大多语言覆盖,采用文档打包方法处理数据,并使用 Byte - level BPE 分词器,对特殊情况(如结合标点和换行的 tokens)进行处理以减少偏差。

  • 超参数设置:设置模型超参数如 Transformer 层数为 61、隐藏维度为 7168 等,训练超参数如采用 AdamW 优化器,设置学习率调度、批量大小等,并在不同训练阶段调整参数值。

  • 长上下文扩展:采用 YaRN 方法分两阶段将上下文窗口从 4K 扩展到 128K,设置相应的超参数如,,,等。

  • 后训练

  • Reward Model:采用规则 - 基于和模型 - 基于的Reward Model。规则 - 基于的奖励系统用于可验证的问题,模型 - 基于的Reward Model从 DeepSeek - V3 SFT 检查点训练,并构建包含思考链的偏好数据提高可靠性。

  • Group Relative Policy Optimization:采用 GRPO 方法,通过从旧策略模型采样输出并最大化特定目标函数来优化策略模型,在训练过程中融入多领域提示以增强性能。

  • 监督微调(SFT):使用包含 1.5M 实例的数据集,针对推理和非推理数据采用不同生成方法,如推理数据利用内部 DeepSeek - R1 模型生成并处理,非推理数据用 DeepSeek - V2.5 生成并由人工标注验证。采用余弦衰减学习率调度对 DeepSeek - V3 - Base 进行两个 epoch 的微调,并采用样本掩码策略处理样本。

  • 强化学习(RL)

👩🏻‍💻 实验设计


预训练实验设计

  • 数据构建与处理

  • 优化预训练语料库,增加数学和编程样本比例,扩大多语言覆盖,采用文档打包方法保证数据完整性,但不使用跨样本注意力掩码。使用 Byte-level BPE 分词器,对新引入的结合标点和换行的 tokens 进行随机拆分处理,以减少 token 边界偏差。

  • 采用 Fill-in-Middle (FIM)策略,按照 Prefix-Suffix-Middle (PSM)框架以 0.1 的比例结构化数据,如 <|fim_begin|> 𝑓pre<|fim_hole|> 𝑓suf<|fim_end|> 𝑓middle<|eos_token|>,在训练过程中与其他数据一起输入模型。

  • 超参数设置

  • 模型超参数:设置 Transformer 层数为 61,隐藏维度为 7168,所有可学习参数随机初始化标准差为 0.006。在 MLA 中,注意力头数 设为 128,单头维度 为 128,KV 压缩维度 为 512,查询压缩维度 为 1536, decoupled queries 和 key 的单头维度 为 64。除前三层外,FFNs 用 MoE 层替代,每个 MoE 层含 1 个共享专家和 256 个路由专家,中间隐藏维度为 2048,每个 token 激活 8 个专家,且确保发送到最多 4 个节点,多tokens预测深度 设为 1。

  • 训练超参数:采用 AdamW 优化器,,,weight_decay = 0.1。预训练最大序列长度设为 4K,在 14.8T tokens 上训练。学习率从 0 线性增加到 在前 2K 步,保持该值直到消耗 10T 训练 tokens,再按余弦衰减曲线在 4.3T tokens 内降至 ,最后在训练最后 500B tokens 时,前 333B 保持 ,后 167B 设为 。梯度裁剪范数为 1.0,批量大小在前 469B tokens 内从 3072 逐渐增加到 15360,之后保持 15360。同时设置辅助损失相关参数,如辅助 - loss-free 负载平衡的偏差更新速度在前 14.3T tokens 设为 0.001,后 500B tokens 设为 0.0,平衡损失的平衡因子 设为 0.0001,MTP 损失权重 在前 10T tokens 设为 0.3,后 4.8T tokens 设为 0.1。

  • 长上下文扩展:采用 YaRN 方法分两阶段扩展上下文窗口,从 4K 到 32K 再到 128K,每阶段 1000 步。YaRN 配置与 DeepSeek-V2 相同,仅应用于 decoupled shared key ,超参数为 scale ,,,,两阶段学习率均设为 ,序列长度和批量大小在两阶段分别设为 32K、1920 和 128K、480。

消融实验设计

  • 多tokens预测(MTP)消融实验

  • 在不同规模模型上进行,小尺度采用 15.7B 总参数模型在 1.33T tokens 上训练,大尺度采用 228.7B 总参数模型在 540B tokens 上训练。

  • 在基线模型基础上,保持训练数据和其他架构不变,分别添加 1-depth MTP 模块训练对比模型。训练完成后,在多个评估基准上对比基线模型和添加 MTP 模块的模型性能,重点观察 MTP 策略对模型性能的影响,同时确保在推理时直接丢弃 MTP 模块使对比模型推理成本相同。

  • 辅助 - loss-free 平衡策略消融实验

  • 同样在不同规模模型开展,小尺度为 15.7B 总参数模型在 1.33T tokens 训练,大尺度是 228.7B 总参数模型在 578B tokens 训练。

  • 基线模型均单纯使用辅助损失鼓励负载平衡,并采用 sigmoid 门控函数与 top-K 亲和归一化,其控制辅助损失强度的超参数与 DeepSeek-V2-Lite 和 DeepSeek-V2 相同。在此基础上,移除辅助损失并引入辅助 - loss-free 平衡策略训练对比模型,在多个评估基准测试对比模型性能,分析辅助 - loss-free 策略的有效性。

后训练实验设计

  • 监督微调(SFT)实验

  • 构建包含 1.5M 实例的多领域指令微调数据集,对推理和非推理数据采用不同生成方法。推理数据由内部 DeepSeek-R1 模型生成,通过特定训练流程构建专家模型作为数据生成器,生成两种 SFT 样本(<problem, original response><system prompt, problem, R1 response>),并在 RL 阶段后进行拒绝采样筛选高质量数据;非推理数据用 DeepSeek-V2.5 生成并经人工标注验证。

  • 采用余弦衰减学习率调度,从 开始逐渐降至 ,对 DeepSeek-V3-Base 进行两个 epoch 微调,训练时将单个序列由多个样本打包,但采用样本掩码策略保证样本隔离。

  • 强化学习(RL)实验

  • Reward Model实验:采用规则 - 基于和模型 - 基于的Reward Model。对于可规则验证的问题(如数学题、LeetCode 问题)用规则 - 基于奖励系统,根据问题格式和测试用例验证答案;对于自由形式答案或无明确答案的问题(如创意写作)用模型 - 基于的Reward Model,从 DeepSeek-V3 SFT 检查点训练,并构建包含思考链的偏好数据提高可靠性。

  • Group Relative Policy Optimization(GRPO)实验:采用 GRPO 方法,对每个问题从旧策略模型采样一组输出,通过最大化目标函数\mathcal{J}_{GRPO }(\theta)=\mathbb{E}\left[q \sim P(Q),\left\{o_{i}\right\}_{i = 1}^{G} \sim \pi_{\theta_{old }}(O | q)\right]\frac{1}{G}\sum_{i = 1}^{G}\left(min\left(\frac{\pi_{\theta}\left(o_{i} | q\right)}{\pi_{\theta_{old }}\left(o_{i} | q\right)}A_{i}, clip\left(\frac{\pi_{\theta}\left(o_{i} | q\right)}{\pi_{\theta_{old }}\left(o_{i} | q\right)}, 1-\varepsilon, 1+\varepsilon\right)A_{i}\right)-\beta \mathbb{D}_{K L}\left(\pi_{\theta} \| \pi_{r e f}\right)优化策略模型,其中,在训练中融入多领域提示增强性能。

🔎 实验结果


💾 数据集

多学科多类型数据集

  • 教育与语言理解类

  • MMLU(Hendrycks 等人):涵盖多学科知识的大规模多任务语言理解数据集,用于全面评估模型在不同知识领域的语言理解和推理能力,如历史、科学、技术等多个学科的选择题测试,帮助衡量模型在复杂知识场景下的表现。

  • MMLU - Redux(Gema 等人):是 MMLU 的改进版本,对标签进行了修正,进一步精确评估模型在多学科知识问答上的准确性,使评估结果更具可靠性,可对比模型在不同版本数据集上的性能变化。

  • MMLU - Pro(Wang 等人):为更具挑战性的教育知识基准测试,着重考察模型在专业教育知识方面的掌握程度,如高等教育阶段的学科知识,深度检验模型的知识深度和推理能力。

  • MMMLU(OpenAI):多语言大规模多任务语言理解数据集,除了知识测试外,还关注模型在多语言环境下的理解和处理能力,涉及多种语言的文本,对模型的语言通用性提出更高要求。

  • C - Eval(Huang 等人):针对中文的多层次多学科评估套件,专门用于评估基础模型在中文语境下的知识理解和应用能力,涵盖中文的各个学科领域,反映模型对中文教育知识的掌握情况。

  • CMMLU(Li 等人):聚焦中文的大规模多任务语言理解数据集,主要测试模型在中文语言任务上的表现,包括中文语法、语义理解、文化知识等方面,突出模型在中文语言处理方面的能力。

  • 语言推理与理解类

  • HellaSwag(Zellers 等人):通过给定上下文让模型完成句子的任务,重点评估模型的语言推理和常识理解能力,测试模型是否能根据上下文进行合理的语义推断和逻辑推理,以生成连贯的文本。

  • PIQA(Bisk 等人):围绕物理常识的自然语言推理数据集,要求模型运用物理知识和逻辑思维解决问题,考查模型在特定领域常识推理方面的能力,提升模型在实际生活场景中的应用能力。

  • ARC(Clark 等人):AI2 推理挑战数据集,包含不同难度级别的科学问题,旨在检验模型的科学推理和知识应用能力,从科学知识的角度评估模型的智能水平和推理准确性。

  • BigBench Hard(BBH)(Suzgun 等人):一系列具有挑战性的语言任务集合,涵盖多种复杂的语言理解和推理场景,如隐喻理解、逻辑谜题等,全面考验模型在复杂语言环境下的应对能力。

问答与阅读理解类

  • 闭卷问答类

  • TriviaQA(Joshi 等人):大规模远程监督的阅读理解挑战数据集,涵盖广泛的知识领域,要求模型在无额外信息的情况下回答问题,检验模型的知识储备和问答能力。

  • NaturalQuestions(Kwiatkowski 等人):基于真实用户问题的问答研究基准,反映模型在处理自然语言问题时的表现,与实际应用场景紧密结合,测试模型能否准确理解用户意图并提供有效答案。

  • 阅读理解类

  • RACE(Lai 等人):源自考试的大规模阅读理解数据集,包含不同难度级别的阅读文章和问题,评估模型在阅读理解、信息提取和推理方面的能力,模拟学生在考试中的阅读任务。

  • DROP(Dua 等人):需要在段落上进行离散推理的阅读理解基准,强调模型对文本细节和逻辑关系的理解,通过复杂的问题设置考查模型的深度推理能力。

  • C3(Sun 等人):针对中文机器阅读理解的数据集,专注于中文文本的理解和分析,为评估模型在中文阅读任务中的表现提供标准,推动中文自然语言处理技术的发展。

  • CMRC(Cui 等人):中文机器阅读理解数据集,进一步细化了对中文文本的考查,包括中文词汇、语法、语义等多方面的理解,全面评估模型在中文阅读方面的能力。

在这里插入图片描述

其他类

  • 参考消歧类

  • CLUEWSC(Xu 等人):中文语言理解评估基准中的指代消歧任务数据集,主要测试模型在中文文本中识别和解析指代关系的能力,对于理解文本语义和连贯性至关重要。

  • WinoGrande(Sakaguchi 等人):大规模的对抗性 Winograd 模式挑战数据集,通过复杂的语言结构和语义关系考查模型的语义理解和推理能力,挑战模型在语义模糊场景下的处理能力。

  • 语言建模类

  • Pile(Gao 等人):一个包含 800GB 多样文本的语言建模数据集,为模型训练和评估提供丰富的文本资源,涵盖多种领域和体裁的文本,有助于提升模型的语言生成和泛化能力。

  • 中文文化类

  • CCPM(Li 等人):中文古典诗歌匹配数据集,专注于中文文化领域的知识测试,考查模型对中文古典文化的理解和相关知识的掌握,丰富模型在文化领域的知识储备。

  • 代码与数学类

  • GSM8K(Cobbe 等人):数学应用题数据集,测试模型解决数学文字问题的能力,要求模型理解数学问题的语义并运用数学知识进行计算和推理,评估模型的数学思维和应用能力。

  • MATH(Hendrycks 等人):专门的数学数据集,涵盖各种数学领域的问题,如代数、几何、微积分等,深度评估模型的数学知识掌握和推理能力,为数学教育和研究提供参考。

  • MGSM(Shi 等人):用于评估模型数学推理能力的数据集,在数学问题的复杂性和多样性上有所侧重,进一步挑战模型在数学领域的处理能力。

  • CMath(Wei 等人):针对中文数学测试的数据集,关注模型在中文数学语境下的理解和解题能力,适应中文数学教育和研究的需求。

  • HumanEval(Chen 等人):用于评估模型在代码生成和理解方面的能力,包含多种编程任务,要求模型生成可执行的代码或回答与代码相关的问题,推动模型在软件开发领域的应用。

  • LiveCodeBench - Base(0801 - 1101)(Jain 等人):针对代码的综合评估基准,涵盖不同类型的代码任务和场景,从多个角度评估模型在代码处理方面的能力,如代码补全、代码纠错等。

  • MBPP(Austin 等人):通过编程问题考查模型的代码生成和问题解决能力,与实际编程工作流程紧密相关,检验模型在实际编程任务中的表现。

  • CRUXEval(Gu 等人):专注于代码推理、理解和执行的基准测试,对模型在代码逻辑分析和执行方面的能力提出更高要求,促进模型在代码智能领域的发展。

  • 代码类

  • 数学类

  • 标准化考试类

  • AGIEval(Zhong 等人):包含英语和中文子集的人类中心基准测试,模拟标准化考试场景,综合评估模型在多方面知识和能力的表现,如语言能力、逻辑思维、知识应用等,为模型在教育和考试领域的应用提供参考。

🤔 评估指标

准确率相关指标
  • EM(Exact Match):在多项选择题或需要精确答案的任务中使用,如在 MMLU、MMLU - Redux、MMLU - Pro、MMMLU、C - Eval、CMMLU 等教育和语言理解类基准测试中。它衡量模型生成的答案与真实答案完全匹配的比例。例如,在 MMLU 测试中,模型对每个问题给出一个答案,若该答案与标准答案完全一致,则在该问题上记为正确,最终计算所有问题中正确回答的比例作为 EM 分数。公式可简单表示为:正确回答的问题数量总问题数量。通过 EM 指标可以直观地了解模型在这些基准测试上的精确回答能力,反映模型对知识的准确掌握和应用程度。

  • Accuracy(准确率):在一些分类或判断任务中使用,如在 Codeforces 等竞赛类评估中。它表示模型做出正确判断或分类的比例。假设在 Codeforces 比赛中,模型对每个参赛选手的代码是否正确进行判断,若判断正确的次数为 ,总判断次数为 ,则准确率为 。这有助于评估模型在特定领域的判断准确性,与实际应用场景中的性能表现密切相关。

通过率相关指标
  • Pass@1:在代码生成和数学问题解决等任务中较为常见,如在 HumanEval、AIME、MATH - 500 等基准测试中。它表示模型在一次尝试中生成的答案或代码能够通过测试用例或满足问题要求的比例。以 HumanEval 为例,对于每个编程问题,模型生成一段代码,若该代码在第一次提交时能通过所有测试用例,则在该问题上记为通过,最终计算所有问题中一次通过的比例作为 Pass@1 分数。其公式为:一次通过的问题数量总问题数量。该指标能够有效评估模型在代码生成和数学解题等方面的实际能力,体现模型的生成质量和可靠性。
F1 分数
  • 在阅读理解和信息提取任务中,如 DROP 测试中使用。F1 分数综合考虑了模型的精确率(Precision)和召回率(Recall),计算公式为 。在 DROP 任务中,模型需要从文本中提取相关信息回答问题,精确率表示模型提取的正确信息占提取的所有信息的比例,召回率表示模型提取的正确信息占文本中所有正确信息的比例。通过 F1 分数可以全面评估模型在阅读理解任务中的性能,平衡模型在准确性和完整性方面的表现。
其他指标
  • Bits - Per - Byte(BPB):在语言建模任务中,如 Pile - test 中使用。它用于衡量模型在编码文本时的效率,通过计算模型编码每个字节所需的平均比特数来评估。较低的 BPB 值表示模型在压缩文本信息方面更有效,能够更高效地表示语言数据。其计算涉及到复杂的信息论和编码理论,在实际应用中通过特定的算法和工具对模型生成的编码进行分析和计算。

  • Resolved(解决率):在 SWE - Bench Verified 等软件工程相关的评估中使用。它表示模型能够成功解决或处理的问题的比例,类似于 Pass@1,但可能针对的是更复杂的软件工程任务场景,如软件缺陷修复、系统设计问题等。具体计算方式为 成功解决的问题数量总问题数量,通过该指标可以评估模型在软件工程领域的实际应用能力和问题解决能力。

📈 实验分析

预训练结果
  • 模型性能评估

  • 在多个基准测试上,DeepSeek-V3 表现优异。在教育基准测试如 MMLU、MMLU-Pro、GPQA 中,其得分分别达到 88.5、75.9、59.1,超越其他开源模型,与 GPT-4o 和 Claude-Sonnet-3.5 等领先闭源模型相当,显著缩小了开源与闭源在该领域的差距。

  • 在事实性基准测试的 SimpleQA 和 Chinese SimpleQA 上,虽在英文事实知识方面落后于 GPT-4o 和 Claude-Sonnet-3.5,但在中文事实知识上表现突出,超过这些模型,凸显了其在中文领域的优势。

  • 在代码和数学相关基准测试中,于数学基准测试如 MATH-500 上表现卓越,超越多数模型,展现出强大的数学推理能力;在编码竞赛基准测试如 LiveCodeBench 中也处于领先地位,巩固了其在代码领域的优势。

  • 消融实验结果

  • 多tokens预测(MTP):在不同规模模型上的消融实验表明,MTP 策略对模型性能有显著提升作用。如在小尺度(15.7B 总参数,1.33T tokens 训练)和大尺度(228.7B 总参数,540B tokens 训练)模型上,添加 MTP 模块的模型在多数评估基准如 Pile-test、BBH、MMLU、DROP 等上的表现均优于基线模型,证明了 MTP 策略在增强模型对未来tokens预测能力和提升整体性能方面的有效性。

  • 辅助 - loss-free 平衡策略:同样在不同规模模型(小尺度 15.7B 总参数,1.33T tokens 训练;大尺度 228.7B 总参数,578B tokens 训练)的消融实验显示,与纯粹基于辅助损失的方法相比,辅助 - loss-free 策略在多数评估基准如 Pile-test、BBH、MMLU、DROP 等上能取得更好的模型性能,验证了该策略在平衡专家负载和提升模型性能方面的优势。

后训练结果
  • 标准评估结果

  • 在与其他代表性 chat 模型对比中,DeepSeek-V3 在多个英语基准测试中表现突出。在 MMLU 及其衍生测试(MMLU-Redux、MMLU-Pro)中,成绩优异,与顶尖模型竞争;在长上下文理解测试(DROP、LongBench v2、FRAMES)中,如在 DROP 的 3-shot 设置下 F1 得分达 91.6,远超其他模型,证明了其处理长文本的能力;在指令跟随基准测试中,相比 DeepSeek-V2 系列有显著提升,表明其更好地理解和遵循用户指令的能力。

  • 在代码和数学基准测试方面,在工程任务中虽稍逊于 Claude-Sonnet-3.5-1022,但大幅领先其他开源模型;在算法任务如 HumanEval-Mul 和 LiveCodeBench 中表现最佳,这得益于其先进的知识蒸馏技术。在数学测试如 AIME、MATH-500、CNMO 2024 上,比 Qwen2.5-72B 等模型高出约 10%的绝对分数,凸显了从 DeepSeek-R1 蒸馏知识的有效性。

  • 在中文基准测试中,在 Chinese SimpleQA 上超越 Qwen2.5-72B 达 16.4 分,在 C-Eval 和 CLUEWSC 上与 Qwen2.5-72B 表现相近,说明在中文推理和教育任务上的良好性能。

  • 开放 - 端评估结果

  • 在开放 - 端生成任务评估中,在 Arena-Hard 基准测试上,DeepSeek-V3 以超过 86%的胜率击败基线 GPT-4-0314,与 Claude-Sonnet-3.5-1022 等顶级模型相当,成为首个在该基准上超过 85%的开源模型,表明其在处理复杂提示和任务方面的强大能力。

  • 在 AlpacaEval 2.0 上,DeepSeek-V3 也超越了闭源和开源模型,相比 DeepSeek-V2.5-0905 提升 20%,体现了其在写作和简单问答任务上的出色表现。

  • 作为生成Reward Model的结果

  • 在 RewardBench 测试中,DeepSeek-V3 的判断能力与 GPT-4o-0806 和 Claude-3.5-Sonnet-1022 等最佳版本相当,且通过投票技术可进一步增强其判断能力,在提供反馈和改进模型对齐过程中表现出良好性能。

📜 主要贡献


架构创新贡献

  • 负载均衡策略革新:在 DeepSeek-V2 架构基础上,创新性地提出无辅助损失的负载均衡策略。在混合专家(MoE)架构的 DeepSeekMoE 中,传统方法依赖辅助损失来平衡专家负载,但这可能损害模型性能。而 DeepSeek-V3 引入偏差项到亲和分数来确定 top - K 路由,即。在训练过程中动态调整偏差项,通过监测专家负载,在每个训练步结束时,若专家过载则减小偏差项,若负载不足则增加偏差项。这种方法有效解决了专家负载不平衡问题,相比传统基于辅助损失的方法,在多个评估基准上取得更好性能,显著提升了模型训练的稳定性和效率,减少了因负载失衡导致的性能下降风险。

  • 多tokens预测目标设定:设置多tokens预测(MTP)训练目标,这是对传统单tokens预测的重要拓展。通过多个顺序模块预测多个未来tokens,在第个 MTP 模块处理第个输入tokens时,先进行线性投影,然后经 Transformer 块处理,最后由共享输出头计算概率分布。计算每个预测深度的交叉熵损失,最终总体 MTP 损失为。该目标增强了训练信号,使模型能更好地学习文本的长期依赖关系,提高数据效率,并且在推理时可选择丢弃 MTP 模块或用于推测解码加速,在不增加推理成本的情况下提升了模型的整体性能。

训练效率提升贡献

  • FP8 训练框架应用与优化:率先在大规模模型训练中应用 FP8 混合精度训练框架,并通过多种策略验证其有效性。在框架中,多数计算密集型操作如 GEMM 采用 FP8 精度,同时对部分关键操作(如嵌入模块、输出头、MoE 门控模块、归一化和注意力算子等)保留原精度(如 BF16 或 FP32),以平衡训练效率和数值稳定性。通过细粒度量化,对激活按 tile 分组,权重按块分组,并引入组缩放因子,有效缓解了 FP8 格式动态范围有限导致的量化误差问题。在提高积累精度方面,针对 FP8 GEMM 运算在 NVIDIA H800 GPUs 上积累精度有限的问题,采用在 Tensor Cores 上执行一定间隔后将中间结果复制到 CUDA Cores 进行全精度 FP32 积累的策略(如设置元素),显著提高了训练精度。通过这些优化,在不同规模模型训练上与 BF16 基线相比,相对损失误差始终保持在 0.25%以下,大大减少了训练时间和 GPU 内存使用,实现了高效训练,为大规模语言模型训练的硬件资源优化提供了可行方案。

  • 训练框架工程优化:在训练框架上进行了多方面的精心优化。设计 DualPipe 算法实现高效流水线并行,通过将每个 chunk 分为注意力、全对全调度、MLP 和全对全合并等组件,在正向和反向过程中重新排列和调整 GPU SMs 比例,确保全对全和 PP 通信可隐藏,有效解决了跨节点专家并行带来的通信开销问题,相比传统 PP 方法减少了pipeline bubbles,在保证计算精度的同时提高了训练速度。开发高效的跨节点全对全通信内核,根据集群网络拓扑(节点间用 InfiniBand (IB)互连,节点内 GPU 用 NVLink 连接)和 MoE 门控算法定制通信策略,如限制每个tokens最多发送到 4 个节点,利用 NVLink 高带宽优势减少 IB 流量,通过 warp 专业化技术和动态调整通信任务 warps 数量等方法,充分利用硬件资源,实现高效通信。在内存优化方面,采用重新计算 RMSNorm 和 MLA 上投影、在 CPU 中保存指数移动平均(EMA)、共享 MTP 模块与主模型的嵌入层和输出头等技术,极大地减少了内存占用,使得在不使用昂贵的张量并行(TP)的情况下能够训练大规模模型,降低了训练成本。

知识蒸馏与性能提升贡献

  • 从 DeepSeek - R1 蒸馏知识:在后训练阶段,成功引入创新方法从 DeepSeek - R1 系列模型中蒸馏推理能力到 DeepSeek - V3 中。对于推理相关数据集,利用内部 DeepSeek - R1 模型生成数据,并通过特定的训练流程构建专家模型作为数据生成器,生成两种 SFT 样本(<problem, original response><system prompt, problem, R1 response>),在 RL 阶段后进行拒绝采样筛选高质量数据。在代码和数学等领域的基准测试如 LiveCodeBench 和 MATH - 500 上,实验表明这种蒸馏方法显著提升了模型性能,但也存在增加平均响应长度的问题。通过精心选择蒸馏参数和设置,在平衡模型准确性和计算效率的同时,有效增强了 DeepSeek - V3 的推理能力,缩小了与领先模型在复杂任务上的差距,为模型性能优化提供了新的思路和方法。

  • 模型性能全面提升:综合上述创新和优化,DeepSeek - V3 在多个领域的基准测试中表现出色。在教育基准测试中超越多数开源模型,与领先闭源模型相当;在代码和数学相关任务上取得优异成绩,成为开源模型中的佼佼者。例如,在 MMLU 上达到 88.5 分,在 HumanEval 上 Pass@1 为 65.2,在 MATH - 500 上 EM 为 90.2 等。同时,训练成本经济,在预训练阶段,训练每万亿 tokens 仅需 180K H800 GPU 小时,全模型训练仅需 2.788M GPU 小时,相比其他同规模模型具有明显优势,为自然语言处理领域提供了一个性能强大且成本效益高的模型选择。

💭 未来工作


模型架构改进方向

  • 突破 Transformer 架构局限:尽管当前基于 Transformer 的架构在一定程度上取得了良好效果,但仍存在可优化空间。未来可探索全新的架构设计,例如研究如何更有效地整合不同类型的神经网络结构,以突破 Transformer 在处理长距离依赖和复杂语义关系时的固有局限性。可以尝试引入基于图神经网络的结构,更好地捕捉文本中的语义图结构,提升模型对语义的理解和推理能力。

  • 优化注意力机制:进一步改进注意力机制,如在多头潜在注意力(MLA)的基础上,研究如何更精准地分配注意力权重,减少不必要的计算开销。可以探索自适应注意力机制,根据输入文本的特点动态调整注意力头的数量和权重分配策略,提高模型在不同任务和数据分布下的适应性和效率。

训练数据优化方向

  • 增加数据多样性和质量:持续扩充和优化训练数据,不仅要增加数据的数量,更要注重数据的多样性和质量。例如,进一步挖掘多领域、多语言、多模态的数据资源,涵盖更广泛的知识领域和文化背景,使模型能够学习到更丰富的语义和知识表示。同时,加强对数据的清洗和预处理,去除噪声和错误信息,提高数据的可靠性。

  • 探索新的训练信号:深入研究并引入新的训练信号,以增强模型的学习能力。除了传统的文本序列信息外,可以考虑结合语义解析树、知识图谱等结构化信息作为额外的训练信号,帮助模型更好地理解文本的语义结构和逻辑关系,提升模型在复杂语言任务上的表现。

模型能力拓展方向

  • 增强深度思考和推理能力:致力于提升模型的深度思考和推理能力,通过设计更复杂的训练任务和学习策略,引导模型进行多步推理和逻辑分析。例如,开展基于复杂数学证明、逻辑谜题等任务的训练,促使模型学习到更高级的推理技巧和思维模式,提高其在解决需要深度思考问题时的性能。

  • 提升多模态处理能力:随着多模态数据在实际应用中的重要性日益增加,未来工作可聚焦于使模型具备多模态处理能力。这需要开发新的模型架构和训练方法,能够有效地融合图像、音频等不同模态的信息与文本信息,实现跨模态的理解和生成,如在图像描述生成、视频内容理解等任务上取得突破。

模型评估完善方向

  • 建立多维度评估体系:当前的模型评估主要依赖于一些现有的基准测试,但这些测试可能无法全面反映模型的真实能力。未来需要构建更全面、多维度的评估体系,除了传统的准确率、F1 值等指标外,还应纳入对模型可解释性、鲁棒性、安全性等方面的评估,以更准确地衡量模型在实际应用中的性能和可靠性。

  • 避免过度优化特定基准:在研究过程中,要防止过度聚焦于优化特定的基准测试,而导致模型在实际应用场景中的泛化能力不足。应设计多样化的评估任务和场景,确保模型在不同任务和数据分布下都能保持良好的性能,避免出现过拟合特定基准的现象,使模型的评估结果更具实际意义和参考价值。


DeepSeek-V3技术报告详解

Abstract

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

1. Introduction

近年来,大型语言模型(Large Language Models)正在经历快速迭代和进化 (Anthropic, 2024;Google, 2024;OpenAI, 2024a),逐渐缩小与通用人工智能(Artificial General Intelligence)之间的差距。除了闭源模型之外,开源模型包括 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,这是一个具有 671B 参数的大规模混合专家 (Mixture-of-Experts) 模型,其中每个tokens有 37B 参数被激活。

从前瞻性的视角出发,我们始终追求强大的模型性能和经济的成本。因此,在架构方面,DeepSeek-V3仍然采用高效的Multi-head Latent Attention(MLA)(DeepSeek-AI,2024c),以及成本效益的DeepSeekMoE (Dai et al., 2024) 进行训练。这两个架构已经在DeepSeek-V2中进行了验证(DeepSeek-AI,2024c),证明了它们在保持稳健的模型性能的同时实现高效训练和推理的能力。除了基本架构之外,我们还实施了两个额外策略来进一步增强模型能力。首先,DeepSeek-V3首创了一个无辅助损失的负载平衡策略(Wang et al., 2024a),旨在最小化由于努力鼓励负载平衡而对模型性能产生的负面影响。其次,DeepSeek-V3采用了多tokens预测训练目标,我们在评估基准上观察到它能够提升整体性能。

为了实现高效的训练,我们支持FP8混合精度训练,并对训练框架进行了全面优化。低精度训练已成为高效训练的有前途解决方案(Dettmers等人,2022年;Kalamkar等人,2019年;Narang等人,2017年;Peng等人,2023年),其演进与硬件能力的进步密切相关 (Luo等人,2024年;Micikevicius等人,2022年;Rouhani等人,2023年)。在本文中,

  • 我们介绍了一个FP8混合精度训练框架,并首次验证了它在超大规模模型上的有效性。通过支持FP8计算和存储,我们实现了加速训练并减少了GPU内存使用量。

  • 对于训练框架,我们设计了DualPipe算法以实现高效的管道并行性,该算法具有较少的管道气泡并在训练过程中通过计算通信重叠隐藏大部分通信。这种重叠确保,在模型进一步扩展时,只要保持计算到通信的比例不变,我们可以仍然利用节点间的细粒度专家,并且接近零全向通信开销。

  • 此外,我们也开发了高效的跨节点全向通信内核来充分利用InfiniBand(IB) 和NVLink带宽。同时,我们还精心优化了内存足迹,使得DeepSeek-V3无需昂贵的张量并行化即可进行训练。结合这些努力,我们实现了高效率的训练。

在预训练阶段,我们对DeepSeek-V3进行了14.8万亿高质量和多样化的tokens的训练。整个预训练过程非常稳定,在整个训练过程中没有遇到不可恢复的损失峰值或需要回滚的情况。接下来,我们为DeepSeek-V3进行两阶段的上下文长度扩展。第一阶段将最大上下文长度扩展到32K,第二阶段进一步扩展到128K。然后,我们对DeepSeek-V3的基础模型进行后训练,包括监督微调(SFT)和强化学习(RL),以使其与人类偏好保持一致,并进一步释放其潜力。在后训练阶段,我们将从DeepSeek-R1系列模型中提取推理能力,并同时仔细维护模型准确度和生成长度之间的平衡。

我们对DeepSeek-V3进行了全面的基准测试。尽管其训练成本低廉,但综合评估显示,DeepSeek-V3-Base已成为目前最强大的开源基础模型之一,尤其是在代码和数学方面。它的聊天版本也优于其他开源模型,并在一系列标准和开放式基准上实现了与领先闭源模型(包括GPT-4o和Claude-3.5-Sonnet)相当的表现。 最后,我们再次强调DeepSeek-V3的经济训练成本(见表1),通过我们的算法、框架和硬件优化协同设计实现。在预训练阶段,在每个万亿个tokens上对DeepSeek-V3进行训练仅需要180K H800 GPU小时,即我们在拥有2048个H800 GPU的集群中花费了3.7天的时间。因此,我们的预训练阶段可以在不到两个月内完成,并且总共花费了2664K GPU小时。结合上下文长度扩展所需的119K GPU小时以及后处理所需的5K GPU小时,DeepSeek-V3的全训练过程只需要2788万GPU小时。假设H800 GPU的租赁价格为每GPU小时2美元,则我们的总培训费用仅为557.6万美元。请注意,上述成本只包括官方的DeepSeek-V3培训,不包括与先前研究或架构、算法或数据相关的消融实验的成本。

主要贡献包括:

Architecture:创新负载平衡策略和培训目标

  • 在DeepSeek-V2的高效架构之上,我们首创了一种无辅助损失的负载平衡策略,该策略可最小化鼓励负载平衡所导致的性能下降。

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

预训练:迈向终极train效率

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

  • 通过算法、框架和硬件的共同设计,我们克服了跨节点MoE训练中的通信瓶颈,并实现了近乎完全的计算-通信重叠。这显著提高了我们的训练效率并降低了训练成本,使我们可以进一步扩大模型规模而无需额外开销。

  • 在经济成本仅为2.664M H800 GPU小时的情况下,我们完成了DeepSeek-V3在14.8Ttokens上的预训练,并产生了目前最强的开源基础模型。后续的培训阶段只需要0.1M GPU小时即可完成。 后训练:从DeepSeek-R1中进行知识蒸馏

  • 我们介绍了一种创新的方法,从长链推理模型中提取推理能力,并将其引入标准的大型语言模型(LLM),特别是DeepSeek-V3。我们的管道优雅地整合了验证和反思模式的R1进入DeepSeek-V3并显著提高了其推理性能。同时,我们还保持了输出风格和长度对DeepSeek-V3的控制。

核心评估结果总结

  • 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在所有非长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. Architecture

首先,我们介绍DeepSeek-V3的基本架构,该架构由Multi-head Latent Attention (MLA)(DeepSeek-AI,2024c)实现高效推理和DeepSeekMoE (Dai等,2024) 实现经济训练。然后,我们提出一个Multi-Token Prediction (MTP)的训练目标,我们在评估基准上观察到它能够提升整体性能。对于其他未明确提及的小细节,DeepSeek-V3遵循了DeepSeek-V2 的设置(DeepSeek-AI,2024c)。

2.1. Basic Architecture

DeepSeek-V3的基本架构仍然在Transformer(Vaswani等人,2017年)框架内。为了实现高效的推理和经济的训练,DeepSeek-V3也采用了MLA和DeepSeekMoE,这些技术已经在DeepSeek-V2中得到了彻底验证。与DeepSeek-V2相比,唯一的例外是我们在其中引入了auxiliary-loss-free的负载平衡策略(Wang 等人,2024 年 a)用于缓解 DeepSeekMoE 在确保负载平衡的努力中引起的性能下降。图 2 显示了 DeepSeek-V3 的基本架构,并且我们将在本节简要回顾 MLA 和 DeepSeekMoE 的细节。

2.1.1 多头潜在注意力(Multi-Head Latent Attention)

在注意力方面,DeepSeek-V3 采用了 MLA 架构。设表示嵌入维度,表示注意力头的数量,表示每个头的维度,表示在给定注意力层中第个 token 的注意力输入。

MLA 的核心是对注意力键和值进行低秩联合压缩,以减少推理过程中的键值(KV)缓存:

其中,是键和值的压缩潜在向量,表示 KV 压缩维度,表示下投影矩阵,、分别是键和值的上投影矩阵,是用于生成携带旋转位置嵌入(RoPE)的解耦键的矩阵,RoPE 表示应用 RoPE 矩阵的操作,表示连接。

需要注意的是,对于 MLA,在生成过程中只需要缓存蓝色框内的向量(即和),这在保持与标准多头注意力(MHA)相当性能的同时,显著减少了 KV 缓存。

对于注意力查询,我们也进行低秩压缩,这可以减少训练过程中的激活内存:

其中,是查询的压缩潜在向量,表示查询压缩维度,、分别是查询的下投影和上投影矩阵,是用于生成携带 RoPE 的解耦查询的矩阵。

最终,注意力查询、键和值组合起来产生最终的注意力输出:

其中表示输出的project matrix。

2.1.2 采用无辅助损失负载均衡的DeepSeekMoE

DeepSeekMoE的基本架构

对于前馈网络(FFNs),DeepSeek-V3采用DeepSeekMoE架构(Dai等人,2024)。与传统的MoE架构(如GShard(Lepikhin等人,2021))相比,DeepSeekMoE使用更细粒度的专家,并将部分专家隔离为共享专家。设表示第个token的FFN输入,我们按如下方式计算FFN输出:

其中,和分别表示共享专家和路由专家的数量;和分别表示第个共享专家和第个路由专家;表示被激活的路由专家的数量;是第个专家的门控值;是token与专家的亲和度;是第个路由专家的质心向量;表示从第个token与所有路由专家计算出的亲和度分数中选取个最高分组成的集合。与DeepSeek-V2略有不同,DeepSeek-V3使用sigmoid函数计算亲和度分数,并对所有选定的亲和度分数进行归一化以生成门控值。

无辅助损失的负载均衡(Auxiliary-Loss-Free Load Balancing.)

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

需注意,偏差项仅用于路由。与FFN输出相乘的门控值仍然由原始亲和度分数得出。在训练过程中,我们持续监控每个训练步中整个批次的专家负载。在每一步结束时,如果某个专家过载,我们将其对应的偏差项减小;如果负载不足,则将偏差项增加,其中是一个称为偏差更新速度的超参数。通过这种动态调整,DeepSeek-V3在训练过程中保持了均衡的专家负载,并且比通过纯辅助损失来促进负载平衡的模型表现更好。

互补的sequence-wise辅助损失(Complementary Sequence-Wise Auxiliary Loss)

尽管DeepSeek-V3主要依靠无辅助损失策略来实现负载平衡,但为了防止单个序列内出现极端不平衡的情况,我们还采用了互补的sequence-wise平衡损失:

其中,平衡因子是一个超参数,对于DeepSeek-V3会被赋予一个极小的值;表示指示函数;表示序列中的token数量。sequence-wise平衡损失促使每个序列上的专家负载达到平衡。

节点限制路由(Node-Limited Routing)

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

No Token-Dropping

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

2.2 Multi-Token Prediction

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

MTP Modules

具体而言,我们的MTP实现使用个顺序模块来预测个额外tokens。第个MTP模块由一个共享嵌入层、一个共享输出头、一个Transformer块和一个投影矩阵组成。对于第个输入tokens,在第个预测深度,我们首先通过线性投影将第个tokens在第深度的表示与第个tokens的嵌入相结合:

其中,表示拼接。特别地,当时,指的是主模型给出的表示。需注意,每个MTP模块的嵌入层与主模型共享。组合后的作为第深度的Transformer块的输入,以产生当前深度的输出表示:

其中,表示输入序列长度,表示切片操作(包含左右边界)。最后,以为输入,共享输出头将计算第个额外预测tokens的概率分布,其中是词汇表大小:

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

MTP Training Objective

对于每个预测深度,我们计算交叉熵损失:

其中,表示输入序列长度,表示第个位置的真实tokens,表示第个MTP模块给出的的相应预测概率。最后,我们计算所有深度的MTP损失的平均值,并乘以一个加权因子,以获得整体的MTP损失,它作为DeepSeek-V3的额外训练目标:

MTP in Inference

我们的MTP策略主要旨在提高主模型的性能,因此在推理过程中,我们可以直接丢弃MTP模块,主模型能够独立正常运行。此外,我们还可以将这些MTP模块用于推测解码,以进一步提高生成速度。

3. 基础设施

3.1 计算集群

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

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

3.2 训练框架

DeepSeek-V3的训练由HAI-LLM框架支持,这是一个由我们的工程师全新打造的高效且轻量级的训练框架。总体而言,DeepSeek-V3应用了16-way Pipeline Parallelism(PP)(Qi等人,2023a)、跨8个节点的64-way Expert Parallelism(EP)(Lepikhin等人,2021)以及ZeRO-1 Data Parallelism(DP)(Rajbhandari等人,2020)。 为了便于DeepSeek-V3的高效训练,我们实施了细致的工程优化。

  • 首先,我们设计了DualPipe算法以实现高效的流水线并行。与现有的PP方法相比,DualPipe的pipeline bubbles更少。更重要的是,它在前向和后向过程中重叠了计算和通信阶段,从而解决了跨节点专家并行带来的高通信开销挑战。

  • 其次,我们开发了高效的跨节点全对全通信内核,以充分利用IB和NVLink的带宽,并节省专用于通信的流式多处理器(SM)。

  • 最后,我们对训练期间的内存占用进行了细致优化,从而使我们能够在不使用昂贵的张量并行(TP)的情况下训练DeepSeek-V3。

3.2.1 DualPipe与计算 - 通信重叠(DualPipe and Computation-Communication Overlap)

对于DeepSeek-V3,跨节点专家并行引入的通信开销导致计算与通信的比例约为1:1,效率较低。为应对这一挑战,我们设计了一种创新的流水线并行算法,称为DualPipe,它不仅通过有效地重叠前向和后向计算 - 通信阶段来加速模型训练,还减少了pipeline bubbles。 DualPipe的关键思想是在一对单独的前向和后向块内重叠计算和通信。具体而言,我们将每个块划分为四个组件:attentionall-to-all dispatch、MLP和all-to-all combine。特别地,

  • 对于后向块,attentionMLP都进一步分为两部分,

  • 即输入的反向和权重的反向,就像在ZeroBubble(Qi等人,2023b)中一样。

  • 此外,我们还有一个PP通信组件。如图4所示,对于一对前向和后向块,我们重新排列这些组件,并手动调整GPU SM用于通信与计算的比例。

  • 在这种重叠策略中,我们可以确保在执行过程中全对全通信和PP通信都能完全隐藏。

  • 鉴于这种高效的重叠策略,完整的DualPipe调度如图5所示。它采用双向流水线调度,从流水线的两端同时馈入微批次,并且大部分通信可以完全重叠。这种重叠还确保了,随着模型进一步扩展,只要我们保持恒定的计算与通信比例,我们仍然可以在节点间使用细粒度的专家,同时实现近乎零的全对全通信开销。

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

|
Methmod

|

Bubble

|

Parameter

|

Activation

|
| — | — | — | — |
|

1F1B

| | |

PP

|
|

ZB1P

| | |

PP

|
|

DualPipe(我们的方法)

| | |

PP + 1

|

表2:不同流水线并行方法的pipeline bubbles和内存使用情况比较。表示前向块的执行时间,表示完整后向块的执行时间,表示“权重的反向”块的执行时间,表示两个相互重叠的前向和后向块的执行时间。

此外,即使在没有高通信负担的更一般场景中,DualPipe仍然具有效率优势。在表2中,我们总结了不同PP方法的pipeline bubbles和内存使用情况。如表所示,与ZB1P(Qi等人,2023b)和1F1B(Harlap等人,2018)相比,DualPipe显著减少了pipeline bubbles,同时仅将峰值激活内存增加了倍。尽管DualPipe需要保留两份模型参数,但由于我们在训练期间使用较大的EP大小,这并不会显著增加内存消耗。与Chimera(Li和Hoefler,2021)相比,DualPipe仅要求流水线阶段和微批次能被2整除,而不要求微批次能被流水线阶段整除。此外,对于DualPipe,气泡和激活内存都不会随着微批次数量的增加而增加。

3.2.2 跨节点全对全通信的高效实现(Efficient Implementation of Cross-Node All-to-All Communication)

为了确保DualPipe有足够的计算性能,我们定制了高效的跨节点全对全通信内核(包括调度和合并dispatching and combining),以节省专用于通信的SM数量。这些内核的实现与MoE门控算法和我们集群的网络拓扑协同设计。具体而言,在我们的集群中,跨节点GPU通过IB完全互连,节点内通信通过NVLink处理。NVLink提供160 GB/s的带宽,大约是IB(50 GB/s)的3.2倍。为了有效利用IB和NVLink的不同带宽,我们将每个tokens最多调度到4个节点,从而减少IB流量。对于每个tokens,在做出路由决策时,它将首先通过IB传输到目标节点上具有相同节点内索引的GPU。一旦到达目标节点,我们将努力确保它能立即通过NVLink转发到托管其目标专家的特定GPU,而不会被随后到达的tokens阻塞。通过这种方式,通过IB和NVLink的通信完全重叠,每个tokens在每个节点上平均可以高效地选择3.2个专家,而不会产生NVLink的额外开销。这意味着,尽管DeepSeek-V3在实际中仅选择8个路由专家,但在保持相同通信成本的情况下,这个数量最多可以扩展到13个专家(4个节点×3.2个专家/节点)。总体而言,在这样的通信策略下,仅需20个SM就足以充分利用IB和NVLink的带宽。 详细来说,我们采用warp specialization技术(Bauer等人,2014),并将20个SM划分为10个通信通道。在调度过程中:

  • (1)IB发送

  • (2)IB到NVLink的转发

  • (3)NVLink接收由各自的warp处理。分配给每个通信任务的warp数量根据所有SM上的实际工作量动态调整。

类似地,在合并过程中,

  • (1)NVLink发送

  • (2)NVLink到IB的转发和累加

  • (3)IB接收和累加也由动态调整的warp处理。

  • 此外,调度和合并内核都与计算流重叠,因此我们还考虑了它们对其他SM计算内核的影响。具体而言,我们采用定制的PTX(并行线程执行)指令,并自动调整通信块大小,这显著减少了L2缓存的使用以及对其他SM的干扰。

3.2.3 极低开销的极致内存节省

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

  • RMSNorm和MLA上投影的重新计算:我们在反向传播期间重新计算所有RMSNorm操作和MLA上投影,从而无需持久存储它们的输出激活。通过极小的开销,这种策略显著减少了存储激活所需的内存。

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

  • 多tokens预测的共享嵌入和输出头:借助DualPipe策略,我们将模型的最浅层(包括嵌入层embedding layer)和最深层(包括输出头output head)部署在同一PP rank上。这种安排使得MTP模块和主模型之间能够物理共享共享嵌入和输出头的参数和梯度。这种物理共享机制进一步提高了我们的内存效率。

3.3 FP8 Training

受近期低精度训练进展(Dettmers等人,2022;Noune等人,2022;Peng等人,2023b)的启发,我们提出了一种利用FP8数据格式训练DeepSeek-V3的细粒度混合精度框架。虽然低精度训练前景广阔,但它常常受到激活、权重和梯度中的异常值的限制(Fishman等人,2024;He等人;Sun等人,2024)。尽管在推理量化方面取得了重大进展(Frantar等人,2022;Xiao等人,2023),但在大规模语言模型预训练中成功应用低精度技术的研究相对较少(Fishman等人,2024)。

为了应对这一挑战并有效扩展FP8格式的动态范围,我们引入了一种细粒度量化策略:

  • 具有个元素的分块分组或具有个元素的块级分组

  • 在我们提高精度的累加过程中,相关的反量化开销在很大程度上得到缓解,这对于实现准确的FP8通用矩阵乘法(GEMM)至关重要。

  • 此外,为了进一步减少MoE训练中的内存和通信开销,我们以FP8格式缓存和调度激活,同时以BF16格式存储低精度优化器状态。

  • 我们在两个与DeepSeek-V2-Lite和DeepSeek-V2规模相似的模型上验证了所提出的FP8混合精度框架,训练了大约1万亿个tokens(更多细节见附录B.1)。值得注意的是,与BF16基线相比,我们的FP8训练模型的相对损失误差始终保持在0.25%以下,处于训练随机性可接受的范围内。

3.3.1 混合精度框架

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

  • 首先,为了加速模型训练,大多数核心计算内核,即GEMM操作,以FP8精度实现。这些GEMM操作接受FP8张量作为输入,并产生BF16或FP32格式的输出。如图6所示

  • 与线性层相关的三个GEMM操作,即Linear operator, namely Fprop (forward pass), Dgrad (activation backward pass), and Wgrad (weight backward pass),均以FP8执行。这种设计理论上比原始的BF16方法快两倍。

  • 此外,FP8的Wgrad GEMM允许以FP8格式存储激活,以供反向传播使用。这显著减少了内存消耗。

尽管FP8格式具有效率优势,但某些操作由于对低精度计算敏感,仍然需要更高的精度。

  • 此外,一些低成本操作也可以在对整体训练成本影响可忽略不计的情况下使用更高的精度。

  • 因此,经过仔细研究,我们对以下组件保持原始精度(例如BF16或FP32):嵌入模块、输出头、MoE门控模块、归一化操作和注意力操作。这些对高精度的针对性保留确保了DeepSeek-V3训练动态的稳定性。

  • 为了进一步保证数值稳定性,我们以更高的精度存储主权重、权重梯度和优化器状态。虽然这些高精度组件会带来一些内存开销,但通过在我们的分布式训练系统中跨多个DP等级进行高效分片,它们的影响可以最小化。

3.3.2 量化和乘法带来的精度提升

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

  • 细粒度量化:在低精度训练框架中,由于FP8格式的动态范围有限(受其减少的指数位限制),溢出和下溢是常见的挑战。作为标准做法,通过将输入张量的最大绝对值缩放到FP8格式的最大可表示值,使输入分布与FP8格式的可表示范围对齐(Narang等人,2017)。这种方法使得低精度训练对激活异常值高度敏感,这可能严重降低量化精度。为了解决这个问题,我们提出了一种细粒度量化方法,在更细的粒度上应用缩放。如图7(a)所示,

  • (1)对于激活,我们以的tile为基础对元素进行分组和缩放(即每个tokens每128个通道);

  • (2)对于权重,我们以的块为基础对元素进行分组和缩放(即每128个输入通道每128个输出通道)。

  • 这种方法确保量化过程能够通过根据较小的元素组调整缩放因子,更好地适应异常值。在附录B.2中,我们进一步讨论了像权重量化一样对激活进行块级分组和缩放时的训练不稳定性。

  • 我们方法中的一个关键修改是在GEMM操作的内维度上引入每组缩放因子。标准的FP8 GEMM不直接支持此功能。

  • 然而,结合我们精确的FP32累加策略,可以高效地实现。值得注意的是,我们的细粒度量化策略与微缩放格式(Rouhani等人,2023b)的思想高度一致,而NVIDIA下一代GPU(Blackwell系列)的Tensor Core已宣布支持具有更细量化粒度的微缩放格式(NVIDIA,2024a)。我们希望我们的设计能够为未来的工作提供参考,以跟上最新的GPU架构。

  • 提高累加精度:低精度GEMM操作经常受到下溢问题的困扰,其准确性在很大程度上取决于高精度累加,这通常以FP32精度进行(Kalamkar等人,2019;Narang等人,2017)。

  • 然而,我们观察到NVIDIA H800 GPU上FP8 GEMM的累加精度仅限于保留大约14位,这明显低于FP32累加精度。当内维度较大时,这个问题会更加明显(Wortsman等人,2023),这在大规模模型训练中是典型的场景,此时批量大小和模型宽度会增加。以两个随机矩阵的GEMM操作()为例,在我们的初步测试中,Tensor Core中有限的累加精度导致最大相对误差接近2%。尽管存在这些问题,有限的累加精度仍然是一些FP8框架的默认选项(NVIDIA,2024b),严重限制了训练准确性。

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

  • 值得注意的是,这种修改降低了单个warp组的WGMMA(warp组级矩阵乘法累加)指令发出率。然而,在H800架构中,通常会同时执行两个WGMMA:当一个warp组执行提升操作时,另一个warp组能够执行MMA操作。这种设计使得两个操作可以重叠,保持了Tensor Core的高利用率。根据我们的实验,设置个元素(相当于4个WGMMA)是能够显著提高精度而不引入大量开销的最小累加间隔。

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

  • 在线量化:在基于张量的量化框架(NVIDIA,2024b;Peng等人,2023b)中采用延迟量化,该方法保留先前迭代中的最大绝对值历史,以推断当前值。为了确保准确的缩放并简化框架,我们为每个的激活tile或的权重块在线计算最大绝对值。基于此,我们推导出缩放因子,然后将激活或权重在线量化为FP8格式。

3.3.3 低精度存储和通信

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

  • 低精度优化器状态:我们采用BF16数据格式而非FP32来跟踪AdamW(Loshchilov和Hutter,2017)优化器中的一阶和二阶矩,且不会导致可观测的性能下降。不过,优化器存储的主权重以及用于批量大小累积的梯度仍保留为FP32,以确保整个训练过程中的数值稳定性。

  • 低精度激活值:如图6所示,Wgrad操作以FP8执行。为减少内存消耗,自然的选择是在Linear算子的反向传播中以FP8格式缓存激活值。然而,对于一些算子,为实现低成本的高精度训练,我们采取了特殊考虑:

  • 注意力算子之后的Linear算子的输入:这些激活值也用于注意力算子的反向传播,因此对精度较为敏感。我们为这些激活值专门采用定制的E5M6数据格式。此外,在反向传播中,这些激活值将从1x128的量化切片转换为128x1的切片。为避免引入额外的量化误差,所有缩放因子均进行舍入缩放,即2的整数次幂。

  • MoE中SwiGLU算子的输入:为进一步降低内存成本,我们缓存SwiGLU算子的输入,并在反向传播中重新计算其输出。这些激活值同样以FP8格式存储,并采用我们的细粒度量化方法,在内存效率和计算精度之间取得平衡。

  • 低精度通信:通信带宽是MoE模型训练中的关键瓶颈。为缓解这一挑战,我们在MoE上投影之前将激活值量化为FP8,然后应用调度组件,这与MoE上投影中的FP8正向传播兼容。与注意力算子之后的Linear算子的输入类似,此激活值的缩放因子为2的整数次幂。类似的策略也应用于MoE下投影之前的激活梯度。对于正向和反向合并组件,我们将它们保留为BF16,以在训练流程的关键部分保持训练精度。

3.4 Inference and Deployment

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

3.4.1 预填充(Prefilling)

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

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

此外,在预填充阶段,为了提高吞吐量并隐藏全对全通信和TP通信的开销,我们同时处理两个计算工作量相似的微批次,将一个微批次的注意力和MoE计算与另一个微批次的调度和合并操作重叠。 最后,我们正在探索专家的动态冗余策略,即每个GPU承载更多的专家(例如16个专家),但在每次推理步骤中仅激活9个。在每一层的全对全操作开始之前,我们实时计算全局最优路由方案。鉴于预填充阶段的大量计算,计算此路由方案的开销几乎可以忽略不计。

3.4.2 Decoding

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

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

此外,为了提高吞吐量并隐藏全对全通信的开销,我们也在探索在解码阶段同时处理两个计算工作量相似的微批次。与预填充不同,解码阶段注意力计算消耗的时间占比较大。因此,我们将一个微批次的注意力计算与另一个微批次的调度+MoE+合并操作重叠。在解码阶段,每个专家的批量大小相对较小(通常在256个tokens以内),瓶颈在于内存访问而非计算。由于MoE部分只需要加载一个专家的参数,内存访问开销极小,因此使用较少的SM不会显著影响整体性能。因此,为避免影响注意力部分的计算速度,我们可以仅为调度+MoE+合并操作分配一小部分SM。

3.5. 硬件设计建议(Suggestions on Hardware Design)

基于我们在全对全通信和FP8训练方案方面的实践,我们向AI硬件供应商提出以下芯片设计建议。

3.5.1 通信硬件

在DeepSeek-V3中,我们实现了计算和通信的重叠,以便在计算过程中隐藏通信延迟。与串行的计算和通信方式相比,这显著降低了对通信带宽的依赖。然而,当前的通信实现依赖昂贵的SM(例如,我们在H800 GPU的132个SM中分配20个用于此目的),这将限制计算吞吐量。此外,使用SM进行通信会导致显著的效率低下,因为张量核心将完全闲置。 目前,SM在全对全通信中主要执行以下任务:

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

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

  • 执行全对全合并的归约操作。

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

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

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

  • 支持分块和块级量化:当前的GPU仅支持按张量进行量化,缺乏对像我们的分块和块级量化这样的细粒度量化的原生支持。在当前的实现中,当达到间隔时,部分结果将从Tensor Core复制到CUDA核心,乘以缩放因子,并添加到CUDA核心上的FP32寄存器中。尽管结合我们精确的FP32累加策略,反量化开销已显著降低,但Tensor Core和CUDA核心之间频繁的数据移动仍然限制了计算效率。因此,我们建议未来的芯片支持细粒度量化,使Tensor Core能够接收缩放因子并执行带组缩放的MMA操作。这样,整个部分和累加与反量化过程可以直接在Tensor Core内部完成,直到产生最终结果,避免了频繁的数据移动。

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

  • 支持转置GEMM操作:当前的架构使得将矩阵转置与GEMM操作融合变得繁琐。在我们的工作流程中,前向传播中的激活值被量化为1x128的FP8切片并存储。在反向传播中,矩阵需要被读出、反量化、转置、重新量化为128x1的切片,并存储在HBM中。为减少内存操作,我们建议未来的芯片能够在MMA操作之前直接从共享内存进行矩阵的转置读取,以满足训练和推理所需的精度。结合FP8格式转换和TMA访问的融合,这一增强将显著简化量化工作流程。

4. Pre-Training

4.1 数据构建(Data Construction)

与DeepSeek-V2相比,我们通过提高数学和编程样本的比例来优化预训练语料库,同时将多语言覆盖范围扩展到英语和中文之外。此外,我们对数据处理管道进行了优化,在保持语料库多样性的同时尽量减少冗余。受Ding等人(2024)的启发,我们采用文档打包方法来保证数据的完整性,但在训练过程中不采用跨样本注意力掩码。最终,DeepSeek-V3的训练语料库包含14.8T高质量且多样化的token,这些token由我们的分词器生成。 在DeepSeekCoder-V2(DeepSeek-AI,2024a)的训练过程中,我们观察到“Fill-in-Middle(FIM)”策略在使模型能够根据上下文线索准确预测中间文本的同时,不会损害其下一个token的预测能力。与DeepSeekCoder-V2一致,我们在DeepSeek-V3的预训练中也采用了FIM策略。具体而言,我们使用“Prefix-Suffix-Middle(PSM)”框架将数据构建为如下结构:

<|fim_begin|> 𝑓pre<|fim_hole|> 𝑓suf<|fim_end|> 𝑓middle<|eos_token|>。   

这个结构在文档层面作为预打包过程的一部分被应用,FIM策略的应用率为0.1,与PSM框架一致。

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

4.2 超参数
  • 模型超参数:我们将:

  • 注意力头(attention heads)数设置为128,

  • 每个head的维度设置为128。

  • Transformer layers设置为61,

  • 隐藏维度(hidden dimension)设置为7168。

  • 所有可学习参数均以0.006的标准差进行随机初始化。

  • 在MLA中,我们将

  • KV压缩维度设置为512,

  • query压缩维度设置为1536。

  • 对于解耦的查询和键,我们将每个head的维度设置为64。

  • 除了前3层,我们将所有的FFN层替换为MoE层。每个MoE层包含1个共享专家和256个路由专家,每个专家的中间隐藏维度为2048。

  • 在路由专家中,每个token会激活8个专家,并且确保每个token最多被发送到4个节点。

  • multi-token预测深度设置为1,即除了准确预测下一个token外,每个token还将预测一个额外的token。

  • 与DeepSeek-V2一样,DeepSeek-V3也在压缩后的潜在向量之后使用额外的RMSNorm层,并在宽度瓶颈处乘以额外的缩放因子。

  • 在这种配置下,DeepSeek-V3总共有671B参数,每个token会激活37B参数。

  • 训练超参数:我们采用

  • 在前469B个token的训练中,批量大小从3072逐渐增加到15360,

  • 在剩余的训练中保持15360。我们利用流水线并行将模型的不同层部署在不同的GPU上,对于每一层,路由专家将均匀地部署在属于8个节点的64个GPU上。

  • 然后,在模型消耗10T训练token之前,保持的恒定学习率。

  • 随后,在4.3T个token上,学习率按照余弦衰减曲线逐渐衰减至。

  • 在训练最后500B个token时,前333B个token保持的学习率,在剩余的167B个token中,学习率切换为。

  • AdamW优化器(Loshchilov和Hutter,2017),超参数设置为,,权重衰减为0.1。

  • 预训练时,我们将最大序列长度设置为4K,并在14.8T个token上对DeepSeek-V3进行预训练。

  • 对于学习率调度(learning rate scheduling),在前2K步中,学习率从0线性增加到。

  • 梯度裁剪范数设置为1.0。

  • 我们采用批量大小调度策略:

  • 对于节点限制路由,每个token最多被发送到4个节点(即)。对于无辅助损失的负载均衡,在前14.3T个token的训练中,我们将偏差更新速度设置为0.001,在剩余的500B个token的训练中设置为0.0。对于平衡损失,我们将设置为0.0001,只是为了避免单个序列内出现极端不平衡的情况。MTP损失权重在前10T个token的训练中设置为0.3,在剩余的4.8T个token的训练中设置为0.1。

4.3 长上下文扩展(Long Context Extension)

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

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

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

4.4 Evaluations
4.4.1 评估基准

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

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

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

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

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

  • 指代消解数据集包括CLUEWSC(Xu等人,2020)和WinoGrande(Sakaguchi等人,2019)。

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

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

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

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

  • 标准化考试包括AGIEval(Zhong等人,2023)。需要注意的是,AGIEval同时包含英语和中文子集。

按照我们之前的工作(DeepSeek-AI,2024b,c),对于包括HellaSwag、PIQA、WinoGrande、RACE-Middle、RACE-High、MMLU、MMLU-Redux、MMLU-Pro、MMMLU、ARC-Easy、ARC-Challenge、C-Eval、CMMLU、C3和CCPM在内的数据集,我们采用基于困惑度的评估方法;对于TriviaQA、NaturalQuestions、DROP、MATH、GSM8K、MGSM、HumanEval、MBPP、LiveCodeBench-Base、CRUXEval、BBH、AGIEval、CLUEWSC、CMRC和CMath,我们采用基于生成的评估方法。此外,对于Pile-test,我们进行基于语言建模的评估,并使用每字节位数(Bits-Per-Byte,BPB)作为指标,以确保在使用不同分词器的模型之间进行公平比较。

4.4.2 评估结果

DeepSeek-AI,2024c,是我们之前发布的模型)、Qwen2.5 72B基础模型(出自Qwen,2024b)以及LLaMA-3.1 405B基础模型(来自AI@Meta,2024b )。利用我们的内部评估框架对所有这些模型展开评估,而且保证评估设置完全一致。需要注意的是,由于我们的评估框架在过去几个月有所变动,DeepSeek-V2基础模型的性能跟之前报告的结果稍有不同。总体来讲,DeepSeek-V3基础模型在性能方面全方位超越了DeepSeek-V2基础模型与Qwen2.5 72B基础模型,并且在大多数基准测试里比LLaMA-3.1 405B基础模型表现更优,基本上算是最强的开源模型了。

从更详细的视角来看,我们把DeepSeek-V3基础模型与其他开源基础模型逐个比较。其一,和DeepSeek-V2基础模型相比,得益于在模型架构上的改良、模型规模的扩大、训练数据量的增多以及数据质量的提升,DeepSeek-V3基础模型不出所料地获得了显著更优的性能表现。其二,相较于当下顶尖的中文开源模型Qwen2.5 72B基础模型,尽管DeepSeek-V3基础模型的激活参数仅有它的一半,但在英语、多语言、代码以及数学相关的基准测试中,DeepSeek-V3都展现出了极大优势。在中文基准测试里,除了中文多学科选择题任务CMMLU之外,DeepSeek-V3基础模型的成绩也比Qwen2.5 72B基础模型要好。其三,与有着11倍激活参数的最大开源模型LLaMA-3.1 405B基础模型相比,DeepSeek-V3基础模型在多语言、代码以及数学的基准测试中性能更为突出。在英语和中文语言类的基准测试里,DeepSeek-V3基础模型有着颇具竞争力或者更优异的表现,特别是在BBH、MMLU系列、DROP、C-Eval、CMMLU以及CCPM这些测试当中表现亮眼。

由于采用了高效的架构以及全方位的工程优化手段,DeepSeek-V3达成了极高的训练效率。在我们的训练框架与基础设施条件下,训练每一万亿个tokens,DeepSeek-V3仅需180K H800 GPU小时,这相较于训练72B或者405B的密集型模型,成本要低得多。

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

在表3中,我们把DeepSeek-V3的基础模型与当下一些最先进的开源基础模型进行了比较,其中包括DeepSeek-V2基础模型(来自

4.5. Discussion

4.5.1. Ablation Studies for Multi-Token Prediction

为评估MTP策略的有效性,我们开展了消融实验,对比添加MTP模块前后模型的性能。在表4中,我们在两种不同规模的模型上实施消融实验:小型模型,总参数为15.7B,在1.33T tokens上训练;大型模型,总参数为228.7B,在540B tokens上训练。

在基线模型的基础上,我们保持训练数据以及模型的其他架构不变,仅仅添加1-depth的MTP模块来训练对比模型。在训练完成之后,我们在多个评估基准上对比基线模型与添加MTP模块的模型的性能,这些基准包括Pile-test、BBH、MMLU、DROP、TriviaQA、NaturalQuestions、HumanEval、MBPP、GSM8K以及MATH等。

特别要指出的是,MTP模块在推理时可以被直接丢弃,这使得对比模型在推理成本上完全相同,从而能够纯粹地评估MTP策略给模型训练带来的性能提升效果。实验结果汇总于表4,清晰地显示出MTP策略在大多数评估基准上都能持续提升模型性能。

4.5.2 无辅助损失平衡策略(Auxiliary-Loss-Free Balancing Strategy)的消融实验

为评估无辅助损失的负载均衡策略的有效性,我们开展了消融实验,对比采用传统辅助损失策略与我们所提出的无辅助损失策略的模型性能。与多tokens预测的消融实验类似,我们在两种不同规模的模型上实施该实验:小型模型,总参数为15.7B,在1.33T tokens上训练;大型模型,总参数为228.7B,在578B tokens上训练。

基线模型单纯依赖辅助损失来鼓励负载平衡,并采用sigmoid门控函数与top-K亲和归一化。控制辅助损失强度的超参数与DeepSeek-V2-Lite和DeepSeek-V2相同。在此基础上,我们移除辅助损失,并引入无辅助损失的负载均衡策略来训练对比模型。

训练完成后,我们在多个评估基准上测试对比模型的性能,这些基准包括Pile-test、BBH、MMLU、DROP、TriviaQA、NaturalQuestions、HumanEval、MBPP、GSM8K以及MATH等。实验结果表明,无辅助损失的负载均衡策略在多数评估基准上能取得比传统基于辅助损失的方法更好的模型性能,验证了该策略在平衡专家负载、提升模型性能方面的优势。

4.5.3 batch-wise负载均衡与sequence-wise负载均衡(Batch-Wise Load Balance VS. Sequence-Wise Load Balance)

无辅助损失平衡策略和sequence-wise辅助损失之间的关键区别在于它们的平衡范围:前者是batch-wise的,而后者是sequence-wise的。与sequence-wise辅助损失相比,batch-wise平衡施加的约束更加灵活,因为它并不要求每个序列内部实现域内平衡。这种灵活性使专家能够更好地在不同领域实现专业化。为了验证这一点,我们记录并分析了基于16B辅助损失的基线模型和16B无辅助损失模型在Pile测试集不同领域上的专家负载情况。如图9所示,不出所料,无辅助损失模型展现出了更强的专家专业化模式。

为了进一步探究这种灵活性与模型性能优势之间的关联,我们额外设计并验证了一种batch-wise辅助损失,它鼓励在每个训练批次上实现负载均衡,而非在每个序列上。实验结果表明,当达到相似的batch-wise负载均衡水平时,batch-wise辅助损失也能实现与无辅助损失方法相似的模型性能。具体而言,在我们对1B MoE模型进行的实验中,验证损失分别为:使用sequence-wise辅助损失时为2.258,使用无辅助损失方法时为2.253,使用batch-wise辅助损失时为2.253。在3B MoE模型上我们也观察到了类似的结果:使用sequence-wise辅助损失的模型验证损失为2.085,而使用无辅助损失方法或batch-wise辅助损失的模型验证损失均为2.080。

此外,尽管batch-wise负载均衡方法展现出一致的性能优势,但它们在效率方面也面临两个潜在挑战:(1)某些序列或小批次内的负载不均衡;(2)推理过程中因领域转移导致的负载不均衡。我们使用大规模专家并行和数据并行的训练框架自然地解决了第一个挑战,这保证了每个微批次的规模较大。对于第二个挑战,我们还设计并实现了一个带有冗余专家部署的高效推理框架(如3.4节所述)来克服它。

5. Post-Training

5.1 监督微调

我们精心整理了指令微调数据集,其中包含来自多个领域的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基础模型进行两个轮次的微调,采用余弦衰减学习率调度,从开始,逐渐降至。在训练过程中,每个单独的序列由多个样本打包而成。然而,我们采用样本掩码策略,以确保这些示例相互独立且不可见。

5.2 Reinforcement Learning

5.2.1 Reward Model

我们在RL过程中采用了基于规则的Reward Model(RM)和基于模型的RM。

  • 基于规则的RM:对于可以使用特定规则验证的问题,我们采用基于规则的奖励系统来确定反馈。例如,某些数学问题有确定的结果,我们要求模型以指定格式(例如放在框内)给出最终答案,这样我们就可以应用规则来验证答案的正确性。同样,对于LeetCode问题,我们可以利用编译器根据测试用例生成反馈。只要有可能,利用基于规则的验证可以确保更高的可靠性,因为这种方法不易被操纵或利用。

  • 基于模型的RM:对于具有自由格式真实答案的问题,我们依靠Reward Model来确定回答是否与预期的真实答案匹配。相反,对于没有明确真实答案的问题,如涉及创意写作的问题,Reward Model的任务是根据问题和相应的回答作为输入提供反馈。Reward Model基于DeepSeek-V3的SFT检查点进行训练。为了提高其可靠性,我们构建的偏好数据不仅提供最终奖励,还包括得出奖励的推理过程。这种方法有助于降低在特定任务中奖励被操纵的风险。

5.2.2 组相对策略优化

与DeepSeek-V2(DeepSeek-AI,2024c)类似,我们采用组相对策略优化(GRPO)(Shao等人,2024),该方法摒弃了通常与策略模型大小相同的评论家模型,而是从组得分中估计基线。具体来说,对于每个问题,GRPO从旧策略模型中采样一组输出,然后通过最大化以下目标来优化策略模型:

其中,、为相关参数,是优势,由每组输出对应的奖励得出:

在RL过程中,我们纳入了来自不同领域的提示,如编码、数学、写作、角色扮演和问答。这种方法不仅使模型更符合人类偏好,还提高了在基准测试中的性能,特别是在可用SFT数据有限的场景中。

5.3 评估

5.3.1 评估设置
  • 评估基准:除了用于基础模型测试的基准外,我们还在IFEval(Zhou等人,2023)、FRAMES(Krishna等人,2024)、LongBench v2(Bai等人,2024)、GPQA(Rein等人,2023)、SimpleQA(OpenAI,2024c)、CSimpleQA(He等人,2024)、SWE-Bench Verified(OpenAI,2024d)、Aider 1、LiveCodeBench(Jain等人,2024)(2024年8月至11月的问题)、Codeforces 2、中国国家高中数学奥林匹克竞赛(CNMO 2024)3和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框架4中的评估提示。对于MMLU-Redux,我们在零样本设置下采用Zero-Eval提示格式(Lin,2024)。对于其他数据集,我们遵循其原始评估协议,使用数据集创建者提供的默认提示。对于代码和数学基准,HumanEval-Mul数据集总共包含8种主流编程语言(Python、Java、Cpp、C#、JavaScript、TypeScript、PHP和Bash)。我们使用思维链(CoT)和非CoT方法在LiveCodeBench上评估模型性能,该数据收集于2024年8月至11月。Codeforces数据集使用参赛者百分比进行衡量。SWE-Bench Verified使用无代理框架(Xia等人,2024)进行评估。我们使用“diff”格式评估与Aider相关的基准。对于数学评估,AIME和CNMO 2024在温度为0.7的情况下进行评估,结果取16次运行的平均值,而MATH-500采用贪心解码。我们允许所有模型在每个基准上最多输出8192个tokens。

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(一个更具挑战性的教育知识基准)上表现出色,与Claude-Sonnet 3.5不相上下。在MMLU-Redux(MMLU的改进版本,带有修正标签)上,DeepSeek-V3超越了其他模型。此外,在GPQA-Diamond(一个博士水平的评估测试平台)上,DeepSeek-V3取得了显著的成绩,仅次于Claude 3.5 Sonnet,并且在很大程度上超过了所有其他竞争对手。 在长上下文理解基准测试(如DROP、LongBench v2和FRAMES)中,DeepSeek-V3继续展现出其顶级模型的地位。它在DROP的3-shot设置中取得了令人印象深刻的91.6 F1分数,超过了该类别中的所有其他模型。在FRAMES(一个需要在100k token上下文上进行问答的基准)上,DeepSeek-V3紧随GPT-4o之后,同时在很大程度上超过了所有其他模型。这表明DeepSeek-V3在处理极长上下文任务方面具有强大的能力。DeepSeek-V3的长上下文能力在LongBench v2上也得到了进一步验证,该数据集在DeepSeek V3发布前几周才发布,而DeepSeek-V3在该数据集上表现最佳。在事实性知识基准测试SimpleQA上,DeepSeek-V3落后于GPT-4o和Claude-Sonnet,这主要是由于其设计重点和资源分配。DeepSeek-V3将更多的训练tokens用于学习中文知识,这使得它在C-SimpleQA上表现出色。在指令遵循基准测试中,DeepSeek-V3显著优于其前身DeepSeek-V2系列,这突出了它在理解和遵循用户定义格式约束方面的能力有所提高。

  • 代码和数学基准测试:编码对于大语言模型来说是一项具有挑战性且实际的任务,涵盖了像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-like模型树立了新的标杆。具体来说,在AIME、MATH-500和CNMO 2024上,DeepSeek-V3的绝对得分比第二好的模型Qwen2.5 72B高出约10%,对于如此具有挑战性的基准测试来说,这是一个相当大的差距。这种卓越的能力凸显了从DeepSeek-R1进行知识蒸馏的有效性,事实证明,这种蒸馏对非o1-like模型非常有益。

  • 中文基准测试:Qwen和DeepSeek是两个对中文和英文都有强大支持的代表性模型系列。在事实性基准测试中文SimpleQA上,尽管Qwen2.5是在更大的语料库(18T tokens)上进行训练的,比DeepSeek-V3的14.8T预训练tokens多20%,但DeepSeek-V3比Qwen2.5-72B高出16.4分。 在C-Eval(一个代表中文教育知识评估的基准)和CLUEWSC(中文Winograd模式挑战)上,DeepSeek-V3和Qwen2.5-72B表现出相似的性能水平,这表明两个模型在具有挑战性的中文推理和教育任务中都进行了良好的优化。

5.3.3 开放式评估

除了标准基准测试外,我们还使用大语言模型作为评判者,对我们的模型在开放式生成任务上进行评估,结果如表7所示。具体来说,我们遵循AlpacaEval 2.0(Dubois等人,2024)和Arena-Hard(Li等人,2024a)的原始配置,它们利用GPT-4-Turbo-1106作为评判者进行两两比较。在Arena-Hard上,DeepSeek-V3与基线GPT-4-0314相比,赢得率超过86%,与Claude-Sonnet-3.5-1022等顶级模型表现相当。这凸显了DeepSeek-V3强大的能力,特别是在处理复杂提示(包括编码和调试任务)方面。此外,DeepSeek-V3取得了突破性的里程碑,成为第一个在Arena-Hard基准测试上得分超过85%的开源模型。这一成就显著缩小了开源模型和闭源模型之间的性能差距,为开源模型在具有挑战性的领域中所能达到的水平树立了新的标准。 同样,DeepSeek-V3在AlpacaEval 2.0上表现出色,优于闭源和开源模型。这表明它在写作任务和处理简单问答场景方面具有出色的能力。值得注意的是,它比DeepSeek-V2.5-0905高出20%,这突出了在处理简单任务方面的显著改进,并展示了其改进的有效性。

5.3.4 将DeepSeek-V3用作生成式Reward Model

我们将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的知识蒸馏的贡献进行了消融实验。基线模型在短思维链数据上进行训练,而其竞争模型使用上述专家检查点生成的数据。 表9展示了蒸馏数据的有效性,在LiveCodeBench和MATH-500基准测试中都显示出显著的改进。我们的实验揭示了一个有趣的权衡:知识蒸馏导致了更好的性能,但也大幅增加了平均响应长度。为了在模型准确性和计算效率之间保持平衡,我们为DeepSeek-V3在知识蒸馏过程中精心选择了最佳设置。 我们的研究表明,从推理模型进行知识蒸馏为训练后优化提供了一个有前途的方向。虽然我们目前的工作主要集中在从数学和编码领域进行数据蒸馏,但这种方法在更广泛的任务领域中具有潜在的应用价值。在这些特定领域中所展示的有效性表明,长思维链蒸馏对于在其他需要复杂推理的认知任务中提升模型性能可能是有价值的。在不同领域进一步探索这种方法仍然是未来研究的一个重要方向。

5.4.2 自我奖励

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

5.4.3 多tokens预测评估

DeepSeek-V3通过MTP技术预测接下来的两个tokens,而非仅仅预测下一个tokens。结合推测解码框架(Leviathan等人,2023;Xia等人,2023),该技术可显著加快模型的解码速度。由此引出一个很自然的问题:额外预测的tokens的接受率如何?根据我们的评估,在各种生成主题中,对第二个tokens预测的接受率在85%到90%之间,表现出较高的稳定性。如此高的接受率使得DeepSeek-V3的解码速度显著提升,每秒可处理tokens数(TPS)达到原来的1.8倍 。

6. Conclusion, Limitations, and Future Directions

在本文中,我们介绍了DeepSeek-V3,这是一个大型混合专家(MoE)语言模型,总参数达6710亿,每个tokens激活370亿参数,在14.8万亿个tokens上进行训练。除了采用多头潜在注意力(MLA)和DeepSeekMoE架构外,它还首创了无辅助损失的负载均衡策略,并设置了多tokens预测训练目标,以提升性能。得益于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始终坚持长期主义的开源模型路线,旨在稳步接近通用人工智能(AGI)的最终目标。未来,我们计划在以下几个方向进行重点研究:

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

  • 我们会不断迭代训练数据的数量和质量,并探索纳入额外的训练信号源,旨在推动数据在更全面的维度上进行扩展。

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

  • 我们将探索更全面、多维度的模型评估方法,以防止在研究过程中出现过度优化固定基准测试的倾向,这种倾向可能会对模型能力产生误导,并影响我们的基础评估。


B. Ablation Studies for Low-Precision Training

B.1 FP8与BF16训练对比

我们通过在不同规模的两个基线模型上对比FP8混合精度框架与BF16训练,来验证FP8混合精度框架的有效性。在小规模上,我们在1.33T个tokens上训练一个总参数约为160亿的基线MoE模型。在大规模上,我们在约0.9T个tokens上训练一个总参数约为2300亿的基线MoE模型。我们在图10中展示了训练曲线,结果表明,通过我们的高精度累加和细粒度量化策略,相对误差可保持在0.25%以下。

B.2 关于块级量化的讨论

尽管我们的分块细粒度量化有效地减轻了由特征异常值引入的误差,但它在激活量化时需要不同的分组方式,即前向传播时为1×128,反向传播时为128×1 。激活梯度也需要类似的处理过程。一种简单直接的策略是像对模型权重进行量化那样,对每128×128个元素进行块级量化。这样,在反向传播时只需要进行转置操作。因此,我们进行了一项实验,将与Dgrad相关的所有张量都以块级方式进行量化。结果显示,计算激活梯度并以链式方式反向传播到浅层的Dgrad操作对精度非常敏感。具体而言,对激活梯度进行块级量化会导致在总参数约为160亿、在约3000亿个tokens上训练的MoE模型出现发散现象。我们推测这种敏感性是由于激活梯度在tokens之间极不平衡,从而产生与tokens相关的异常值(Xi等人,2023)。这些异常值无法通过块级量化方法有效处理。

C. Expert Specialization Patterns of the 16B Aux-Loss-Based and Aux-LossFree Models

我们记录了基于16B辅助损失的基线模型和无辅助损失模型在Pile测试集上的专家负载情况。如图10所示,无辅助损失模型在所有层中往往具有更强的专家专业化程度。

(此处有多张图的详细说明,图中展示了不同层、不同领域(维基百科英文部分、Github、离散数学)下基于辅助损失模型和无辅助损失模型的相对专家负载情况,相对专家负载指实际专家负载与理论均衡专家负载的比值。例如)

  • 图10(a)(Layers1 - 7):展示了第1 - 7层中,在维基百科英文部分、Github和离散数学这三个领域下,基于辅助损失模型和无辅助损失模型的相对专家负载。相对专家负载的范围从0到10 ,无辅助损失模型在这些层和领域中展现出了与基于辅助损失模型不同的专家负载分布,且表现出更强的专家专业化模式。

  • 图10(b)(Layers 7 - 13):呈现了第7 - 13层在相同三个领域的相对专家负载情况。同样,无辅助损失模型在这些层的专家专业化模式更为明显,其相对专家负载的分布与基于辅助损失模型存在差异。

  • 图10©(Layers 13 - 19):展示第13 - 19层的情况,进一步表明无辅助损失模型在不同层和领域上专家负载的分布特征,体现出其在这些层上更强的专家专业化趋势。

  • 图10(d)(Layers 19 - 25):针对第19 - 25层,对比了两种模型在不同领域的相对专家负载,再次突出无辅助损失模型在专家专业化方面的特点。

  • 图10(e)(Layers 25 - 27):最后展示第25 - 27层的相对专家负载,从不同层和领域维度持续验证无辅助损失模型在专家专业化模式上相较于基于辅助损失模型具有更明显的特点。

无辅助损失模型在Pile测试集的不同层和领域上,相较于基于辅助损失的模型,展现出了更强的专家专业化模式。

在这里插入图片描述

如何学习AI大模型?

我在一线互联网企业工作十余年里,指导过不少同行后辈。帮助很多人得到了学习和成长。

我意识到有很多经验和知识值得分享给大家,也可以通过我们的能力和经验解答大家在人工智能学习中的很多困惑,所以在工作繁忙的情况下还是坚持各种整理和分享。但苦于知识传播途径有限,很多互联网行业朋友无法获得正确的资料得到学习提升,故此将并将重要的AI大模型资料包括AI大模型入门学习思维导图、精品AI大模型学习书籍手册、视频教程、实战学习等录播视频免费分享出来。

在这里插入图片描述

第一阶段: 从大模型系统设计入手,讲解大模型的主要方法;

第二阶段: 在通过大模型提示词工程从Prompts角度入手更好发挥模型的作用;

第三阶段: 大模型平台应用开发借助阿里云PAI平台构建电商领域虚拟试衣系统;

第四阶段: 大模型知识库应用开发以LangChain框架为例,构建物流行业咨询智能问答系统;

第五阶段: 大模型微调开发借助以大健康、新零售、新媒体领域构建适合当前领域大模型;

第六阶段: 以SD多模态大模型为主,搭建了文生图小程序案例;

第七阶段: 以大模型平台应用与开发为主,通过星火大模型,文心大模型等成熟大模型构建大模型行业应用。

在这里插入图片描述

👉学会后的收获:👈
• 基于大模型全栈工程实现(前端、后端、产品经理、设计、数据分析等),通过这门课可获得不同能力;

• 能够利用大模型解决相关实际项目需求: 大数据时代,越来越多的企业和机构需要处理海量数据,利用大模型技术可以更好地处理这些数据,提高数据分析和决策的准确性。因此,掌握大模型应用开发技能,可以让程序员更好地应对实际项目需求;

• 基于大模型和企业数据AI应用开发,实现大模型理论、掌握GPU算力、硬件、LangChain开发框架和项目实战技能, 学会Fine-tuning垂直训练大模型(数据准备、数据蒸馏、大模型部署)一站式掌握;

• 能够完成时下热门大模型垂直领域模型训练能力,提高程序员的编码能力: 大模型应用开发需要掌握机器学习算法、深度学习框架等技术,这些技术的掌握可以提高程序员的编码能力和分析能力,让程序员更加熟练地编写高质量的代码。

在这里插入图片描述

1.AI大模型学习路线图
2.100套AI大模型商业化落地方案
3.100集大模型视频教程
4.200本大模型PDF书籍
5.LLM面试题合集
6.AI产品经理资源合集

👉获取方式:
😝有需要的小伙伴,可以保存图片到wx扫描二v码免费领取【保证100%免费】🆓

在这里插入图片描述

### 关于 DeepSeek V3 中 MLA 公式的详细说明 多头潜在注意力(Multi-Head Latent Attention, MLA)是一种创新性的注意力机制,旨在通过引入潜在空间来优化传统自注意力模型的性能[^1]。具体而言,MLA 结构允许模型在多个子空间中学习不同的特征表示,并最终将其组合成更丰富的上下文理解。 #### MLA 的核心公式解析 MLA 可以被看作是对标准多头注意力的一种扩展形式。其基本流程可以分为以下几个方面: 1. **输入线性变换** 输入序列 \( X \in \mathbb{R}^{n \times d_{\text{model}}} \) 首先经过三个独立的线性投影矩阵 \( W_Q, W_K, W_V \),分别生成查询向量 \( Q \)、键向量 \( K \) 和值向量 \( V \)[^2]: \[ Q = XW_Q,\quad K = XW_K,\quad V = XW_V \] 2. **分头处理** 查询、键和值向量会被分割为 \( h \) 个头部,每个头部具有维度 \( d_k = \frac{d_{\text{model}}}{h} \)。对于第 \( i \)-th 头部,有如下表达式: \[ Q_i = \text{Split}_i(Q),\quad K_i = \text{Split}_i(K),\quad V_i = \text{Split}_i(V) \] 3. **计算注意力权重** 对于每一对查询和键向量,利用缩放点积注意力计算注意力分数: \[ \text{Attention}(Q_i, K_i, V_i) = \text{softmax}\left(\frac{Q_iK_i^\top}{\sqrt{d_k}}\right)V_i \] 4. **引入潜在变量** 在 MLA 架构中,额外引入了一个潜在变量 \( Z \in \mathbb{R}^{n \times d_z} \),用于捕捉隐藏的空间结构。该变量通过另一个线性映射得到: \[ Z = XW_Z \] 这一潜在变量会进一步影响注意力得分的分布,从而增强模型的学习能力。 5. **融合与输出** 所有的头部结果会被重新拼接起来,并通过一个最终的连接层进行转换: \[ \text{Output} = [\text{Concat}(H_1, H_2, ..., H_h)]W_O \] 其中 \( H_i = \text{Attention}(Q_i, K_i, V_i) \cdot f(Z) \),\( f(Z) \) 是基于潜在变量的一个非线性函数。 #### 实现代码示例 以下是 MLA 的伪代码实现,展示了如何将上述过程转化为实际操作: ```python import torch import torch.nn as nn class MultiHeadLatentAttention(nn.Module): def __init__(self, d_model, num_heads, d_latent): super(MultiHeadLatentAttention, self).__init__() assert d_model % num_heads == 0 self.d_model = d_model self.num_heads = num_heads self.d_k = d_model // num_heads self.d_latent = d_latent self.W_Q = nn.Linear(d_model, d_model) self.W_K = nn.Linear(d_model, d_model) self.W_V = nn.Linear(d_model, d_model) self.W_Z = nn.Linear(d_model, d_latent) self.W_O = nn.Linear(d_model, d_model) def forward(self, X): batch_size, seq_len, _ = X.size() # Linear projections and split into heads Q = self.split_heads(self.W_Q(X)) # (batch_size, num_heads, seq_len, d_k) K = self.split_heads(self.W_K(X)) V = self.split_heads(self.W_V(X)) # Compute latent variable Z = self.W_Z(X) # (batch_size, seq_len, d_latent) # Scaled dot-product attention with influence from Z scores = torch.matmul(Q, K.transpose(-2, -1)) / torch.sqrt(torch.tensor(self.d_k).float()) attn_weights = torch.softmax(scores + self.latent_influence(Z), dim=-1) context_vectors = torch.matmul(attn_weights, V) # Concatenate heads and final linear projection output = self.W_O(context_vectors.permute(0, 2, 1, 3).contiguous().view(batch_size, seq_len, -1)) return output def split_heads(self, x): new_shape = x.shape[:-1] + (self.num_heads, self.d_k) return x.view(*new_shape).permute(0, 2, 1, 3) def latent_influence(self, Z): # Example function to incorporate the effect of Z on attention weights return torch.tanh(Z.sum(dim=2)).unsqueeze(1).unsqueeze(1) ``` --- ###
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

程序员辣条

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值