全局计算,就地具象化:稀疏事件 KV 的记忆契约 Compute Globally, Materialize Locally: The Memory Contract of Sparse Event-KV
证明稀疏 KV 服务中被保留的下游事件行能携带已丢弃源事件的状态,可编程但仅限紧凑状态
前置知识
KV Cache(键值缓存)
Transformer 自回归解码时,每层多头注意力会把每个 token 位置算出的 Key/Value 向量缓存下来,后续 token 解码时直接复用这些 K/V,避免对历史前缀重复做矩阵乘法。它是当前大模型推理加速与显存占用的核心数据结构,一个长上下文的 KV cache 动辄几十 GB,因此衍生出大量"选哪些行保留、丢哪些行"的工作。
本文的研究对象就是被稀疏服务保留下来的那些 cache 行——它们是否携带超出可见文本的信息。不懂 KV cache 的物理结构就无法理解"语义具象化"发生在哪里。
Prefill(预填充阶段)
模型处理输入 prompt 的一次性前向计算,一边算一边把每个 token 的 K/V 写进 cache,所以也叫"写阶段"。本文强调 prefill 是一次"全局"计算:下游 token 在此期间通过因果注意力能访问上游 token,于是它的 cache 行可能已经吸收了上游计算的结论,而不仅仅是它自己那几个 token 的摘要。
语义具象化正是在 prefill 期间发生的——下游事件的 cache 行在写入时被上游源事件所条件化。理解"写入"与"读出"分离是理解全文的关键。
Causal Attention(因果注意力)
标准 decoder 的注意力掩码:位置 $i$ 只能看到 $\leq i$ 的位置,禁止"看到未来"。这保证先写的上游 token 会被后写的下游 token 看到,是状态能从上游"流"到下游 cache 行的物理基础;也正是它让 donor pair 这种因果识别成为可能。
正是因为因果方向固定,本文才能通过翻转上游被丢弃的源事件、观察下游输出是否随之翻转,来因果性地证明跨事件状态携带。
Sparse Event-KV Serving(稀疏事件 KV 服务)
把对话/轨迹切成"事件"(event),每个事件是一段 token 及其对应的 cache 行块;服务时只保留一部分事件块、丢弃其余(包括生成目标值的那条源事件),只对保留块做检索式回答。SnapKV、H2O、EpiCache 等驱逐/压缩/情景记忆系统都属于这类范式。
本文审计的就是这类系统从未被独立检验的前提:被保留的事件行在被服务的时刻,是否仍携带来自被丢弃源事件的状态。
Donor Pair(donor 对比)
本文首创的核心受控比较方法。构造两条仅在"被丢弃的源事件"取值上不同(如 $S=\text{ONLINE}$ vs $S=\text{OFFLINE}$)、其它被服务的 token 与位置逐字节相同的轨迹。在贪心解码下,若无跨上下文携带两条轨迹必然输出相同答案;只要答案随 donor 翻转就因果性地证明了隐性携带。
这是全文方法论的基石——它把"准确率"这个被混杂的指标拆开,单独测量 cache 行的隐性携带,所有结论都建立在此之上。
研究动机
长程智能体越来越激进地把原始交互历史、乃至读取历史时产生的 KV cache 当作"记忆基底"。服务这种记忆必然是稀疏的:未来查询只触及少数事件,所以 SnapKV、H2O、EpiCache 这类系统会保留一部分 cache 行块、丢弃其余——而常规做法会把"生成了查询所需值的那条源观察事件"也一起丢掉。问题在于:现有评估都用下游准确率来验证这些驱逐/情景记忆策略,但准确率无法分辨"被保留的行是否还携带着来自某条已被驱逐行的状态"。一个被保留的事件行,在 prefill 阶段曾通过因果注意力看过那条源事件,其 cache 行可能已经把那次计算的结果"吸收"了——这种 KV 独有的隐性携带,纯文本检索根本无法提出这个问题,因为检索只能拿到可见文本,拿不到"已被算过的结果"。这个前提被整个领域默认却从未被独立、因果性地检验。
本文的目标是本文要直接测量这个长期被默认但从未被独立检验的前提——"一个被保留的事件,在产生它的原始观察被丢弃后,是否仍然携带了来自该观察的状态"。具体目标有四:(1) 用受控实验因果性地证明这种跨事件状态携带现象存在,并量化其方向性与跨模型/跨读出的稳健性;(2) 摸清它受什么约束——哪些 surface 表达能触发写入、状态"落"在哪个事件行上、能携带多大的信息量;(3) 判断它能否被工程化编程(即刻意写一条答案无关的 carrier event 来搬运状态);(4) 给出对"做缓存驱逐的人"的实际后果结论——丢一条源事件而准确率不降,并不能证明该源事件不必要。
与已有工作不同的是,已有最近的工作已从不同角度触及相关机制:Models Take Notes 证明 prefill 能把 memo 化结论写进下游 note,MEMENTO 训练模型发"压缩记忆块"并发现其 KV 保留被遮蔽推理块的隐式信息(删该通道掉 15 分),KVEraser 展示删除后残留并学习抹除它,Prakash 等的 lookback 分析追踪模型追踪状态的指针式 address/payload 机制。但它们要么需要训练/微调、要么源事件仍在场、要么 future query 在写入时已知。本文从相反方向切入:用未改动的 frozen checkpoint、答案无关的 carrier event、把 future query 排除在写入时刻之外,并首创 donor pair(被服务 token 和位置逐字节固定、只翻转被丢弃源事件取值)来隔离这条 channel——一种全新的 serving-side 因果隔离视角。
核心方法
直觉层面:在 transformer 的一次 prefill 里,下游 token 通过因果注意力"看过"上游 token,所以它的 cache 行不只是它自己那几个 token 的摘要,还可能包含对上游状态做过计算的"预计算结果"。本文把这个现象命名为"语义具象化"(semantic materialization),借用数据库 materialized view 的类比——下游事件的 cache 行像一个"预计算好的视图",其输入数据虽已被丢弃,但结果仍可在读时恢复,无需重算。技术路线分三步:先把 agent 轨迹建模为事件序列 $T=(e_1,\dots,e_n)$,做一次全局 prefill,让每个事件 $e_i$ 的 cache 行 $\text{KV}(e_i)$ 被其前面的事件所条件化;再服务时只保留子集 $\Sigma \subseteq T$(把写值 $v$ 的源事件 $e_{\text{src}}$ 丢弃),问关于"曾引用源但自身文本不点名的"根事件 $e_{\text{root}}$ 的状态;最后用 donor pair 看答案是否跟随被丢弃的 donor。
核心创新是 donor pair 受控比较以及由此定义的"语义具象化"概念。两条轨迹在所有被服务的 token 和位置上逐字节相同,只在被丢弃的源事件取值上不同(如 $S=\text{ONLINE}$ vs $S=\text{OFFLINE}$)。在贪心解码下,如果没有跨上下文携带,两条轨迹必然输出完全相同的答案;只要答案随被丢弃的 donor 翻转,就因果性地证明了被服务的 cache 行携带了超过其可见文本的信息。这把"准确率"这个被三种成功混杂的指标(可见文本含答、先验猜答/decoy 排除、真正的隐性携带)拆开,单独测量第四种——为此论文到处都用独立采样的 decoy 而非互补 decoy,避免"排除错误项"和"回忆正确项"无法区分。与已有工作的本质区别:不训练、不改 checkpoint、不依赖源事件在场、不假设未来 query 已知,纯靠 frozen 模型的 native 接口读出。
方法步骤详情
(1) 轨迹构造:生成 24 事件合成 agent 轨迹,源事件在中段(如"S is ONLINE"),其后放不点名值的 carrier("M mirrors S")与无关 decoy;以 donor pair 做两版、源值翻转。(2) 全局 prefill:在 checkpoint 原生因果注意力下一次编码整条轨迹得每事件 cache 行块 $\text{KV}(e_i)$,被保留行保留原始 position id(先 RoPE)。(3) 稀疏服务:抽选定事件块(decoy/carrier/下游 review)保留原始位置拼成连续 slot,query 追加在最后保留行之后;真实对话 arm 在原始位置服务并用 key-mask 丢被删行。(4) 读出:用 free-generation trace 或 fixed-candidate menu(Gemma-4 必须 menu)问目标寄存器状态,统计 follow/anti/const/other 四类转移,精确双侧 sign test 检验方向。全程用独立 decoy、字节同一性断言、leak 断言与 echo 控制保证因果干净。
技术新颖性
技术新颖性集中在三处。第一,donor pair 把一个被准确率混杂的现象拆成可因果识别的 channel——此前没人能在"被服务内容逐字节相同"的前提下只翻转"不可见的源"。第二,首次系统刻画这条 channel 的"契约"三元组:trigger(surface form 而非 meaning——16 种构造 write-through 从 chance 到 .95,且无一在三个模型上同为 W 类)、landing(root 携带主信号、reference edge 多为路由)、access(紧凑状态信封而非通用通道——binary .934 但三位数字 0/192)。第三,明确把本文与已有 KV 复用/修复/记忆系统工作分层:CacheBlend、SnapKV、H2O、EpiCache 等修复或压缩"它保留的行",本文审计"被丢弃的源留下了什么"——一个从未被独立测量的 serving-side 问题,并由此推出"丢源无掉点≠源不必要"的反直觉结论。
实验结果
四块汇报。发现(§3):源事件被丢弃、只服务 root 时,Qwen3-8B donor-sensitive 项 follow:anti=99:0($p=3.2\times10^{-30}$);Ministral-3 为 90:1、Gemma-4(menu) 80:0。Trigger(§4):16 构造 write bank 理解率均值 .98 但不预测 write-through,语义等价构造 Qwen3 consist .94 vs write .52,class 总数 5/4/7、7/2/7、0/2/14、无构造三模型同 W。Landing(§5):root 携带主信号、edge 多为路由——Gemma-4 问通过 edge 的 T 跟随 root donor 41:0、只服务 edge 仅 2:0;深度 3 链去掉 root 从 .707 塌到 .465。Access(§6):binary .934、4-way .223、8-way .156、三位数字 0/192。编程(§7):答案无关 NL-compute directive 把 Qwen3 恢复从 6% 提到 51%,而真实对话被动 harvest 无收益。
查看结构化数据
| 任务 | 指标 | 本文 | 基线 | 提升 |
|---|---|---|---|---|
| donor-pair 因果方向(源事件丢弃) | follow : anti 比(Qwen3-8B,root-only 自由生成) | 99 : 0 | 无携带则 donor-blind,应 ≈ 50 : 50 | 方向显著性 $p=3.2\times10^{-30}$;256 对复现 130:0,$p=1.5\times10^{-39}$ |
| 主动编程的 carrier 写入 | donor-aligned 恢复率(Qwen3-8B) | NL-compute directive 51%(97/192) | 被动 mention 6%(11/192) | +45 个百分点;固定 query 位置下 review 行 .00 → .42 |
| binary 状态原生恢复 | menu 准确率(独立 decoy) | .934(95% CI [.896, .958]) | chance .5 | +.434;method-of-moments 估计约 80% 来自真正回忆 |
| 三位数字 payload 恢复 | 精确恢复率 | 0/192(95% 上限 .02) | — | 完全失败,证明 access 是紧凑状态信封而非通用通道 |
| 真实长程对话被动 harvest | harvested − isolated 准确率(LoCoMo) | Qwen3 −.044、Gemma-4 −.011(±.05 带内等价) | 孤立重编码同一文本 | 未检测到收益,被动 harvest 非可靠写入接口 |
局限与改进
作者承认:donor swap 只为紧凑状态证了因果通道——verbatim 仅 9.7% 转移、精确数字无法原生恢复、派生结论需写时 prompt 而该 prompt 让全上下文准确率从 .818 掉到 .698;多跳平曲线用 oracle 行选择,是机制上界而非部署数字;每个负的可达性判定都只是输出接口测量,representation-level probe 才是未决裁判。真实对话 null 仅限其 carrier 启发式与 recognition 读出,REALTALK 10 个 dyad 只形成 3 个参与者分量YaRN 拉回原生窗口反而把 null 拉大(LoCoMo −.048→−.121)。我补充:结论基于 frozen checkpoint 单一 revision,属 checkpoint 级而非 family 级;Gemma-4 sliding-window(窗口 1024)必须 native serving,compact 路径跨窗口与 native 严重偏离(gap 3430 时首 token argmax 仅 10/32 一致)。
独立分析的弱点
第一,工程可用面窄:只有 binary 稳(.934),4/8-way 逼近 chance,三位数字失败。改进:把具象化做成结构化写时协议(让 carrier 以少量 bit 编码而非自然语言),或先用 representation-level probe 测每行有效容量再设计写入格式。第二,trigger 是 surface form 而非 meaning 且每 checkpoint 要重校准、无通用 syntax,部署需维护构造-写入率表。改进:把 forced-choice logit probe 做成自动 calibration 流水线(Gemma-4 trace 无 W 但 8/16 候选 logit 可达)。第三,真实对话被动 harvest 完全失效,自然提及非可靠写入接口。改进:研究在真实 agent 轨迹自动注入合规 carrier,或退用显式文本记录。第四,滑动窗口模型 compact serving 与 native 几何在长上下文严重分歧。改进:为 hybrid attention 设计保留原始位置的稀疏服务协议。
未来方向
作者明确:representation-level probe 是判定可达性上限的未决问题;要求扩展到线性注意力混合模型(Qwen3.6-27B 因不暴露 token-addressable KV 出局,反而强化对显式具象化事件的需求)。可延伸:(1) 把语义具象化作可编程记忆原语集成进 agent 框架,配 query-scoped 版本化 patch 实现可更新记忆,落实 slogan"compute globally, materialize locally, serve sparsely";(2) 研究 trigger surface form 与内部表示的对应——为什么 consist 写而 write 不写但理解率相同?指向未刻画的写入门控;(3) 把 donor-pair 推广为审计工具,检验 CacheBlend/SnapKV/EpiCache 在 source-omitted 下是否保留具象化;(4) 探索 carrier 多 bit 编码以突破 binary 信封。
复现评估
可复现性较好。所有实验用 frozen 开源权重+贪心解码,donor pair、leak 断言、echo 控制代码强制。三个 2025-26 主模型(Qwen3-8B、Ministral-3-8B instruct、Gemma-4-12B)各在固定 revision、bf16 下评估;4 个 2024 legacy 模型仅作探索。作者声明发布实验脚本、实验到脚本映射、每脚本配置(seed/arm/readout)、精确仓库与 revision SHA 和环境(见 github.com/oklen/...)。算力门槛中等:合成轨迹短(24 事件),主要是大量 donor pair 的 prefill+greedy decode,单卡可跑 8B/12B;最贵的是 20 段真实对话(21–66k token)的 native serving。复现难点:Gemma-4 sliding-window 兼容(fused kernel 拒绝其 custom mask,需 4k chunk 因果 prefill);字节同一性断言与独立 decoy 采样需小心实现。
论文图表