IntentKV: 面向Agent推理的跨轮次意图感知KV缓存剪枝

arXiv cs.LG 论文

摘要

IntentKV提出了一种针对多轮LLM Agent的跨轮次意图感知KV缓存剪枝方法,通过维护会话级别的查询记忆来高效剪枝缓存,且不损失精度,显著减少了token使用量和KV读取次数。

arXiv:2606.09916v1 公告类型:新 摘要:多轮LLM Agent将短查询扩展为包含工具调用、搜索结果和中间推理的长轨迹。KV内存和KV读取带宽在单个轨迹中增长数个数量级,使得键值(KV)缓存(而非参数计算)成为长期Agent的主要服务瓶颈。我们提出了IntentKV,一种保持基础LLM冻结的学习型KV剪枝方法。IntentKV维护跨轮次意图的会话级QueryMemory,通过记忆注意力规则对活跃的历史token进行评分,并添加一个零初始化的残差头,对当前查询的K向量进行交叉注意力。为了与前缀缓存兼容,逐出采用槽位映射重定向:被丢弃的位置路由到一个哨兵死槽,而存活的K/V行、RoPE相位和槽位标识保持不变。在严格的KV预算下,IntentKV与无剪枝的全缓存基线相比几乎没有精度损失:在8k KV预算下,Qwen3-8B的平均峰值请求token降低23.9%,Qwen2.5-14B降低30.7%。在Qwen2.5-14B上所有方法都能完成的100个最长BCP查询中,IntentKV-8k进一步将最坏情况下的峰值请求token从92.3k降至20.5k,减少77.8%;最坏情况下的原始KV读取次数从411M降至31M,减少92.6%。
查看原文
查看缓存全文

缓存时间: 2026/06/10 06:18

# 面向多轮推理智能体的跨轮次意图感知 KV 缓存剪枝 来源: https://arxiv.org/html/2606.09916

###### 摘要

多轮 LLM 智能体将简短查询扩展为工具调用、搜索结果和中间推理的长轨迹。在单条轨迹中,KV 内存和 KV 读取带宽都增长数个数量级,使得键值(KV)缓存(而非参数计算)成为长视野智能体服务的主要瓶颈。我们提出 IntentKV,一种保持基础 LLM 冻结的、学习式的 KV 剪枝方法。IntentKV 维护一个会话级别的跨轮次意图查询记忆(QueryMemory),通过记忆-注意力规则对实时历史令牌进行评分,并添加一个零初始化的残差头部,该头部通过交叉注意力关注当前查询的 K 向量。为了保持与前缀缓存的兼容性,逐出操作通过槽位映射重定向实现:被丢弃的位置被路由到一个哨兵“死槽”,而幸存的 K/V 行、RoPE 相位和槽位标识保持不变。在严格的 KV 预算下,IntentKV 几乎无精度损失地匹配了无剪枝的全缓存基线:在 8k KV 预算下,Qwen3-8B 的平均峰值请求令牌数减少 23.9%,Qwen2.5-14B 减少 30.7%。在 Qwen2.5-14B 上所有方法都完成的 100 个最长 BCP 查询中,IntentKV-8k 进一步将最坏情况下的峰值请求令牌数从 92.3k 降至 20.5k(下降 77.8%),并将最坏情况下的原始 KV 读取量从 411M 降至 31M(下降 92.6%)。

---

IntentKV: 面向多轮推理智能体的跨轮次意图感知 KV 缓存剪枝

何俊杰 李炯 李洁
上海交通大学

## 1 引言

图 1: 在提示词局部进行的 KV 剪枝在多轮智能体中会变得过时。
(a) 单次压缩器根据一次查询对整个历史进行评分;智能体会话在多个轮次中积累新的意图。
(b) 提示词局部评分与 IntentKV 的会话感知保留之间的信号不匹配。

现代 LLM 智能体越来越多地执行多轮浏览、深度研究和工具使用工作流(Yao et al., 2022)。在这些场景中,一个简短的用户请求往往会扩展成一个包含检索文档、工具输出、中间决策和生成论据的长轨迹。这产生了一种不对称的服务特征:尽管原始用户查询可能只有几十个令牌,但智能体状态可能增长到数万个提示令牌,并且每个生成的令牌必须关注所有之前每一层令牌的 KV 张量。因此,KV 内存容量和 KV 读取带宽(而非仅仅是参数计算)成为服务长运行智能体会话的主要瓶颈(Li et al., 2024a; Zheng et al., 2024)。一个自然的应对方案是应用现有的 KV 缓存剪枝方法,但大多数方法是为单提示词压缩而非多轮智能体服务设计的。

StreamingLLM(Xiao et al., 2024)保留注意力吸收点和近期窗口;SnapKV(Li et al., 2024b)通过提示词局部尾注意力估计令牌重要性;H2O(Zhang et al., 2023)保留“重击者”。这些方法根据单个提示词内可用的信号来决定保留哪些过去的令牌,并且它们通常将保留的 KV 行具体化为一个压缩后的请求局部缓存。当这些方法应用于多轮智能体服务时,单提示词压缩的两个假设变得有问题。

第一,令牌重要性在轮次之间会发生变化:后来的查询、检索到的证据和中间决策可能使早期历史再次变得有用,因此从单个提示词中计算出的排名会变得过时,可能会丢弃未来有用的证据。第二,剪枝后的状态必须保持可重用性:智能体会话会反复提交具有长共享前缀的历史记录,像 SGLang(Zheng et al., 2024)和 vLLM(Kwon et al., 2023)这样的系统通过基数树或前缀缓存来利用这一点。移动幸存的 KV 行可能服务于当前请求,但这改变了缓存标识,后续轮次原本可以重用它。

图 1 展示了两种失败模式:提示词局部评分可能丢弃未来有用的证据,而基于重定位的剪枝会丢失跨轮次所需的前缀标识。这两个约束表明需要将剪枝保留的内容与剪枝后状态的表现方式分开。保留策略应该跟踪会话中不断变化的信息需求,而不是仅针对单个提示词对历史进行评分。布局策略应该在不移动幸存 K/V 行的情况下逐出令牌,保留它们的逻辑位置和缓存标识以供后续轮次使用。我们通过在 IntentKV 中实现这种分离:一个会话感知的启发式方法提供主要的保留信号,一个小型学习式残差处理规则遗漏的情况,而一个保持布局的逐出方法使剪枝与前缀缓存重用兼容。

在保留方面,IntentKV 维护一个 QueryMemory,用于在会话中聚合类似查询的信号,并根据这个不断变化的状态对实时历史令牌进行评分。一个小型的零初始化残差头部,从冻结模型特征中训练,学习规则评分器遗漏情况的修正,同时在初始化时恢复规则分数。在布局方面,IntentKV 无需压缩即可逐出。被丢弃的位置被重定向到一个哨兵“死槽”,而幸存的 K/V 行、RoPE 相位和逻辑槽位标识保持不变。因此,智能体会话可以将 KV 剪枝与跨轮次前缀重用结合起来,而不是两者选其一。

#### 贡献。
- • 我们将智能体 KV 剪枝形式化为“多查询保留”,并通过 QueryMemory 实例化它,QueryMemory 是一个每会话状态,用于跨轮次聚合查询、工具调用、搜索意图和操作范围。
- • 一个学习式残差剪枝器将会话感知的启发式方法作为主要信号,并添加基于未来动作的冻结特征修正,不更新基础 LLM。
- • 一个针对分页 KV 缓存(SGLang/vLLM)的逐出方法,该方法将被丢弃的位置重定向到哨兵槽,而不是移动幸存者,从而使剪枝与基数前缀重用兼容,无需修改现有的注意力内核:在 8k 预算下前缀命中率为 20.7%,而压缩基线降至 0–3%。
- • 在 C=8k 的 BCP 上,IntentKV-Phase-2 与全缓存真正准确率在 Qwen3-8B 上相差 0.96 点,并在 Qwen2.5-14B 上超过最强启发式方法 10.36 点;在 100 个最长查询上,它将最坏情况下的峰值请求令牌数削减 77.8%–81.7%,最坏情况下的原始 KV 读取量削减 36.9%–92.6%(表 3)。

## 2 相关工作

#### 从提示词局部评分到跨轮次意图。
大多数 KV 逐出方法根据单个用户提示词对令牌进行评分(Xiao et al., 2024; Liu et al., 2023; Zhang et al., 2023; Li et al., 2024b; Zhou et al., 2024; Ahn et al., 2026),并通过每层预算、查询感知的解码时稀疏性和未来查询预评分(Ge et al., 2024; Cai et al., 2024; Tang et al., 2024; Devoto et al., 2025)进行了正交改进。所有这些方法都假设预填充阶段只有一个请求可用。多轮智能体打破了这一点:后续轮次在工具输出和中间计划中浮现出新的查询信号,这些信号是一次性评分器无法预期的。IntentKV 则将剪枝形式化为多查询保留,针对一个会话级别的 QueryMemory 对历史进行评分,该内存会在这些信号到达时吸收它们。

KV 量化(Liu et al., 2024; Kang et al., 2024)减少的是每令牌精度而非令牌数量,并且与 IntentKV 正交。

#### 不改变基础模型进行语义剪枝。
第二条路线是在冻结模型特征上学习令牌重要性策略(Ahn et al., 2026; Zhou et al., 2024),但纯粹学习到的分数在查询信号弱或偏移时可能脆弱。TRIM-KV(Bui et al., 2025)是最接近的同行:它训练一个小型预测器,并通过“位置时间衰减”先验来偏置保留,非常适合相关上下文在时间上局部的思维链轨迹。智能体循环则反转了这种机制——有用的令牌通常是最古老的(初始请求、早期检索页面、第一个工具结果),而最新的解码令牌只是脚手架——因此时间衰减先验是针对不同工作负载调整的。IntentKV 训练一个可比较的头部,但将其条件建立在 QueryMemory 上,并根据哪些位置在后续轮次中被重新关注进行监督,从而产生一个锚定于演变意图的“查询衰减”策略。

SideQuest(Kariyappa and Suh, 2026)和 Activation Beacon(Zhang et al., 2025)修改了基础模型(分别是删除命令和学习到的摘要令牌),因此它们是互补而非替代性的;IntentKV 保持基础 LLM 冻结,仅添加一个零初始化的残差头部。

#### 可组合的服务层和编排层系统。
高效的智能体服务通过分页分配和前缀/基数树缓存(在连续请求共享前缀时)重用的 KV 状态(Kwon et al., 2023; Zheng et al., 2024),Continuum(Li et al., 2025)通过 KV 生存时间调度将其扩展到多轮智能体。传统的压缩会移动幸存令牌的物理槽位和 RoPE 相位,并使这些系统本可重用的前缀标识失效;IntentKV 保持幸存 K/V 行在位,并将被丢弃的逻辑位置重定向到哨兵槽,从而使请求局部压缩与基数树前缀重用兼容。在更高层,MemGPT(Packer et al., 2023)和 A-MEM(Xu et al., 2026)通过类操作系统交换和长期图记忆来管理智能体状态,在编排层决定记住什么;IntentKV 在缓存内部操作,保持基础 LLM 和智能体循环不变,因此与这些记忆组成而非竞争。

## 3 方法

图 2: IntentKV 方法概览。
(a) 基于 QueryMemory 的规则评分;
(b) 通过当前查询的 K 向量的交叉注意力进行的零初始化残差修正;
(c) 最终分数组合馈入 top-k 保留。逐出操作将被丢弃的位置重定向到现有分页 KV 缓存上的一个哨兵“死槽”,从而保留基数树前缀标识。

IntentKV(图 2)在每次请求预填充后,当序列长度 N 超过保留预算 C 时进行干预。它产生一个保留集 K ⊆ [0, N),该集合始终保留当前可操作的查询范围和受保护的系统前缀,将每个其他幸存令牌保持在其原始逻辑位置和物理 KV 槽位,并允许跨请求基数树(Zheng et al., 2024)尽管进行了逐出也能匹配前缀。设计分解为两个层面:*保留*层根据跨轮次意图对历史进行排名,*布局*层保持幸存前缀的可重用性。

### 3.1 问题形式化

我们将 KV 剪枝形式化为在预填充后令牌上的有预算 top-k 选择,同时预先固定一个小型保护集。设 S_r ∈ Z^N 表示请求 r 的槽位映射,K, V ∈ R^(L × H_kv × N × D) 表示经过 RoPE(Su et al., 2024)后的键和值,[q_s, q_e) 表示可操作的查询范围(最新的用户、工具或函数消息,可能影响下一个决策,在模板渲染后解析)。受保护的前缀 π 覆盖聊天模板系统范围。使用强制集 F = [0, π) ∪ [q_s, q_e),剩余预算 C^⋆ = max(0, C - |F|),候选历史 H = [0, N) \ F,压缩选择

K^⋆ = F ∪ arg top_{K ⊆ H, |K|=C^⋆} ∑_{j∈K} s_j,   (1)

其中 s_j 由三种评分模式之一产生:query 模式仅使用当前查询编码,memory 模式通过递归跨会话累积查询,learnable 模式在 memory 之上添加一个残差头部。因此 C 控制可压缩的历史,而不是作为提示词加生成令牌的硬上限;实现细节见附录 H。

### 3.2 跨轮次查询记忆

在一个智能体会话内,后续查询的注意力不再集中在第一个用户提示词单独划定的区域,因此仅基于 q_0 训练的评分器对于 q_{1:t} 是失准的(图 3)。

图 3: 跨轮次注意力偏离初始提示词。
在一个 BCP 展开上(qid 861,Qwen3-8B;轮次感知合成预览),每个查询 q_0 → q_4 激活前缀的不同区域(位置 0–2000)。

每个会话中,IntentKV 维护一个查询记忆 M_t ∈ R^(L × H_q × D),形状与一个后 RoPE 查询行相同,通过几何递归更新:

M_t = e^{-λ} M_{t-1} + Enc(q_t),   (2)

其中 Enc(q_t) 对可操作查询范围内的后 RoPE Q 行求平均;衰减率 λ 在会话中固定(值见附录 A)。每次更新后,M_t 沿头部维度投影为单位范数;否则其范数大致随轮次数量线性增长,导致下面的 softmax 崩溃到单个坐标。

使用来自当前请求的 K ∈ R^(L × H_kv × N × D) 以及在 GQA 下将 KV 头扩展为 H_q 个头,候选位置 j ∈ H 接收规则分数:

rule_j = ∑_{l,h} a_{l,h,j},   (3)

a_{l,h,j} = exp(M_t[l,h] · K[l,h,j] / √D) / ∑_{i∈H} exp(M_t[l,h] · K[l,h,i] / √D).   (4)

方程 3 用单个累积查询状态替换了 SnapKV 中 W 个尾部查询行的窗口,减少了 pe

相似文章