五厂面经真题集快手面经高频注意力机制KV Cache大模型面试速答 · 约 5 分钟更新 2026-09-29

Multi-Head Attention 有什么问题?改进方案有哪些?

一句话结论

MHA 的核心问题是 KV Cache 随头数线性增长,带来推理显存和带宽压力,同时不同头之间存在冗余;MQA、GQA、MLA 分别用共享 KV、分组共享和潜在空间压缩来改进。

先这样答

Multi-Head Attention 的主要问题有两个。第一,KV Cache 会随头数线性增长,推理时需要更多显存,也需要搬运更多数据。第二,不同注意力头之间存在冗余,很多头不一定需要各自保存一套 K 和 V。

先看显存账。自回归推理时,历史 token 的 K 和 V 会进入 KV Cache。MHA 为每个头分别保存 K 和 V,所以头数增加,缓存规模也随之增加。缓存越大,推理占用的显存越多,读取缓存时需要的带宽也越高。面试中要把这笔账说清楚,不能只说计算量变大。

改进方案主要有三种。MQA 让所有头共享一组 K 和 V,可以直接减少 KV Cache,但会牺牲精度。GQA 把头分成若干组,同组共享 K 和 V,在缓存规模和效果之间折中,是主流方案。MLA 则把 K 和 V 压缩到潜在空间中,再利用压缩表示服务注意力计算,这是 DeepSeek 的路线。它不只是简单地让多个头共享同一组 KV,而是从表示压缩角度减少缓存开销。

面试官会怎么追问

  • 「为什么 KV Cache 会随头数线性增长?」 每个头都需要保存自己的 K 和 V。历史 token 越多,需要保存的缓存越多。头数增加后,缓存中的对应内容也会增加,所以显存占用和缓存读取带宽都会随之增长。

  • 「MQA 既然能减少缓存,为什么不全部使用 MQA?」 MQA 让所有头共享一组 K 和 V。它能减少 KV Cache,但会牺牲精度。不同头失去各自的 K 和 V 后,表达能力会受到影响,所以工程上需要在缓存开销和效果之间取舍。

  • 「GQA 和 MQA 的区别是什么?」 MQA 让所有头共享一组 K 和 V。GQA 则把头分成多组,每组内部共享一组 K 和 V。GQA 的共享程度低于 MQA,因此通常能在缓存规模和精度之间取得折中。

回答的坑

  • 只说 MHA 计算量大,却没有说明 KV Cache 随头数线性增长,以及它带来的显存和带宽开销。

  • 把 GQA 说成完全共享 KV,或者把 MLA 说成简单的分组共享,都会混淆三种方案的核心区别。

这家公司的面经实录

相关深度笔记

—— 本题完 ——