【技术跟进】大模型注意力架构演进:从 GQA、MLA 到混合长上下文机制
近两年,大模型架构的竞争已经不只是参数规模的竞争。随着上下文窗口从几十 K 扩展到数百 K,甚至迈向 1M tokens,注意力机制本身逐渐成为决定训练效率、推理成本和长上下文能力的关键变量。DeepSeek、GLM、Qwen 和 Kimi 几个模型系列的最新路线,基本代表了当前中文大模型阵营在注意力架构上的主要探索方向。
如果把这些架构放在一起看,会发现它们并不是简单地从一种注意力机制替换为另一种,而是在解决不同层面的瓶颈。GQA 主要减少 KV heads,MLA 主要压缩 KV cache,DSA 负责从长上下文中动态找重点,CSA/HCA 进一步压缩 token 维度,而 Gated DeltaNet 则试图减少标准 attention 层本身的占比。换句话说,大模型注意力架构正在从“完整看所有 token”走向“压缩、稀疏、混合、分层”的方向。
flowchart TD
A["长上下文带来的核心问题"] --> B["KV cache 显存越来越大"]
A --> C["Attention 计算量越来越高"]
A --> D["远距离信息越来越难高效利用"]
B --> E["GQA:减少 KV heads"]
B --> F["MLA:缓存 latent KV"]
C --> G["DSA:动态 Top-k 稀疏注意力"]
C --> H["CSA/HCA:压缩后再计算"]
C --> I["Gated DeltaNet:降低标准 attention 占比"]
D --> G
D --> H
D --> I
1 GQA:工程上最稳健的 KV 压缩路线
GQA,也就是 Grouped Query Attention,可以看作是从传统多头注意力到长上下文推理之间的一种折中方案。标准 MHA 中,每个 Query head 都有自己对应的 Key 和 Value head,这样表达能力强,但 KV cache 非常大。GQA 的做法是保留较多的 Query heads,同时减少 Key/Value heads,让多个 Query heads 共享同一组 K/V。
这类设计的好处是非常直接:它不改变 Transformer 的基本范式,也不需要大幅改造推理框架,却能明显降低 KV cache。GLM-4、GLM-4.5 以及 Qwen3 主线都大量采用这种方式。例如 Qwen3 的很多模型会保留几十个 Query heads,但 KV heads 通常只有 4 个或 8 个。这样做不会像 MQA 那样过度压缩 K/V,也比完整 MHA 更适合长上下文部署。
flowchart TD
A["输入 hidden states"] --> B["投影得到多个 Q heads"]
A --> C["投影得到较少 K heads"]
A --> D["投影得到较少 V heads"]
C --> E["K/V heads 按组共享"]
D --> E
B --> F["多个 Q heads 共享一组 K/V"]
E --> F
F --> G["Scaled Dot-Product Attention"]
G --> H["拼接各 head 输出"]
H --> I["Output Projection"]
GQA 的局限也很清楚。它减少的是 head 数量,而不是从根本上改变 attention 对长序列的依赖方式。上下文继续拉长时,KV cache 和 attention 计算仍然会增长,只是增长速度相对温和。因此,GQA 更像是当前部署最成熟、生态兼容性最好的方案,而不是面向百万上下文的最终答案。
2 MLA:用 latent KV 重构 KV cache
DeepSeek-V2、DeepSeek-V3、Kimi K2、Kimi-K2.6,以及后来 GLM-5 采用的 MLA,代表了另一条路线。MLA 的核心不是减少 KV heads,而是改变 KV cache 的保存形式。传统 MHA 或 GQA 在推理时要缓存显式的 Key 和 Value,而 MLA 缓存的是压缩后的 latent KV 表示,再配合单独的 RoPE 位置分量完成注意力计算。
这类设计的直觉可以理解为:模型不再把每个 token 的完整 K/V 都放进缓存,而是先把它们压缩到一个低秩空间中。等到解码时,再通过相应的投影参与注意力计算。这样做可以大幅降低长上下文推理时的显存压力,也让 MoE 大模型更容易支撑更长的上下文窗口。
flowchart TD
A["输入 hidden state"] --> B["Query 低秩压缩"]
A --> C["KV 联合低秩压缩"]
A --> D["生成 RoPE Key 分量"]
B --> E["恢复 / 构造 Query"]
C --> F["得到 latent KV"]
D --> G["位置编码分量"]
F --> H["推理时缓存 latent KV"]
G --> I["推理时缓存 RoPE Key"]
E --> J["Attention 计算"]
H --> J
I --> J
J --> K["加权求和 Value 表示"]
K --> L["Output Projection"]
L --> M["Attention 输出"]
以 DeepSeek-V3 和 Kimi-K2.6 的 MLA 风格为例,常见配置包括
kv_lora_rank = 512、q_lora_rank = 1536、qk_nope_head_dim = 128、qk_rope_head_dim = 64。这些字段背后体现的是一个思路:内容信息和位置信息被拆开处理,KV
被低秩压缩,RoPE 分量单独保留,从而在显存与表达能力之间取得平衡。
MLA 的代价主要在工程实现上。它对 attention kernel、缓存布局和推理框架的要求更高,解码阶段的点积维度也可能比 GQA 更重。因此,MLA 更适合有能力深度优化训练和推理栈的大模型团队。DeepSeek 和 Kimi 选择这条路线,本质上是用更复杂的系统实现换取更强的长上下文推理效率。
3 DSA:让模型在长上下文里动态找重点
DSA,也就是 DeepSeek Sparse Attention,解决的是另一个问题:即使 KV cache 被压缩了,如果每一步解码仍然要在极长上下文上做完整 attention,计算量依然很大。DSA 的思路是给 attention 加一个内容感知的检索过程。模型先用 indexer 估计当前 Query 与历史 token 的相关性,然后只挑选最相关的一部分 KV entries 参与真正的 attention 计算。
这和固定窗口注意力不同。固定窗口只能看最近的一段内容,或者按照预设稀疏模式访问远处 token,而 DSA 是根据当前内容动态决定看哪里。对于长文档、代码仓库、多轮 Agent 轨迹这类场景,这种机制更容易保留远距离的关键信息。
flowchart TD
A["当前 Query"] --> B["生成 Indexer Query"]
C["历史 KV / latent KV cache"] --> D["生成 Indexer Key"]
B --> E["计算相关性分数"]
D --> E
E --> F["Top-k 选择相关 KV entries"]
F --> G["构造稀疏 KV 子集"]
A --> H["真实 Attention Query"]
G --> I["只对 Top-k KV 做 Attention"]
H --> I
I --> J["Softmax 与加权求和"]
J --> K["Attention 输出"]
在 GLM-5 中,DSA 和 MLA 被组合到一起使用。MLA 负责降低 KV cache 的存储压力,DSA 负责减少长上下文 attention 的计算压力。这种组合说明,单纯压缩缓存已经不够,新的长上下文模型还需要减少“看多少 token”这个问题本身。
4 DeepSeek-V4:CSA 与 HCA 的混合压缩注意力
DeepSeek-V4 系列的注意力架构相比 V3 的 MLA 路线更进一步。公开资料中,V4 的核心不再只是 MLA,而是 CSA 与 HCA 组成的 Hybrid Attention。CSA 是 Compressed Sparse Attention,HCA 是 Heavily Compressed Attention,两者都围绕百万上下文设计。
CSA 的流程是先把连续 token 的 KV 按块压缩,例如 4 个 token 压成 1 个 compressed KV entry,再通过 indexer 做 Top-k 选择。它不是直接在完整 token 序列上做稀疏检索,而是在压缩后的序列上检索,因此既减少了序列长度,又保留了内容感知选择能力。HCA 则更激进,例如把 128 个 token 压成 1 个高度压缩的 KV entry,然后在压缩后的全局序列上做 dense attention。这样做牺牲了一部分细粒度信息,但换来了覆盖 1M 上下文的能力。
flowchart TD
A["原始长上下文 KV 序列"] --> B["CSA 分支:按块压缩 m=4"]
A --> C["HCA 分支:高度压缩 m'=128"]
A --> D["Sliding Window 分支:保留最近局部 token"]
B --> E["压缩 KV entries"]
E --> F["Indexer Top-k 选择"]
F --> G["Compressed Sparse Attention"]
C --> H["高度压缩 KV entries"]
H --> I["Dense Attention over compressed KV"]
D --> J["局部细粒度 Attention"]
G --> K["融合输出"]
I --> K
J --> K
K --> L["Layer Output"]
DeepSeek-V4 的思路可以概括为三层互补:CSA 负责相对细粒度的内容选择,HCA 负责低成本的全局覆盖,Sliding Window 负责最近上下文的细节保真。它和 MLA 的区别在于,MLA 主要压缩每个 token 的 KV 表示,而 CSA/HCA 进一步压缩 token 维度,把“序列长度太长”这个问题也纳入架构设计中。
flowchart LR
A["1M tokens 输入"] --> B["局部窗口保细节"]
A --> C["CSA:4:1 压缩 + Top-k"]
A --> D["HCA:128:1 压缩 + 全局覆盖"]
B --> E["近处信息准确"]
C --> F["远处重要信息可检索"]
D --> G["全局背景低成本保留"]
E --> H["Hybrid Attention 输出"]
F --> H
G --> H
5 GLM-5:MLA 加 DSA 的双层长上下文方案
GLM-4.5 以前的路线更接近 GQA,但 GLM-5 明显转向了 MLA 与 DSA 的组合。这个变化很重要,因为它说明 GLM 系列也开始从“减少 KV heads”的稳健工程路线,转向“压缩 KV cache + 稀疏 attention 计算”的长上下文路线。
GLM-5 中的 MLA 或 MLA-256 主要负责把 KV cache 压下来。相比 GQA-8 这类方案,MLA 能把每个 token 需要缓存的表示压缩到更小的 latent 空间。与此同时,DSA 再从长上下文中选择与当前 Query 更相关的 Top-k KV entries,让模型不必在每一步都扫描完整上下文。
flowchart TD
A["输入 hidden states"] --> B["MLA / MLA-256"]
B --> C["生成 latent KV cache"]
B --> D["生成 Query 表示"]
C --> E["DSA Indexer"]
D --> E
E --> F["动态选择 Top-k KV"]
F --> G["稀疏 KV 子集"]
D --> H["Attention Query"]
H --> I["Attention over selected KV"]
G --> I
I --> J["Attention 输出"]
J --> K["MoE FFN"]
K --> L["Layer 输出"]
如果说 MLA 解决的是“存不存得下”,DSA 解决的就是“算不算得动”。这两者叠加后,GLM-5 在 200K 到 1M 上下文上的可部署性会明显强于单纯 GQA 架构。后续 GLM-5.2 中提到的 IndexShare,也是在同一方向上继续优化:多个稀疏注意力层共享 indexer 结果,减少重复检索带来的额外开销。
flowchart LR
A["长上下文推理成本"] --> B["KV cache 显存压力"]
A --> C["Attention FLOPs 压力"]
B --> D["MLA / MLA-256"]
D --> E["latent KV 降低缓存体积"]
C --> F["DSA"]
F --> G["Top-k 稀疏化计算"]
E --> H["GLM-5 长上下文注意力"]
G --> H
6 Qwen3.6:Gated DeltaNet 与 Gated Attention 的混合架构
Qwen3 主线曾经是典型 GQA 架构,但 Qwen3-Next 和 Qwen3.6
开始走向混合线性注意力。Qwen3.6 的关键不是继续压缩 KV
cache,而是减少标准 full attention 层的数量。公开配置中,Qwen3.6-27B
采用类似 3 × Gated DeltaNet + 1 × Gated Attention
的重复结构,也就是大约 75% 的层使用 Gated DeltaNet,25% 的层保留 full
attention。
Gated DeltaNet 可以看作一种更接近线性复杂度的序列建模模块,适合处理很长的上下文。它通过状态更新和门控机制捕捉序列信息,而不是每一层都做完整的二次复杂度 attention。与此同时,模型仍然周期性插入 Gated Attention 层,用来保留全局信息交互能力。保留下来的 full attention 层内部通常仍是 GQA 风格,即 Query heads 多,KV heads 少。
flowchart TD
A["输入序列"] --> B1["Gated DeltaNet + FFN"]
B1 --> B2["Gated DeltaNet + FFN"]
B2 --> B3["Gated DeltaNet + FFN"]
B3 --> B4["Gated Attention + FFN"]
B4 --> C["重复上述 Block"]
C --> D["模型输出"]
flowchart LR
A["Qwen3.6 64 层示意"] --> B["48 层 Gated DeltaNet"]
A --> C["16 层 Gated Attention"]
B --> D["降低长序列计算复杂度"]
C --> E["保留全局 token 交互"]
D --> F["262K 原生上下文"]
E --> F
Qwen3.6 的路线和 DeepSeek-V4、GLM-5 有明显差异。DeepSeek-V4 和 GLM-5 更关注“如何在 attention 内部压缩和稀疏化”,而 Qwen3.6 更关注“哪些层还需要 full attention”。这种方案的好处是长上下文效率高,推理成本相对可控;挑战则是混合线性结构的训练稳定性、任务泛化和推理生态都需要持续验证。
7 Kimi-K2.6:延续 MLA 与大规模 MoE
Kimi-K2.6 的文本主干基本延续 Kimi K2 的路线,也就是 DeepSeek-V3-like 的 MLA 加大规模 MoE。它没有像 DeepSeek-V4 那样切换到 CSA/HCA,也没有像 Qwen3.6 那样采用 Gated DeltaNet,而是继续沿着 latent KV cache 的路线扩展上下文和多模态能力。
Kimi-K2.6 的 MLA
配置中,kv_lora_rank = 512、q_lora_rank = 1536、qk_rope_head_dim = 64
等字段都非常典型。它通过缓存 latent KV 和 RoPE 分量来降低 KV
cache,并配合 1T 级别 MoE、384 个 routed experts、每 token 激活 8 个
experts 的结构,在较低激活参数下维持大模型容量。
flowchart TD
A["文本 / 多模态输入表示"] --> B["MLA Attention"]
B --> C["Query 低秩压缩"]
B --> D["KV 低秩压缩"]
B --> E["RoPE 位置分量"]
C --> F["构造 Query"]
D --> G["latent KV cache"]
E --> H["位置编码参与 Attention"]
F --> I["MLA Attention 计算"]
G --> I
H --> I
I --> J["Attention 输出"]
J --> K["MoE FFN"]
K --> L["384 routed experts 中选择 8 个"]
L --> M["Layer 输出"]
Kimi-K2.6 的优势在于路线清晰、工程风险相对可控。MLA 已经在 Kimi K2 和 DeepSeek-V3 类模型中被充分验证,配合更长上下文和多模态输入后,Kimi-K2.6 更像是在成熟 MLA 架构上继续扩展能力边界,而不是彻底更换注意力范式。
8 几条路线的横向比较
从架构目标看,GQA、MLA、DSA、CSA/HCA 和 Gated DeltaNet 解决的问题并不完全相同。GQA 是最稳健的 KV head 压缩;MLA 是更激进的 KV cache 压缩;DSA 是内容感知的稀疏选择;CSA/HCA 是面向百万上下文的 token 维度压缩;Qwen3.6 的 Gated DeltaNet 则是减少 full attention 层比例。
| 架构 | 代表模型 | 主要解决的问题 | 核心手段 |
|---|---|---|---|
| GQA | GLM-4.5、Qwen3 主线 | KV cache 过大 | 多个 Q heads 共享较少 KV heads |
| MLA | DeepSeek-V3、Kimi-K2.6、GLM-5 | KV cache 显存压力 | 缓存 latent KV,而非完整 K/V |
| DSA | GLM-5 | 长上下文 attention 计算量大 | Indexer 动态 Top-k 选择 |
| CSA/HCA | DeepSeek-V4 | 1M 上下文计算与缓存压力 | 压缩 KV 序列后稀疏或 dense attention |
| Gated DeltaNet Hybrid | Qwen3.6 | full attention 层计算成本高 | 75% 线性注意力 + 25% full attention |
flowchart TD
A["主流长上下文注意力路线"] --> B["GQA 路线"]
A --> C["MLA 路线"]
A --> D["MLA + DSA 路线"]
A --> E["CSA/HCA 压缩混合路线"]
A --> F["Gated DeltaNet 混合线性路线"]
B --> B1["GLM-4.5 / Qwen3:工程稳健"]
C --> C1["Kimi-K2.6 / DeepSeek-V3:latent KV cache"]
D --> D1["GLM-5:缓存压缩 + 动态稀疏"]
E --> E1["DeepSeek-V4:面向 1M context"]
F --> F1["Qwen3.6:减少 full attention 占比"]
如果用一句话概括每个新模型的路线,DeepSeek-V4 是 CSA/HCA 压缩混合注意力,GLM-5 是 MLA 加 DSA,Qwen3.6 是 Gated DeltaNet 加少量 Gated Attention,Kimi-K2.6 则继续坚持 MLA 加大规模 MoE。它们代表的不是同一个答案,而是围绕长上下文效率给出的几种不同解法。
9 结语
注意力架构的演进,本质上是在回答一个问题:模型到底应该如何在越来越长的上下文中高效地找到有用信息。早期的答案是完整 attention,后来是 GQA 这样的 KV head 压缩,再后来是 MLA 这样的 latent cache。到了更新一代模型,趋势变得更加清晰:只压缩缓存还不够,还要压缩 token 序列、动态选择重点,甚至减少 full attention 层本身。
DeepSeek-V4、GLM-5、Qwen3.6 和 Kimi-K2.6 的分化说明,长上下文时代不会只有一种注意力架构胜出。面向极长上下文和高吞吐部署,CSA/HCA、DSA、Gated DeltaNet 这类混合机制会越来越重要;而在稳定性、生态兼容和模型表达之间,MLA 与 GQA 仍然会长期存在。未来的大模型注意力,很可能不再是单一模块,而是一套由压缩、检索、稀疏、线性和局部窗口共同组成的复合系统。