Transformer革新:Infini-Transformer在长文本处理中的突破

news2024/10/6 6:41:13

在当今信息爆炸的时代,大型语言模型(LLMs)在处理长文本数据方面的需求日益增长。无论是科学研究、法律分析还是医学诊断,长文本的处理能力都显得尤为重要。然而,现有的基于Transformer的模型在处理这类数据时遇到了重大挑战。由于其注意力机制的二次方复杂度,随着输入序列的增长,所需的内存和计算资源呈指数级增加,这不仅限制了模型处理长文本的能力,也带来了巨大的经济成本。

本文针对这一挑战,提出了一种创新的解决方案——Infini-attention技术。这一技术通过引入压缩记忆(compressive memory)的概念,对传统的注意力机制进行了根本性的改进。压缩记忆能够在保持固定数量参数的同时,存储和检索与输入序列长度无关的信息,从而显著降低了存储和计算成本。Infini-attention技术不仅在理论上具有吸引力,更在实际应用中展现出了卓越的性能。

Figure 1显示Infini-attention如何通过增加压缩记忆和线性注意力机制来处理无限长的上下文。图中展示了{KV}s−1和{KV}s分别代表当前和之前输入片段的注意力键和值,Qs代表注意力查询。PE代表位置嵌入

模型对长序列数据有着出色处理能力。在1M序列长度的passkey检索任务中,模型能够准确地从大量干扰信息中检索出关键信息。在500K长度的书籍摘要任务中,模型生成的摘要质量也达到了前所未有的高度。

图1Infini-attention的核心机制,即如何在Transformer模型中引入压缩记忆(compressive memory)来处理无限长的上下文。它通过结合局部压缩记忆和线性注意力来处理无限长的上下文信息。这种机制的关键创新在于它能够在处理当前输入片段的同时,有效地利用之前处理过的信息。

  • 压缩记忆(Compressive memory):这是Infini-attention中新增的一个组件,它允许模型存储和检索先前处理过的信息。这种记忆机制与传统的注意力机制不同,因为它不随输入序列长度的增加而增长,从而实现了对内存使用的优化。

  • 线性注意力(Linear attention):与标准的点积注意力相比,线性注意力是一种更高效的计算方法,它可以减少计算复杂度,同时保持对上下文信息的敏感性。

  • 注意力键值对({KV}s−1 和 {KV}s):这里,{KV}s−1 表示上一个输入片段的键值对,而 {KV}s 表示当前输入片段的键值对。在传统的Transformer模型中,这些键值对仅在当前片段的处理中使用。然而,在Infini-attention中,它们被存储在压缩记忆中,以便在后续处理中重复使用。

  • 注意力查询(Qs):这些是当前输入片段的注意力查询,用于从压缩记忆中检索相关信息。

  • 位置嵌入(PE):位置嵌入是一种机制,用于向模型提供关于单词在序列中位置的信息。这有助于模型理解单词的顺序和上下文关系。

Infini-attention的工作流程

  1. 局部注意力计算:首先,模型使用当前输入片段的键值对和查询来计算局部注意力,这与标准的Transformer操作相似。

  2. 压缩记忆更新:在局部注意力计算之后,模型更新压缩记忆中的内容。这包括将当前片段的键值对添加到记忆中,并根据需要调整已有的键值对。

  3. 记忆检索:使用当前片段的查询从压缩记忆中检索信息。这一步骤允许模型访问和整合过去的上下文信息。

  4. 上下文整合:最后,模型将局部注意力的结果和从压缩记忆中检索到的信息结合起来,形成一个综合的上下文表示,这个表示将被用于后续的模型层或任务特定的处理。

通过这种设计,Infini-attention能够在保持计算效率的同时,处理非常长的上下文信息,这对于大型语言模型在复杂任务上的表现至关重要。

Infini-Transformer通过引入Infini-attention机制,能够在每个片段上计算标准的因果点积注意力上下文,同时保持内存占用的恒定。这种设计允许模型在处理每个新片段时,不仅考虑当前片段的信息,还能通过压缩记忆机制有效地利用之前片段的信息。

上图比较了Infini-Transformer和Transformer-XL在处理序列时对上下文历史的记忆方式。Infini-Transformer保留了整个上下文历史,而Transformer-XL则仅缓存了最后一个片段的KV状态

Infini-attention通过结合局部压缩记忆和线性注意力机制来处理无限长的上下文。Infini-attention在每个Transformer块中实现以下功能:

多头缩放点积注意力

多头缩放点积注意力是LLMs中的关键组件,它通过并行计算多个注意力头来捕获序列的不同方面。在每个头中,输入序列首先被转换为查询(Q)、键(K)和值(V)状态,然后通过点积操作和softmax函数计算注意力权重,最后得到加权的值状态,形成注意力上下文。

压缩记忆

Infini-attention不丢弃历史片段的KV状态,而是将它们存储在压缩记忆中。这样,当处理后续序列时,可以通过当前的查询状态从压缩记忆中检索值状态。这种方法不仅减少了内存占用,还使得模型能够利用长期依赖信息。

压缩记忆的实现依赖于关联矩阵,这是一种参数化的内存系统,用于存储键值对的绑定。通过特定的更新规则和检索机制,Infini-attention能够高效地进行记忆更新和检索,同时保持训练过程的稳定性。

Infini-Transformer通过压缩记忆实现了一个无界上下文窗口,同时保持了有界的记忆占用。这一点与传统的Transformer模型不同,后者的上下文窗口大小受限于内存容量。Infini-Transformer的记忆占用是固定的,这意味着它可以在不增加额外内存成本的情况下处理更长的输入序列。

在Infini-Transformer中,每个注意力层都维护着全局压缩记忆和局部细粒度状态。这种设计允许模型在保持对当前上下文敏感的同时,也能够访问和整合长期的历史信息。通过这种方式,Infini-Transformer显著扩展了模型的上下文窗口,同时避免了传统模型在处理长序列时遇到的内存和计算瓶颈。

不同Transformer模型的内存占用、上下文长度、内存更新和检索方式,包括Transformer-XL、Compressive Transformer、Memorizing Transformers、RMT、AutoCompressors和Infini-Transformers

Infini-attention技术通过引入压缩记忆和改进的注意力机制,为LLMs提供了一种高效处理长文本数据的新方法。这种方法不仅提高了模型的性能,也为未来在更大规模数据集上的应用提供了可能性。

为了验证Infini-Transformer模型在处理长文本数据方面的有效性,研究者在PG19和Arxiv-math这两个广泛认可的长文本基准数据集上进行了实验。他们构建的Infini-Transformer模型在结构上与Memorizing Transformers相似,拥有12个层和8个注意力头,每个头的维度设置为128,而Feed Forward Networks(FFNs)的隐藏层则为4096。这样的配置旨在确保模型在保持足够复杂度的同时,能够有效地捕获长距离依赖关系。

比较了不同模型在PG19和Arxiv-math基准测试上的平均token级困惑度,包括Transformer-XL、Memorizing Transformers、RMT和Infini-Transformers(线性和线性+Delta模型)

实验结果表明,Infini-Transformer在这些基准测试中表现出色,相比于传统的Transformer-XL和其他变体,它在长上下文语言建模任务上取得了显著的性能提升。这证明了Infini-attention机制在处理长序列时的有效性,尤其是在内存使用效率和计算速度方面。

为了进一步探索Infini-attention在实际应用中的潜力,研究者对现有的大型语言模型进行了持续预训练。预训练的数据集包括PG19、Arxiv-math以及C4文本,这些文本的长度均超过了4K令牌。通过这种轻量级的持续预训练,旨在使模型能够适应不断增长的上下文长度,同时保持对新信息的快速适应能力。

预训练过程中,研究者特别关注模型对长上下文的学习能力,以及在不断累积知识的同时,如何有效地整合新信息。实验结果表明,经过持续预训练的模型在处理长文本时展现出了更强的泛化能力和适应性。

在1M passkey检索任务中,研究者将一个1B参数的大型语言模型中的多头注意力(MHA)替换为Infini-attention,并在4K长度的输入上继续进行预训练。这一任务要求模型在大量干扰信息中准确地检索出隐藏的密码。在经过30K步的预训练后,模型在passkey检索任务上进行了微调,以进一步提高其检索精度。

在不同长度输入(从32K到1M)的测试子集上,Infini-Transformers在解决passkey任务时的token级检索准确率,包括零样本准确率和微调准确率

实验结果显示,Infini-Transformer不仅能够在极长的文本中准确地找到passkey,而且在经过微调后,其检索能力得到了显著提升,证明了Infini-attention在处理具有挑战性的长文本检索任务中的潜力。

为了测试Infini-Transformer在更复杂任务上的表现,研究者在BookSum数据集上进行了书籍摘要生成的实验。他们首先对一个8B参数的LLM模型进行了持续预训练,输入长度为8K,并进行了30K步的训练。随后,在BookSum任务上进行了微调,目标是生成整本书内容的摘要。

在这个任务中,模型需要处理和理解长达500K令牌的文本,并生成准确、连贯且内容丰富的摘要。实验结果表明,Infini-Transformer在生成高质量书籍摘要方面表现出色,其性能超越了现有的最佳方法,展示了其在处理长文本摘要任务上的巨大潜力。

比较了Infini-Transformers与其他为摘要任务设计的编码器-解码器模型在BookSum任务上的表现,包括BART、PRIMERA及其基于检索的长上下文扩展

通过这些实验验证了Infini-attention技术的有效性,展示了其在多种长文本处理任务中的应用前景,为构建更加智能、高效的语言处理系统奠定了基础。随着技术的不断进步和应用的深入,我们有理由相信,Infini-attention将在人工智能领域发挥越来越重要的作用。

论文链接:https://arxiv.org/abs/2404.07143

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1834558.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

keepalived服务详解与实验 基于centos8

目录 keepalivedHA简介常用的高可用软件keepalived简介 keepalived常用模块keepalived功能简介keepalived常用文件keepalived配置文件详解keepalived实验1-上手环境准备安装服务主配置文件修改启动服务效果查看 keepalived脑裂1. 脑裂现象简介2. 脑裂的原因3. 脑裂的预防和解决…

【需求管理】软件需求开发和管理文档(原件Word)

1. 目的 2. 适用范围 3. 参考文件 4. 术语和缩写 5. 需求获取的方式 5.1. 与用户交谈向用户提问题 5.1.1. 访谈重点注意事项 5.1.2. 访谈指南 5.2. 参观用户的工作流程 5.3. 向用户群体发调查问卷 5.4. 已有软件系统调研 5.5. 资料收集 5.6. 原型系统调研 5.6.1. …

【数据结构】第十七弹---C语言实现选择排序

✨个人主页: 熬夜学编程的小林 💗系列专栏: 【C语言详解】 【数据结构详解】【C详解】 目录 1、选择排序 1.1、基本思想 1.2、代码实现 1.3、代码测试 1.4、时空复杂度分析 总结 1、选择排序 1.1、基本思想 选择排序是一种简单直观的比…

safari浏览器无法连接到服务器

问题:MacBook pro,网络连接正常,可以使用各种软件上网,唯独safari浏览器打不开网页,报错说Safari无法连接到服务器; 原因:使用了VPN,VPN自动更改了网络设置,导致Safari浏…

PythonPoc基础编写(3)---批量刷cnvd

文章目录 前言一、发现过程二、使用步骤1.引入库2.读入数据结果 总结 前言 想刷cnvd?最重要的是登录进行测试功能点 一、发现过程 找到一个网站 发现登录失败返回200 登录成功则是重定向 302 那就写一个脚本吧 二、使用步骤 1.引入库 import requests 2.读入…

【前端项目笔记】2 主页布局

主页布局 element-ui提供的组件名称就是它的类名 ☆☆ CSS选择器: (1)基本选择器 类型选择器 p/span/div…… 类选择器 (.classname) ID选择器 (#idname) 通配选择器 ( * ) (2)属性选择器 选择具有特定属性或属性值的…

掌控Linux-Conda环境安装终极指南

Linux-Conda环境安装教程 一、引言1.1. conda的作用与优势优势: 1.2. 简述conda在Linux系统中的重要性重要性: 二、准备工作2.1. 系统要求与兼容性Linux发行版支持情况硬件资源需求 2.2. 安装前的必要工具wget或curl的安装必要的开发库 三、下载与安装Mi…

计算机相关专业是否仍是“万金油”的选择?

亲爱的朋友们: 2024 年高考已然落幕,数百万高三学子站在了人生的重要十字路口,面临着选择大学专业这一关键抉择。在这个节点上,计算机相关专业是否还能被称为“万金油”的选择呢? 相信大家都知道,在最近这几…

Apache Doris 之 Docker 部署篇

前言 在现代数据驱动的商业环境中,实时数据分析和高并发查询能力是企业成功的关键因素之一。传统的数据仓库和分析工具在面对大规模数据处理和实时分析需求时,往往力不从心。Apache Doris 作为一个现代的 MPP 数据库管理系统,凭借其强大的查…

预埋螺栓抗滑移系数检测 内六角螺栓扭矩系数检测

螺栓检测范围:螺栓,高强螺栓,地脚螺栓,不锈钢螺栓,六角头螺栓,管片螺栓,膨胀螺栓,化学螺栓,镀锌螺栓,植筋螺栓,普通螺栓,钢结构螺栓&a…

【机器学习】CART决策树算法的核心思想及其大数据时代银行贷款参考案例——机器认知外界的重要算法

目录 引言 概述 CART决策树的特点 核心思想 减少不确定性的指标 基尼系数(Gini Index) 分类错误率 熵 银行实例 背景 数据准备 模型构建 模型评估与优化 应用与结果 代码示例 ✈✈✈✈引言✈✈✈✈ CART算法既可以用于分类问题&#xff0…

C# + easyui 写的一个web项目

用C# easyui 来开发,其实就是为了开发速度,用easyui可以一天写很多页面,比一些低代码平台还快。 登陆页面 主界面 记录数统计 家庭信息采集表 新建家庭 家庭成员 低保、五保人员帮扶情况登记表 低保、五保人员帮扶情况登记表的新增和编辑 治…

STM32学习笔记(五)--TIM输出比较PWM详解

(1)配置步骤1.配置RCC外设时钟 开启GPIO以及TIM外设2.配置时基单元的时钟 包含时钟源选择配置初始化时基单元3.配置输出比较单元 包含CCR的值 输出比较模式 极性选择 输出使能等4.配置GPIO口 初始化为复用式推挽输出的配置5.运行控制 启动计数器 输出PWM…

Java基础-案例练习-全是干货

目录 案例:卖飞机票 案例:找质数: 案例:开发验证码 案例:评委打分 案例:卖飞机票 package anlixunlian;import java.util.Scanner;/*机票价格按照淡季旺季、头等舱和经济舱收费、 输入机票原价、月份和…

Python进阶二: NumPy基础:数组和矢量计算

二、NumPy基础:数组和矢量计算 本文源自微博客(www.microblog.store),且以获得授权 NumPy(Numerical Python的简称)是Python数值计算最重要的基础包。大多数提供科学计算的包都是用NumPy的数组作为构建基础。 NumPy的部分功能如下&#xf…

SuiNS更新命名标准,增强用户体验

SuiNS将其面向用户的命名标准从 xxx.sui 更新为 xxx,让用户能够以一种适用于Web2和Web3世界的方式来代表自己。通过此更新,用户可以在其选择的名称前使用 ,而不是在名称后添加 .sui。 Sui命名服务于去年推出,旨在使Sui上的地址更…

docker-compose harbor 2.11

harbor 前言 “Harbor” 是一个用于管理容器镜像的开源仓库项目。由 VMware 开发和维护,Harbor 提供一个企业级的 Docker 镜像仓库,具有丰富的功能,包括: 镜像管理:提供存储和分发 Docker 镜像的能力。安全性:支持镜像签名和漏洞扫描,确保镜像的安全性。身份认证:集成…

python-开学?

[题目描述] 小执:终于可以开学啦!好开心啊! 小理:你没看新闻吗,开学日期又延后了。 小执:𝑁𝑂𝑂𝑂𝑂𝑂𝑂𝑂&am…

一文梳理ChatTTS的进阶用法,手把手带你实现个性化配音,音色、语速、停顿,口语,全搞定

前几天和大家分享了如何从0到1搭建一套语音交互系统。 其中,语音合成(TTS)是提升用户体验的关键所在。于是,上一篇接着和大家聊了聊:全网爆火的AI语音合成工具-ChatTTS,有人已经拿它赚到了第一桶金&#x…