GQA是KV缓存内存问题的实用解决方案。标准多头注意力需要每层64组K和V张量在缓存中。具有8个KV头的GQA将其减少到8组——内存减少了8倍。这直接转化为在相同硬件上服务更多并发用户或处理更长的上下文。
频谱:多头注意力(MHA)有相等数量的Q、K、V头——最高质量,最大内存。多查询注意力(MQA)有多个Q头但只有一个K和一个V头——最小内存,有一定质量损失。GQA是折中方案:将Q头分组,每组共享一个K和一个V头。一个有32个Q头和8个KV组的模型,每个KV头服务4个Q头。
研究表明,具有8个KV头的GQA在大多数任务上匹配MHA的质量,同时使用4–8倍少的KV缓存内存。质量的保持令人惊讶:这表明许多注意力头正在学习类似的键值模式,因此共享它们是高效的而非限制性的。通过"上训练"(短暂的微调阶段)将现有MHA模型转换为GQA也是有效的,避免了从头重新训练的需要。
GQA带来的KV缓存内存节省直接转化为:相同GPU上更长的上下文窗口、更多并发请求(更高吞吐量)和更快的注意力计算(需要读取的K和V张量更少)。对于128K上下文的70B模型,MHA和GQA之间的差异可以达到数百GB的KV缓存——这是需要8块GPU和只需要4块GPU的差别。