LLM面试题:MHA,MQA,GQA的区别
Q:你知道MHA,MQA,GQA的区别吗?详细解释一下。
难度:⭐⭐⭐
岗位:通用(开发岗也需了解)
公司:字节、阿里(真题)
标准答案:
这三者都是 Attention 机制的变体,核心区别在于 K/V 的头数设计。
1. MHA (Multi-Head Attention) - 标准多头注意力
- 每个头都有独立的 Q/K/V
- 参数量:heads × d_k × d_model × 3 (Q/K/V各一份)
- 显存占用:最大(推理时需要缓存所有 K/V)
2. MQA (Multi-Query Attention) - 多查询注意力
- 所有头共享同一组 K/V,每个头只有独立的 Q
- 参数量:heads × d_k × d_model (Q) + d_k × d_model × 2 (共享K/V)
- 显存占用:最小(KV Cache 只需存储一份)
- 优点:推理速度快(KV Cache 小),适合推理部署
- 缺点:精度可能略有下降
3. GQA (Grouped-Query Attention) - 分组查询注意力
- 折中方案:将heads分成G组,每组共享K/V
- 例如:8个head,分成2组,每组4个head共享一套K/V
- 参数量:介于 MHA 和 MQA 之间
- 精度 vs 速度的平衡点
对比表格:
| 类型 | K/V头数 | Q头数 | KV Cache | 精度 | 速度 | 代表模型 |
|---|---|---|---|---|---|---|
| MHA | H | H | 最大 | 最高 | 慢 | BERT、GPT-3 |
| MQA | 1 | H | 最小 | 略降 | 最快 | PaLM、Falcon |
| GQA | G (1<G<H) | H | 中等 | 平衡 | 平衡 | LLaMA-2、Mistral |
算法岗深入理解:
- MQA 为什么能work?理论上信息瓶颈在K/V,但实验表明共享K/V影响不大
- GQA 如何选择分组数 G?通常设为 H/4 或 H/8,兼顾精度和效率
开发岗实际应用:
- 推理场景优先选 MQA/GQA(减少显存,加速推理)
- 训练场景可以用 MHA(精度优先)
- LLaMA-2 70B使用 GQA,8个head分成2组
面试技巧:
- 画图说明三者区别(K/V头数)
- 提及 KV Cache 对推理的影响
- 举例说明哪些模型用了哪种方案
查看11道真题和解析