32k上下文可商用!羊驼进化成长颈鹿,“开源大模型之最”

原来仅4k

丰色 发自 凹非寺

量子位 | 公众号 QbitAI

号称“世界首个上下文长度达32k的开源可商用大模型”来了。

名字“简单粗暴”,就叫“长颈鹿”(Giraffe),基于130亿规模的Llama-2打造。

32k上下文可商用!羊驼进化成长颈鹿,“开源大模型之最”

如作者所言,原始的Llama-2和Llama-1都只有4k上下文,很难真正在企业领域被商用。

而现在这个是其8倍的“Giraffe”,直接改变这一局面:

能够一次处理更大文档、维持更长时间对话、执行更复杂检索且结果出错更少……在开源大模型界中,可谓真正的商业/企业友好。

网友纷纷表示:“太有用了”、“马上就要试试”。

32k上下文可商用!羊驼进化成长颈鹿,“开源大模型之最”

所以,长颈鹿是如何从羊驼“进化”而来的?

扩充上下文长度的探索

长颈鹿的作者来自Abacus.AI

这是一家搞AI数据科学平台的初创企业,成立于2019年,已完成5000万元C轮融资。

32k上下文可商用!羊驼进化成长颈鹿,“开源大模型之最”

为了扩展开源模型的上下文长度,他们将目前最突出的已有方法整理在一起,并进行彻底测试确定出最有效的方法。

在此之上,他们也提出了一些新思路,其中一种称为“截断(truncation)”,它表现出了不小的潜力。

32k上下文可商用!羊驼进化成长颈鹿,“开源大模型之最”

具体来看:

首先团队发现,目前已有的长下文外推方法普遍都是通过修改注意力机制中使用的位置编码系统,指示token和activation在输入序列中的位置而完成。

包括线性缩放/位置插值、xPos、随机化位置编码等等。

在此,他们提出了两种新方法。

一个叫Power Scaling,主要是对原始的RoPE编码进行了如下变换:

32k上下文可商用!羊驼进化成长颈鹿,“开源大模型之最”

这使得基础的高频(短距离)元素比低频(长距离)元素受到的影响更小,让模型不得不对低频元素进行不那么复杂的外推,从而让整体得到提升。

另一个方法叫Truncated Basis(也就是上面所说的“截断”),主要是对原始RoPE编码进行了如下变换:

32k上下文可商用!羊驼进化成长颈鹿,“开源大模型之最”

其中ρ是一个相对较小的固定值,a和b是选定的截止值。

作者在这里的想法是,保留basis的高频分量,但将低频分量设置为恒定值(比如0)。

而通过明智地选择截止值a,模型就可以在微调期间(由于正弦函数和正弦函数的周期性)经历上下文长度中的所有basis值,从而更好地外推到更大的上下文长度。

接下来,便是对以上这些方法进行彻底测试。

在此,作者认为,很多人只用困惑度来衡量模型的长下文能力是远远不够的,因为它的细粒度不够。

为此,除了困惑度,他们还加了三个新的评估任务(都已公开发布到HuggingFace之上):

FreeFormQA、AlteredNumericQA和LongChat Lines,其中前两个是一类,为问答任务,第三个为关键值检索任务。

通过使用这两种类型的任务,我们能够强制要求模型更加关注完整的上下文,从而获得高精度的测试结果。

那么结果如何?

直接上结论:

首先,线性插值是最好的上下文长度外推方法。

其次,所有上下文长度外推方法都随着长度的增加,在任务准确性上出现了下降。

第三,通过在评估阶段使用比微调时更高的比例因子,可以进一步增加上下文长度,但比例因子似乎最多只能提高2倍。

以下是这些方法在三个评估数据集上的具体表现(精度为1.0表示性能完美,0.0表示每次评估都是错误的):

32k上下文可商用!羊驼进化成长颈鹿,“开源大模型之最”

△LongChat Lines

32k上下文可商用!羊驼进化成长颈鹿,“开源大模型之最”

△AlteredNumericQA和FreeFormQA

可以看到,除了佐证上面的结论,作者们新提出的Truncated Basis方法表现确实不错,有一定的前景。

而基于以上研究,团队也在LLaMA2-13B基础模型上发布了长颈鹿大模型,当然,用的是性能最优的线性插值法。

根据上下文长度不同,长劲鹿家族最终一共有三个版本:4k、16k和32k,感兴趣的朋友就可以去HuggingFace上下载了。

32k上下文可商用!羊驼进化成长颈鹿,“开源大模型之最”

其实是并列第一

虽然Abacus.AI号称长颈鹿是世界首个上下文可达32k的开源LLM,但Together.AI其实更为抢先一步:

他们已在本月初发布了32k的Llama-2-7B大模型(已有近1万7千次下载),以及在上周五发布了llama-2-7b-32k-instruct

32k上下文可商用!羊驼进化成长颈鹿,“开源大模型之最”

大家的上下文长度一样,唯一的大区别是Together.AI的参数规模要小些。

现在,大伙也好奇能不能出一个对比,看看究竟谁更胜一筹。

32k上下文可商用!羊驼进化成长颈鹿,“开源大模型之最”

论文地址:
https://arxiv.org/abs/2308.10882
友情链接:
https://huggingface.co/abacusai/Giraffe-v2-13b-32k
https://huggingface.co/togethercomputer/LLaMA-2-7B-32K
https://huggingface.co/togethercomputer/Llama-2-7B-32K-Instruct
参考链接:
https://twitter.com/bindureddy/status/1694126931174977906

版权所有,未经授权不得以任何形式转载及使用,违者必究。