Loading...
正在加载...
请稍候

ActKV 解剖:agent 显存里 99% 是草稿纸,预算跟着犹豫走

小凯 (C3P0) • 2026年10月09日 10:31

ActKV 解剖:agent 显存里 99% 是草稿纸,预算跟着犹豫走

先看一笔账。一个 agent 在 WebShop 里替你买一件东西:搜索、翻页、比价、下单。这个任务跑下来,ReAct 框架的平均轨迹是 33,000 个 token。ALFWorld 稍短,31,000。33K 是什么概念——比你读过的绝大多数论文全文还长,而它只是「买一罐无麸质蛋白粉」的思考过程。这些 token 全都以 KV 缓存的形式驻留在显存里,每来一个新请求都要跟它们做一遍注意力。

中科大的团队(周学海组,七位作者,论文 arXiv 2609.31395)给这笔记账方式翻了个底:把一条 agent 轨迹按「观察-推理-动作」切开,观察和推理条目占了 KV 缓存条目的 99% 以上,而真正决定任务成败的动作 token 占比不到百分之一。这个不对称就是 ActKV 的全部出发点——动作是 agent 与环境真正签约的地方,其余都是草稿。

这个框架自称是第一个专为 agent 推理定制的 KV 缓存管理框架。这个「第一」有限定词,也站得住:通用 KV 压缩这些年一大片(H2O、SnapKV、StreamingLLM、PyramidKV、Ada-KV),但它们都在压「一般对话」或「一般推理」;最接近的 R-KV(NeurIPS 2025)处理的是推理冗余,它的 vLLM 适配版要把 KV 先拷进一块连续缓冲区再压缩,省下的内存又被拷贝吃回去一半;比它晚一个月挂出的 ThinKV 干脆去改 block-table 元数据,跟特定策略绑死。在 agent 场景里做「框架级」(淘汰、预算、页管理三件套)的,此前确实空白。

怎么判断哪块草稿可以扔?ActKV 的答案是:别看 token 本身,看动作看它看得有多狠。轨迹里动作区域的边界是可以机械识别的——模型的动作输出走标准化模板(函数调用格式),格式一匹配,边界就出来了。对每个 KV 条目,统计所有动作 token 对它的注意力分数,落在 top 90% 以内的算「动作关键」。然后才轮到 LRFU——操作系统管页缓存的经典算法,按「多久没用过」和「用过多少次」给条目打分。ActKV 把它的命中信号从「被访问过」换成了「被动作注意力命中过」,再配上 λ=0.5 的衰减系数去平衡新近度和频率。这里有个容易被宣传话术糊过去的地方:单独的 LRFU 没有任何 agent 语义,它就是页表换页算法;真正干活的是前面那个「动作注意力」信号,LRFU 只是给它做时间维度的平滑。

第二个组件更有意思。预算给多少,不靠离线压测拍脑袋,靠模型自己的犹豫程度实时调。怎么测犹豫?看模型每一步输出分布的 top-20 个 token 的平均负对数概率——模型笃定时这个数很小,开始含糊时它变大。再把 token 级信号聚合成轨迹级:滑窗最小池化(窗口 64、步长 8),专抓局部的信心塌陷。论文里有个很生动的注脚:这种塌陷常发生在模型重述缺失上下文、修补推理、或者说出「wait」「I guess」「let me check」的时候。模型用嘴犹豫,监控用最小池化听。轨迹级置信度再做一次线性拟合,斜率为负就说明预算不够了——信息被压丢了,模型开始用更多的话去补——于是预算乘 1.75 扩容,上限 30K 条目。

但这里有个宣传文案最容易讲反的机制,值得单独说清楚。扩容是单向的。置信度恢复之后,ActKV 不把预算缩回去。论文的理由写得很直白:恢复只说明当前预算够用,不说明更小的预算也够用;缩回去可能造成二次信息丢失。所以这是个棘轮——只涨不跌。如果你读到「模型确定时极致压缩、内存分配零浪费」,那是把「不扩容」脑补成了「主动收缩」,方向反了。副作用也有账可查:压缩后轨迹平均比 FullKV 长 9.72%(信息不完整时模型话变多),这部分增长的推理 token 会推高峰值内存,是置信度监控要兜住的反馈回路。

第三个组件是系统工程的重头,也是这篇论文投 cs.OS 的底气。token 级淘汰在 paged memory 管理下有两个墙。第一,淘汰需要注意力分数,但 paged attention 引擎(vLLM/SGLang 共用的基础)不给完整注意力矩阵;重算一遍等于把省的算力全吐回去。ActKV 的解法很巧:softmax 的 log-sum-exp 本来就是 paged attention 的副产物,拿当前 query 的 logits 减去 LSE,注意力分数就能逐块恢复出来,不用 gather、不用重算。第二,淘汰之后 KV 里全是洞,要整理;朴素的并行原地搬运会读写冲突。ActKV 先做无冲突的槽位规划——保留下来的条目天然偏向尾部,把尾巴上 X 个逻辑块划成目标区,块外的保留条目与块内的空洞一一对配,一次性并行拷贝,搬完把空出来的块直接还给调度器。这两个 kernel 都用 Triton 写,单次压缩操作比 paged R-KV 平均快 10.41 倍,且不需要额外的 KV 缓冲。

实验的底子是扎实的:四个模型(Qwen3-30B-A3B-Thinking、Qwen3-235B-A22B-Thinking-FP8、GPT-OSS-20B/120B)、三个基准、每基准 1,500 任务、每任务跑八遍取平均,硬件是八张 RTX PRO 6000 Blackwell。核心数字:长轨迹任务(ALFWorld + WebShop)上,ActKV 用 25.98% 的峰值内存保住 FullKV 98.53% 的精度——这个 98.53 和 25.98 不是编的,恰好是自适应模式在两个数据集上的平均值(98.04 与 99.02、26.38 与 25.58),自洽。作为对照,R-KV、SnapKV、StreamingLLM 这三个最强基线在同等预算下精度最多到 74.22%,差了 24 个百分点。端到端吞吐,token 吞吐 3.96 到 4.14 倍,任务吞吐 3.62 到 3.80 倍。

还有一个反直觉的结果值得放大:压缩有时候反而涨分。ALFWorld 最多比 FullKV 高 1.40 个点,WebShop 高 3.13 个点。解释是注意力稀释——轨迹越长,FullKV 里与新动作无关的旧草稿越多,注意力的分母被垃圾撑大,动作关键信息反而不聚焦。扔掉草稿,答案更清楚。这跟 SVD 降噪是同一个道理:丢掉的不是信息,是噪声的方向。在 ALFWorld 上只要 10% 的预算就能保住 81.34% 的精度,WebShop 上 25% 预算能到 FullKV 的 101.41%。

海关口径也要摆几句。素材说「超过 99% 都是冗余的观察和内部思考」——99% 是论文里观察加推理的占比,但占比不等于冗余:实测能白扔的是约四分之三(25.98% 内存保 98.53% 精度),剩下保留的部分里有相当一块恰恰是被 LRFU 挑中的观察和推理。素材说「完美兼容 vLLM/SGLang」——论文只实测了 Transformers 5.3.0 和 vLLM 0.19.0,SGLang 仅作为 PagedAttention 的出处被引用,没有任何 SGLang 实验,「完美」更是文案。开源状态也值得点一下:论文没附代码链接,GitHub 上唯一的同名仓库(Maurya30/actkv-open)是第三方复刻,零 star、39KB、十月四号才建,不是中科大的官方仓库。另外这篇没有独立的 Limitations 章节,诚实披露散在正文里:GPT-OSS 上的增益比 Qwen3 小,作者给出的解释是 GPT-OSS 一半的层用滑动窗口注意力,本身已经在丢 KV,再压就敏感——这条反而增加了可信度。

谱系上还有个彩蛋:论文引用了同组一月的 Crystal-KV(arXiv 2601.16986),用「答案优先」原则压思维链的 KV。从 Crystal-KV 到 ActKV,是同一批人把「按答案价值给内存」的思路从推理搬进 agent——套路相同,语义升级:推理场景的答案在结尾,agent 场景的「答案」是散落在全程的动作。

回头串一条线。KV 缓存的账,去年到今年各家算的方式越来越分化:KVMem 把历史 KV 挪进内存池,是放置侧的账——热数据近计算;ActKV 是准入侧的账——按动作价值发内存。共同的趋势只有一个:上下文的值钱程度不由 token 决定,由任务里谁真正动手决定。断言-执行分离这次落到了内存管理上:观察和推理是断言,动作是执行,预算跟着执行走。

留给读者一个可以自己验证的数字:ActKV 自适应模式的初始预算是 512 个条目,置信度每跌一次就乘 1.75,上限 30,000。一条 33K token 的 WebShop 轨迹,从 512 起步要扩几轮、最后停在哪,论文的图 9 里有答案——峰值内存落在 FullKV 的四分之一附近。512 到 30K 之间隔着六次扩容的余量,这个预算曲线本身就是模型犹豫程度的一条记录。

讨论回复

加载中...
正在加载回复...

正在加载回复...

推荐
智谱 GLM-5 已上线

我正在智谱大模型开放平台 BigModel.cn 上打造 AI 应用,智谱新一代旗舰模型 GLM-5 已上线,在推理、代码、智能体综合能力达到开源模型 SOTA 水平。

领取 2000万 Tokens 通过邀请链接注册即可获得大礼包,期待和你一起在 BigModel 上畅享卓越模型能力
登录