DeepSeek大模型技术架构全解析:从底层原理到顶层设计
DeepSeek大模型技术架构全解析:从底层原理到顶层设计
DeepSeek作为国产大模型的代表,其技术架构解析具有重要的参考价值。本文将从基本架构、多头潜在注意力(MLA)、DeepSeekMoE的负载均衡策略、多token预测(MTP)等方面,深入解析DeepSeek大模型的技术架构。
DeepSeek大模型技术架构全解析
DeepSeek-V3 的基本架构,其特点是采用多头潜在注意力(MLA)实现高效推理,采用 DeepSeekMoE 进行经济高效的训练。同时,提出了多 token 预测(MTP)训练目标,以提高模型在评估基准上的整体性能。对于未明确提及的其他细节,DeepSeek-V3 遵循 DeepSeek-V2 的设置。
基本架构
DeepSeek-V3 的基本架构仍基于 Transformer 框架。为实现高效推理和经济高效的训练,DeepSeek-V3 采用了经 DeepSeek-V2 充分验证的 MLA 和 DeepSeekMoE。与 DeepSeek-V2 不同的是,DeepSeek-V3 为 DeepSeekMoE 引入了无辅助损失的负载均衡策略,以减轻为确保负载均衡而对模型性能造成的影响。
多头潜在注意力(MLA)
对于注意力机制,DeepSeek-V3 采用 MLA 架构。MLA 的核心是对注意力键值进行低秩联合压缩,以减少推理时的键值(KV)缓存:
其中是键值的压缩潜在向量;表示 KV 压缩维度;表示下投影矩阵;、分别是键值的上投影矩阵;是用于生成携带旋转位置嵌入(RoPE)的解耦键的矩阵;RoPE 表示应用 RoPE 矩阵的操作;表示拼接。需要注意的是,对于 MLA,在生成过程中仅需缓存蓝色框中的向量(即和),这显著减少了 KV 缓存,同时保持与标准多头注意力(MHA)相当的性能。
对于注意力查询,我们也进行低秩压缩,这可以减少训练期间的激活内存:
其中是查询的压缩潜在向量;表示查询压缩维度;、$W^{U Q、分别是查询的下投影和上投影矩阵;是用于生成携带 RoPE 的解耦查询的矩阵。
最终,注意力查询()、键()和值()相结合,产生最终的注意力输出:
其中表示输出投影矩阵。
采用无辅助损失负载均衡的 DeepSeekMoE
DeepSeekMoE 基本架构:对于前馈网络(FFNs),DeepSeek-V3 采用 DeepSeekMoE 架构。与传统的 MoE 架构相比,DeepSeekMoE 使用更细粒度的专家,并将部分专家设置为共享专家。设表示第个 token 的 FFN 输入,我们按如下方式计算 FFN 输出:
否则
其中和分别表示共享专家和路由专家的数量;和分别表示第个共享专家和第个路由专家;表示激活的路由专家数量;是第个专家的门控值;是 token 与专家的亲和度;是第个路由专家的质心向量;表示在为第个 token 和所有路由专家计算的亲和度分数中,包含个最高分数的集合。与 DeepSeek-V2 略有不同,DeepSeek-V3 使用 sigmoid 函数计算亲和度分数,并对所有选定的亲和度分数进行归一化以生成门控值。
无辅助损失负载均衡:对于 MoE 模型,专家负载不均衡会导致路由崩溃,并在专家并行的场景中降低计算效率。传统解决方案通常依赖辅助损失来避免负载不均衡。然而,过大的辅助损失会损害模型性能。为了在负载均衡和模型性能之间实现更好的平衡,DeepSeek-V3 首创了无辅助损失的负载均衡策略来确保负载均衡。具体来说,为每个专家引入一个偏差项,并将其添加到相应的亲和度分数中,以确定前路由:
否则
注意,偏差项仅用于路由。与 FFN 输出相乘的门控值仍由原始亲和度分数导出。在训练过程中,持续监控每个训练步骤中整个批次的专家负载。在每个步骤结束时,如果相应专家负载过高,将偏差项减小;如果负载过低,则将其增大,其中是一个称为偏差更新速度的超参数。通过动态调整,DeepSeek-V3 在训练过程中保持专家负载平衡,并且比仅通过辅助损失鼓励负载均衡的模型表现更好。
互补的序列级辅助损失:虽然 DeepSeek-V3 主要依靠无辅助损失策略来实现负载均衡,但为了防止单个序列内出现极端不平衡,还采用了互补的序列级平衡损失:
其中平衡因子是一个超参数,对于 DeepSeek-V3,其取值极小;表示指示函数;表示序列中的 token 数量。序列级平衡损失鼓励每个序列上的专家负载保持平衡。
节点限制路由:与 DeepSeek-V2 使用的设备限制路由类似,DeepSeek-V3 也采用受限路由机制来限制训练期间的通信成本。简而言之,确保每个 token 最多被发送到个节点,这些节点根据分布在每个节点上的专家的最高个亲和度分数之和来选择。在这种约束下,MoE 训练框架几乎可以实现完全的计算 - 通信重叠。
无 token 丢弃:由于有效的负载均衡策略,DeepSeek-V3 在整个训练过程中保持良好的负载平衡。因此,DeepSeek-V3 在训练过程中不会丢弃任何 token。此外,还实施了特定的部署策略来确保推理负载平衡,所以 DeepSeek-V3 在推理过程中也不会丢弃 token。
多 token 预测(MTP)
受相关研究启发,为 DeepSeek-V3 研究并设置了多 token 预测(MTP)目标,将预测范围扩展到每个位置的多个未来 token。一方面,MTP 目标使训练信号更密集,可能提高数据效率。另一方面,MTP 可能使模型能够预先规划其表示,以便更好地预测未来 token。
MTP 模块:具体来说,MTP 实现使用个顺序模块来预测个额外 token。第个 MTP 模块由一个共享嵌入层、一个共享输出头、一个 Transformer 块和一个投影矩阵组成。对于第个输入 token ,在第个预测深度,首先将第深度的第个 token 的表示与第个 token 的嵌入通过线性投影组合:
其中表示拼接。特别地,当时,指的是主模型给出的表示。需要注意的是,每个 MTP 模块的嵌入层与主模型共享。组合后的作为第深度的 Transformer 块的输入,以产生当前深度的输出表示:
其中表示输入序列长度,表示切片操作(包括左右边界)。最后,以为输入,共享输出头将计算第个额外预测 token 的概率分布,其中是词汇表大小:
输出头将表示线性映射到 logits,然后应用 Softmax 函数计算第个额外 token 的预测概率。此外,每个 MTP 模块的输出头也与主模型共享。保持预测因果链的原则与相关研究类似,但主要目标是改进训练。
MTP 训练目标:对于每个预测深度,计算交叉熵损失:
其中表示输入序列长度,表示第个位置的真实 token,表示由第个 MTP 模块给出的的相应预测概率。最后,计算所有深度的 MTP 损失的平均值,并乘以加权因子,得到整体的 MTP 损失,作为 DeepSeek-V3 的额外训练目标:
MTP 在推理中的应用:MTP 策略主要旨在提高主模型的性能,因此在推理时,可以直接丢弃 MTP 模块,主模型可以独立正常运行。此外,还可以将这些 MTP 模块用于推测解码,以进一步提高生成速度。
总结
DeepSeek大模型的技术架构解析具有重要的参考价值。DeepSeek-V3通过采用多头潜在注意力(MLA)实现高效推理,采用DeepSeekMoE进行经济高效的训练,并提出了多token预测(MTP)训练目标,以提高模型在评估基准上的整体性能。这些技术细节为理解国产大模型的架构提供了深入的视角。
本文内容节选自《自然语言处理原理与实战》(人工智能科学与技术丛书)【陈敬雷编著】【清华大学出版社】