在大语言模型推理中,模型权重并不是唯一的显存消耗来源。随着输入和已生成内容不断变长,保存历史键和值的 KV Cache 会持续增长,并逐渐影响可用批量、解码速度与并发能力。分组查询注意力(Grouped-Query Attention,GQA)正是针对这一问题提出的折中方案:它在保留多个查询头的同时,让若干查询头共享同一组键和值,从而在显存效率与生成质量之间取得平衡。
从 MHA、MQA 到 GQA
传统多头注意力(MHA)为每个查询头配置独立的键头和值头。不同头可以学习不同的信息关联模式,表达能力较强,但推理时必须为每个 KV 头保存历史状态。当上下文长度、层数或并发请求数增加时,KV Cache 会快速占用大量显存。
多查询注意力(MQA)走向另一个极端:所有查询头共享一组键和值。它可以显著缩小 KV Cache,却也压缩了键值表示的多样性,在部分需要精细检索、复杂推理或远距离依赖的任务中,可能带来更明显的质量损失。
GQA 位于两者之间。假设模型有 32 个查询头,可以安排 8 个 KV 头,每 4 个查询头共享一组键和值。KV 头数量等于查询头数量时,GQA 退化为 MHA;只有一个 KV 头时,则等价于 MQA。原始 GQA 研究将其定位为兼顾 MHA 质量和 MQA 推理效率的方案,实验与方法可参考 来源链接 论文。
GQA 为什么能降低解码显存
自回归解码每次只生成一个新 Token。当前 Token 的查询只使用一次,但此前所有 Token 对应的键和值需要保留,供后续步骤反复访问。因此,单个请求的 KV Cache 可近似理解为:
KV Cache 大小约等于层数 × 上下文长度 × KV 头数 × 单头维度 × 2 × 数据类型字节数。
其中乘以 2 是因为需要同时保存 Key 和 Value。由此可见,在其他条件不变时,KV Cache 与上下文长度、KV 头数量近似线性相关。如果查询头数量为 H,KV 头数量为 G,那么相较于同规格 MHA,GQA 的缓存规模大致按 G÷H 缩减。这个关系反映的是架构层面的理论比例,实际显存还包括模型权重、激活、工作区、内存碎片和推理框架管理开销。
更小的 KV Cache 不只是节省容量。解码阶段通常需要反复读取历史键和值,长上下文下容易受到显存带宽限制。减少 KV 头可以降低每一步读取的数据量,使同一块 GPU 有机会容纳更多并发序列或更长上下文。不过,实际加速幅度还取决于注意力内核、量化格式、批处理策略、张量并行方式以及硬件带宽,不能仅凭 KV 头比例直接推算。
对长文本生成质量有什么影响
GQA 并不会直接扩大模型的上下文窗口,也不能保证模型更善于理解长文。它解决的核心问题是缓存和带宽成本,让长上下文推理更容易被部署。模型能否准确利用远处信息,还取决于训练时的上下文长度、位置编码、长文本数据质量、注意力机制和对齐方式。
KV 共享程度过高时,多个查询头虽然提出不同的“问题”,却只能从较少的键值表示中检索信息。这可能降低注意力子空间的多样性。影响在普通续写中未必明显,但在长文档问答、跨章节引用、代码仓库分析、多个相似实体区分以及需要保留细节的摘要任务中,更容易暴露。
另一方面,KV 头也不是越多越好。增加 KV 头会扩大缓存和带宽压力,可能迫使系统缩短上下文、减少并发或采用更激进的缓存量化。此时理论上的表达能力提升,未必能转化为实际服务质量。GQA 的价值就在于通过适量共享,保留比 MQA 更丰富的键值表示,同时避免 MHA 的高缓存成本。
为什么不能只看注意力类型
长文本质量是多种技术共同作用的结果。例如,Mistral 7B 同时采用 GQA 与滑动窗口注意力,前者主要改善解码效率和内存需求,后者限制单层直接关注的历史范围,以降低长序列计算成本,具体设计可参阅 Mistral 7B 论文。因此,比较模型时应区分“KV 头共享方式”和“每个 Token 能关注多大范围”,不能把两者混为一谈。
此外,模型是否从训练阶段就使用 GQA 也很重要。原生 GQA 模型可以在训练中适应共享结构;如果把已有 MHA 模型直接合并为较少的 KV 头,而缺少适当的参数初始化与继续训练,质量下降可能更加明显。分组方式也并非永远等价,相关研究显示,如何选择和合并注意力头本身就是一个优化问题,可参考 AsymGQA 研究。
部署与评测时的实用建议
- 先计算 KV Cache 预算:根据层数、上下文长度、KV 头数、单头维度和缓存精度估算单请求占用,再为模型权重和运行工作区预留空间。
- 同时测试短文本与长文本:短基准难以暴露远距离检索问题,应加入长文问答、关键信息定位、跨段推理和多轮一致性测试。
- 关注整条推理链路:确认推理框架是否原生支持 GQA,避免先复制 KV 头再执行普通 MHA,因为显式复制可能抵消缓存和带宽收益。
- 不要只比较峰值显存:还应记录首 Token 延迟、逐 Token 延迟、并发吞吐、不同上下文长度下的稳定性及缓存回收效率。
- 根据业务选择共享程度:高并发聊天更偏向较少 KV 头;长文审阅、代码分析和精细检索则应更谨慎地验证质量。
总结
GQA 的本质不是让注意力计算消失,而是通过减少独立 KV 头,降低解码阶段持续增长的缓存规模和显存带宽压力。与 MHA 相比,它更适合长上下文和高并发部署;与 MQA 相比,它通常能保留更丰富的键值表示。真正合理的配置必须结合模型训练方式、上下文长度、推理内核、缓存精度和任务难度共同评估。对于长文本应用,最可靠的判断标准不是架构名称,而是在目标硬件与真实数据上同时测量显存、延迟、吞吐和远距离信息利用能力。