字节发现DeepSeek-V4神鬼二象性:输入位置影响准确率

字节旗下Seed团队的研究人员发现,DeepSeek系列大模型展现出了一种诡异的“神鬼二象性”:同一道任务没有任何改动,仅在输入内容前添加几个无关字符,模型的输出结果就会出现巨大波动,而且这种现象绝非偶然。
研究人员首先针对DeepSeek-V4-Flash-Base模型开展了代码补全测试:截取一段FP8量化函数,要求模型补全最后一个Token,根据任务逻辑,正确答案应该是8,但模型有时却会输出32。
为了排查原因,团队在这段代码前添加了由重复等号组成的装饰性文档字符串,并调整等号的数量,也就是改变前置无关Token的长度。值得注意的是,代码本身、需要补全的位置以及正确答案都没有任何变化,唯一的变量就是前置的无意义Token长度。
测试结果显示,DeepSeek的答案出现了以4个Token为周期的反复横跳:当填充长度模4余0或1时,模型倾向于输出错误的32;当余数为2或3时,则会倾向于正确答案8。
团队还统计了模型为两个候选答案分配的概率:在部分位置,错误答案32的平均概率达到71.3%,而正确答案8仅为26.4%;换到另一组位置后,情况完全反转,正确答案8的平均概率飙升到91.5%,错误答案32只剩7.2%。这意味着,仅仅调整前置无关字符的长度,就足以让模型对同一任务做出截然不同的判断。
这种现象让程序员的调试流程多了一项额外的检查项:除了常规的逻辑、变量和依赖检查外,可能还要顺便看看代码前是不是多打了几个等号。
为了验证这种周期性现象的普遍性,团队将测试范围扩大到大模型长上下文能力的经典任务——“大海捞针”:构造一段长达128K Token的上下文,其中包含约1.6万个键值对,随后要求模型从中找出指定Key对应的Value。
测试过程中,键值关系、问题本身以及上下文总长度都保持不变,仅调整目标信息相对于压缩窗口边界的位置。结果显示,DeepSeek-V4系列模型的检索准确率曲线呈现出非常明显的周期性起伏。
其中DeepSeek-V4-Flash-Base在不同位置的最大准确率差距达到40.2个百分点,DeepSeek-V4-Pro-Base的差距也达到34.8个百分点。经过后训练的版本,这种差距有所缩小:DeepSeek-V4-Flash-0731的差距缩小到19.1个百分点,DeepSeek-V4-Pro-0813缩小到14.8个百分点,而更新的DeepSeek-V4.1-Flash-0910则进一步将差距降至6.1个百分点,但周期性差异依然存在。
进一步分析发现,DeepSeek-V4的波动周期为4个Token,而DeepSeek-V4.1的周期变为2个Token,这恰好对应两代模型各自采用的KV Cache压缩步长。
接下来我们来了解一下KV Cache压缩技术:大模型处理长上下文时,需要保存大量历史Token对应的Key和Value信息,供后续注意力计算使用。上下文越长,这部分缓存占用的内存和计算开销就越大,尤其是在动辄几十万、上百万Token的长任务中,KV Cache很容易成为推理效率的瓶颈。
为了解决这个问题,DeepSeek-V4采用了分块KV Cache压缩技术,其核心思路是将连续的Token划分为一个个窗口,再将窗口内的信息压缩为更少的缓存条目,这样模型就无需为每个历史Token保留相同规模的缓存,既节省了内存,也降低了长上下文注意力计算的成本。
但Seed团队的研究显示,DeepSeek出现“神鬼二象性”的根源就藏在这个分块压缩的过程中。假设每4个Token构成一个压缩步长,那么同一条信息出现在窗口的第1、2、3或第4个位置时,压缩时所处的条件就会有所不同。
研究人员将目标信息相对于压缩窗口边界的位置称为Phase(相位),并发现模型对不同相位的信息检索能力存在系统性差异,这种现象被他们命名为Phase Sensitivity,相位敏感性。
举个简单的例子:同样一份资料,第一种排版中关键数字恰好落在模型容易保留的位置;第二种排版仅在前面多加几个字,让关键数字相对于压缩窗口的位置发生变化,那么即使资料本身没有任何改动,模型后续能否准确提取出这个数字也会出现明显差异。
值得注意的是,这种问题不能简单归结为“信息刚好被切在两个窗口之间”。研究人员发现,即使Key和Value都落在同一个压缩窗口内,不同位置的检索准确率也能相差很大,这说明问题还涉及模型如何将信息写入压缩缓存,以及后续如何从缓存中读取信息。
为了进一步确认分块压缩与周期性现象的关联,团队基于Qwen3-0.6B架构从头训练了多批模型,构造了多种KV Cache压缩方案,并设置没有分块压缩的全注意力模型作为对照,仅改变压缩机制来观察周期性波动是否会出现。
测试结果显示,所有采用分块压缩的模型都出现了与压缩步长对应的周期性变化,而全注意力基线模型则没有出现同等程度的周期性。研究人员还分别调整了窗口大小和压缩步长,发现波动周期主要跟随压缩步长变化:步长为4时,周期约为4个Token;步长为6时,周期也变为约6个Token;步长为8时同样如此。
即使不使用RoPE位置编码,或者将可学习的压缩权重替换为简单平均,这种周期性现象依然存在。这说明问题并非由某个特定的位置编码或特殊模块单独造成,分块压缩这种设计本身,就可能引入周期性的检索弱点。
团队还对注意力头进行了干预,观察移除不同组件后模型在各个相位上的检索能力变化,结果发现不同注意力头对不同相位的信息贡献并不相同,也就是存在Phase Specialization,相位专门化:模型内部的注意力组件对压缩窗口的不同位置形成了偏好,这种分工可以帮助模型完成信息检索,但也可能让某些位置成为相对薄弱的环节。
通过简化的理论模型分析训练过程,研究人员发现梯度流可能推动压缩模块形成稳定的位置偏好,这也解释了为什么这种周期性并非简单的随机噪声,而是模型在学习如何压缩信息时自然而然形成的结果。
这类位置相关的性能偏差很难通过常规基准测试直接发现,因为常规评测通常会将大量测试结果汇总为一个平均分,即使模型在某些位置表现优异、在另一些位置明显掉队,最终的平均成绩可能依然不错。因此Seed团队提出,评估采用分块KV Cache压缩的模型时,不能只看整体检索准确率,还需要将同一条信息放到不同压缩相位上分别进行测试。
尽管存在这种位置带来的性能偏差,长上下文推理的内存和计算成本摆在那里,分块压缩仍然具有现实的应用价值。不过节省缓存之后,模型对不同位置的信息可能不再一视同仁。好在从本次实验结果来看,后训练和架构迭代确实能够明显缩小这种性能差距。
相关研究的论文地址:https://arxiv.org/pdf/2609.36322

