CodexQA

Industry & PracticeResearch & Benchmarks

平均分会藏住位置:分块 KV 压缩的相位差

CodexQA 团队9 min read

字节 Seed 用 128K 大海捞针和从零预训练说明:分块 KV 缓存压缩会让同一信息在不同压缩相位上的检索准确率相差最多约 40 个百分点,平均分盖不住这些周期性弱区。

In this piece

平均分会藏住位置:字节 Seed 测出分块 KV 压缩的相位差

字节跳动 Seed 团队在 2026 年 9 月 28 日提交的论文指出,分块 KV 缓存压缩会给每个 token 多一个位置坐标:相位,也就是它相对压缩窗口边界的位置。同一段信息在一个相位上容易被找回,换到另一个相位就可能很难。作者把这种随相位周期变化的检索表现叫做相位敏感(phase sensitivity)。在带这种压缩的大型开源权重模型上,128K 长上下文检索的准确率,跨相位最多可以差到约 40 个百分点。平均基准分可以把这些周期性弱区盖住。

论文测的开源对象是 DeepSeek-V4 系列。DeepSeek-V4 不是这篇论文的作者单位;作者单位是 ByteDance Seed。压缩本身发生在上下文被读入的时候,查询还没出现,所以每个窗口摘要都不知道以后要问什么,必须先把可能用到的信息留下来。

相位是什么,为什么平均分不够

长上下文推理的瓶颈之一是 KV 缓存:显存和注意力开销都随上下文变长。分块 KV 缓存压缩把连续 token 按固定窗口收成更少的缓存条目,再用这些摘要做长上下文检索。新窗口每隔 S 个 token 开始一次,S 就是压缩步长(stride)。相位定义为位置对 S 取模。只把输入平移几个 token,内容相对顺序不变,但哪些 token 被压进同一个窗口会变,保留下来的保真度也可能变。

作者因此认为,评这类模型不能只报一个平均准确率。至少要把输入平移几个 token、被查询的信息保持不动,把各个压缩相位都量一遍。高平均准确率可以和系统性的位置失败同时存在。

先看一个会周期性翻面的补全

第一节用代码补全当动机例子,而不是直接上检索表。他们让 DeepSeek-V4-Flash-Base 补全 DeepSeek-V4 官方推理代码里一处类型转换。提示停在 FP,原文下一词是 8:函数在做 FP8 量化,外层已经转到 FP32,补成 32 会重复外层转换并跳过舍入。

为了只改位置、不改代码,他们在前面加一段装饰性文档字符串,用第二行重复的 = 改变长度。填充长度 L 从 24 到 39,共 16 档,每加一个 token,后面的代码和补全位置就平移一格。结果是 top-1 按周期翻转:当 L 对 4 取模属于 {2, 3} 时,模型更倾向正确的 8;属于 {0, 1} 时,更倾向错误的 32。两组各自 8 个长度上,平均概率大约是:前一组 P(32) 为 0.713、P(8) 为 0.264;后一组 P(32) 为 0.072、P(8) 为 0.915。P(8) 减 P(32) 的范围从 −0.79 到 0.95。翻转每两个 token 换一次偏好、每四个 token 重复,正好对上 DeepSeek-V4 压缩稀疏注意力(CSA,Compressed Sparse Attention)的步长 S = 4。

这个翻转不限于一种填充。附录里测过的四种填充族,多数预测都跟着同一个四 token 模式走。后训练的 DeepSeek-V4-Flash-0731 和 DeepSeek-V4.1-Flash 在若干填充扫描里也有周期性翻转,步长分别是 S = 4 和 S = 2。作为对照,没有分块 KV 压缩的 DeepSeek-V3.1-Base,在同样 64 个输入里只有 4 个把 32 排在 8 前面,而且差距很小。作者把精确输入、其他模型和另外两个代码补全例子放在附录 B,正文没有把它们写成已经覆盖真实业务请求。

128K 检索:同一绑定,只改源键相位

第二节把现象收成可控的键值检索。对步长 S,从位置 t 开始的键值对,相位是 t 对 S 取模。若准确率或正确答案概率随源信息的相位系统变化,就叫相位敏感。

评测对象是 DeepSeek-V4-Flash 与 DeepSeek-V4-Pro 的基座和后训练版本,以及后训练的 DeepSeek-V4.1-Flash。任务是单 token 的大海捞针(NIAH,needle-in-a-haystack)。每条提示长 128K token,里面放 1.6 万对键值,询问靠近中部的一个源键。提示按源键位置对 8 取模分成八组:对步长为 4 的 V4 覆盖两个周期,对步长为 2 的 V4.1 覆盖四个周期。各组提示长度、查询位置和键值绑定相同,填充长度被选成使源键绝对位置的均值和方差在每组都一样。判定正确的标准是:去掉空白后,回答以前缀形式以金标取值开头。

图 2 给出的最好到最差相位差是:

  • DeepSeek-V4-Flash 基座 40.2 个百分点,后训练 0731 收到 19.1 个百分点。
  • DeepSeek-V4-Pro 基座 34.8 个百分点,后训练 0813 收到 14.8 个百分点。
  • DeepSeek-V4.1-Flash(后训练 0910)最小,6.1 个百分点;但四个偶数残差组仍然全部高于四个奇数残差组。

附录 C.1 补了均值:上述四个 V4 检查点按八个残差组平均的答案前缀准确率分别是 52.6%、91.4%、72.1% 和 84.4%,对应差值 40.23、19.14、34.77、14.84 个百分点。因为八组盖住步长 4 的两个周期,同一模型上残差 r 与 r+4 的绝对准确率差,对 r 属于 {0,1,2,3} 取平均后,四个模型落在 1.07 到 1.95 个百分点,和大约四 token 一次的重复一致。V4.1-Flash 每个残差组 2,560 条提示,平均准确率 92.38%,最好最差差 6.09 个百分点。图中阴影是双侧 95% Wilson 区间。后训练抬高了准确率、缩小了差距,但 V4 后训练模型的差距仍然大,平均分仍然盖不住相位差。

从零预训练:压缩是不是原因

DeepSeek-V4 和标准 Transformer 的差别不只压缩这一项,作者也不能把官方模型拿掉压缩再训一遍。第三节改为从零预训练一组模型:骨干是 Qwen3-0.6B 架构,唯一实质性改动是 KV 压缩,并配上同样训练方式的全注意力基线。每个压缩核把一个窗口收成每个 KV 头的一个键和一个值。载荷映射决定每个 token 贡献什么,压缩门决定它以多大力度进入摘要。标量门把各维一起加权,向量门按维分开加权。

参照模型每层一个 KV 头,不重叠的八 token 窗口,标量门,记为 W8/S8。窗口宽 W 决定一条摘要覆盖多少 token,步长 S 决定多久产出一条。二者分开变,用来看周期跟的是窗口还是步长,以及重叠窗口(S 小于 W,一个 token 可以出现在多个偏移上,相位仍固定)能不能消掉这个效应。把可学习门换成均匀平均(每个门分数固定为 1/W),用来看相位敏感是不是必须靠学出来的门。家族里也包括 DeepSeek-V4 的 CSA 核,看第二节那种核放到 Qwen 骨干上会不会仍然相位敏感。

评测改成 64 对随机键值,键和值都是相邻的单 token,报告全词表的下一个 token 准确率。Prefix Padding 用外层填充把整段记录一起平移,干扰项的相位会和目标一起动。In-sequence Padding 改记录之间的间隔,让干扰项不再和目标锁步。两种协议都固定查询位置,并让源键位置对 24 取模的各组在目标位置抽样上均值、方差对齐。24 是所测步长 4、6、8、12 的公倍数。附录里每个逻辑样本构造全部 24 个残差,1,000 个逻辑样本共 24,000 条提示。候选限制在 64 个名字上时,均匀乱猜的机会是 1/64。

周期跟着步长,全注意力基线是平的

如果相位敏感来自分块压缩,压缩模型应该有、全注意力基线不应该有。图 3 就是这个对照:每个压缩模型都随源键相位周期变化,包括 DeepSeek 风格的核;全注意力基线保持平坦。表 8 里每一次压缩运行都如此。Prefix Padding 下,压缩模型的相位差最高到 78 个百分点,基线最多 6.1 个百分点。

平均指标会把差别藏掉一大块。八个 KV 头时,W8/S8 压缩模型的平均准确率和验证损失都接近全注意力基线,最差残差却只有 9.9%,基线是 58.4%。一个和四个 KV 头时,压缩模型在相近验证损失下平均准确率甚至高于基线。图 3 标出的验证损失大约是:全注意力 1/4/8 头分别为 2.466、2.448、2.437;W8/S4 为 2.467,相位差 39.8 个百分点;W8/S6 为 2.470,差 31.9;W8/S8 为 2.478,差 75.3;W12/S12 为 2.487,差 63.2。向量门、键值绑定、去掉旋转位置编码(RoPE)、DeepSeek-V4 门、尾部拼接的滑动窗口等消融,相位差仍在约 33.9 到 40.9 个百分点。

窗口和步长分开变之后,在测过的几何里,周期跟着步长,重叠与否都一样。W = 8 时,S 取 4、6、8,周期大约是四、六、八个 token。W4/S4 和 W8/S4 都是大约四 token 周期,尽管窗口更小。W12/S12 大约是十二 token。相位敏感既不依赖 RoPE,也不依赖可学习门:去掉 RoPE、把门换成均匀平均,效应还在。附录 F 把结果扩到不同头数、随机种子和其他变体,以及 In-sequence Padding,所以不要求所有记录一起平移。

窗口边界也解释不全。W8/S8 里,只有相位 7 的键会让值落到下一个窗口。但相位 0 到 6 的键值对都在同一个窗口里,准确率仍然可以差 50 个百分点以上(图 3d)。边界没有吃掉整条曲线。作者据此去看模型怎样把信息写进压缩记忆、再怎样读出来。

相位分工:关掉单个 KV 头

相位分工(phase specialization)指:某些头对检索的贡献随相位系统变化,不同头对不同相位上的信息不对称地出力。定义本身不预设原因是跨窗口还是窗口内部。

测量方法是一次关掉一个 KV 头,看准确率掉在哪些相位。他们用均值替换:把被干预位置的输出换成该头在许多其他提示上的平均输出,使它不再携带当前提示特有的信息,例如被查询的键对应哪个值。某一相位上准确率下降,就被当作该头的提示特异输出对该相位检索有因果贡献的证据。预训练模型上,替换的是在最后位置读取该 KV 头的查询头输出,均值来自与评测集不相交的另一批提示。

正文的结论是:预训练模型和 DeepSeek-V4-Flash-Base 里都能看到这种不对称。第 4.2 节再看一种更尖的形式。压缩门决定窗口内每个偏移有多少权重进入压缩条目。在门可以按位置学出不同偏好的预训练模型里,有些头在预训练过程中形成跨输入反复出现的偏好;干预效应在它们偏好的相位附近最强,说明被检查的这些头在分工做检索。理论部分用一个理想化的归纳任务说明:查询还未知时就做压缩,把窗口里的信息混在一起会削弱压缩键和后来查询的匹配;最优压缩器会偏向某些相位,梯度流会把门推向稳定的偏好。作者明确说,这不是注意力硬化或头分工的第一份理论,只针对「查询出现之前就选定压缩」这一设置。

这些数字不能被读成什么

机制结论在作者自己的可控设置里最强,并不能推出所有大型异构模型里相位敏感的统一原因。特别是,门循环不能补回边界相位(附录 H),跨边界和窗口内部这两种不对称还没有统一解释。能否让头和层显式配合,使各相位的检索质量更均匀,同时不牺牲平均表现或压缩效率,论文写成未决问题。

代码补全只记录了 DeepSeek-V4 和 V4.1 上的周期性错误,用来促使下一步去问:把请求在上下文里做保持语义的平移,会不会改变拒绝或遵从,并且这种变化是否跟着压缩相位走。作者把真实应用里的稳健性影响留作后续工作,没有在这篇里给出拒绝率或业务工单数字。128K NIAH 用的是可控键值对,不是开放域问答榜;从零预训练用的是 Qwen3-0.6B 骨干上的检索任务,不能把 75.3 或 78 个百分点的相位差直接套到 DeepSeek-V4 的 40.2 上,两组实验的模型、上下文和计分方式都不同。

出处:字节,Xingyu Zhu、Pu (Luke) Yi、Ziheng Cheng、Ang Lv、Jing Liu、Lexing Ying、Yiyuan Ma、Xin Dong,Periodic Weak Spots: Phase Sensitivity from Chunked KV-Cache Compression,2026-09-28,https://arxiv.org/abs/2609.36322

Found it useful? Pass it on

WeChat

Scan with WeChat to open it on your phone and forward it.

Subscribe via RSS

Submit a correction