Abstract&Introduction&Related Work
- 研究任务
注意力机制 - 已有方法和相关工作
multi-head,multi-query - 面临挑战
效果与效率的折中平衡 - 创新思路
- 提出了一种使用原始预训练计算量的5%来训练现有的多头语言模型检查点转换为具有MQA的模型的方法
- 引入了分组查询注意力(Grouped-query attention, GQA),它是多查询注意力的泛化形式,使用了一个中间(大于一个,小于查询头的数量)数量的键-值头。我们展示了经过训练的GQA可以在与MQA相当的速度下实现接近多头注意力的质量
- 实验结论
GQA
将多头注意力转化为多查询checkpoint的过程:
分组查询注意力将查询头划分为G个组,每个组共享一个键头和值头。GQA-G表示具有G个组的分组查询。GQA-1表示单个组,因此只有一个键头和值头,等效于MQA;而GQA-H表示组数等于头数,等效于MHA。图2展示了分组查询注意力和多头/多查询注意力的比较。将多头检查点转换为GQA检查点时,我们通过对该组中的所有原始头进行均值汇聚来构建每个组的键头和值头。适中数量的组导致插值模型的质量高于MQA,但比MHA更快,正如我们将展示的那样,这代表了一个有利的权衡。从MHA转换到MQA将H个键头和值头减少为单个键头和值头,减小了键值缓存的大小,因此需要加载的数据量减少了H倍。然而,更大的模型通常会按比例增加头的数量,使得多查询注意力在内存带宽和容量上都表现出更激进的削减。GQA使我们能够随着模型尺寸的增加保持带宽和容量的同等比例减少。此外,较大的模型受到注意力的内存带宽开销相对较小,因为键值缓存随着模型维度的增加而增加,而模型的FLOPs和参数随模型维度的平方增加
针对大型模型的标准分片将单个键头和值头复制了模型分区的次数(Pope等,2022)
用了共享查询(也就是权重共享)和分块的思想
Experiments
Conclusions
语言模型在推理过程中主要由于加载键和值所带来的内存带宽开销而昂贵。多查询注意力通过降低这种开销来减少模型容量和质量。我们提出将多头注意力模型转换为多查询模型,只需进行少量的原始预训练计算。此外,我们引入分组查询注意力,它是多查询注意力和多头注意力的插值,既能够在与多查询注意力相当的速度下实现接近多头注意力的质量
Remark
紧跟时事了,水一篇,用共享权重和分块思想优化模型的计算量,已经被各大模型用作基操,好