1. DeepSeek V3/R1
想必大家已经多次听闻,DeepSeek R1 在 2025 年 1 月发布时引发了巨大反响。DeepSeek R1 是基于 DeepSeek V3 架构打造的推理模型,而 DeepSeek V3 架构 于 2024 年 12 月首次推出。
尽管本文的核心关注点是 2025 年发布的架构,但将 DeepSeek V3 纳入讨论是合理的 —— 它是在 2025 年 DeepSeek R1 推出后,才真正获得广泛关注与应用。
如果你对 DeepSeek R1 的训练细节特别感兴趣,也可以参考我今年早些时候的文章:
《理解推理型大语言模型》
在本节中,我将重点介绍 DeepSeek V3 引入的两项核心架构技术,它们既提升了模型的计算效率,也让 DeepSeek V3 有别于众多其他大语言模型:
-
多头潜在注意力(MLA)
-
混合专家模型(MoE)
1.1 多头潜在注意力(MLA)
在讨论多头潜在注意力(MLA)之前,我们先简要梳理背景,说明为什么需要这项技术。我们从分组查询注意力(GQA)说起 —— 近年来,GQA 已成为替代多头注意力(MHA)的新标准,能有效降低计算量与参数量。
先简单总结 GQA 的原理。与 MHA 中每个注意力头都拥有独立的键、值投影矩阵不同,GQA 将多个查询头分为一组,共享同一组键和值,以此降低内存占用。
例如,正如图 2 进一步展示的,如果有 2 组键值对、4 个注意力头,那么第 1、2 号头共享一组键值,第 3、4 号头共享另一组。这种设计减少了键和值的总计算量,从而降低内存占用、提升效率(根据消融实验,该优化不会对模型建模性能造成明显影响)。

GQA 的核心思路,是通过多个查询头共享键值头,来减少键值头的数量。这带来两方面收益:一是降低模型参数量,二是减少推理时键值张量的内存带宽占用 —— 因为 KV 缓存中需要存储和读取的键值数据变少了。
(如果你好奇 GQA 的代码实现,可以参考我写的 GPT-2 转 Llama 3 指南,其中有无 KV 缓存的版本,也有带 KV 缓存的变体。)
尽管 GQA 本质上是针对 MHA 的计算效率优化方案,但多项消融实验(包括 GQA 原论文与 Llama 2 论文中的实验)均表明,它在大语言模型建模性能上与标准 MHA 表现相当。
而多头潜在注意力(MLA)采用了另一种内存节省策略,且与 KV 缓存的适配性极佳。MLA 没有像 GQA 那样共享键值头,而是在存入 KV 缓存之前,先将键值张量压缩到更低维度的空间中。
推理时,这些压缩后的张量会先投影回原始维度再参与计算,如图 3 所示。这一过程增加了一次额外的矩阵乘法运算,但显著降低了内存占用。

(顺带一提,查询向量也会被压缩,但仅在训练阶段执行,推理阶段不做压缩。)
顺便说一句,MLA 并非 DeepSeek V3 首创 —— 它的前代 DeepSeek-V2 就已经使用(甚至可以说是首次提出)了该机制。此外,V2 的论文中包含几项有意思的消融实验,或许能解释为什么 DeepSeek 团队选择 MLA 而非 GQA(见图 4)。

正如图 4 所示,GQA 的表现似乎弱于 MHA,而 MLA 的建模性能则优于 MHA—— 这很可能就是 DeepSeek 团队选择 MLA 而非 GQA 的原因。(如果能同时对比 MLA 与 GQA 的「单 token KV 缓存占用量」就更有意思了!)
在进入下一个架构组件的讨论前,我们先总结本节:MLA 是一项巧妙的技术,既能减少 KV 缓存的内存占用,还能让建模性能略优于 MHA。
1.2 混合专家模型(MoE)
DeepSeek 另一项值得关注的核心架构设计,是采用了混合专家(MoE)层。尽管 MoE 并非 DeepSeek 发明,但今年这项技术迎来了复兴,我们后续要介绍的很多架构也都采用了它。
你大概率已经了解 MoE,不过我们还是快速回顾一下核心原理。
MoE 的核心思路,是将 Transformer 模块中的每个前馈网络(FeedForward)替换为多个专家层,而每个专家层本身也都是一个前馈网络模块。也就是说,我们把单个前馈模块替换为多个前馈模块,如图 5 所示。

Transformer 模块中的前馈网络块(即上图中深灰色模块)通常占据了模型总参数量的很大一部分。(注意,Transformer 模块 —— 以及其中的前馈模块 —— 会在大语言模型中重复堆叠多次;DeepSeek V3 一共堆叠了 61 层。)
因此,像 MoE 这样用多个前馈模块替换单个前馈模块,会大幅增加模型的总参数量。但关键在于,我们不会对每个 token 都调用(「激活」)所有专家。相反,路由网络会为每个 token 仅选择少量专家参与计算。(受篇幅所限,路由网络的细节我留待后续文章展开。)
由于每次只有少数专家处于激活状态,MoE 模块通常被称为「稀疏」模块,与之相对的是始终调用全部参数的「稠密」模块。不过,MoE 带来的庞大总参数量提升了大语言模型的容量,意味着它在训练阶段能容纳更多知识;而稀疏特性则保证了推理效率,因为我们无需同时调用全部参数。
例如,DeepSeek V3 的每个 MoE 模块包含 256 个专家,总参数量达 6710 亿。但在推理时,每次只有 9 个专家处于激活状态(1 个共享专家 + 路由网络选出的 8 个专家)。也就是说,每个推理步骤仅调用 370 亿参数,而非全部 6710 亿。
DeepSeek V3 的 MoE 设计有一个显著特点:设置了共享专家。这是一个对所有 token 都始终激活的专家。这个思路并非首创,早在 2024 年 DeepSeek 的 MoE 论文、以及 2022 年的 DeepSpeedMoE 论文中就已提出。

共享专家的价值最早在 DeepSpeedMoE 论文中被证实:研究人员发现,与无共享专家的方案相比,加入共享专家能提升整体建模性能。原因很可能在于,通用、重复的模式无需由多个独立专家分别学习,从而为专家留出更多容量去学习更专业化的模式。
1.3 DeepSeek 小结
总而言之,DeepSeek V3 是一款参数量高达 6710 亿的巨型模型,发布时性能超越了包括 4050 亿参数 Llama 3 在内的其他开源权重模型。
尽管总参数量更大,但得益于混合专家(MoE)架构 —— 每个 token 仅激活少量(仅 370 亿)参数 —— 它的推理效率要高得多。
DeepSeek V3 的另一大核心差异,是采用多头潜在注意力(MLA)而非分组查询注意力(GQA)。MLA 与 GQA 都是替代标准多头注意力(MHA)的高效推理方案,尤其适配 KV 缓存场景。尽管 MLA 的实现复杂度更高,但 DeepSeek-V2 论文中的实验表明,它的建模性能优于 GQA。