推理阶段解码空间换时间
缓存前面的KV,只计算当前解码的token的注意力
KV Cache占用的内存会随着长度的增加而线性增长,并且也会带来访存效率上的压力
优化方案
多头共享相同的K和V,降低KV Cache占用的内存,并且计算量更小
另外保持与传统多头注意力相似的性能
MQA直接只用一对KV,精度损失,可以分组,每组一对KV
当分组=头数,相当于MHA
当分组=1,相当于MQA
减小推理时的KV Cache
下采样一个 $c_t^{KV}$(多个head共享同一个潜在空间),经过上采样分别得到KV(上采样到不同的head),所以缓存的时候只需要缓存这个潜在空间向量 $c_t^{KV}$