跳转到内容

输入关键词开始搜索

    GQA(分组查询注意力)

    概念更新 2026-07-26置信度 high#概念#基础#长青#架构#注意力

    一种多头注意力的变体,将多个查询头分组共享同一个键值头,大幅减少 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 表达能力

    NQ=N,NKV=G,G<N,NmodG=0N_Q=N,\qquad N_{\mathrm{KV}}=G,\qquad G<N,\qquad N\bmod G=0

    Groupi=Qheads ⁣[iNG:(i+1)NG]共享KVhead,i\operatorname{Group}i=Q{\mathrm{heads}}!\left[i\frac{N}{G}: (i+1)\frac{N}{G}\right]\quad\text{共享}\quad \operatorname{KV}_{\mathrm{head},i}

    因此 KV 缓存缩小为原来的 G/NG/N,即减少 N/GN/G 倍。

    nQ=32n_Q=32nKV=8n_{\mathrm{KV}}=8,常见的连续分组是 Q 头 1–4 使用 KV 头 1,Q 头 5–8 使用 KV 头 2,以此类推。每个 Q 头的 Q 投影和注意力权重仍独立;共享的是同一 KV 投影及其缓存,不是对 K/V 或 Q 做平均。

    代码中,K/V 投影层只输出 nKVn_{\mathrm{KV}} 个头。教学实现可将 K/V 沿 head 维按 nQ/nKVn_Q/n_{\mathrm{KV}} 次逻辑展开;生产实现应由支持 GQA 的 attention 内核按组读取,避免真的复制张量。FlashAttention 与 GQA 可叠加:前者减少 attention 的 HBM I/O,后者减少 KV Cache 的大小。

    方法 KV 头数 方案 代表
    MHA = Q 头数 每头独立 KV 原始 Transformer、GPT-3
    MQA = 1 所有头共享 KV PaLM
    GQA = G 组 Q 头分 G 组共享 KV Llama 2/3、Mixtral、Qwen2
    MLA 低秩潜向量 KV 压缩到潜空间 DeepSeek-V2
    • “GQA 和 MQA 差不多” — GQA 比 MQA 质量好得多,仅比 MHA 略低
    • “GQA 只影响推理” — GQA 训练时也减少了 K/V 计算量,加速训练