概述
最初的 GQA 论文将其研究为解码器推理的多头注意力和多查询注意力之间的权衡。
深入探讨
GQA 论文提出对查询头进行分组,以便多个查询头共享键/值头。 MHA 每个查询头有一个键/值头; MQA 在所有查询中共享一个键/值头; GQA 介于两者之间。该论文在语言建模和机器翻译任务上评估了 GQA,并在实验中报告了接近 MHA 的质量和接近 MQA 的推理速度。它还报告使用约 5% 的原始预训练计算来上训练现有 MHA 模型。这些主张仅限于论文的模型、任务和设置。
现实世界的实施
比较 MHA、GQA 和 MQA 头部共享。
根据查询头和键/值组的数量估计 KV 缓存大小。
阅读论文报告的评估语言模型任务的质量/速度权衡。
回顾论文中将 MHA 检查点转换为 GQA 的上行训练方法。
分组查询注意力的未来
针对目标模型和硬件对磁头共享选择进行基准测试。原始论文的质量/速度结果并未在所有系统中建立普遍的服务加速或可忽略的质量损失。
付诸实践
为什么这很重要
- 速度与规模. 语言工作流程可以在不牺牲一致性的情况下更快地移动。
- 交通与覆盖范围. 它扩展了跨语言和沟通方式的访问。
- 更清晰的判决. 团队可以花更多时间进行判断,而自动化则可以处理重复。
留意
- 幻觉的事实可以悄悄地进入报告、支持流程或研究成果。
- 及时的敏感性可能会在类似的请求中产生不一致的结果。
- 如果访问控制薄弱,敏感文本数据可能会暴露。
后续步骤
- 在推出之前定义输出格式、语气和质量标准。
- 当准确性很重要时,请使用可信来源进行地面响应。
- 为高风险输出保留人工审查检查点。
- 跟踪故障模式并定期重新训练提示或工作流程。
不断探索
常见问题
什么是分组查询注意力?
分组查询注意力(GQA)在查询头组之间共享键/值头。最初的 GQA 论文将其研究为解码器推理的多头注意力和多查询注意力之间的权衡。
在分组查询注意力中,一组查询头之间共享什么?
GQA 保留单独的查询头,但让每一组共享一组键和值头,从而缩小 KV 缓存。
GQA 最好被描述为哪两个极端之间的中间立场?
多头赋予每个头自己的 KV;多查询所有头共享一个KV; GQA 与一些 KV 组介于两者之间。
GQA 主要使推理的哪一部分变得更便宜?
节省的时间体现在生成时,其中读取 KV 缓存是主要的内存带宽成本。
如果一个模型有32个查询头和8个KV组,KV缓存大约减少多少倍?
32 个查询头除以 8 个共享 KV 组,缓存的键和值大约减少四倍。
GQA 论文在其实验中报告了哪些质量/速度权衡?
GQA 论文报告其评估任务的质量更接近多头注意力 (MHA),推理速度更接近多查询注意力 (MQA)。这是一个经验结果,而不是普遍保证。