文本到文本的大型语言模型(LLM),如OpenAI的ChatGPT、Meta的Llama 2和Anthropic的Claude 2,一直以来都是硅谷和企业技术界关注的焦点,但总体而言,它们都面临着一些相同的挑战。
其中一个挑战是在与用户进行单个对话时始终保持高质量的性能,即在对话的中间和结尾部分,LLM提供的回复与开始时一样有帮助、快速和相关,无论对话持续多长时间或者涉及多少次对话交流。
这是因为LLM在训练时是基于一定长度的数据块或序列进行预训练的,Llama 2和其他许多领先的LLM是每个序列4,000个标记。
一旦用户的标记数超过这个长度,即使是跨多个不同的提示进行输入,LLM的性能就会下降,也就是说,回复的质量会变差。对于希望让LLM以开放式方式帮助客户或员工的企业来说,这是不可接受的。
最近由来自Meta、麻省理工学院(MIT)和卡内基梅隆大学(CMU)的研究人员发表的一篇新论文发现,有一种简单的方法可以帮助LLM保持其性能,即使在用户的提示总长度超过LLM一次处理的训练长度之后。
他们开发的这个名为“StreamingLLM”的新框架用于训练和部署LLM的推理,为其他AI研究人员和希望使用LLM来辅助业务的企业提供了一些重要的发现。
StreamingLLM试图解决的问题
与人类客户支持专员或公司内部的IT技术人员进行互动的人都知道,解决问题通常需要进行长时间的对话和多次消息交换。
但无论你是客户还是员工,你都希望负责帮助你的人在整个交流过程中始终保持响应、知情和有帮助。如果突然在对话的深入部分,你已经花费时间和精力解释问题的地方,你的帮助者开始回复一个词、变得更慢或不提供你所需的信息,那会非常令人沮丧。
尽管一些人可能因为分心、缺乏动力或对对话感到疲劳而存在这个问题,但对于LLM而言,这是普遍性的问题,因为一旦与它们的对话超出了LLM的"上下文窗口"的长度限制,它们的性能就会下降。LLM的上下文窗口是LLM一次响应的最大标记数,并且在预训练中使用该数值。即使大多数LLM都设计为处理可能持续多行的开放式对话,这仍然是真实存在的问题。
即使每一行文本都适合LLM的上下文窗口,事实上大多数LLM都有一个上限,限制了你可以在单个消息中输入的文本量,但多个消息在单个对话中的累积会使标记数超过LLM最初的预训练上下文窗口的数量,从而导致LLM在此点之后的性能下降。
这就好像当你与人类客户支持代理人交谈时,如果你在几个句子中输入的单词数量达到某个你并不知道的限制时,他们突然变得更愚蠢和不专注。
StreamingLLM框架的研究人员在论文中总结了这个问题:“例如,一个理想的聊天机器人助手应该能够稳定地处理最近长达一天的对话内容。然而,要让LLM推广到比其预训练时更长的序列长度是非常具有挑战性的。"
虽然扩展预训练LLM的标记序列的长度是可能的,而且已经有许多研究人员这样做了,但无法预测与给定用户的独特对话会持续多长时间。
那么,当一个LLM有一个固定的上下文窗口长度用于预训练时,无论它有多长,如何使其在多个消息中超过该长度后仍能保持性能呢?
研究人员开发的解决方案
研究人员开发了一种创新的解决方案,用于在对话中的信息量超过预训练序列中使用的标记数量后维持LLM的性能。
研究人员发现LLM在对话或训练的早期更加关注它们被激发出来的标记。
他们写道:"令人惊讶的是,大量的注意力分数分配给了初始标记。"这是为什么呢?
他们解释说:"由于自回归语言建模的连续性质,初始标记对所有后续标记都是可见的,而后续标记只对有限的一组后续标记可见。"他们写道:"因此,初始标记更容易被训练为注意力接收器,捕获不必要的注意力。"
换句话说,无论你在与LLM进行对话时首先提供什么内容,它都将在后续的提示和回复中使用,但你后来提供的内容可能不是LLM选择关注或引用的。
然而,研究人员发现,如果用户在对LLM的后续对话中提供一些初始标记,在后续的回复中,这就足以将LLM的性能恢复到接近峰值状态。
还记得前面提到的人类客户支持类比吗?想象一下,如果通过在对话后期再次说出你在开始对话时说的四个神奇单词,你可以突然使他们在以后的对话中提供高质量的回答。
研究人员适当地将抓住LLM大部分关注的这些初始标记称为“注意力接收器”,并指出对于大多数LLM而言,“引入四个初始标记作为注意力接收器足以恢复LLM的性能......只添加一个或两个并不能完全恢复" 。
通过在用户的每个后续提示中重新引入注意力接收器标记,研究人员能够在由4百万个标记组成的提示中保持LLama 2和Falcon 40B等主要模型的性能(与最初的4,000个标记的上下文窗口相比,这是1000倍的增加), 并将其后续回答的速度提高了22.2倍。
换句话说,Streaming LLM“使训练有限注意窗口的LLM能够在无需微调的情况下处理无限长度的文本。"重要的是,这个"无限"长度的文本仍然需要以其上下文窗口大小限制为基础被传送给LLM。不过,这意味着LLM可以与某人进行永无止境的对话,并在整个过程中保持其性能(理论上)。
一个标记来统治它们
研究人员进一步假设并证明,实际上只需要添加一个特殊的标记作为LLM的“注意力接收器”,并且通过手动或自动(在用户或员工面临的LLM背后)在后续对话中重新引入此标记,LLM的性能可以继续保持高水平。
研究人员解释说:"引入一个接收器标记对于稳定注意力机制非常有效。将此接收器标记与最近的标记配对足以使模型的性能稳定......鉴于这些发现,我们建议在所有样本中使用接收器标记来训练未来的LLM,以优化流式部署。"
在被问及具体应使用哪些数据作为注意力接收器时,论文作者之一、麻省理工学院的Guangxuan Xiao在一封电子邮件中写道:“注意力接收器'可以是任何初始标记;更注重的是它们的位置而不是语义......这不是特定的词语或概念;即使是没有语义意义的标记(例如,换行符"\n")也可以有效地使用"。
至于研究人员希望StreamingLLM用于何种用途,Xiao表示:“我们设计StreamingLLM用于连续应用,如多轮对话。这在需要模型持续运行而不过度依赖过去数据的用例中非常完美。每日助手LLM就是一个典型例子。使用我们的方法,模型可以持久存在,并从最近的互动中获取信息,不再需要频繁刷新缓存。”
然而,研究人员也明确指出了他们工作的局限性,并且小心强调StreamingLLM并没有扩展LLM的上下文窗口,这与X(前Twitter)上对他们工作的一些炒作相反。它也不能保证LLM会记住对话的每个时刻说的所有内容。
Xiao表示:“事实上,我们既没有扩展LLM的上下文窗口,也没有改进它们的长期记忆力。"