跳到主要内容

KV 压缩与「稀疏」的边界(MQA / GQA / MLA)

公式、示意图与实现细节 以 注意力变体:MQA、GQA、MLA 为准。本章说明它们为何 不是 token 级稀疏,以及如何与 DSA 等 叠加。

核心结论(先读)​

手段是否减少 attended token 数是否减小 KV Cache注意力 FLOPs 渐近阶
MQA / GQA / MLA否是仍 O(L2)O(L^2)(常数改善)
SWA / DSA / NSA是常同时降低<O(L2)< O(L^2)
命名建议

称 MQA/GQA/MLA 为 「KV 压缩注意力」 或 「高效注意力」 比统称为 「稀疏注意力」 更准确,避免与掩码稀疏混淆。

MQA → GQA → MLA 递进​

MQA(Multi-Query Attention)​

  • 所有 query 头共享同一组 K,VK,V;
  • KV Cache 相对 MHA 约减至 1/H1/H(HH 为头数);
  • 表达力可能下降,适合推理吞吐优先场景。

GQA(Grouped-Query Attention)​

  • 将 HH 个 Q 头分为 GG 组,每组共享一组 K,VK,V;
  • 在 KV 体积 与 质量 之间插值;Llama 2/3、Qwen 等广泛采用。
  • 图示与计算逻辑见 注意力变体。

MLA(Multi-head Latent Attention)​

  • 将 K,VK,V 投影到低维 latent 再缓存,解码时恢复;
  • DeepSeek V2/V3/R1 核心组件;KV 可比 MHA 再降 数倍(配置相关);
  • 配合 解耦 RoPE;详见 注意力变体 与 DeepSeek 稀疏路线。

为何不算 token 稀疏​

对长度 LL 序列,GQA/MLA 在计算 softmax(QK⊤)V\text{softmax}(QK^\top)V 时,仍对(几乎)每个历史位置计算注意力分数(可能在压缩后的 KK 表示上),连接图仍是 稠密 的。

节省发生在:

  • 存储:每个位置 cache 的 bytes ↓;
  • 带宽:推理每步读取的 KV ↓;
  • 部分实现中 FLOPs 常数项 ↓(头维/投影变化)。

不发生在:

  • 将 L2L^2 渐近阶改为 L⋅kL\cdot k(需 DSA、NSA 等)。

工业组合建议​

目标常见栈
8K–32K ChatGQA + Flash Attention
128K 推理省显存MLA 或 GQA + Flash
128K+ Agent 省 FLOPsMLA + DSA(V3.2)
1M AgentCSA/HCA(V4)+ 推理框架跟进
训练单卡装不下Ring + 上表推理优化

与总览表的关系​

稀疏注意力总览 中 MQA/GQA/MLA 一行指向本章;DSA/NSA/SWA 一行指向 token 稀疏专章。阅读技术报告时建议 先分清类型再对号入座。

参考链接​