Periodic Weak Spots: Phase Sensitivity from Chunked KV-Cache Compression
Xingyu Zhu, Pu, Yi, Ziheng Cheng, Ang Lv, Jing Liu, Lexing Ying, Yiyuan Ma, Xin Dong
Luke
cs.LG, cs.AI
2026-09-29
DeepSeek-V4在128K检索上,同一信息因压缩窗口相位不同,准确率最多差40.2个百分点,平均分会掩盖周期弱区。
长上下文推理会被 KV cache 卡住:显存和 attention 都随长度涨。一条常用解法是分块压缩,把连续 token 按固定步长 S 收成更少的 cache 条目。DeepSeek-V4 的 compressed sparse attention(CSA,压缩稀疏注意力)属于这一类。压缩发生在后续 query 到来之前,每条摘要必须对未知查询保持可用。
这个设计给每个 token 多了一维坐标:相对压缩窗口边界的相位,即位置对 S 取模。输入平移几个 token,内容和相对位置都不变,但哪些 token 被压进同一条摘要会变。ByteDance Seed 联合 Princeton、Stanford、Berkeley 确认,同一条信息只因相位不同,检索难度就会系统性起伏。平均 benchmark 分数能把这件事盖住。
先在开源大模型上直接测,再从零预训练对照,最后做因果干预和理论分析。
让 DeepSeek-V4-Flash-Base 补全自家推理代码,只改装饰性 docstring 长度。正确续写「8」和错误续写「32」的偏好以 4 个 token 为周期翻转,对上 CSA 的 stride S=4。P(8)−P(32) 从 −0.79 扫到 0.95。没有分块压缩的 DeepSeek-V3.1-Base,同样 64 条输入里只有 4 条把「32」排在「8」前面,差距很小。DeepSeek-V4.1-Flash 的翻转周期是 2,对上它的 stride。
受控检索用 128K 上下文、16k 个 key-value 对的 needle-in-a-haystack(NIAH,干草堆找针)。各组共享 prompt 长度、query 位置和键值绑定,只改源 key 相对压缩边界的相位。
为确认压缩才是原因,用 Qwen3-0.6B 骨架从零预训练,唯一实质改动是 KV 压缩核。窗口大小 W、步长 S、标量或向量 gate、均匀平均、DeepSeek 风格 CSA 都扫过,对照是同样训练的全注意力基线。机制上对 KV head 做 mean replacement knockout,用其它 prompt 的平均输出替换当前 head,去掉 prompt 特异信息。再看压缩 gate(窗口内每个 offset 写进摘要的权重)会不会形成跨输入稳定的偏移偏好。理论上,理想化 induction 任务里最优压缩器把每个 head 的 key 压到某一个相位、value 压到下一个;梯度流会把这种偏好变成静态的。
DeepSeek-V4 家族在 128K NIAH 上全部相位敏感,周期对上各自的 CSA stride。
| 模型 | 设置 | 最好到最差相位差 |
| DeepSeek-V4-Flash Base | 128K NIAH | 40.2 pp |
| DeepSeek-V4-Flash 0731 | post-train 后 | 19.1 pp |
| DeepSeek-V4-Pro Base | 同任务 | 34.8 pp |
| DeepSeek-V4-Pro 0813 | post-train 后 | 14.8 pp |
| DeepSeek-V4.1-Flash 0910 | stride=2 | 6.1 pp |
Post-training 抬高平均准确率、收窄缺口,但缺口还在。V4.1-Flash 缺口最小,四个偶数 residual 组仍全部高于四个奇数组。
从零训的压缩模型全部复现了与 stride 同周期的波动,全注意力基线几乎是平的。Prefix Padding 下压缩模型相位差最高到 78 个百分点,基线最多 6.1。八个 KV head 的 W8/S8 模型平均准确率和验证损失几乎贴上全注意力基线,最差 residual 却只有 9.9%,基线最差是 58.4%。W8/S8 里只有相位 7 的 key-value 被窗口切开,但相位 0 到 6 之间准确率仍差超过 50 个百分点。边界切开解释不了全部。
均匀平均替换学习 gate、去掉 RoPE、改成重叠窗口,周期性都还在。周期跟着 stride 走,不跟着窗口大小走:W8/S4、W8/S6、W8/S8、W12/S12 分别给出约 4、6、8、12 个 token 的周期。
Knockout 图上,全注意力各层对各相位贡献差不多;压缩模型里不同 head 专攻不同相位。W8/S8 参考模型的第 9、10、14 层 gate 分别偏向窗口后段、中段、前段,value gate 比 key 晚一个 offset,像在记 bigram。这些 head 被敲掉时,掉点正好落在它们偏好的相位上。把 offset 专属 gate 参数循环平移 k 步,窗口内准确率图案大体跟着平移。
核心结论是一个评测漏洞。均值可以看起来和全注意力差不多,同时某些相位接近不可用。任何用了固定 stride 分块压缩 KV 的模型,评长上下文检索时都应该扫一遍相位:固定被查信息,把输入平移几个 token。
对训练方,gate 的静态集中说明模型会在不知道未来 query 的情况下,把检索工作按相位拆给不同 head。想把弱区抹平,可能需要显式协调 head 之间的覆盖,不能只堆平均准确率。对使用方,同一条 prompt 前面加几行注释,补全和对检索的对错都可能翻面。DeepSeek-V4 的代码补全例子已经是这个形状。
机制结论主要站在受控预训练模型和理想化 induction 任务上,并不构成对大型异构模型里相位敏感的普适因果。Gate 循环平移修不了跨窗口边界的那个相位,边界切开和窗口内不对称还没有统一解释。理论结果保证每个 head 会静态选一条路线,不保证不同 head 选不同路线,覆盖缺口可以一直留着。
NIAH 是单 token、key 紧挨 value 的人造检索;代码补全只有少数例子。论文自己把真实应用里的鲁棒性问题,例如拒绝或服从会不会跟着相位走,留给后续。没有给出把相位抹平、同时保住压缩比和平均性能的方法。