架构图鉴

GQA / MHA / MLA:注意力与 KV 头

KV 头数直接决定 KV Cache 大小;MLA 用低秩压缩把它再压一个量级。

MHA → GQA → MLA

  • MHA(多头注意力):每个 Query 头配一套 K/V。KV Cache = 层数 × 头数 × head_dim × 2。
  • GQA(分组查询注意力):多个 Query 头共用一组 K/V。Qwen3-32B 是 64 Q 头 / 8 KV 头,KV 直接砍到 1/8。绝大多数 2024–2025 开源模型用它。
  • MLA(多头潜在注意力,DeepSeek):把 K/V 压成一个低秩潜向量(DeepSeek-V3 是 512 维 + 64 维 RoPE),推理时再展开。每 token 每层只存 576 个数,比 GQA 8 头 × 128 = 2048 还小。

数字对比(每 token,BF16)

模型注意力每 token KV
Qwen3-32BGQA 8 头 × 128 × 64 层256 KiB
GLM-4.6GQA 8 头 × 128 × 92 层368 KiB
DeepSeek-V3.2MLA 576 × 61 层≈ 70 KiB
Qwen3-Next-80B混合,仅 12 层全注意力≈ 24 KiB

更新的变体

  • 稀疏注意力(DSA):DeepSeek-V3.2 为每个 query 只挑 top-k 个键,把长上下文的注意力计算从 O(L²) 降到 O(L·k)。KV 仍要存,但算力大降。
  • 滑动窗口:Gemma 3 每 6 层只有 1 层看全局,其余 5 层只看 1024 token 窗口;gpt-oss 隔层滑窗 128。KV Cache 主要来自全局层。
  • 线性 / 混合:Qwen3-Next 的 Gated DeltaNet、Nemotron 3 的 Mamba-2。状态大小固定,不随序列增长,代价是精确的长程回忆变弱。

选型提示

KV 头数少 → 长上下文与高并发更省显存,但模型质量上限略受影响。看长上下文场景时,先看这个数,再看上下文标称长度。