MQA、GQA 和 MLA 分别怎样减少 KV?

共享 KV 头与压缩潜变量是不同的设计。

内容修订 4 · 2026-10-24

I02 · 修订 1 · 2026-10-21

  1. MHA:每头独立 KV
  2. GQA / MQA:组内共享 KV
  3. MLA:压缩潜变量 + 位置分量
本站重绘:表示结构对照;MLA 的精确缓存需按实现计算。

问题从哪里来

Query 头可以学习不同的关注方式,但为每个 Query 头保留独立 K/V 会扩大缓存。2019 年 MQA、2023 年 GQA 探索共享 K/V;DeepSeek 的 MLA 则改变缓存表示。

关键机制

MHA 中 H_kv=H_q;MQA 中所有 Query 头共享一组 KV,H_kv=1;GQA 则有 1<H_kv<H_q 个组。MLA 使用低维联合潜变量及其解压映射,并处理位置表示相关分量。它不是简单把 GQA 组数继续减小。

MHA → GQA: ideal KV ratio = H_kv / H_q

算例与证据

教学配置 32 个 Query 头、8 个 KV 头,在其余条件相同时,GQA 载荷为 MHA 的四分之一。Meta Llama 3 的 8B/70B 披露 GQA;DeepSeek-V3 披露 MLA;这些是具体型号的证据。

收益之外的新约束

共享程度与模型质量存在取舍,需要训练或转换与验证;压缩表示依赖模型结构和内核支持。不能仅改服务端参数就无损把任意模型改成 MLA,也不能直接用载荷比推断吞吐比。

原始来源

启用脚本后可使用手动本地阅读记录和交互计算器。

继续追问

I01 · KV cache 为什么随上下文和并发增长?

S04 · PagedAttention 如何减少 KV 分配浪费?

全部18题