字节找到了DeepSeek时强时弱的原因

字节找到了DeepSeek时强时弱的原因

< img id="wx_img" src="https://www.qbitai.com/wp-content/uploads/imgs/qbitai-logo-1.png" width="400" height="400">

字节找到了DeepSeek时强时弱的原因

答不答得对,得看Token站位

量子位 | 公众号 QbitAI

DeepSeek的神鬼二象性被字节Seed团队逮到了。

同一道题,什么都没改,只在前面多塞几个无关紧要的字符,模型突然就不会了???

Seed研究人员发现,DeepSeek-V4的表现竟然会随着信息的输入位置,

每隔4个Token周期性变化

啥意思?模型记不记得住一件事,居然还要看这件事在输入里站哪儿??

前面多两个Token,答案可能从错变对,再多两个,又给你改回去。

好好好,模型答题也开始讲究站位了。

在128K长上下文检索测试中,研究人员发现,同一条信息只是换了个位置,DeepSeek-V4系列模型的检索准确率

最高就能拉开40.2个百分点

团队进一步发现,这个问题与DeepSeek-V4采用的一项长上下文优化技术有关——

分块KV Cache压缩

这项技术本来是为了让模型处理长文本更省内存、更高效。

结果压缩之后,倒让模型时神时鬼了(doge)。

多两个Token,DeepSeek突然就答对了

字节Seed研究人员最开始是拿DeepSeek自己的代码做了个实验。

DeepSeek-V4-Flash-Base

他们从DeepSeek-V4的官方推理代码中截取了一段FP8量化函数,让模型补全最后一个Token。

任务的正确答案应该是8,因为这段代码需要完成FP8相关的类型转换。

但模型有时偏偏觉得应该补成32。

为了搞清到底咋回事,研究人员在代码前面加了一段纯装饰性的文档字符串,里面放着一些重复的等号。

然后,他们开始调整等号的数量。

代码本身没改、要补全的位置没改、正确答案当然也没改……唯一的变化,就是前面多了这几个没什么实际意义的Token。

结果,DeepSeek的答案开始反复横跳。

当填充长度落在某些位置时,模型更倾向于回答错误的32。

往前挪一两个Token,又开始倾向于正确的8。

再继续挪,错误答案又回来了——

整个过程以4个Token为周期重复

更具体地说,在论文测试的16种填充长度中,当长度模4的余数为0或1时,模型倾向于错误答案32;余数为2或3时,则倾向于正确答案8。

研究人员还统计了模型给两个候选答案分配的概率。

在一组位置上,错误答案32的平均概率达到71.3%,正确答案8只有26.4%。

换到另一组位置,情况直接反过来:

正确答案8的平均概率升到91.5%,错误答案32只剩7.2%。

也就是说,前面几个无关字符的长度变化,足以让模型对同一道题产生截然不同的判断。

程序员调试代码,通常先检查逻辑、变量和依赖。

现在看来,可能还得顺手检查一下,前面是不是多打了两个等号。

不过单个代码补全案例,还不足以说明问题有多普遍。

于是Seed团队继续扩大测试。

他们把目光转向大模型长上下文能力里很经典的一项任务,

研究人员构造了一段长达128K Token的上下文,里面包含约

比如K1对应V1,K2对应V2……

然后让模型从中找出指定Key对应的Value。

测试过程中,键值关系不变,问题不变,上下文总长度也保持一致。

目标信息相对于压缩窗口边界的位置

结果发现,DeepSeek-V4系列的准确率曲线,竟然呈现出非常明显的周期性起伏。

其中DeepSeek-V4-Flash-Base在不同位置之间的最大准确率差距达到40.2个百分点

DeepSeek-V4-Pro-Base也达到34.8个百分点。

作者 AI采集