先这样答
GQA、MQA、MLA 都是用来减少大模型推理时 KV 缓存显存占用的注意力机制变体。大模型自回归解码时,每生成一个 token 都要把整条序列的 KV 重新读一遍,导致推理瓶颈卡在显存带宽而非计算量上。为突破这个访存密集瓶颈,业界演进出了这三种技术。
MQA 也就是多查询注意力,让所有 Query 头共享唯一一组 KV 头。这能最大幅度降低缓存,但有轻微质量下降。为平衡质量和显存,GQA 将 Query 头分组,每组共享一个 KV 头。只需 5% 原预训练算力进行继续训练,GQA 就能做到质量接近标准多头注意力,速度接近 MQA。
MLA 是多头潜在注意力,它不走共享 KV 头的路线,而是将 K 和 V 联合压缩成一个低秩的潜在向量缓存。为避免 RoPE 破坏矩阵吸收,MLA 设计了解耦 RoPE。它每 token 缓存 576 个元素,包含 512 维潜在向量和 64 维解耦 RoPE 键。DeepSeek-V2 论文报告该设计使 KV 缓存减少 93.3%,最大生成吞吐提升至 5.76 倍。
总的来说,从 MQA 到 GQA 再到 MLA,核心逻辑都是在保证模型表达力的前提下缩减数据量,突破显存带宽上限,以支撑长上下文和高并发。
面试官会怎么追问
-
「为什么大模型解码慢在显存带宽而不是算力」 自回归解码是一个访存密集型任务。计算单元大部分时间在等待历史 KV 数据从显存搬运过来,算力无法跑满,所以瓶颈在带宽。
-
「MLA 为什么要专门设计解耦 RoPE」 MLA 的高效推理依赖矩阵吸收,解码时需把上投影矩阵提前吸收进 Query 或输出投影中。RoPE 是一种位置相关的旋转操作,直接应用会破坏线性矩阵吸收的条件,必须单独拿出一个 64 维向量携带 RoPE 信息。
-
「既然 MLA 这么省显存,它在部署上有什么局限性」 局限是实现复杂且需定制算子。MLA 缓存的是压缩潜在向量,注意力内核形状与标准机制不同,无法直接使用标准 FlashAttention,工程落地时需专门编写解码内核。
回答的坑
- 认为 MLA 的缓存体积绝对比 GQA 小。正确方向是说明 MLA 的优势依赖具体配置,在某些小宽度配置下,单 KV 头的 GQA 缓存可能比 MLA 的 576 个元素更小。
- 说 MQA 能让解码速度提升十几倍。正确方向是不提未经证实的绝对加速倍数,只强调它突破了带宽瓶颈,具体加速效果受硬件和序列长度影响。
同系列的题