我们如何在流式应用中高效部署大型语言模型?这篇人工智能论文介绍了适用于无限序列长度的StreamingLLM框架

流式应用中高效部署大型语言模型的方法探究:适用于无限序列长度的StreamingLLM框架 - 一篇人工智能论文的介绍

“`html

大型语言模型(LLMs)越来越多地被用于驱动自然语言处理应用,包括代码补全,问题回答,文档摘要和对话系统。预训练的LLMs必须能够精确快速地执行扩展序列创建,以发挥其全部潜力。例如,理想的聊天机器人助手可以可靠地编辑最近一整天的聊天内容。对于超过它们预训练的更长序列长度的泛化(比如Llama-2的4K),对LLM来说非常困难。由于预训练过程中的注意窗口,LLMs受到限制。

尽管已经进行了大量的尝试来增加窗口大小,提高长输入的训练和推理效果,但仍然需要重新考虑允许的序列长度,这阻止了永久部署。麻省理工学院,Meta AI和卡内基梅隆大学的研究人员最初在这项研究中讨论了LLM流媒体应用的想法,并提出了以下问题:当使用LLMs进行无限输入流时出现了两个主要问题:

1. 基于Transformer的LLMs在解码阶段缓存所有先前标记的键和值状态(KV),如图1(a)所示,这可能导致过多的内存使用和解码延迟的增加。

2. 当序列的持续时间超过预训练期间确定的注意窗口大小时,现有模型的性能会受到影响。

图1比较了StreamingLLM与先前的技术。语言模型预测第T个标记(T >> L),其已在长度为L的文本上进行了预训练。 (a)密集注意力具有不断增长的缓存容量和O(T ^ 2)的时间复杂度。当文本长度超过预训练文本长度时,性能会受到影响。(b)窗口注意力将新近L个标记的键和值存储在其缓存中。尽管推理性能良好,但在删除初始标记的键和值时,其性能迅速下降。对于每个新的标记,(c)滑动窗口与重新计算使用最近的L个标记重建KV状态。尽管在处理长文本方面表现出色,但由于O(T L ^ 2)的复杂性和在上下文重新计算中的二次注意力,该技术非常缓慢。 (d)为了稳定的注意力计算,StreamingLLM保留了注意力汇(一些初始标记)以及最近的标记。它在处理长文本时有效且一致。在PG-19测试集中,使用Llama-2-13B模型计算第一本书(65K个标记)的困惑度。

窗口注意力是一种明显的策略,它保持在最近标记的KV状态上具有固定大小的滑动窗口(图1b)。即使仅仅驱逐第一个标记的KV,当序列长度超过缓存容量时,模型也会崩溃,即使在首次填满缓存后,它保证了一致的内存使用和解码性能。另一种策略是带有重新计算的滑动窗口(图1c),它为每个创建的标记重建最近标记的KV状态。由于其窗口内的二次注意力计算,这种技术的计算速度较慢,即使性能良好,也不适用于现实世界的流媒体应用。

他们发现了自回归LLMs的有趣现象,以解释窗口注意力的失败:即使与语言建模任务无关,初始标记仍被分配了令人惊讶的高注意得分。这些标记被称为“注意力汇”。尽管它们没有太多的语义价值,但它们获得了较高的注意得分。这是因为Softmax操作要求所有上下文标记的注意得分总和为1。因此,即使当前查询在许多较早的标记中没有很好的匹配,模型仍必须分配这些额外的注意值,以使总和为1。

“`

初始 token 作为注意力汇聚点的原因很简单:由于自回归语言模型的特性,它们对于事实上所有后续 token 都是可见的,这样使得训练变得更加容易。鉴于上述发现,他们建议使用 StreamingLLM,这是一种简单而有效的架构,使具备有限注意力窗口的 LLMs 能够在文本长度不确定的情况下工作,而无需进行微调。由于注意力消散具有很高的注意力值,StreamingLLM 利用这一属性以保持注意力分数分布相对均衡。StreamingLLM 维护滑动窗口和注意力汇聚点 token(只需四个初始 token)的 KV,以锚定注意力计算并稳定模型的性能。

在 StreamingLLM 的帮助下,像 Llama-2-B、MPT-B、Falcon-B 和 PythiaB 这样的模型可以准确表示 400 万个 token,甚至更多。StreamingLLM 相对于唯一可行的基线——滑动窗口与重新计算方法,实现了 LLMs 的流式使用,速度提升高达 22.2 倍。最后,他们表明,语言模型可以预训练以仅需要一个单独的注意力汇聚点 token 用于流式部署,从而验证了他们的注意力汇聚点假设。他们提出在每个训练样本开头引入一个选定的注意力汇聚点作为一个额外的可学习 token。通过从零开始预训练亿级参数的语言模型,并引入单一的汇聚点 token,可以在流式实例中保持模型的性能。这与普通模型形成了对比,后者需要重新引入几个初始 token 作为注意力汇聚点,以保持相同程度的性能。