我原本计划写一篇关于DeepSeek V4的文章。由于它尚未发布,我便利用这段时间完成了一件搁置已久的事情——收集、整理并完善了过去几年里我介绍过的各种大语言模型架构。
于是,在过去两周里,我将这项工作变成了一个LLM架构画廊(截至撰写本文时已有45个条目),其中融合了早期文章的内容,以及几个我尚未记录的重要架构。每个条目都附带一张可视化模型卡片,我计划定期更新这个画廊。
你可以在这里找到画廊:https://sebastianraschka.com/llm-architecture-gallery/
在我分享初始版本后,一些读者询问是否有海报版本。所以,现在有了一个通过Redbubble提供的海报版本。我订购了中号(26.9 x 23.4英寸)来查看打印效果,结果清晰锐利。不过,在这个尺寸下,一些最小的文字元素已经相当小了,所以如果你希望所有内容都清晰可读,我不建议选择更小的版本。

在制作画廊的同时,我过去和现在也一直在为一些核心LLM概念编写简短的解释。
因此,在这篇文章中,我认为回顾一下近年来在主流开源权重架构中开发和使用过的所有注意力变体,会是一件有趣的事情。
我的目标是让这个集合既可作为参考,也能作为轻量级的学习资源。希望你觉得它有用且富有教育意义!
自注意力机制让每个词元可以查看序列中其他可见的词元,为它们分配权重,并利用这些权重构建输入的新上下文感知表示。
多头注意力(MHA)是该思想的标准Transformer版本。它并行运行多个具有不同学习投影的自注意力头,然后将它们的输出合并成一个更丰富的表示。

下面的部分从解释自注意力机制的快速导览开始,进而解释MHA。这更多是作为一个快速概览,为后续相关的注意力概念(如分组查询注意力、滑动窗口注意力等)做铺垫。如果你对更详细的自注意力内容感兴趣,可能会喜欢我较长的文章《理解与编码LLM中的自注意力、多头注意力、因果注意力和交叉注意力》。
示例架构
注意力机制早于Transformer和MHA。它的直接背景是用于翻译的编码器-解码器RNN。
在那些较老的系统中,编码器 RNN 会逐个读取源句子的词元,并将其压缩成一系列隐藏状态,在最简单的版本中则压缩成一个最终状态。然后解码器 RNN 必须根据这个有限的摘要生成目标句子。这种方法对于简短简单的句子有效,但一旦生成下一个输出词所需的相关信息位于输入句子的其他位置,就会造成明显的瓶颈。
简而言之,其局限性在于隐藏状态无法存储无限多的信息或上下文,而有时直接回溯完整的输入序列会非常有用。
下面的翻译示例展示了这一想法的一个局限性。例如,一个句子可能包含许多局部合理的词语选择,但当模型将问题过度视为逐词映射时,翻译仍然可能失败。(上方面板展示了一个夸张的例子,我们逐词翻译句子;显然,结果句子的语法是错误的。)实际上,正确的下一个词取决于句子级别的结构,以及在该步骤中哪些早期的源词是重要的。当然,使用 RNN 仍然可以很好地完成这种翻译,但在处理更长的序列或知识检索任务时会遇到困难,因为如前所述,隐藏状态只能存储有限的信息。

下一张图更直接地展示了这种变化。当解码器生成一个输出词元时,它不应局限于一条压缩的记忆路径。它应该能够直接回溯到更相关的输入词元。

Transformer 保留了上述经过注意力机制改进的 RNN 的核心思想,但去除了循环结构。在经典的 Attention Is All You Need 论文中,注意力机制本身成为了主要的序列处理机制(而不仅仅是 RNN 编码器-解码器的一部分)。
在 Transformer 中,这种机制被称为自注意力,其中序列中的每个词元会计算所有其他词元的权重,并使用这些权重将来自这些词元的信息混合成一个新的表示。多头注意力则是并行运行多次的相同机制。
对于一个包含 T 个词元的序列,注意力机制需要为每个词元分配一行权重,因此总体上我们会得到一个 T x T 的矩阵。
每一行回答一个简单的问题。在更新某个词元时,每个可见词元应该有多重要?在仅解码器的LLM中,未来位置会被掩码遮蔽,这就是下图中矩阵右上部分被灰色覆盖的原因。
自注意力机制的核心在于,在因果掩码下学习这些词元间的权重模式,并利用它们构建具有上下文感知能力的词元表示。

下图展示了Transformer如何从输入嵌入X计算注意力矩阵(A),进而生成变换后的输入(Z)。
这里Q、K和V分别代表查询、键和值。一个词元的查询表示该词元在寻找什么,键表示每个词元为匹配提供什么信息,而值则表示在计算出注意力权重后,被混合到输出中的信息。
具体步骤如下:
-
Wq、Wk和Wv是将输入嵌入投影到Q、K和V的权重矩阵 -
QK^T生成原始的词元间相关性分数 -
softmax将这些分数转换为我们在上一节讨论的归一化注意力矩阵
A -
将
A应用于V以生成输出矩阵Z
请注意,注意力矩阵并非独立手工设计的对象。它是由Q、K和softmax共同产生的。
下图与上图概念相同,但注意力矩阵的计算被隐藏在“缩放点积注意力”框内,并且我们只针对一个输入词元而非所有输入词元进行计算。这是为了在下一节扩展到多头注意力之前,展示单头自注意力的紧凑形式。

一组Wq/Wk/Wv矩阵为我们提供了一个注意力头,这意味着一个注意力矩阵和一个输出矩阵Z。(这一概念已在上一节中说明。)
多头注意力机制只是并行运行多个这样的头,每个头使用不同的学习投影矩阵。
这样做的好处在于,不同的头可以专注于不同的词元关系。一个头可能关注短距离的局部依赖,另一个头关注更广泛的语义联系,还有一个头则关注位置或句法结构。

分组查询注意力(GQA)是一种源自标准多头注意力(MHA)的注意力变体。它由Joshua Ainslie及其同事在2023年发表的论文《GQA:从多头检查点训练通用多查询Transformer模型》中提出。
与为每个查询头分配独立的键和值不同,GQA让多个查询头共享相同的键值投影,这大大降低了KV缓存的成本(主要体现在内存减少上),同时无需对整体解码器架构进行大幅改动。

架构示例
密集模型:Llama 3 8B、Qwen3 4B、Gemma 3 27B、Mistral Small 3.1 24B、SmolLM3 3B 和 Tiny Aya 3.35B。 稀疏模型(混合专家模型):Llama 4 Maverick、Qwen3 235B-A22B、Step 3.5 Flash 196B 和 Sarvam 30B。
在我的架构对比文章中,我将GQA视为经典多头注意力(MHA)的新标准替代方案。原因在于,标准MHA为每个注意力头分配独立的键和值,这在建模角度上更为优化,但在推理过程中,当我们需要将所有状态保存在KV缓存中时,成本会变得高昂。
在GQA中,我们保留了更多的查询头,但减少了键值头的数量,并让多个查询头共享这些键值头。这降低了参数数量和KV缓存的流量,而无需像多头潜在注意力(MLA,稍后讨论)那样进行大幅度的实现改动。
在实践中,这使得GQA成为那些希望比MHA更经济、但实现起来又比MLA等新型压缩密集型方案更简单的实验室的非常受欢迎的选择。
GQA在KV存储方面带来了巨大的节省,因为每层保留的键值头越少,每个词元所需的缓存状态就越少。这就是为什么随着序列长度的增长,GQA会变得更加有用。
GQA也是一个谱系。如果我们一路减少到只有一个共享的K/V组,实际上就进入了多查询注意力的领域,这虽然更经济,但可能会更明显地损害建模质量。最佳平衡点通常位于多查询注意力(1个共享组)和MHA(K/V组数量等于查询头数量)之间,此时缓存节省巨大,而相对于MHA的建模退化则保持在适度范围内。
更高级的变体(如MLA)正逐渐流行,因为它们在相同的KV效率水平下能提供更好的建模性能(例如,DeepSeek-V2论文的消融研究中有所讨论),但这也带来了更复杂的实现和更复杂的注意力堆栈。
GQA仍然具有吸引力,因为它稳健、易于实现,并且训练也更简单(根据我的经验,需要调整的超参数更少)。
这就是为什么一些较新的发布版本在此处仍刻意保持经典。例如,在我的Spring Architectures文章中,我提到MiniMax M2.5和Nanbeige 4.1是非常经典的模型,仅使用分组查询注意力,而没有堆叠其他效率技巧。Sarvam也是一个特别有用的对比点:30B模型保留了经典的GQA,而105B版本则切换到了MLA。

多头潜在注意力(MLA)的动机与分组查询注意力(GQA)类似。两者都是减少KV缓存内存需求的解决方案。GQA和MLA的区别在于,MLA通过压缩存储的内容来缩小缓存,而不是通过共享头来减少存储的K/V数量。

MLA最初在DeepSeek-V2论文中提出,后来成为DeepSeek时代的一个标志性思想(尤其是在DeepSeek-V3和R1之后)。它的实现比GQA更复杂,服务也更复杂,但如今,当模型规模和上下文长度足够大,以至于缓存流量开始占主导地位时,它往往也更具吸引力,因为在相同的内存缩减率下,它可以保持更好的建模性能(稍后会详细讨论)。
示例架构
DeepSeek V3, Kimi K2, GLM-5, Ling 2.5, Mistral Large 3, 和 Sarvam 105B
与MHA和GQA中缓存全分辨率键值张量不同,MLA存储一个潜在表示,并在需要时重建可用状态。本质上,这是一种嵌入在注意力内部的缓存压缩策略,如上图所示。
下图显示了与普通MHA相比的节省情况。

DeepSeek-V2 论文提供了一些消融实验,结果显示 GQA 在建模性能上不如 MHA,而 MLA 的表现要好得多,甚至在精心调优后还能超越 MHA。这比“它(也)节省内存”是一个更有力的理由。
换句话说,对于 DeepSeek 来说,MLA 之所以是更优的注意力机制,不仅因为它高效,更因为在大规模下它看起来是一种能保持质量的效率提升手段。(但同事也告诉我,MLA 只在特定规模下表现良好。对于较小的模型,比如 <100B,GQA 似乎效果更好,或者至少更容易调优并达到理想效果。)

下面再次对比 30B Sarvam 中的 GQA 与 105B Sarvam 中的 MLA。

自从 DeepSeek V3/R1、V3.1 等模型在 V2 中引入 MLA 后将其设计规范化,MLA 便开始出现在第二波架构中。Kimi K2 沿用了 DeepSeek 的方案并进行了规模扩展。GLM-5 采用了 MLA 以及 DeepSeek 稀疏注意力(来自 DeepSeek V3.2)。Ling 2.5 将 MLA 与线性注意力混合架构相结合。Sarvam 发布了两个模型,其中 30B 模型保留了经典的 GQA,而 105B 模型则切换到了 MLA。
最后一组对比特别有用,因为它将技术复杂性的讨论搁置一旁。也就是说,Sarvam 团队实现了两种变体,并有意识地决定在一个变体中使用 GQA,在另一个变体中使用 MLA。因此,从某种意义上说,这使得 MLA 不再像是一个理论上的替代方案,而更像是一个家族模型在规模扩展时的具体架构升级路径。
滑动窗口注意力通过限制每个位置可以关注的先前 token 数量,来降低长上下文推理的内存和计算成本。每个 token 并非关注整个前缀,而是只关注其位置附近一个固定窗口内的最近 token。由于注意力被限制在局部 token 邻域内,这种机制通常被称为局部注意力。
一些架构将这些局部层与偶尔的全局注意力层相结合,以便信息仍然可以在整个序列中传播。

架构示例
Gemma 3 27B、OLMo 3 32B、Xiaomi MiMo-V2-Flash、Arcee Trinity、Step 3.5 Flash 和 Tiny Aya
Gemma 3 仍然是近期最清晰的 SWA 示例之一,因为它易于与 Gemma 2 进行比较。Gemma 2 已经使用了混合注意力设置,局部层与全局层的比例为 1:1,窗口大小为 4096 个 token。Gemma 3 进一步将其推至 5:1 的比例,并将窗口大小减少到 1024。
关键发现并非局部注意力更便宜(这一点早已为人所知)。这里,Gemma 3 消融研究中更有趣的结论是,更激进地使用这种方法似乎对建模性能的影响很小。
在实践中,说一个模型“使用 SWA”并不意味着它仅依赖 SWA。通常重要的是局部层与全局层的模式以及注意力窗口大小。例如:
- Gemma 3 和 Xiaomi 使用 5:1 的局部与全局模式。
- OLMo 3 和 Arcee Trinity 使用 3:1 的模式。
- Xiaomi 还使用了 128 的窗口大小,这比 Gemma 的 1024 小得多,因此也更加激进。
SWA 本质上是一个可以或多或少激进调节的旋钮。

SWA 经常与 GQA 一起出现,因为这两个想法解决了同一推理问题的不同部分。SWA 减少了局部层需要考虑的上下文量。GQA 减少了每个 token 贡献给缓存的键值状态量。
这就是为什么许多最近的密集模型同时使用两者,而不是将它们视为替代方案。Gemma 3 再次成为一个很好的参考点,因为它在同一架构中结合了滑动窗口注意力和分组查询注意力。
DeepSeek 稀疏注意力是出现在 DeepSeek V3.2 系列中的架构变化之一,后来又在 GLM-5 中出现。
具体来说,DeepSeek V3.2 将其与 多头潜在注意力 (MLA) 结合,而 GLM-5 出于同样的普遍原因采用了相同的组合,即在上下文长度变大时降低推理成本。
架构示例
在滑动窗口注意力机制中,当前词元并不关注整个前缀,而只关注一个固定的局部窗口。这与DeepSeek稀疏注意力(DeepSeek Sparse Attention)的核心思路相同——每个词元也只关注前文词元的一个子集。
然而,所选词元并非由固定宽度的局部窗口决定。相反,DeepSeek稀疏注意力采用了一种学习到的稀疏模式。简而言之,它使用了一个“索引器加选择器”的架构:一个轻量级索引器计算相关性分数,而一个词元选择器则只保留一小部分得分较高的历史位置。
词元子集的选择方式是它与滑动窗口注意力的主要区别。滑动窗口注意力硬编码了局部性。DeepSeek稀疏注意力虽然也将注意力限制在一个子集内,但它让模型自行决定哪些先前的词元值得重新关注。
DeepSeek V3.2同时使用了多头潜在注意力(MLA)和DeepSeek稀疏注意力。MLA通过压缩存储内容来降低KV缓存成本。DeepSeek稀疏注意力则减少了模型需要重新访问的前文上下文量。换句话说,一个优化了缓存表示,另一个在此基础上优化了注意力模式。

稀疏模式并非随机。第一阶段是一个轻量级索引器,它为每个新的查询词元对之前的词元进行评分。它利用MLA的压缩词元表示,并计算一个学习到的、针对前文上下文的相似度分数,从而使模型能够对哪些较早的位置值得重新关注进行排序。
第二阶段是一个词元选择器。它只保留一个较小的、得分较高的子集,例如,一个前k个历史位置的集合,并将该子集转化为稀疏注意力掩码。因此,关键在于DeepSeek稀疏注意力并未硬编码稀疏模式,而是学习保留哪些过去的词元。
DeepSeek稀疏注意力相对较新,实现起来也较为复杂,这就是它尚未像分组查询注意力(GQA)那样被广泛采用的原因。
门控注意力最好被理解为一个经过修改的全注意力模块,而不是一个独立的注意力家族。
它通常出现在混合架构中,这种架构仍会保留偶尔的全注意力层以实现精确的内容检索,但在一个其他方面都熟悉的缩放点积注意力模块之上,添加了一些面向稳定性的改动。

Qwen3-Next和Qwen3.5的架构表明,近期出现的混合模型(将在下一节介绍)并未在所有位置取代注意力机制。相反,它们用更廉价的替代方案替换了大部分注意力层,同时在堆叠中保留了少量全注意力层。
这些保留下来的全注意力层正是门控注意力通常出现的位置。Qwen3-Next和Qwen3.5以3:1的模式将其与门控DeltaNet结合使用。
但抛开混合架构不谈,Trinity在更传统的注意力堆叠中采用了相关的门控思想,如上图所示。
在Qwen风格混合模型或Trinity(非混合模型)中的门控注意力模块,本质上仍是标准的缩放点积注意力,仅在其基础上做了少量改动。在原始的门控注意力论文中,这些改动被提出是为了让保留的全注意力层在混合堆叠中表现得更可预测。
该模块看起来仍像标准(全)注意力,但它增加了:
- 一个输出门,在注意力结果加回残差之前对其进行缩放,
- 针对q和k采用零中心QK-Norm变体,而非标准RMSNorm,
- 部分RoPE。
这些并非MLA或线性注意力级别的改动,仅仅是应用于原本熟悉的注意力模块上的稳定性和控制性调整。

请注意,上图还包含了门控DeltaNet,我们将在下一节中介绍它。
混合注意力是一种更广泛的设计模式,而非特定的单一机制。其总体思路是保留类似Transformer的堆叠结构,但用更廉价的线性或状态空间序列模块替换大部分昂贵的全注意力层。
其动机在于长上下文效率。全注意力的计算量随序列长度呈二次方增长,因此当模型处理128k、256k或1M token的上下文时,注意力机制的内存和计算开销变得非常昂贵。此时,在大部分层中使用更廉价的序列模块,同时只保留少量更重的检索层,就变得更有意义。(不过,这也会带来一定的建模性能权衡。)
在Qwen3-Next中,这种模式表现为门控DeltaNet和门控注意力块以3:1的比例混合。门控DeltaNet也与Mamba-2密切相关(例如,参见论文*门控Delta网络:用Delta规则改进Mamba2*),其机制可以理解为DeltaNet风格的快速权重更新与Mamba风格的门控相结合。后来的架构保留了相同的总体思路,但替换了其他轻量级序列混合器,例如Kimi Delta注意力、Lightning注意力或标准Mamba-2。

据我所知,2025年Qwen3-Next是首个接近旗舰级LLM的混合注意力模型,它并未完全移除注意力机制,而是将三个Gated DeltaNet模块与一个Gated Attention模块混合使用。
在这里,轻量级的Gated DeltaNet模块承担了大部分长上下文处理工作,并使内存增长远低于完全注意力机制。保留较重的门控注意力层是因为DeltaNet在基于内容的检索方面不够精确。
在Gated DeltaNet模块内部,模型会计算查询、键和值向量,以及两个学习到的门控(α, β)。它并非形成通常的token到token注意力矩阵,而是使用delta规则更新写入一个小型快速权重记忆。粗略来说,记忆存储了过往信息的压缩运行摘要,而门控则控制添加多少新信息以及保留多少先前状态。
这使得Gated DeltaNet成为一种线性注意力或循环式机制,而非仅仅是对MHA的另一种调整。与Mamba-2相比,两者的紧密联系在于它们都属于线性时间门控序列模型家族,但Gated DeltaNet使用DeltaNet风格的快速权重记忆更新,而非Mamba的状态空间更新。

Qwen3.5将之前的Qwen3-Next混合架构移入Qwen的主要旗舰系列,这是一个有趣的举动。这基本上表明混合策略是成功的,并且未来我们可能会看到更多采用这种架构的模型。

Kimi Linear保持了相同的广义Transformer骨架和相同的3:1模式,但改变了配方的两个部分。
在轻量级方面,Kimi Delta Attention是对Gated DeltaNet的改进。Qwen3-Next使用每个头的标量门控来控制记忆衰减,而Kimi使用通道级门控,从而对记忆更新提供更精细的控制。在较重的一侧,Kimi将Qwen3-Next的门控注意力层替换为门控MLA层。
所以,这仍然是和 Qwen3-Next 及 Qwen3.5 相同的总体模式,只是两个组成部分(略微)发生了变化。也就是说,大部分层仍然由更便宜的线性风格机制处理,而周期性的更重层则保留下来以实现更强的检索能力。

Ling 2.5 在轻量级一侧展示了另一种替换。Ling 没有使用 Gated DeltaNet,而是采用了一种稍微简单的循环线性注意力变体,称为 Lightning Attention。在更重的一侧,它保留了 DeepSeek 的 MLA。
大部分序列混合发生在更便宜的线性注意力块中,而数量较少的更重层则保留下来以保持更强的检索能力。区别在于,具体的轻量级机制现在是 Lightning Attention,而不是 DeltaNet 或 Kimi Delta Attention。

Ling 2.5 更侧重于长上下文效率,而非绝对的基准测试领先地位。据 Ling 团队称,在 32k token 长度下,其速度显著快于 Kimi K2,这正是这些混合模型所追求的实际收益。

Nemotron 将这种模式进一步推离了 Transformer 基线。Nemotron 3 Nano 是一个 Mamba-Transformer 混合模型,它将 Mamba-2 序列建模块与稀疏 MoE 层交错排列,并且仅在少数层中使用自注意力。
这是上述相同基本权衡的一个更极端的版本。在这里,轻量级序列模块是一个 Mamba-2 状态空间块,而不是 DeltaNet 风格的快速权重更新,但基本权衡是相似的。

更大的 Nemotron 3 Super 保留了 Mamba-2 混合注意力方法,并增加了其他面向效率的改动,例如用于推测解码的潜在 MoE 和共享权重多 token 预测(MTP)。

当然,文献中还有许多(主要是小众的)注意力变体,我在这里没有一一涵盖。本文的重点是那些目前在最先进(开放权重)模型中使用的变体。
具体来说,我期待看到(1)全新的 Mamba-3 层被集成到上述混合架构中(取代门控 DeltaNet),以及(2)注意力残差得到普遍应用。
在实践中,你可能也会好奇目前“最佳”架构是什么。这个问题很难回答,因为没有公开的实验在相同训练数据等条件下对不同架构进行训练。
因此,我们目前只能回答对于给定问题,最佳(已训练)模型选择是什么。在我看来,混合架构仍然是一个新事物,其主要卖点主要是(长上下文)效率,而非单纯的建模性能。因此,我认为它们是智能体场景(如 OpenClaw)的优秀候选方案。
就个人而言,我认为混合架构的问题还在于推理栈尚未完全优化,我发现使用更经典的设置(如带有分组查询注意力的 GPT-OSS)在本地运行 LLM 时,能获得更好的 tok/sec 吞吐量。
无论如何,我很期待看到 DeepSeek V4 会带来什么,因为 DeepSeek 在最近两年里一直是相当可靠的趋势引领者。