目录
多头注意力让不同 Head 学习不同关系,但推理时还要为历史 Token 保存 K、V。序列越长、并发越高,KV Cache 越容易成为显存瓶颈。
四种结构的核心差异,不在 Q 有几个 Head,而在 K、V 如何共享或压缩。
1、MHA:每个 Head 都有自己的 QKV
Multi-Head Attention 中,H 个 Query Head 通常各自对应一组 Key Head 和 Value Head。表达能力直接,但每层、每个历史 Token 都要保存 H 组 K、V,KV Cache 较大。
2、MQA:所有 Query Head 共享 KV
Multi-Query Attention 保留多个 Query Head,却只使用一组 K 与 V。生成时缓存量显著下降,读取 KV 的带宽压力也更小。
代价是所有 Query Head 看到同一组 K、V,可能限制质量,因此它不是所有模型的统一答案。
3、GQA:在两者之间分组
Grouped-Query Attention 把 Query Head 分成 G 组,每组共享一组 K、V。G=H 时等价于 MHA,G=1 时接近 MQA。
它用少量 KV Head 换取明显的缓存收益,通常能在质量与推理效率之间取得较好平衡。
4、MLA:缓存低维潜向量
Multi-Head Latent Attention 不只是共享 KV Head,而是先把 K、V 相关信息压缩到低维潜向量。推理时缓存潜向量,需要时再通过投影恢复计算所需信息。
DeepSeek-V2 还将位置相关部分单独处理,以便低秩压缩与 RoPE 配合。
5、KV Cache 为什么决定选择
Decode 每次只产生一个 Token,却要读取所有历史位置的 K、V。KV Head 数越多、Head 维度越大、层数和上下文越长,缓存与内存带宽成本越高。
因此 MQA、GQA、MLA 的收益在长上下文和高并发服务中尤其明显。
6、不要只看缩写选架构
MHA、MQA、GQA 的工程支持成熟度不同;MLA 还需要匹配的算子与权重结构。选型要同时看质量、缓存大小、内核支持、硬件带宽与部署框架。
容易混淆的三件事
- MQA 并非只有一个 Query Head。
- GQA 是 MHA 与 MQA 的连续折中。
- MLA 不等于普通的 KV Head 共享。
记住这 5 件事
- MHA 每个 Head 有独立 KV
- MQA 共享一组 KV
- GQA 按组共享 KV
- MLA 缓存低维潜表示
- 目标是质量与缓存成本平衡
参考资料
第十三课复习总图
下一课回到 Block 的另一半:FFN、SwiGLU 与所谓“知识存储”到底是什么关系?