跳转至

KV-Latent: Dimensional-level KV Cache Reduction with Frequency-aware Rotary Positional Embedding

会议: ACL 2025
arXiv: 2507.11273
代码: https://github.com/ShiLuohe/KV-Latent
领域: LLM效率
关键词: KV Cache压缩, 注意力头维度缩减, RoPE频率感知, 知识蒸馏, 推理加速

一句话总结

KV-Latent 通过直接缩减预训练模型中 Key/Value 注意力头的维度(将 KV 向量映射到低维隐空间),配合两阶段微调策略和频率感知的 RoPE 修改,仅用不到 1% 预训练量的额外训练就实现 KV Cache 50-87% 的压缩,同时基本保持模型性能。

研究背景与动机

领域现状:Transformer 解码器架构在推理时需要为每个 token 保留 Key 和 Value 状态(KV Cache),随上下文长度线性增长,成为内存和带宽的首要瓶颈。现有 KV Cache 压缩方法主要在三个层面操作:注意力头级别(MQA/GQA 共享 KV 头)、层级别(跨层复用 KV Cache)、token 级别(驱逐/合并低重要性 token)。

现有痛点:头级别方法(GQA)已被广泛采用但压缩上限有限;层级别方法因跨层复用的非连续性无法优化计算强度;token 级别方法依赖 attention score,与 FlashAttention 等加速方案不兼容,且细粒度控制困难。关键是,直接缩减每个注意力头内部的 Key/Value 向量维度这一方向几乎未被探索。

核心矛盾:在 MHA 中,\(d_h \times n_h = d\) 这个约束被默认为不可打破,但 GQA 等工作已证明 KV Cache 的低秩特性——存储完整 \(d\) 维向量并非必要。问题在于:能否进一步解耦 \(d_{qk}\)\(d_{vo}\),直接在维度层面压缩 KV Cache?

本文目标 (1) 如何从已有预训练模型出发,以极小的额外训练代价缩减注意力头维度;(2) RoPE 在低维向量上严重不稳定(维度 <32 时振荡噪声与衰减信号同量级),如何修复;(3) Key 和 Value 的压缩对性能影响是否对称。

切入角度:作者观察到 \(K\)\(V\) 本质上是将 \(d\) 维隐状态下采样到 \(d_h\) 维的低秩变换,对应的 \(Q^\top\)\(O\) 做上采样。KV Cache 存储的就是这些低秩变换的结果——既然已经是隐空间表示,那就可以进一步压缩这个隐空间。

核心 idea:通过均匀下采样直接裁剪预训练模型的 K/V 投影矩阵维度,再用层内蒸馏+端到端微调两阶段恢复性能,同时用频率感知的 RoPE 采样消除低维下的高频噪声。

方法详解

整体框架

输入一个预训练好的 LLM(如 LLaMA-3-8B),将每层注意力的 \(W_K, W_V\) 矩阵的列维度和 \(W_Q\) 的列维度、\(W_O\) 的行维度同步裁剪(对 QK 从 \(d_h\) 缩至 \(d_{qk}\),对 VO 从 \(d_h\) 缩至 \(d_{vo}\)),然后通过两阶段训练恢复性能。推理时 KV Cache 大小直接按维度比例缩减。

关键设计

  1. 均匀下采样初始化(Model Preparation):

    • 功能:从预训练模型的权重中提取缩减后的初始权重
    • 核心思路:因为 RoPE 的存在,注意力头内通道具有旋转对称性,直接对通道做均匀采样(步长为缩减比例)即可保留信息。例如将 \(d_{qk}\) 缩减为 1/4 时,\(\tilde{W_Q^{(i)}} = W_Q^{(i)}[:, ::4]\)。FFN 层则通过 LoRA 适配(rank=256),而非全量调整
    • 设计动机:SVD 分解虽然理论上更优,但 RoPE 引入的旋转与矩阵乘法不满足交换律,使得 SVD 难以直接应用。均匀采样简单有效,且与 RoPE 的 channel-pair 旋转结构天然兼容
  2. 两阶段训练策略(Two-Stage Training):

    • 功能:分两个阶段用少量数据(仅 1B token,来自 FineWeb-edu)恢复裁剪后的模型性能
    • 核心思路:Stage I(层内蒸馏)——冻结原始模型,逐层对齐:取原模型每层输入 \(H_i^{(l)}\),分别通过原始层和修改后的层得到 \(H_t^{(l)}\)\(H_p^{(l)}\),用 MSE loss 最小化两者差距 \(\frac{1}{L}\sum_{l=1}^{L}\frac{||H_t^{(l)} - H_p^{(l)}||_2}{x \cdot h}\)Stage II(端到端训练)——用 NTP(交叉熵)或蒸馏(KL 散度)做全模型端到端训练,修复层间误差放大
    • 设计动机:Stage I 确保每层独立时输出尽量不变,但深层 LLM 中微小扰动会逐层放大,所以 Stage II 端到端训练必不可少。两阶段结合比直接端到端训练收敛更快、效果更好
  3. 频率感知 RoPE(Frequency-aware RoPE):

    • 功能:修改 RoPE 在低维 Q/K 上的频率采样策略,消除高频噪声
    • 核心思路:原始 RoPE 的频率 \(\theta_j = \theta^{-(j-1)/\delta}\) 在低维时,低编号通道(高频旋转)的振荡周期短于采样间隔,导致数值逼近失效。修改后的采样公式跳过最高频部分并加密低频采样:\(\theta_j = \theta^{-2(j-1+d/8)/d}\) (前半通道) 和 \(\theta_j = \theta^{-(j-1+3d/4)/d}\) (后半通道),使得即使维度降至 16 也能保持平滑衰减
    • 设计动机:作者从 \(\text{RoPE}_{\theta,d}(x) = \mathbb{1}_d \cdot \mathcal{R}_{\theta,d/2}(x) \cdot \mathbb{1}_d^\top\) 的稳定性分析出发,发现当 \(d < 32\) 时自相关函数出现大量负值(意味着远距离相同向量的注意力甚至低于随机向量),根因是高频分量 \(\cos(\theta^p)\)\(p\) 较大时剧烈振荡,而低维下采样点不足以正确逼近积分

损失函数 / 训练策略

  • Stage I: MSE loss(层内隐状态对齐)
  • Stage II: 两种选择——NTP 用交叉熵 loss(资源少);蒸馏用 KL 散度 loss(信息量更大但需额外 forward pass)
  • 实验发现 NTP 训练在有限数据量下反而优于蒸馏,因为蒸馏需要更多数据才能充分发挥优势
  • FFN 使用 LoRA(Up/Down/Gate),rank 对 PPL 影响很小(16→256 仅差 0.04)

实验关键数据

主实验

模型 \(d_{qk}\) \(d_{vo}\) 方法 MMLU OBQA ARC Avg KV Cache↓ TTFT↓
LLaMA3-8B 128 128 Base 35.3 35.5 55.5 42.1 - -
LLaMA3-8B 64 64 Train 35.0 35.1 53.8 41.3 ↓50% ↓8%
LLaMA3-8B 64 64 Distill 31.0 29.1 39.1 33.1 ↓50% ↓8%
LLaMA3-8B 16 16 Train 31.0 29.5 38.5 33.0 ↓87% ↓13%
LLaMA2-7B 128 128 Base 28.9 29.4 30.7 29.7 - -
LLaMA2-7B 64 64 Train 28.1 29.3 27.5 28.3 ↓50% ↓17%

消融实验(不同 \(d_{qk}\)\(d_{vo}\) 组合)

\(d_{qk}\) \(d_{vo}\) LogPPL KV Cache(MB) 最大上下文(60GB)
128 128 baseline 256 0.40M token
64 128 2.47 172 0.61M token
128 64 2.80 172 0.61M token
64 64 2.74 128 0.81M token
16 16 3.78 32 3.27M token

关键发现

  • \(d_{vo}\)\(d_{qk}\) 更重要:同样压缩到 172MB,保留大 \(d_{vo}\)(PPL=2.47)远优于保留大 \(d_{qk}\)(PPL=2.80),说明 Value 携带的信息比 Key 更不可压缩
  • NTP 训练优于蒸馏:在仅 1B token 训练数据下,NTP 方式(Avg=41.3) 大幅优于蒸馏(Avg=33.1),蒸馏需要更多数据才能发挥优势
  • GQA 模型更难压缩:已经使用 GQA 的 LLaMA3 比 MHA 的 LLaMA2 在同等压缩下性能下降更明显,因为 GQA 本身已经做了头级别压缩
  • 与 token 级方法正交:KV-Latent + PyramidInfer(50%压缩) 可叠加使用,PPL 仅从 2.509 升至 2.499,KV Cache 再降 50%
  • LoRA rank 不敏感:rank 从 16 到 256,LogPPL 变化仅 0.04

亮点与洞察

  • 维度级压缩是 KV Cache 压缩的新范式:与 head 级别(GQA)、layer 级别(CLA)、token 级别(eviction)完全正交,可以叠加使用,这打开了一个新的压缩维度
  • 频率感知 RoPE 的理论分析很优雅:将 RoPE 稳定性问题转化为数值积分逼近问题——\(\cos(\theta^p)\) 在大 \(p\) 区域剧烈振荡,低维采样点不足,所以跳过高频、加密低频。这个 insight 可能对所有需要在低维使用 RoPE 的场景都有价值
  • Key vs Value 信息量不对称的发现对模型架构设计有启发:未来可以给 Value 分配更多维度、给 Key 更激进地压缩

局限与展望

  • 仅在 7B/8B 规模验证,更大模型(70B+)上的效果未知
  • 仅用 1B token 训练,更多数据下蒸馏是否反超 NTP 训练值得探索
  • 与 CLA(跨层复用)的对比缺失,因为 CLA 需要从头预训练
  • 未涉及 SFT/RLHF 阶段的影响验证
  • \(d_{qk}=d_{vo}=16\) 时性能显著下降(NIH 仅 6%),存在压缩下限
  • SVD 初始化因 RoPE 的非交换性无法使用,但可能存在变通方案

相关工作与启发

  • vs GQA/MQA: GQA 在头数量维度共享 KV,KV-Latent 在每个头的内部维度压缩——两者完全正交,可叠加
  • vs DeepSeek-V2 (MLA): MLA 将 KV 压缩到联合隐空间再解码,思路类似但需要从头预训练;KV-Latent 的优势是可从已有模型出发,仅需极少额外训练
  • vs Token-level methods (H2O, PyramidInfer): 这些方法动态丢弃 token 的 KV 状态,KV-Latent 压缩每个 token 存储的维度——两者正交,实验证明可叠加

评分

  • 新颖性: ⭐⭐⭐⭐ 维度级 KV Cache 压缩方向较新,但整体思路(低秩+蒸馏恢复)并不意外
  • 实验充分度: ⭐⭐⭐⭐ 消融全面(QK/VO 独立分析、LoRA rank、跨方法兼容),但模型规模偏小
  • 写作质量: ⭐⭐⭐⭐ RoPE 的频率分析部分理论推导清晰,整体结构工整
  • 价值: ⭐⭐⭐⭐ 提供了 KV Cache 压缩的新维度,与现有方法正交,实用性强