语言人工智能指南

分组查询注意力

分组查询注意力(GQA)是一种通过让多个查询头共享相同的键和值头来缩小文本生成过程中所需内存的方法。

阅读时间:2分钟最后更新

概述

It makes large models much faster to serve with almost no quality loss.

深入探讨

在标准的多头注意力层中,每个头都有自己的查询、键和值。在生成过程中,所有先前令牌的键和值都会被缓存(“KV 缓存”),因此模型不会重新计算它们。由于有许多头和长上下文,该缓存变得巨大并在推理时占据内存带宽。 GQA 由 Google 研究人员于 2023 年引入,对查询头进行分组,并为每个组提供一组共享的键和值头。如果您有 32 个查询头,但只有 8 个 KV 组,则 KV 缓存会缩小大约四倍。它位于完全多头注意力(每个头独立)和多查询注意力(所有头共享一个 KV)之间,捕获 MQA 的大部分速度,同时保持质量接近完全注意力。 Llama 2 70B以及后来的许多型号都采用了它。

技术洞察

注意力质量在很大程度上取决于许多不同的查询方向,但它允许共享键和值。 GQA 利用了这种不对称性:它保留所有查询头,但在其组中的查询之间复制每个共享的 KV 头。节省来自推理,其中 KV 缓存是内存带宽的主要消耗者;更少的 KV 头意味着每个生成的令牌要读取的数据更少。通常会对模型进行简短的“升级训练”,以将现有的多头检查点转换为 GQA 检查点。

战略影响

速度与规模

语言工作流程可以在不牺牲一致性的情况下更快地移动。

交通与覆盖范围

它扩展了跨语言和沟通方式的访问。

更清晰的判决

团队可以花更多时间进行判断,而自动化则可以处理重复。

分组查询注意力的未来

GQA 现在是开放重量模型中的标准默认设置,因为它干净利落地以微小的质量成本换取了巨大的服务胜利。预计它会越来越多地与其他效率技巧相结合,例如 FlashAttention、KV 缓存量化,以及新方案(例如进一步压缩缓存的多头潜在注意)。随着上下文窗口的增长,控制 KV 缓存大小仍将是一个核心设计问题,而 GQA 式的头共享仍将是一个关键杠杆。

现实世界的实施

Llama 2 70B 和 Llama 3 使用 GQA 提供具有较小 KV 缓存的长上下文

减少 GPU 内存,以便大型聊天模型适合更少或更便宜的加速器

加速生产 API 中逐个令牌的生成,其中 KV 缓存带宽是瓶颈

启用更大的批量大小,同时为许多用户提供服务,而不会耗尽内存

风险与防护栏

幻觉的事实可以悄悄地进入报告、支持流程或研究成果。

及时的敏感性可能会在类似的请求中产生不一致的结果。

如果访问控制薄弱,敏感文本数据可能会暴露。

实施路线图

1

在推出之前定义输出格式、语气和质量标准。

2

当准确性很重要时,请使用可信来源进行地面响应。

3

为高风险输出保留人工审查检查点。

4

跟踪故障模式并定期重新训练提示或工作流程。

不断探索

Free newsletter

Get the daily AI briefing

Three verified AI stories every weekday morning, written in plain English. Free forever, no ads.

One email each weekday. Unsubscribe in one click. We never sell or share your address.

Test yourself

Take the Grouped-Query Attention quiz

Instant feedback on every answer, and a shareable certificate with a verifiable ID once you pass a course.

开始测验

Support free AI education. AI Understanding is a 501(c)(3) nonprofit — no ads, no paywall, ever. Make a donation

下一个指南

多查询注意力

常见问题

What is Grouped-Query Attention?

分组查询注意力(GQA)是一种通过让多个查询头共享相同的键和值头来缩小文本生成过程中所需内存的方法。它使大型模型的服务速度更快,几乎没有质量损失。

在分组查询注意力中,一组查询头之间共享什么?

GQA 保留单独的查询头,但让每一组共享一组键和值头,从而缩小 KV 缓存。

GQA 最好被描述为哪两个极端之间的中间立场?

多头赋予每个头自己的 KV;多查询所有头共享一个KV; GQA 与一些 KV 组介于两者之间。

GQA 主要使推理的哪一部分变得更便宜?

节省的时间体现在生成时,其中读取 KV 缓存是主要的内存带宽成本。

如果一个模型有32个查询头和8个KV组,KV缓存大约减少多少倍?

32 个查询头除以 8 个共享 KV 组,缓存的键和值大约减少四倍。

为什么尽管共享 KV 头,GQA 仍能保留大部分模型质量?

注意力对共享键和值的容忍度远远好于对丢失不同查询方向的容忍度,因此 GQA 保持了高质量。