克罗内克积注意力(KPA):用紧凑因子的克罗内克积表示键和值,KV 缓存最高压缩 10 倍,且不需要单独的旋转位置编码分支
这篇论文提出 KPA,把注意力的键和值写成若干个“与词元相关的紧凑矩阵因子”的克罗内克积之和,严格推广了张量积注意力(TPA):TPA 的秩一向量外积正是它的退化情形。作者还给出一个与克罗内克表示匹配的旋转位置编码算子,只旋转紧凑因子,从而无需 MLA 那样的解耦 RoPE 分支。在 4 个规模(约 1.25 亿到 15 亿参数)和 9 个下游基准上,KPA 与 TPA、MHA、MQA、GQA、MLA 相当或更好,KV 缓存压缩 6.4 倍到 10 倍。所有模型都是作者从头训练的小模型。
大模型推理时,一个越来越突出的瓶颈是 KV 缓存:为了避免重复计算,模型把每一层、每个词元的键和值都存起来,这份缓存随序列长度、批大小和层数线性增长。当上下文达到几十万词元、批量变大以追求吞吐时,KV 缓存会占去大部分显存,留给模型权重和激活的余地很小,直接限制了你能承受的上下文长度、批量和部署规模。已有的办法各有取舍:多查询注意力(MQA)和分组查询注意力(GQA)让多个头共享键值,代价是表达多样性;多头潜在注意力(MLA)缓存压缩后的潜在表示,但需要额外的解耦位置编码机制;张量积注意力(TPA)用低秩的向量外积分解,可能受限于过于严格的低秩结构。论文 2610.12657 提出的克罗内克积注意力(KPA)就是在这个背景下出现的。
KPA 的核心想法是:不缓存完整的键和值矩阵,而是把每个词元的键和值写成若干个紧凑的、依赖于该词元的矩阵因子的克罗内克积之和。克罗内克积把两个小矩阵组合成一个大矩阵,所以它能同时在“头”这一级和“头内特征”这一级上施加结构,而 TPA 用的向量外积只能处理其中一级。论文指出,经验研究表明不同的注意力头会分化出句法、语义和位置等不同的功能,因此一个好的 KV 分解最好同时在两个层面上工作。论文证明,TPA 的秩一向量外积分解是 KPA 在某种“退化的克罗内克划分”下的特例,所以 KPA 严格地推广了 TPA;而非退化的矩阵因子可以表示更丰富的分块结构。解码时只缓存因子,压缩比取决于头维度如何划分:因子越不对称,压缩越强。这个“克罗内克头划分”是一个可以在设计阶段调节的超参数,让使用者在压缩和精度之间取舍,而不必改动架构的其他部分。
位置编码是另一个关键。RoPE 要作用在完整的键上,而 KPA 只缓存因子,所以必须回答“旋转放在哪里”。MLA 的做法是另设一条解耦的 RoPE 支路。论文给出了一个与克罗内克表示匹配的结构化旋转算子,既保持 RoPE 的相对位置性质,又只旋转紧凑因子,因此不再需要那条解耦支路。论文称,在这一点上 KPA 在不用解耦支路的情况下依然超过了 MLA。 实验方面,作者训练了约 1.25 亿、3.53 亿、7.73 亿和 15 亿参数四个规模的 Llama 风格模型,带 SwiGLU 和 RoPE,建立在 nanoGPT 之上,在 FineWeb-Edu 上训练约 500 亿词元,设置为键和值的秩 RK=RV=2、查询的秩 RQ=6,用 lm-evaluation-harness 评测九个零样本基准:ARC-Easy、ARC-Challenge、BoolQ、HellaSwag、OpenbookQA、PIQA、WinoGrande、MMLU 和 SciQ。论文称,在相同训练条件下,KPA 与 TPA、MHA、MQA、GQA 和 MLA 相当或更好,同时实现最高 10 倍的 KV 缓存压缩。具体而言,在一个规模上 KPA 以 6.4 倍的压缩比取得最好的平均成绩,压缩比与 TPA 相同,准确率高出 1.49 个百分点,增益最大的是 ARC-Easy;另一种配置达到 8 倍压缩;在约 6.7 倍压缩时超过其他基线,在 ARC-Easy、BoolQ 和 SciQ 上优势明显;在 15 亿规模上,KPA 在九项中的八项领先;在 1.25 亿规模上所有 KPA 配置都优于 TPA 的 46.21%。不对称的划分(头一级的因子更大)优于对称划分和 TPA。
怎样看这篇论文?它的优点是思路清楚、证明了严格的推广关系,并回答了“压缩和旋转位置编码如何共存”这个实际问题,压缩比也是可调的。需要保留的地方同样明确。第一,所有模型都是作者在较小规模上从头训练的,最大到 15 亿参数、约 500 亿词元,并未用于现成的大模型。第二,评测集中在零样本精度上;论文自己在结尾说,开发高效的分解解码内核和在更长上下文上评测 KPA,是自然的下一步,这等于承认真实的解码速度、延迟和长上下文表现还没有数据。第三,这些结果由作者自己报告,我们没有看到独立复现。如果你关心的是 KV 缓存成本,可以把它看作一个值得跟踪的方案,等到有了内核实现和长上下文结果,再评估能否替代 GQA 或 MLA。 补充一点读法:论文中的“压缩倍数”是相对于标准多头注意力完整缓存的比例,不同配置的倍数不同,6.4 倍、8 倍和 10 倍对应的是不同的头划分,精度也随之变化。所以在比较时,不要只看“最高 10 倍”这个数字,而要看相同压缩比下与 TPA、MLA 的平均准确率差距,以及不对称划分带来的收益。这也是论文把头划分当作可调超参数的原因:它给出的是一条取舍曲线,而不是单一的最优点。
Sources
FAQ
KPA 是怎么压缩 KV 缓存的?
常规多头注意力要为每个词元缓存完整的键和值。KPA 不缓存整个矩阵,而是把每个词元的键和值表示为若干个紧凑矩阵因子的克罗内克积之和,因子由当前词元的隐藏状态计算,解码时只缓存这些因子。克罗内克积把头维度和头内特征维度同时结构化,所以能比只做向量外积的 TPA 表达更丰富的分块结构。论文证明,TPA 对应的秩一向量外积是 KPA 的退化情形,因此 KPA 严格更一般。
位置编码怎么处理?
MLA 为了在压缩的潜在表示上使用旋转位置编码,需要一条单独的“解耦 RoPE”支路。KPA 给出一个与克罗内克表示相匹配的结构化旋转算子,它保持 RoPE 的相对位置性质,却只旋转紧凑因子,所以不需要额外的解耦分支。论文称,在这一点上 KPA 在不依赖该分支的情况下仍然超过了 MLA。
实验结果如何,有什么保留?
作者在 FineWeb-Edu 上用约 500 亿词元,从头训练约 1.25 亿、3.53 亿、7.73 亿和 15 亿参数的 Llama 风格模型,并在 ARC、BoolQ、HellaSwag、PIQA、MMLU 等九个零样本基准上比较。论文称 KPA 在相同训练条件下与基线相当或更好,压缩 6.4 倍时平均比 TPA 高 1.49 个百分点,最高压缩 10 倍;15 亿规模上它在九项里的八项领先。保留意见:全部是小模型、从头训练;论文自己把“高效的分解解码内核”和“更长上下文评测”列为下一步,所以真实的解码速度和长上下文表现尚未验证。