赶上最新的AI论文

谷歌的高性能 LLM 可压缩超长提示语句以节省内存

谷歌的高性能 LLM 可压缩超长提示语句以节省内存

大型语言模型

三个要点
✔️ LLM 对可输入的提示语长度有限制,不能概括长句等。
✔️ 为 LLM 提出了一种关注机制,该机制引入了一个可压缩提示语并将其作为参数存储的部分。

✔️ 可处理无限长的提示。在书籍摘要任务中取得最高性能。

Leave No Context Behind: Efficient Infinite Context Transformers with Infini-attention
written by Tsendsuren MunkhdalaiManaal FaruquiSiddharth Gopal
(Submitted on 10 Apr 2024)
Comments: 9 pages, 4 figures, 4 tables

Subjects: Computation and Language (cs.CL); Artificial Intelligence (cs.AI); Machine Learning (cs.LG); Neural and Evolutionary Computing (cs.NE)

code:  

本文所使用的图片要么来自论文、介绍性幻灯片,要么是参考这些图片制作的。

介绍

要理解一个句子(文本),需要先理解整体语境,然后理解单个标记(文本块)。

在大语言模型(LLM)中,上下文可被理解的时间长度称为上下文窗口大小。要完全理解提示语,相对于输入提示语的长度而言,必须有足够的上下文窗口大小。因此,上下文窗口大小同时意味着可以充分处理的输入提示长度。

2024 年 5 月,Open AI 宣布 GPT-4o 为最新的 LLM,并宣布 GPT-4o 的上下文窗口大小为 128,000 个 token;根据 Open AI 博客,128,000 个 token 大约相当于 300 页文本。当 ChatGPT 于 11 月发布时,上下文窗口大小为 4000,因此 GPT-4o 是最初 ChatGPT 上下文窗口大小的 32 倍。

因此,上下文窗口的大小比当时要长,因为需要更长时间的上下文理解和处理。

例如,如果他们无法掌握长语境,他们可能无法很好地总结长句子,他们可能无法在语境学习(in-context learning)中考虑任务的长描述并给出预期的答案,或者他们可能无法教给 LLM 足够多的变化样本回答、在语境学习(in-context learning)中,他们可能无法很好地考虑任务的长篇描述并给出预期的答案,他们可能无法给出足够的样本答案,他们可能无法给出足够的通过 RAG(检索-增强生成,将检索信息嵌入提示等)获得的相关文档信息。

为了让 LLM 清楚地了解人们想要做什么,提供足够的信息并减少幻觉,最好能够增加上下文窗口的大小。最近,LLMs 中出现了 mega-prompts(超长提示)和 meany shots(在情境学习中提供许多教学实例)这两个术语。此外,有报告称,RAG 比微调更适合于正确回答事实的能力。可以说,人们期待语文课程能够充分利用情境窗口,取得更好的成绩。

因此,即使上下文窗口大小为 300 页文本,要通过上下文学习解决的任务越大、越复杂,所需的上下文窗口大小就会越大。

因此,上下文窗口大小(可处理的提示长度)对 LLM 十分重要。

如果有一个无限长的上下文窗口大小的 LLM 会怎样呢?

人们可以按照自己的节奏,只查询自己想知道的 LLM,而不必阅读很长的文本,预计人类方面将能够深入研究可能的相关文献并获得最佳答案,而不必重新学习 LLM 或进行任何微调。在语境中学习将有更大的调整空间,可以轻松提供教师在语境中的数据,而无需重新进行 LLM 预培训或微调。

本文介绍的是谷歌将上下文窗口大小增加到无穷大的挑战性技术:作为 LLM 基础的机器学习模型 Transformer 存在计算量和内存使用量与提示符长度的平方成正比增加的问题,而所提出的方法 Infini-Transformers,通过将提示符本身压缩成一个参数并存储起来,从而抑制了内存使用量。拟议的方法 Infini-Transformers,将提示本身压缩成一个参数并存储起来,从而减少了内存使用量。

现在将介绍模型和评估结果。

采用新的注意力机制 Infini-Attention 的变形金刚:Infini-Transformers

问题:变形注意机制使用大量内存来保存键和值

在 LLM 使用的转换器注意结构中,输入提示中的每个标记(查询)都是通过计算其与前后标记(键)的相似度来理解的,但作为理解对象的标记除外,并根据这种相似度更新标记的特征(值)、在理解过程中会考虑上下文(前后的标记,包括理解对象本身)。

查询和密钥之间的相似度由查询和密钥的内积计算得出。由于矩阵的大小为查询长度 x 查询长度,因此计算量和内存使用量随提示长度的增加而呈二次方增长。

例如,据报道,一个 5000 亿模型参数的 LLM 模型使用了 3 TB 内存来保存键和值,上下文长度为 2048(令牌)。

如果提示的长度超过了计算机的内存,则物理上超过了设备的存储容量,无法被接受;如果提示的计算量过大,LLM 将完全不响应。

如上所述,传统的注意力机制会创建一个键和值矩阵,该矩阵会随着提示(输入标记序列)长度的增加而增加,因此内存使用量会随着提示长度的增加而增加。

解决方案:一种关注机制,其中包含一种在压缩内存中保留以前的键和值的机制 Infini-Attention

解决思路

因此,本文提出了一种注意力机制,它可以分割输入提示,从前面开始依次处理,并将前一个键和值保存在一个具有固定大小参数的压缩存储器中。内存使用量将取决于压缩内存的参数(矩阵大小),但固定大小的参数将限制内存使用量和计算量,即使提示语很长。

Infini-Attention 的整体结构

Infini-Attention 将输入标记序列转换为段序列,并计算每个段内的内积。段列将输入标记序列划分为长度为 N 的段,每个段由索引 S 区分。

这种类型的局部注意力处理(注意力)已经存在,但通常的局部注意力方法会丢弃已处理过的前一个片段的键和值;Infini-Attention 不会丢弃它们,而是将其保留在压缩内存中。

可以说,这种结构结合了全局注意(考虑到过去片段的注意)和局部注意(对当前正在处理的片段的注意)。这种结构如图 1 所示。

图 1. 无限关注框图。

当地请注意

图 1 中的紫色区块是执行局部注意的区块。它对目标输入片段的查询 $Q_s$ 执行通常的缩放点积关注。换句话说,它计算目标段的 "段长 N x 关键维度矩阵"$K_s$ 和 "关键维度 x 值维度矩阵"$V_s$ 的归一化内积,并计算与 "N x 值维度矩阵"$V_s$ 的乘积。从而得到注意力上下文 $A_{dot}$。

全局注意力(使用压缩记忆的注意力)

由于紫色区块只包含局部注意力,因此还有一个计算全局注意力的绿色区块。这个区块保存着过去各分段基于键/值的注意力计算结果。这个区块不是压缩和存储所有过去的键和值,而是在每次处理后更新每个分段的状态,这意味着 "以前 "的状态始终会被更新(图 1 中的更新)。更新后的压缩内存将被检索(检索,图 1),并与本地注意力输出相结合(Concat,图 1)

在压缩存储器搜索中,根据段长为 N×目标段关键维度的查询矩阵 $Q_{s}$、关键维度×值维度的压缩存储器矩阵 $M_{s-1}$ 和归一化项 $z$ ,得到压缩存储器(N×关键维度矩阵)$A_{mem}$ 的内容。获得。

在压缩存储器更新中,压缩存储器中的矩阵和归一化项会根据相关数据段的密钥和值的计算结果进行更新,并用于下一个数据段的处理。

更新后的压缩存储器矩阵 = 更新前的压缩存储器矩阵 +基于激活函数、关键字$K$ 感兴趣段的 $V$ 的矩阵乘积。

这个新增项被称为关联绑定算子。

Inifini-Transformers 使用一种现有的方法,即 Delta 规则,它改进了上述压缩内存处理方法:Delta 规则 新值 中减去压缩内存搜索结果$A_{mem}$ ,然后应用关联分配运算符德尔塔规则在从新值中减去压缩内存搜索结果后,应用关联分配运算符。

输入段、变压器模块和压缩存储器之间的输入/输出关系

图 2展示了输入段、变换器块和压缩存储器之间的输入/输出关系,其中每个段都在多层变换器中进行处理(灰色箭头),压缩存储器根据每层的键/值计算结果进行更新(蓝色箭头),并用作下一个段的压缩存储器每一层的键和值计算结果都会更新压缩存储器(蓝色箭头),并在处理下一个分段时用作压缩存储器(紫色箭头)。这确保了在处理每个片段时,有效上下文也包括之前的片段。

压缩内存方面的注意力不是按比例点积注意力,而是线性注意力(Linear),计算复杂度被认为是线性的。

图 2.Infini-Transformer 的输入和输出。输入段(虚线框)、变压器块(灰色)和压缩存储器(绿色)

局部注意力计算结果 $A_{dot}$ 和全局注意力计算结果 $A_{mem}$ 根据可学习的权衡调整参数进行组合。

压缩内存 存储了$M_{s-1}$ 和 $z$,因此在转换器的每一层,关键维数 x 值维数( 对于$M_{s-1}$) + 关键维数的大小( 对于$z$。但这种固定的内存使用方式理论上可以接受无限多的输入段。

与现有系统相比,内存使用量减少

尽管现有的一些方法提出了将输入序列作为模型参数存储到 LLM 中的变换器,但以内存长度为 65 000 的记忆变换器为例,所提出的方法实现了比现有方法高 114 倍的压缩率。拟议的 Infini-Transformers 显示出非常高的压缩比。由此可见,与传统方法相比,处理长上下文时内存使用量非常低。

评估结果

密码任务

评估对较长语境理解能力的一项任务是 "密码 "任务。在这项任务中,会给语言学习者一个长提示,并在其中插入随机数字(密码),然后指示他们找到密码(暗语),看他们能否正确提取密码。

给出的提示有五种长度模式:32K(32,000)、128K(128,000)、256K(256,000)、512K(512,000)和 1M(100 万)令牌。

至于在哪里输入密码,可以尝试在提示符的开头、中间和结尾输入三种模式。

实验采用了零次求解和400 步微调 (FT),输入大小为5K 标记

比较方法是拟议的 Infini-Transformers,其中 Linear 是不带 Delta 规则的情况,Linear + Delta 是带 Delta 规则的情况。

图 3 显示了密码任务的评估结果。用 / 分隔的数字分别表示将密码放在提示语开头、中间和结尾时提取密码的成功率。当密码放在提示语的末尾时,正确答案的比例较高,否则成功率较低。

图 3:密码任务。

本文作者没有进行讨论,但假设压缩记忆的副作用是稀释了来自遥远过去的信息,因为压缩记忆保留了过去的背景

成功率与提示语长度的关系是渐进的,提示语越长,成功率越低,但并不存在很大的依赖性,如提示语长度加倍,成功率减半,成功率缓慢下降。

与 "零射击 "相比,"FT "的成功率大大提高。即使有效情境范围更长,也并不意味着该情境中的信息可以得到有效利用,可能需要通过微调来训练人们更好地利用信息。

在 Infini-Transformers 中,对无 Delta(线性)和有 Delta(线性+Delta)的情况进行了比较,基本性能差别不大。只有图 3 中的 128K Zero-shot 才有明显差异。

书籍摘要

在输入长度为 8 000 的情况下,对包含 80 亿个模型参数的 LLM 进行了 30 000 步的预训练,并根据图书翻译任务进行了微调。微调在输入长度为 32 000 时进行。在输入长度为 80 000 时进行了评估。

评价指标是 "Rouge",衡量机器摘要与正确摘要之间的一致程度,有几种变化,越高越好。

评估结果如图 4 所示。所提出的方法,即 Infini-Transformers(线性 + 三角形),性能优于现有的最佳方法。

图 4.图书摘要任务。

结论

这篇文章介绍了 LLM,它通过引入局部附件和全局附件,使 Transfomer 能够处理无限长的提示符,局部附件是输入提示符片段的附件,全局附件则是使用压缩内存考虑整个输入提示符的上下文。说明

传统变压器的内存使用量取决于输入提示的长度,并与长度的平方成正比。另一方面,Inifini-Transformers 的内存使用量与输入提示的长度无关。它的内存使用量取决于压缩内存的矩阵 $M_{s-1}$(大小为键维数 x 值维数)和归一化项 $z_{s-1}$ (大小为键维数)。因此,对于无限长的提示,内存使用量不会变成无限大。

在概括一本书的全部内容这一需要处理较长上下文的任务中,Infini-Transformer 的表现优于现有的

如果我们想让 LLM 在未来利用上下文学习做很多不同的事情,上下文的长度就应该增加。应对这种无限长语境的能力非常重要。

不过,尽管所提出的 Infini-Transformer 可以减少内存使用对输入提示长度的依赖,但我们仍对如何确定输入提示的最佳分段大小以及它对准确性的影响程度表示担忧。

在预学习和微调过程中,我们还关注学习时输入提示的长度,以及提示的长度应设置多长才足以让人理解。

在评估中,使用 32,000 个输入提示词组进行微调可以处理 500,000 个词组的上下文,这意味着在训练时的推理过程中可以处理的输入提示词组可能是训练时的 10 倍左右,但是否总是存在这样的比例关系,还是只适用于书籍摘要任务?是否仅限于书籍摘要任务?还是我们每次都必须针对具体任务进行微调?我很好奇。

如果 ChatGPT 等采用这种无限长输入提示的技术,大大放宽输入提示的限制,那么巨型提示的趋势将会加速。另一方面,这很可能会引发其他问题,例如由于用户输入的提示符过大而导致服务器负载异常高。此外,由于在训练过程中需要教授长输入提示,因此准备合适的长输入长度数据集可能会成为一个更大的瓶颈。

  • メルマガ登録(ver
  • ライター
  • エンジニア_大募集!!

如果您对文章内容有任何改进建议等,请通过 "联系我们 "表格与爱学网编辑部联系。
如果您能通过咨询表与我们联系,我们将非常感激。

联系我们