打开网易新闻 查看更多图片

大模型越来越会 “想”,也越来越能把 GPU 显存 “想满”。

在数学、科学问答和代码生成等任务中,reasoning model 往往会生成数千乃至数万 token 的长推理链。随着生成持续进行,每个历史 token 对应的 Key-Value 表示都会进入 KV Cache,显存占用随序列长度不断增长。对于长推理部署来说,KV Cache 很快会变成真正的系统瓶颈。

一种直接的解决思路是 KV Cache eviction:给缓存设定固定预算,推理过程中不断判断哪些历史 KV 值得留下,其余永久删除。

过去几年的很多方法,核心都围绕同一个问题展开:怎样更准确地判断一个 KV 将来还有没有用? 有的方法累计历史 attention,有的观察最近 query 的 attention,有的显式考虑 redundancy,还有工作进一步利用 value magnitude 或 key statistics。虽然打分方式不同,它们共享一个直觉:只要 importance signal 更准,就应该能留下更有价值的 KV。

来自 Salesforce AI Research 和 UIUC 的一项最新研究,却选择从一个近乎 “反算法” 的问题出发:

这些精心设计的 selection signal,本身到底贡献了多少?

研究团队提出 Random Attention:完整保护输入 Prompt,对后续模型自己生成的 reasoning trace 不计算内容相关的重要性分数,而是在每个 KV head 内独立随机保留。

结果有些反直觉。Random Attention 在四个模型、六个数学、科学与代码推理任务上整体可以媲美论文中表现最强的基线;在主结果表的 60 个 baseline comparison 中,它显著领先 31 个,显著落后只有 1 个。更进一步,在 vLLM 的 32k-token serving 测试中,由于省掉 scoring pass,Random Attention 相比最强基线 TriAttention 的吞吐还能再提高 32%–43%。

但这篇工作真正有意思的,并不只是 “随机方法居然很强”。作者进一步把这个结果拆开,试图回答两个更基础的问题:过去方法的收益究竟来自 “选得准”,还是来自它们恰好保护了某些关键内容?而 reasoning trace 又为什么能够承受如此激进的随机遗忘?

打开网易新闻 查看更多图片

  • 论文标题:Random Attention: Rethinking KV Cache Eviction for Efficient Reasoning
  • 论文链接:https://arxiv.org/abs/2609.03430
  • 项目主页:https://arthur-heng.github.io/Random-Attention-page/
  • 代码:https://github.com/SalesforceAIResearch/Random-Attention

不判断哪些 KV 重要,先把问题留下来

Random Attention 的方法本身非常简单,只有两条规则。

第一,完整保护 Prompt。System prompt、chat template 和问题描述对应的 KV 都不会被 eviction。第二,其余模型 reasoning 部分的 KV 随机保留。每个 KV head 都独立给候选位置生成随机分数,再留下 Top-K。

打开网易新闻 查看更多图片

图 1:传统 KV eviction 依赖内容相关的 importance score 选择保留位置;Random Attention 只保护 Prompt,其余 reasoning KV 在不同 KV head 内独立随机保留。

从实现上看,这甚至只需要一次随机数生成和一次 Top-K。值得注意的是,“随机” 并不意味着所有历史 token 位置在任意时刻都同样容易留下。一个位置如果想留存得更久,就要连续通过多轮随机 eviction,因此它的留存概率会随时间呈几何衰减。最终形成的其实是一种很自然的 soft recency bias:较新的 reasoning 几乎总能留下,较老的信息则以稀疏、且不同 head 各不相同的方式散落在 cache 中。

也正因为如此,作者把 Random Attention 同时看作一个可部署的方法和一个 null baseline:如果一个更复杂的 selection signal 在相同 cache budget 和相同保护规则下都无法稳定超过随机选择,那么就需要重新审视这个 signal 到底提供了多少额外信息。

这里需要说明的是,论文主要比较的是 SnapKV、R-KV、VaSE、TriAttention 这类无需额外训练、在 decode 阶段直接执行 eviction 的方法,并没有系统比较需要额外训练或蒸馏的 learned selector。因此,文章的结论也并不是 “所有学习型 KV selection 都没有价值”。

随机删除,为什么还能媲美最强基线?

实验覆盖 Qwen3-4B、Qwen3-14B、Qwen3-32B 和 Phi-4-reasoning,任务包括 MATH500、GPQA-Diamond、AIME 2025、AIME 2026、HMMT 和 LiveCodeBench。主实验大约采用 4× KV Cache compression,LiveCodeBench 约为 3×,最大生成长度统一为 32k tokens。

在整体结果上,Random Attention 并没有因为 “随机选择” 而明显落后。图 2 左图汇总了约 4× KV Cache compression 下的平均准确率:尽管不计算任何内容相关的重要性分数,其整体表现仍与实验中的最强基线保持接近。

打开网易新闻 查看更多图片

图 2:Random Attention 在约 4× KV Cache compression 下与实验中的最强基线保持相近准确率;在 32k-token vLLM serving 中,相比 TriAttention 吞吐提升 32%–43%。

效率上的差距则更加明显。在相同的 cache budget 和 serving kernel 下,Random Attention 在四个模型上相比 TriAttention 整体提升达到32%–43%。核心原因也很直接:Random Attention 不需要额外执行 scoring pass,只需要完成随机选择和后续的 cache compaction。

论文还进一步测试了更激进的压缩设置,将 compression factor 从 2× 一路提高到 16×。在 Qwen3-4B 和 Phi-4-reasoning 的数学、科学任务上,2× 压缩时各方法都接近 full attention;随着 cache budget 逐步收紧,Random Attention 仍然与 TriAttention 保持接近,而 VaSE 的性能下降得更加明显。 这说明 Random Attention 的竞争力并不局限于主实验采用的约 4× 压缩设置,在更高压缩率下依然能够保持。

到这里,实验已经回答了一个基本问题:不依赖内容相关 selection signal 的随机策略,确实可以在不同模型、任务和压缩强度下保持很有竞争力的推理性能。

接下来更值得解释的是:为什么? 一个完全不判断 reasoning KV 内容的策略,为什么能做到这一点?作者首先注意到,不同方法之间还存在一个很容易被忽略的差异 —— 它们对Prompt的处理方式并不相同。

发现一:

真正脆弱的是 Prompt

Reasoning 场景中的 KV Cache 大致可以分成两部分:一部分是用户给模型的输入问题,另一部分是模型在解题过程中不断生成的推理过程(working state)。

这两类信息有一个根本区别:Prompt 通常只出现一次,而 working state 会被反复写入。 如果问题条件本身被永久 eviction,模型后面没有机会重新获得;但中间推理里的变量、公式和阶段性结论,经常会在后续步骤中再次被写出来。

更重要的是,不同 baseline 原本对 Prompt 的处理并不完全相同。TriAttention 和 Random Attention 都直接保护完整输入,而 SnapKV、R-KV、VaSE 的默认设置只强制保留开头的 sink token,主要依靠各自的 score 去决定哪些输入位置留下。因此,一部分看起来像 “selection signal 的差距”,实际上还混入了 protection regime 的差异。

作者做了一个非常直接的 controlled experiment:给这些方法统一加上完整 Prompt protection,再比较它们的 score。

结果变化非常明显。SnapKV 在四个代表性设置中分别提升 12.6、12.3、4.5 和 22.5 个百分点;VaSE 在 Phi-4-reasoning 上提升 4.2 和 10.2 个百分点;而原本就保留更多 Prompt 的 R-KV,提升始终不超过 1.9 个百分点。统一保护 Prompt 后,三种 baseline 在这些设置中的结果都落到 2.2 个百分点以内。

打开网易新闻 查看更多图片

表 1:统一加入完整 Prompt protection 后,多种方法原本较大的性能差距明显缩小。

这说明,对于部分方法而言,此前的大差距并不完全来自 “谁更会判断 reasoning KV 的重要性”,而是来自一个更基础的问题:有没有把原始问题保住。

当然,这个解释并不能用来消除所有差异 ——TriAttention 本身就和 Random Attention 一样保护完整 Prompt,两者的比较从一开始就是 matched protection。也正因为如此,论文接下来还需要解释另一半问题:既然 Prompt 已经安全,为什么剩余的 reasoning trace 随机删掉也很难造成灾难?

发现二:

Reasoning Trace 会 “保护自己”

作者给出的解释是,长推理本身存在两层 redundancy。

第一层来自文本本身的重复和重述。Reasoning model 很少在几千个 token 之前只写一次某个关键中间量,然后再也不提,却在最后突然依赖它。模型通常会在继续推导时重新写变量值、阶段性结论和当前状态。一个真正仍然有用的信息,往往已经在 trace 中留下了多个版本。

第二层来自不同 KV head 之间的副本。同一个 token 会在不同 KV head 中留下各自的 KV 表示,而 Random Attention 对每个 head 独立采样,因此一个位置并不是 “留” 或 “删” 这样简单的二元状态:即使一些 head 丢掉了它,其他 head 仍可能保留可用的副本。

为了直接测试这一点,作者设计了 planted-fact probe。他们把一个随机事实,例如 zq = 4729,插入真实 MATH500 reasoning trace,并在多次 eviction 之后再询问模型这个值。实验人为控制究竟哪些 KV head 能保留这一事实。

结果显示,只让单个 head 保存事实时,模型几乎无法可靠读取,最好的单个 head retrieval accuracy 只有 3%。但把副本保留在特定的两个 head 中后,retrieval 可以达到 60%;三个 head 达到 83%;8 个 head 全部保留时达到 99%。

打开网易新闻 查看更多图片

图 3:Planted-fact probe 显示,同一事实在多个 KV head 中留下副本后,模型的 retrieval 能力迅速恢复;在真实 MATH500 推理中,性能对保留片段的具体形状也并不敏感。

这表明,模型并不一定需要某一个被精准选中的 “关键 KV” 独自承担记忆。一个事实只存在于单个 head 时几乎无法读取,但当它的表示分散保留在多个 head 中时,这些残留信息可以共同恢复出原始内容。

图 3 (b) 进一步显示,这种跨 head 的信息整合甚至可以发生在不同事实之间:两个分别保存在不同 head 中的事实,单独测量时 recall 分别只有 0.10 和 0.16,但当回答同时需要二者时,联合 recall 达到 0.31,高于两者单独贡献之和。换句话说,不同 head 中保存的信息并不是彼此孤立的,后续计算能够将它们组合起来。

更有意思的是,保留下来的信息具体以什么 “形状” 存在,似乎也没有想象中重要。图 3 (c) 在真实 MATH500 trace 上将保留位置从零散 token 改成连续 block:当 block size 从 1 增加到 64 时,accuracy 几乎没有变化;只有增大到 256、每个 head 最终只剩下极少数 block 时,性能才明显下降。相比精确保留某一个连续片段,更重要的似乎是让足够多的可用信息在 cache 中继续存活。

不过,论文还有一个更微妙的结果:在真实 MATH500 trace 上,即使强制所有 head 使用同一组随机位置,accuracy 也几乎不变。这说明真实推理中,第一层的文本 redundancy 往往已经足够强;cross-head redundancy 更像第二道保险,在一个事实没有被后续 reasoning 重述时才尤其重要。两层 redundancy 可以相互替代,而 Random Attention 恰好同时保留了这两种可能性。

发现三:

随机不是万能的,selection signal 真正擅长的是 “孤立事实”

如果一个信息没有任何 redundancy,会发生什么?

作者专门构造了 Random Attention 最不擅长的场景:很早以前只给出一次 passcode,此后完全不再提及,经历 57 次 cache compression 后才要求模型重新输出。

这一次,Random Attention 的 retrieval accuracy 直接降到 0。相比之下,R-KV 可以恢复 83.6% 的 passcode,VaSE 为 34.4%,而 SnapKV 和 TriAttention 也接近于零。

这个实验恰恰说明,论文并不是在说 selection signal “完全没有用”。当一个事实只出现一次、没有被后续 reasoning 重述,却需要在很久以后重新访问时,内容相关的 selection signal 的确可能非常重要。

有意思的是,最擅长找这个 needle 的 R-KV,并不是整体 reasoning benchmark 中表现最强的基线;主实验中整体最强的 TriAttention,在这个 passcode probe 上表现很差。这说明,needle retrieval 能力和整体推理性能并不是一回事。

发现四:

不做 Scoring,Serving 也真的更快

Random Attention 的另一个优势来自系统侧:它不需要 content-dependent scoring pass。

作者把方法集成进 vLLM,在单张 H200 上使用 PagedAttention,设置 K=2048、1k-token Prompt 和 32k-token generation,并与 TriAttention 使用相同的 attention kernels、paging、scheduler 和 compression trigger,只改变 selector。

结果显示,Random Attention 在 Qwen3-4B、Phi-4-reasoning、Qwen3-14B 和 Qwen3-32B 上分别达到 2046、1737、1819 和 923 output tokens/s,相比 TriAttention 分别提高37%、43%、40% 和 32%;相对于 full attention,则达到约 1.6–2.7× 的吞吐。

打开网易新闻 查看更多图片

表 2:在相同 vLLM serving 设置下,Random Attention 相比 TriAttention 在四个模型上的吞吐提升 32%–43%。

单看一次 eviction,额外 scoring 的成本其实并不高;在单流解码中,它只占几个百分点。但在 serving 场景里,这个小开销会被两个因素同时放大。第一,大量并发 request 会不断触发 compression。论文的 128-request 设置中,每个 request 每生成 64 个 token 就会触发一次压缩,而且 compression 发生在 batched decoding 的同步点,因此一次额外 scoring 会让整个 batch 一起等待。第二,在 PagedAttention 下,content-dependent selector 还需要额外访问 paged KV state:依赖 KV statistics 的方法要额外遍历缓存中的 key/value,依赖 attention weight 的方法则需要重新计算或显式暴露 fused kernel 本来不会保留的 attention statistics。相比之下,Random Attention 不需要读取这些内容相关信息,只执行随机选择和所有方法都必须完成的 cache compaction。因此它真正省掉的是一整条 content-dependent scoring pass,以及这条 pass 在长生成中被反复触发所带来的同步和内存访问开销。

从 “哪些 KV 最重要”,到 “哪些信息绝不能丢”

过去的 KV Cache eviction 很自然地被看成一个 ranking problem:预测哪些历史 token 将来最重要,然后尽可能把它们留下。

Random Attention 提出的视角稍有不同。至少在论文研究的这些 training-free、decode-time eviction 方法中,一旦把 Prompt protection 控制一致,复杂 ranking signal 的额外收益可能没有想象中那么大。 真正决定系统是否会崩掉的,首先是那些一旦删除就无法恢复的信息。

Prompt 是最直接的一类。它只出现一次,是模型整个推理过程的起点;rare、once-stated fact 是另一类,它缺少 reasoning trace 中常见的 redundancy。相反,大量模型自己生成的 working state 会不断被重新表达,并在不同 head 中留下多个副本,因此比直觉中更能承受遗忘。

这并不意味着未来的 KV compression 不再需要 selection。论文在代码任务上也展示了一个很实际的边界:LiveCodeBench 的 Prompt 平均约 557 tokens,是 MATH500 的约 6 倍,最长输入甚至可以消耗掉 K=3072 预算的一半。Random Attention 选择把 Prompt 全部固定住,因此在长 Prompt 场景里,“保护什么” 本身也会开始消耗大量预算。未来更聪明的方法可能不是重新对整个 reasoning trace 做更复杂的排名,而是先学会压缩 Prompt 中可替代的部分,同时识别真正不可恢复的信息。

因此,这项工作并没有让 selection 问题消失,反而把它收得更具体了:与其持续追求一个对所有 token 都更精确的 importance ranking,也许更值得研究的是,怎样识别并保护那些真正不可恢复的信息,同时让其余 cache 尽可能简单、高效地被管理。

Random Attention 因此也提供了一个很有用的参照:在相同 budget 和 Prompt protection 下,一个更复杂的 selection signal,究竟能比随机选择提供多少额外收益?

如果说过去的问题一直是 “模型应该记住哪些最重要的 KV”,那么这项工作提出的另一种可能是:

也许首先应该弄清楚,模型究竟真正害怕忘掉什么。

作者简介

王珩目前是 UIUC 二年级博士生,导师为季姮教授和韩家炜教授,研究方向为长文本理解和推理,LLM Agent,以及可解释性。他曾在 Kimi AI 和 Salesforce 实习。论文 Google Scholar 累计引用 1700+。