当下,大模型提供商军备竞赛如火如荼 地展开,上下文窗口(context window)是角逐的热点。窗口大小从最开始的2k一路刷新,当下已经来到了200k的水平。Anthropic算是最早主攻长窗口的大模型公司,早在去年5月份就将大小刷新到100k,一度引发行业热议。
但这个“卷王”前段时间新发布了模型Claude 2.1提供高达200k的上下文窗口超过短暂领先的百川智能Baichuan2-192K模型,再度登顶世界。不过,与此同时也引发了一个不小风波。这一风波来自于大模型领域技术大佬 Greg Kamradt的一个推文。他的推文声称经过他的测试,发现该模型有效的context window大小仅有90k,有注水嫌疑,一时给该公司不小的压力。
这个推文,不仅让大家意识到模型上下文窗口并不是简单看数字,更关键是要名副其实(这一点和“卷”手机参数有点相似)。更重要的是,大家知道了“大海捞针(Needle in the Heystack)”这样的大模型上下文窗口的“照妖镜”。这个实验最早是Greg Kamradt用来测试gpt-4 128k上下文窗口检索质量的设计的。所谓大海捞针(Needle in the Heystack)实验,是为了验证模型上下文窗口扩大对模型性能的影响而设计的,其大概思路是研究者会在一个长上下文窗口(相当于“大海”)中随机选择一个位置,插入一个与上下文内容无关的句子(事实或描述,相当于“针”)。然后向模型提出问题,观察模型是否能够准确地从文本中提取出这个隐藏的句子。这个实验的目的是测试模型在处理大量信息时的检索能力和准确性。
具体到测试Claude 2.1的实验是这样设计的,Greg Kamradt在实验中使用了Paul Graham的文章合集作为文本语料,放置在上下文中,并在这些文本的不同位置插入了一句话:“The best thing to do in San Francisco is eat a sandwich and sit in Dolores Park on a sunny day.” 然后,他针对不同长度的文本(从1K到128K,200K)进行了多次实验,以测试模型在不同文本长度下的表现。
他已将代码开源,读者可以在此(https://github.com/gkamradt/LLMTest\_NeedleInAHaystack)查阅。
GLM-4的发布会中有关“大海捞针”实验的表现
经此一役,“大海捞针”实验变得家喻户晓,大模型公司发布新模型都不得不增加这一实验指标,打消大家的认为“可能作假”的疑虑。
G reg Kamradt关于“大海捞针”实验的介绍:
本文部分内容 摘自 《探秘大模型应用开发》。