菜单

模型架构

相关源文件

本文档提供了 DeepSeek-V3 模型架构的全面技术解释。它涵盖了核心架构组件、它们的实现以及它们如何交互以创建一个高效的语言模型,该模型拥有 671B 的总参数,但每次处理 token 仅激活 37B。有关部署和运行 DeepSeek-V3 推理的信息,请参阅推理管道

概述

DeepSeek-V3 是一个混合专家(MoE)语言模型,它建立在 DeepSeek-V2 的高效架构之上,并进行了一些关键创新。该模型实现了基于 Transformer 的架构,其中包含专门的组件,可同时实现高性能和高效的计算利用。

来源: inference/model.py735-794 README.md47-52

模型参数

DeepSeek-V3 提供以下配置

参数
总参数671B
激活参数每个 token 37B
上下文长度128K
层数27
隐藏层维度7168
注意力头数16
路由专家数量256
激活专家数量每个 token 6

来源: inference/model.py19-84 README.md91-95

核心架构组件

Transformer 实现

DeepSeek-V3 模型遵循基于 Transformer 的架构,并进行了多项关键修改。主要实现位于Transformer 类中,该类协调通过所有组件的向前传播。

模型通过以下步骤处理输入

  1. 嵌入输入 tokens
  2. 将它们通过 27 个 Transformer 块
  3. 应用层归一化
  4. 投影到词汇 logits

Transformer 块包含 attention 和前馈网络,其中第一个层使用密集 MLP,后续层使用 MoE。

来源: inference/model.py735-794 inference/model.py693-732

Transformer 块结构

DeepSeek-V3 中的每个 Transformer 块包含两个主要组件

  1. 多头潜在注意力 (MLA) - 一种高效的注意力机制
  2. 前馈网络 - 标准 MLP(第一个层)或 MoE(后续层)

该块使用残差连接和层归一化来提高训练稳定性和性能。一个关键的架构选择是使用 MoE 层来处理网络的大部分,这使得模型能够拥有大量参数,同时将计算成本控制在可接受的范围内。

来源: inference/model.py693-732 inference/model.py497-529 inference/model.py633-690

多头潜在注意力 (MLA)

MLA 设计

多头潜在注意力是一种高效的注意力机制,在 DeepSeek-V2 中得到了充分验证,并被 DeepSeek-V3 采用。MLA 架构使用一种新颖的注意力计算方法,该方法可减少内存和计算需求。

MLA 设计中的关键创新

  1. 拆分注意力机制:查询和键向量被拆分为带有位置嵌入和不带位置嵌入的部分。
  2. 潜在表示:使用潜在空间来表示键值对,从而减少内存需求。
  3. 低秩投影:使用类似 LoRA 的技术来降低计算复杂度。

来源: inference/model.py393-494

MLA 实现

DeepSeek-V3 中的 MLA 实现包含几个值得注意的组件

  1. 查询投影:根据配置,是直接投影还是低秩因子化投影
  2. 键值投影:使用低秩因子化和单独的归一化
  3. 旋转位置嵌入:应用于部分查询和键向量
  4. 注意力计算:经过优化的实现,带有缓存以实现高效推理

MLA 实现包含针对 FP8 和 BF16 推理的优化,并根据配置具有不同的注意力计算路径。

来源: inference/model.py393-494

专家混合 (MoE)

MoE 架构

DeepSeek-V3 使用混合专家架构来实现高参数量(671B),同时将每个 token 的激活参数(37B)控制在可管理的范围内。MoE 层取代了大多数 Transformer 块中的标准前馈网络。

来源: inference/model.py633-690

MoE 路由机制

DeepSeek-V3 的 MoE 实现中的路由机制包含几项创新

  1. 无辅助损失的负载均衡:DeepSeek-V3 开创的策略,可最大程度地减少由负载均衡引起的性能下降。
  2. 门控函数:Gate 组件计算路由权重,以选择每个 token 最相关的专家。
  3. 共享专家:除了路由专家外,一组共享专家应用于所有输入。

MoE 路由过程

  1. Gate 网络根据输入计算每个专家的分数
  2. 为每个 token 选择 top-k(k=6)个专家
  3. 输入由每个选定的专家处理,并将结果与来自 gate 的权重进行组合
  4. 共享专家应用于所有输入并加到结果中

来源: inference/model.py532-631

多令牌预测 (MTP)

DeepSeek-V3 引入了多 token 预测 (MTP) 训练目标。这种方法允许模型一次预测多个 token,从而提高了训练效率,并可在推理过程中用于投机解码。

MTP 模块由一组独立的权重(14B 参数)组成,专门用于预测超出即时下一个 token 的未来 token。在推理过程中,这些预测可用于一次投机解码多个 token,从而显着加快生成速度。

来源: README.md65-67 README.md99-100

FP8 混合精度训练和推理

DeepSeek-V3 是第一个大规模验证 FP8 训练可行性和有效性的超大模型。模型架构包含针对使用 FP8 或 BF16 精度进行高效推理的优化。

模型包含用于高效 FP8 操作的专用内核,这些内核使用 Triton JIT 编译实现 GPU 加速。

来源: inference/model.py129-161 README.md73-74

并行处理支持

DeepSeek-V3 内置了对各种并行策略的分布式计算支持

  1. 张量并行:多个线性层实现为列并行或行并行,以在多个设备上分发计算。
  2. 专家并行:在 MoE 层中,专家分布在各个设备上,以实现高效扩展。

此并行支持允许 DeepSeek-V3 在多 GPU 或多节点上进行高效部署。

来源: inference/model.py205-264

配置参数

模型架构高度可配置,通过 ModelArgs dataclass 定义,该类定义了模型的所有超参数。

DeepSeek-V3 包含针对各种模型尺寸的配置预设,尽管 671B 版本是主要发布版本。

来源: inference/model.py19-84

总结

DeepSeek-V3 的架构代表了构建强大且计算高效的大型语言模型的先进方法。通过结合多头潜在注意力 (MLA)、混合专家 (MoE) 和多 token 预测 (MTP),DeepSeek-V3 在性能上可与领先的闭源模型相媲美,同时所需的激活参数却显著减少。

有关特定组件的更多详细信息