MQA,即 "M ulti-Q uery Attention",是减少 KV Cache 的一次的一种大胆尝试,首次提出自《Fast Transformer Decoding: One Write-Head is All You Need》, 在2019 年减少 KV Cache 就已经是研究人员非常关注的一个课题了。MQA 的思路很简单,直接让所有 Attention Head 共享同一个 K、V。

论文中伪代码,
Todo : k , v 如何选择?实际上是多头共同使用一个k, v 缓存。

一般的multi head attention 的qkv的头的数量都一样,而multi query attention的q的头数量保持不变,k,v的头数量都变为1。
论文中的计算结果:

这样子就直接将 KV Cache 减少到了原来的1/h ,这是非常可观的, 已经简洁的不能再简洁了。使用 MQA 的模型包括 PaLM 、StarCoder、Gemini 等。