@VukRosic99: 大多数KV缓存压缩仅对键进行SVD,或者联合嵌入查询和键。两者都忽略了显而易见的目标…
摘要
KQ-SVD是一种新的KV缓存压缩方法,它通过最优低秩分解直接近似注意力矩阵,在LLaMA和Mistral模型上实现了比仅键SVD低5-10倍的误差。
查看缓存全文
缓存时间: 2026/07/11 11:23
大多数 KV 缓存压缩方法仅对键单独进行 SVD 分解,或者将查询和键联合嵌入。两者都忽略了显而易见的目标:注意力是查询和键的乘积,因此应该近似这个乘积。
KQ-SVD (Mila) 直接计算注意力乘积的最优低秩分解,以闭式形式给出——无需训练,仅需一次校准前向传播。论文证明,它比纯键 SVD 严格更准确,不受缩放失败的影响(这一失败会破坏 EigenAttention:将键放大并将查询缩小,它会悄然退化为纯键 SVD),并且在分组查询注意力下仍然保持最优。推理时,你存储两个窄的压缩缓存,而不是全宽的键和查询。
在 LLaMA-2-7B/13B、LLaMA-3-8B 和 Mistral-7B 上,所有方法在单独评估键、查询和值时表现相似——但在决定输出的注意力矩阵本身上,KQ-SVD 的错误率比纯键 SVD 降低了 5-10 倍。
制作了一个简短的可视化分解——每个技巧一张图表。滑动浏览。
论文 - https://arxiv.org/abs/2512.05916
完整摘要 PDF - https://gist.github.com/vukrosic/75bbdf1277a856a17bedf7dd9f94f91c…
每周日我会举办一场动手实践的人工智能研究直播,并提供一对一帮助:https://skool.com/become-ai-researcher-2669/about…
1 引言
来源:https://arxiv.org/html/2512.05916
KQ-SVD: 在注意力保真度下具有可证明保证的 KV 缓存压缩
Damien Lesen
ENS de Lyon DIRO, Université de Montréal Mila DIRO, Université de Montréal Mila - CIFAR AI Chair
摘要
键值(KV)缓存是基于 Transformer 的大语言模型(LLM)效率的核心,它存储先前计算好的向量以加速推理。然而,随着序列长度和批次大小的增长,缓存成为主要的内存瓶颈。先前的压缩方法通常对键单独应用低秩分解,或者尝试联合嵌入查询和键,但这两种方法都忽略了注意力本质上依赖于它们的内积这一事实。在这项工作中,我们证明了这些策略在近似注意力矩阵上是次优的。我们引入了 KQ-SVD,一种简单且计算高效的方法,通过闭式解直接对注意力矩阵进行最优低秩分解。通过针对冗余的真正来源,KQ-SVD 在压缩下能以更高的保真度保留注意力输出。在 LLaMA 和 Mistral 模型上的广泛评估表明,我们的方法始终提供更优的投影质量。
大语言模型(LLM)的兴起 [touvron2023llama, chaplot2023albert, achim2023gpt, guo2025deepseek] 将人工智能的能力扩展到超越早期模型。Transformer [vaswani2017attention] 用自注意力取代了循环,实现了并行性和改进的序列建模,但其二次方的内存和计算成本限制了长序列的可扩展性。
引入键值(KV)缓存是为了通过存储中间注意力 KV 向量来加速自回归生成,避免为每个生成的 token 重复计算共享前缀。尽管 KV 缓存减少了计算开销,但它显著增加了内存消耗,因为缓存大小随序列长度和批次大小线性增长。这种权衡促使了 KV 缓存压缩技术的发展,这些技术对于在各种硬件平台上高效且经济地部署 LLM 至关重要 [fu2024challenges, shi2024keep]。多查询注意力(MQA)[shazeer2019fast] 和分组查询注意力(GQA)[ainslie2023GQA] 等变体通过共享或分组查询向量来减少 KV 缓存大小,同时保持与全多头注意力(MHA)相当的性能。然而,它们可能会引入准确度权衡和硬件敏感性,从而影响性能泛化。其他方法,包括稀疏注意力 [zhang2021sparse] 和线性化注意力 [katharopoulos2020transformers],进一步降低了计算和内存成本,塑造了 KV 缓存优化策略。
另一条有希望的研究路线利用 KV 缓存的低秩结构来减少内存开销。多头潜注意力(MLA)[liu2024deepseek, guo2025deepseek] 将 token 映射到低秩潜在空间,并存储这些压缩表示而不是原始的键和值状态。然而,使用 MLA 需要从头开始训练模型。相比之下,ASVD [yuan2024asvd]、LoRC [zhang2024lorc] 和 Palu
在这项工作中,我们通过引入 KQ-SVD 来解决这些局限性,这是一种高效且以闭式形式实现注意力矩阵最优低秩近似的压缩方法。我们的方法通过查询和键的内积显式捕获它们之间的交互,保留了注意力的基本结构。除了键-查询交互,我们还考虑了值与输出投影之间的相应交互,增强了近似的保真度。通过利用 KV 缓存固有低秩结构 [yu2024effectively, saxena2024eigen],我们将注意力矩阵近似表述为一个有原则的低秩分解问题。我们的理论分析量化了先前纯键 SVD 方法与我们的最优方法之间的误差,并表明同时包含查询和键的方法在键和查询被相同因子重新缩放时可能会退化,实际上表现得像纯键 SVD 方法。我们的贡献可以总结如下:
- • 我们引入了 KQ-SVD,一种捕获键-查询交互的注意力矩阵最优低秩近似。
- • 我们从理论上量化了 KQ-SVD 相对于基于键低秩分解以及查询和键串联 SVD 的方法的优势。
- • 我们表明 KQ-SVD 与分组查询注意力设置兼容,并且在该设置下也是最优的。
- • 我们使用 LLaMA2-7B、LLaMA2-13B、LLama3-8B 和 Mistral-7B 模型在 C4 数据集上进行了广泛的实证评估,证明了 KQ-SVD 相对于现有低秩投影方法的显著优势。
2 相关工作
KV 缓存的低秩结构。
多种方法利用缓存的键值(KV)矩阵的固有低秩结构来减少内存占用。ECKVH [yu2024effectively] 通过将注意力头分组,在每个组内执行奇异值分解(SVD),并仅保留主要奇异分量来压缩缓存。EigenAttention [saxena2024eigen] 通过构建联合近似查询、键和值的低秩基来推广这一思想,从而有效降低 KV 表示的维度。Q-Filters [godeyq] 引入了一种无需训练的变体,通过 SVD 将键投影到低秩子空间,以高效近似注意力分数,且精度损失最小。此外,[yu2024effectively] 研究了 KV 缓存的固有低秩性质,并通过仔细分组和基于 SVD 的分解来压缩 KV 头。相比之下,Loki [singhania2024loki] 采用了两阶段策略:首先在低维空间中估计近似注意力分数,以排序和选择最相关的键,然后仅使用选中的键计算精确的注意力分数,从而减少内存和计算成本。
KV 权重压缩。
另一种替代方法针对的是 KV 权重矩阵本身,而不是缓存的矩阵。LoRC [zhang2024lorc] 直接将低秩近似应用于键和值权重矩阵,实现参数级别的压缩。Palu
KQ-SVD 的定位。
尽管先前的方法在压缩 KV 缓存及其权重矩阵方面取得了显著进展,但它们通常独立处理键和值,或者仅间接近似注意力,使得核心的查询-键交互被低估,导致注意力矩阵的低秩近似次优。KQ-SVD 通过制定一个有原则的、闭式形式的完整注意力矩阵低秩近似来解决这些局限性。
3 预备知识
在本节中,我们介绍我们的符号并给出多头注意力(MHA)的必要背景知识。
3.1 符号
我们用小写粗体字母表示向量(例如,(\mathbf{a}, \mathbf{b})),大写粗体字母表示矩阵(例如,(\mathbf{A}, \mathbf{B}))。(\mathbf{A}^+) 表示 (\mathbf{A}) 的 Moore-Penrose 伪逆。在整篇论文中,矩阵 (\mathbf{S} \in \mathbb{R}^{m \times n}) 的奇异值分解(SVD)表示为 (\mathbf{S} = \mathbf{U} \boldsymbol{\Sigma} \mathbf{V}^\top),其中 (\mathbf{U} \in \mathbb{R}^{m \times n})、(\mathbf{V} \in \mathbb{R}^{n \times n}) 是具有正交列的矩阵,(\boldsymbol{\Sigma} \in \mathbb{R}^{n \times n}) 是一个对角矩阵,其正对角线元素为 ({\sigma_i}_{i=1}^n)。(\mathbf{U}) 和 (\mathbf{V}) 的列分别被称为 (\mathbf{S}) 的左、右奇异向量,(\sigma_i) 是 (\mathbf{S}) 的奇异值,记作 (\sigma_i(\mathbf{S}))。可以通过截断 SVD 仅保留前 (R) 个奇异向量和奇异值来获得 (\mathbf{S}) 在 Frobenius 范数下的最优秩 (R) 近似:(\mathbf{S} \approx \hat{\mathbf{U}} \hat{\boldsymbol{\Sigma}} \hat{\mathbf{V}}^\top),其中 (\hat{\mathbf{U}} \in \mathbb{R}^{m \times R}),(\hat{\mathbf{V}} \in \mathbb{R}^{n \times R}),(\hat{\boldsymbol{\Sigma}} \in \mathbb{R}^{R \times R})。(\mathbf{S}) 的列空间记作 (\mathcal{R}(\mathbf{S}))。
3.2 背景
在 Transformer 架构中,自注意力为 token 分配相对重要性,使模型能够选择性地关注输入序列的不同部分。对于 token 嵌入序列 (\mathbf{X} \in \mathbb{R}^{T \times D}),多头注意力计算如下:
[\mathrm{MHA}(\mathbf{X}) = [\mathbf{H}_1, \dots, \mathbf{H}_h] \mathbf{W}^O,]
其中
[\mathbf{H}_i = \mathrm{Softmax}\left(\frac{\mathbf{Q}_i \mathbf{K}_i^\top}{\sqrt{d}}\right) \mathbf{V}_i,]
并且 (\mathbf{W}_i^Q, \mathbf{W}_i^K, \mathbf{W}_i^V \in \mathbb{R}^{D \times d}),(d = D/h),(\mathbf{Q}_i = \mathbf{X} \mathbf{W}_i^Q),(\mathbf{K}_i = \mathbf{X} \mathbf{W}_i^K),(\mathbf{V}_i = \mathbf{X} \mathbf{W}_i^V),(\mathbf{W}^O \in \mathbb{R}^{D \times D})。在掩码注意力中,注意力矩阵 (\mathbf{Q}_i \mathbf{K}_i^\top) 的上三角元素被设置为 (-\infty),以防止 token 关注未来位置。
该计算与序列长度 (T) 呈二次方关系。在自回归解码中,先前计算的键和值向量被缓存以避免重复计算,从而降低每个 token 的成本。具体来说,在时间 (T),对于每个头,新的键值对被连接到缓存 (\mathbf{K}) 和 (\mathbf{V}) 上,然后进行注意力计算:
[\mathbf{K} \leftarrow \text{Concat}(\mathbf{K}, \mathbf{k}_T), \quad \mathbf{V} \leftarrow \text{Concat}(\mathbf{V}, \mathbf{v}_T),] [\mathbf{h}_T = \text{Softmax}\left(\frac{\mathbf{q}_T \mathbf{K}^\top}{\sqrt{d}}\right) \mathbf{V}]
其中 (\mathbf{k}_T = \mathbf{x}_T \mathbf{W}^K), (\mathbf{v}_T = \mathbf{x}_T \mathbf{W}^V), (\mathbf{q}_T = \mathbf{x}_T \mathbf{W}^Q)。虽然缓存减轻了重复计算,但生成第 (T) 个 token 仍然需要 (\mathcal{O}(T)) 的成本,并且存储的键和值的内存占用随序列长度线性增长。对于足够长的上下文,这个内存需求成为一个主要的瓶颈,因为 KV 缓存的累积大小可能超过模型参数数个数量级。在以下小节中,我们简要回顾 K-SVD 方法 [changpalu, yu2024effectively, zhang2024lorc](该方法使用奇异值分解压缩键表示)以及 Eigen 方法 [saxena2024eigen](该方法通过垂直串联键和查询然后对结果矩阵应用 SVD 来联合考虑键和查询)。
3.3 使用 SVD 进行缓存压缩
最近的研究 [changpalu, zhang2024lorc, chang2025xkv] 表明,奇异值分解(SVD)是压缩大语言模型中 KV 缓存的强大工具,因为缓存展现出低秩结构。令 (\mathbf{K} = \mathbf{U}_K \boldsymbol{\Sigma}_K \mathbf{V}_K^\top \in \mathbb{R}^{T \times d}) 为键矩阵的 SVD,并令 (\widetilde{\mathbf{K}} = \hat{\mathbf{U}}_K \hat{\boldsymbol{\Sigma}}_K \hat{\mathbf{V}}_K^\top) 表示其秩为 (R) 的截断版本。根据 Eckart-Young-Mirsky 定理,(\widetilde{\mathbf{K}}) 是 (\mathbf{K}) 在 Frobenius 范数下最优的秩 (R) 近似。换句话说,优化问题
[\min_{\mathbf{P} \in \mathbb{R}^{d \times d}} |\mathbf{K} \mathbf{P} - \mathbf{K}|_F^2 \quad \text{s.t.} \quad \mathrm{rank}(\mathbf{P}) \leq R,]
的解由 (\mathbf{P} = \hat{\mathbf{V}}_K \hat{\mathbf{V}}_K^\top) 给出,从而得到近似 (\widetilde{\mathbf{K}} = \mathbf{K} \hat{\mathbf{V}}_K \hat{\mathbf{V}}_K^\top = \hat{\mathbf{U}}_K \hat{\boldsymbol{\Sigma}}_K \hat{\mathbf{V}}_K^\top)。对值矩阵 (\mathbf{V} = \mathbf{U}_V \boldsymbol{\Sigma}_V \mathbf{V}_V^\top) 应用相同的过程,我们可以将注意力输出近似为
[\widetilde{\mathbf{H}} = \mathrm{Softmax}(\mathbf{Q} \widetilde{\mathbf{K}}^\top / \sqrt{d}) \widetilde{\mathbf{V}} = \mathrm{Softmax}(\mathbf{Q} \hat{\mathbf{V}}_K \hat{\mathbf{V}}_K^\top \mathbf{K}^\top / \sqrt{d}) \mathbf{V} \hat{\mathbf{V}}_V \hat{\mathbf{V}}_V^\top.]
这种形式特别有用,因为它允许只存储压缩后的缓存 (\mathbf{K} \hat{\mathbf{V}}_K)
相似文章
CompressKV:语义检索引导的KV缓存压缩方法,用于资源高效的长上下文大语言模型推理
CompressKV针对基于GQA的大语言模型,提出了一种语义检索引导的KV缓存压缩方法,通过识别语义检索头来保留关键令牌。在LongBench任务中,仅使用3%的KV缓存即可实现超过97%的全缓存性能。
@Michaelzsguo: KV缓存是模型在生成期间的工作记忆。随着上下文窗口变长,模型必须保留更多…
DeepSeek的KV缓存压缩创新,包括MLA和CSA/HCA,将KV缓存大小减少了93%,实现了高效的长上下文推理和基于SSD的缓存,正如antirez的ds4.c项目所展示的那样。
@anirudhbv_ce: 介绍 SpectralQuant.. 来拯救您的 KV 缓存 :)
SpectralQuant 是一种新的 KV 缓存量化技术,在 Mistral 7B 上实现了 5.95 倍压缩,仅带来 7.5% 的困惑度开销,显著优于 TurboQuant,且每个模型只需 15 秒校准。
PolyKV: 异构保留与分配的KV缓存压缩
PolyKV是一种逐层的KV缓存压缩框架,为每一层分配异构的驱逐策略和非均匀的预算,在LongBench上使用LLaMA-3.1-8B和Qwen3-8B相比统一基线有显著提升。
KV缓存压缩比TurboQuant与逐向量香农极限高出900000倍
一篇新论文提出了一种基于概率语言Trie树和预测差分编码的顺序KV缓存压缩方法。该方法通过利用语言模型Token的序列结构而非对向量进行独立处理,实现了超越TurboQuant约91.4万倍的理论压缩比。