四行代码让大模型上下文暴增3倍,羊驼Mistral都适用

短文本能力也未损失

克雷西 发自 凹非寺

量子位 | 公众号 QbitAI

无需微调,只要四行代码就能让大模型窗口长度暴增,最高可增加3倍!

而且是“即插即用”,理论上可以适配任意大模型,目前已在Mistral和Llama2上试验成功。

有了这项技术,大模型(LargeLM)就能摇身一变,成为LongLM。

四行代码让大模型上下文暴增3倍,羊驼Mistral都适用

近日,来自得克萨斯农工大学等机构的华人学者们发布了全新的大模型窗口扩展方法SelfExtended(简称SE)。

在Mistral上,研究者在24k长度的文本中随机插入5位数字让模型搜索,结果经SE处理后,呈现出了全绿(通过)的测试结果。

而未经处理的版本,在6k长度时就已经开始“见红”了。

四行代码让大模型上下文暴增3倍,羊驼Mistral都适用

GitHub Copilot主创Alex Graveley也激动地宣布,在Llama2上进行的实验同样取得了成功。

四行代码让大模型上下文暴增3倍,羊驼Mistral都适用

在网友的进一步询问之下,Alex解释了推文中“work”的具体含义:原先在4k长度时就会出现的噪声,现在已经消失了。

四行代码让大模型上下文暴增3倍,羊驼Mistral都适用

而对于SE窗口长度的极限,一位根据论文复现SE代码的大佬表示,理论上(只要算力足够)可以达到无限长。

四行代码让大模型上下文暴增3倍,羊驼Mistral都适用

那么,SE具体能达到什么样的效果呢?

长文本能力显著增强

在窗口长度从4096增长到16384的过程中,Llama 2的困惑度从一开始变飙升了两个数量级。

但使用SE后,文本长度变成了原来的4倍,困惑度却只增加了0.4。

而在Mistral上,SE比Mistral自身采用的滑动窗口(SWA)机制带来了更低的困惑度。

四行代码让大模型上下文暴增3倍,羊驼Mistral都适用

△左下图使用对数坐标

在专为长文本模型设计的LongBench数据集中,SE处理后的模型在单/多文档问答、总结、少样本学习、代码等任务中,评分均相比起原始版本有所提升。

特别是在一个名为SOLAR的模型上,处理后的模型在16k长度下的表现比原始版本在4k长度下的表现还要优异。

SOLAR由两个羊驼掐头去尾拼接而成,这种拼接的方式,使得其注意力层结构与其他基于Transformer的模型形成了一定差异。

四行代码让大模型上下文暴增3倍,羊驼Mistral都适用

同时,在GSM等由考试题组成的闭域问答任务中,SE优化后的模型也都相比原始版本取得了更高的平均成绩,在Mistral上稍逊于其自身的SWA方法。

四行代码让大模型上下文暴增3倍,羊驼Mistral都适用

而长文本能力的增强,并没有带来模型在短文本上的能力下降。

在HuggingFace的OpenLLM基准下,SE版Llama2的测评成绩相比原版均为发生显著降低。

四行代码让大模型上下文暴增3倍,羊驼Mistral都适用

目前,SE的开箱即用版支持Phi、Llama和Mistral三种模型,在这三种模型上只需4行代码就能进行窗口扩增。

对于其他模型,则需要对代码进行一定修改。

四行代码让大模型上下文暴增3倍,羊驼Mistral都适用

那么,SE是如何给模型增加窗口长度的呢?

两种注意力机制共同作用

研究者认为,长文本能力是大模型本身就具有的,但需要通过一定方法激发才能实现。

其中最主要的问题是,大模型在处理长文本时,会遇到相对位置编码超出训练时所见范围的情况。

针对这一情况,作者采用了FLOOR注意力机制作为解决策略。

FLOOR对输入的文本序列进行分组,然后用组数对某一token的绝对位置做取整除,就可以长距离将映射到较短的范围。

然后,对这些映射值进行注意力运算,就解决了位置编码超限的问题,实现了长文本的处理。

四行代码让大模型上下文暴增3倍,羊驼Mistral都适用

而在处理中短长度文本时,仍然使用模型原有的注意力机制,从而确保了模型不会“顾此失彼”,避免因长文本能力的增长导致短文本能力损失。

此外,在Mistral上复现SE的作者还坦言,目前该模型并不完美,可能存在计算量暴增的问题。

四行代码让大模型上下文暴增3倍,羊驼Mistral都适用

同时,SE的原作者也说,目前SE方法的确还没有做过效率方面的优化,未来计划通过引入FlashAttention机制等策略来解决这一问题。

四行代码让大模型上下文暴增3倍,羊驼Mistral都适用

论文地址:
https://arxiv.org/abs/2401.01325

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