Skip to content
🔗 分享本题
查看我的学习进度 →
💡 答案要点

MLA 是 DeepSeek 提出的新一代注意力范式——用低秩分解替代传统的独立 Q/K/V 投影。

GQA 仍然存在的冗余:

GQA 的改进思路:多个 Query head 共享一组 KV head
但本质上是独立的投影矩阵:
  W_Q[i]: d_model → d_head  (独立学习)
  W_K[v]: d_model → d_head  (独立学习)
  W_V[v]: d_model → d_head  (独立学习)

冗余之处:
  每个 head 的 Q/W/Q 都是独立的 d_model × d_head 矩阵
  但这些投影之间可能有高度相关性(都在学类似的注意力映射)
  → 有没有办法"共享知识"同时又能"区分任务"?

MLA 的核心创新:低秩分解 Q/K/V 投影

传统多头注意力(MHA/GQA):
  W_Q: (num_heads × d_head, d_model)     ← 独立大矩阵
  W_K: (num_kv_heads × d_head, d_model)  ← 独立大矩阵
  W_V: (num_kv_heads × d_head, d_model)  ← 独立大矩阵

MLA(Multi-Latent Attention):
  第一步:共同压缩
    C_c: (d_model, d_comp)    ← 共同压缩矩阵 (小!)
    c = C_c @ x               把 x 压缩到低维 latent space

  第二步:解耦展开
    W_Q_h: (num_heads × d_head, d_comp)  ← 按头拆分
    W_K_v: (num_kv_heads × d_head, d_comp) ← 按 KV group 拆分
    W_V_v: (num_kv_heads × d_head, d_comp) ← 按 KV group 拆分

  Q_h = W_Q_h @ c
  K_v = W_K_v @ c
  V_v = W_V_v @ c

MLA 与传统方式的对比:

假设 d_model=8192, num_heads=64, d_head=128, num_kv=8, d_comp=512

传统 GQA 的 KV 投影矩阵大小:
  W_K: (8 × 128, 8192) = (1024, 8192) = 8.4M 参数
  W_V: (8 × 128, 8192) = (1024, 8192) = 8.4M 参数

MLA 的 KV 投影矩阵大小:
  压缩: C_kv (512, 8192) = 4.2M 参数
  展开: W_K_v (8×128, 512) = 0.52M 参数
  展开: W_V_v (8×128, 512) = 0.52M 参数
  总计: 5.2M 参数

节省: (16.8M - 5.2M) / 16.8M ≈ 69% 的 KV 投影参数!

KV Cache 的巨大优势:

MLA 的 KV Cache 只有低维 latent 向量 c_v
  而非高维的 K_v 和 V_v

KV Cache 大小对比:
  GQA:  层数 × seq_len × num_kv × d_head × 2 × bytes  (如前面计算的 ~82MB/token)
  MLA:  层数 × seq_len × d_comp × 1 × bytes            (仅存储压缩后的 c_v)

MLA 可以将 KV Cache 压缩到原来的 1/10~1/5
这意味着:
  ✓ 同样的显存可以支持更长上下文
  ✓ 同样的上下文可以支持更大 batch size
  ✓ 长文本推理成本大幅降低

MLA 的完整推理流程:

推理时每步的新 token 处理:
  x_new → C_c (压缩) → c_v (低维 latent) → 存入 KV Cache
  
生成下一个 token:
  c_cache (全部历史的 latent) → W_V_v (展开) → V_cache
  x_new  → C_c (压缩) → c_q (query latent) → W_Q_h (展开) → Q_new
  
注意力: Softmax(Q_new @ K_cache^T / √d) @ V_cache

关键点:K_cache 也是由 c_cache 经 W_K_v 展开得到的
         所以 KV Cache 只需要存 c_v,不用存展开后的 K/V!

为什么 DeepSeek v3 选择 MLA:

Trade-off 分析:

MLA 优点:
  ✓ KV Cache 缩减 5-10x → 长上下文和大批量更易实现
  ✓ KV 投影参数减少 ~70% → 模型更紧凑
  ✓ 低秩表示天然有正则化效果

MLA 缺点:
  d_comp 太小有表达能力瓶颈(经验值 512-1024 比较安全)
  需要额外的 C_c 和 W_h/v 矩阵训练
  理论上可能不如独立投影灵活(受限的秩)

结论:在追求长上下文和高效推理的场景下,MLA 的 trade-off 非常值得。
       DeepSeek 实测发现 d_comp=512 时对性能影响微乎其微

MLA vs GQA 总结对比:

| 维度        | GQA                 | MLA                     |
|-------------|--------------------|------------------------|
| KV Cache    | 中高                | 极低(低秩压缩)        |
| 参数效率    | 中                 | 高(参数减 70%)       |
| 表达能力    | 高(独立投影)      | 中-高(受 d_comp 限制) |
| 实现复杂度  | 低                  | 中                     |
| 适用场景    | 通用推理            | 长上下文、大批量场景    |
| 代表模型    | Llama-3.1 等      | DeepSeek-V3            |

面试话术:

"MLA 的核心思想是把 Q/K/V 投影做低秩分解——先用一个共同的压缩矩阵把高维嵌入降到低维 latent,再分别展开成 Q/K/V。这样做的好处是 KV Cache 可以直接存低维 latent,不用存展开后的高维张量,从而把 KV Cache 压缩到原来的十分之一左右。DeepSeek V3 选择 MLA 不是为了刷指标,而是为了在有限的显存下跑更长的上下文和更大的 batch。理论上有微小的表达能力折损,但实践证明 d_comp=512 足够用。"

⭐ 面试加分项:

  • 能手推 MLA 的矩阵维度变化(特别是低秩分解的形状)
  • 理解为什么 KV Cache 只需存 c_v 而不用存 K_v/V_v
  • 能定量估算 MLA 带来的 KV Cache 节省比例
  • 知道 d_comp 的选择对表达能力的 trade-off
日期版本更新内容
2026-08-21v3.136新增 Q20-Q26(Scaling Laws&Chinchilla、Tokenization/BPE、ALiBi详解、Sliding Window Attention、Causal Decoder-Only主导原因、LayerNorm vs RMSNorm、训练Loss Curve诊断)7 道
2026-08-14v3.135新增 Q15-Q19(FlashAttention、MoE稀疏架构、PagedAttention/KV Cache管理、SwiGLU门控机制、MLA低秩注意力)5 道
2026-04-13新增 Q10 Transformer+SSM混合架构(Mamba核心原理、2026年主流模型混合策略)
2026-03-05新增 Transformer 架构与注意力机制面试题 7 道