GQA(分组查询注意力)

一种多头注意力的变体,将多个查询头分组共享同一个键值头,大幅减少 KV 缓存大小,是 MHA 和 MQA 的中间方案,已成为 2023-2024 年大模型的标准配置。

是什么

标准多头注意力(MHA)每个注意力头都有独立的 K、V、Q 投影。MQA(Multi-Query Attention)让所有头共享同一组 K、V。GQA 取中间:将 Q 头分为若干组,每组共享一组 K、V 头

例如 Llama 2 70B:64 个 Q 头,8 个 KV 头 → 每 8 个 Q 头共享 1 组 KV。KV 缓存减少 8×。

为什么重要

  1. 推理效率:KV 缓存是自回归推理的主要内存瓶颈。GQA 以极小的质量代价大幅减少 KV 缓存
  2. 实际效果:Llama 2 34B/70B 引入 GQA,相比 MHA 推理吞吐显著提升;Mixtral/Qwen2/Llama 3 全部采用
  3. 质量损失极小:相比 MQA(所有头共享 KV),GQA 保留了更多的 KV 表达能力

工作原理

Q_heads = N, KV_heads = G (G < N, N % G == 0)
Group_i = Q_heads[i*N/G : (i+1)*N/G] 共享 KV_head[i]
→ KV 缓存减少 N/G 倍

历史与演进

方法KV 头数方案代表
MHA= Q 头数每头独立 KV原始 Transformer、GPT-3
MQA= 1所有头共享 KVPaLM
GQA= G 组Q 头分 G 组共享 KVLlama 2/3、Mixtral、Qwen2
MLA低秩潜向量KV 压缩到潜空间DeepSeek-V2

常见误解

  • “GQA 和 MQA 差不多” — GQA 比 MQA 质量好得多,仅比 MHA 略低
  • “GQA 只影响推理” — GQA 训练时也减少了 K/V 计算量,加速训练

相关