RetrievalAttention——提高 LLM 处理长上下文的效率

概述

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

本文的研究背景主要是为了解决 "具有长语境的大型语言模型(LLM)"问题。基于变换器的 LLM 被广泛应用于各个领域,但在处理长上下文时,其计算成本非常高。特别是计算 "注意力 "时,较长上下文会增加处理时间和内存使用量,这是一个瓶颈。为了解决这个问题,人们开发了许多技术,但没有一种技术能完全解决这个问题。

我们的方法优于现有的注意力优化技术,因为它可以在保持几乎相同的准确度水平的同时,对长上下文进行非常高效的推理。特别是,它允许大型模型(8B 参数模型)在规格相对较低的 GPU 上高效运行。

简而言之,RetrievalAttention 是一种能显著提高长语境 LLM 推理的记忆和时间效率的技术,是向实际应用迈出的重要一步。

研究背景

大规模语言模型能够处理超长文本数据,因此在各种自然语言处理任务中表现出色。例如,它们可以阅读大量文本,并根据内容生成回复或摘要。然而,这些模型的核心 "注意力机制 "却面临着巨大的挑战。

注意力机制是一种确定输入文本中哪些部分重要并据此预测下一个单词的技术。然而,注意力的计算复杂度是通过比较两组向量("查询 "向量和 "键值 "向量)来完成的,因此随着文本变长,计算复杂度也会急剧增加。这就导致推理速度缓慢,内存占用巨大。一个主要瓶颈是 GPU 内存很快就会达到极限,尤其是在上下文非常长的情况下。

传统的解决方案是使用一种称为 "KV 缓存 "的技术。这种技术可以保留和重复使用计算所需的先前 "键 "和 "值 "状态,从而消除不必要的计算。不过,即使是这种方法,在处理长上下文时也会消耗大量内存。例如,在单个 GPU 上处理大量令牌可能需要 500 GB 以上的内存。这使得它很难在现实系统中使用,因此需要一种更高效的方法。

因此,本文重点关注注意力机制中的 "动态稀疏性 "特征。实际上,并不是所有的标记都对预测下一个词重要,只有某些标记子集才起重要作用。换句话说,我们的想法是,没有必要将所有标记符都纳入计算,如果我们只关注重要的标记符,就可以大大降低计算成本。

基于这一背景,我们提出了一种新方法–RetrievalAttention,以实现高效的注意力计算。

建议方法

在 ransformer 模型中,注意力机制决定了输入文本的哪些部分是重要的,并据此预测下一个标记。然而,上下文越长,计算所有标记的注意力就越耗费计算量。

RetrievalAttention 的一个主要特点是它能解决查询向量和键值向量之间的分布差异(OOD 问题)。在普通的近似最优搜索中,假设查询和键值属于相同的分布,但在注意力计算中,查询向量和键值向量往往具有不同的分布,从而导致性能低下。为了解决这个问题,RetrievalAttention 采用了一种新的搜索算法,这种算法能适应注意力的特定分布。这种方法使得即使只扫描查询数据的 1-3%,也能获得高度准确的注意力结果。

RetrievalAttention 还能充分利用 GPU 和 CPU 的内存。具体来说,重要的 "键值 "向量保存在 GPU 上,其余数据则卸载到 CPU 上,从而在保持计算效率的同时减少了 GPU 内存消耗。

RetrievalAttention "使用两大理念来简化注意力计算

利用动态稀疏性

在注意力计算中,并非所有标记都同等重要,事实上,只有部分标记在预测下一个标记时起着重要作用。这就是所谓的 “动态稀疏性”。检索注意力 "就是利用这一特性,只关注重要的标记,而忽略其他标记。

通过向量搜索进行优化

接下来,一种名为 “近似最优搜索”(ANNS)的技术被用来近似地选择最重要的标记,而不是针对所有标记。这种技术能从海量数据中高速搜索出重要数据,与普通注意力计算相比,大大减少了计算量。

试验

本文提出的 RetrievalAttention 实验测试了该方法在提高具有长语境的大规模语言模型(LLM)的推理效率方面的有效性。实验使用了多个大规模模型和基准,对所提出方法的性能进行了详细评估。

首先,在实验环境中使用英伟达™(NVIDIA®)RTX 4090 GPU(24 GB 内存)对 Llama-3-8B 和 Yi-6B 等几个 LLM 进行了测试。每个模型都能处理多达 128,000 个标记的长上下文。实验的目的是了解 RetrievalAttention 与其他方法相比能快多少,同时保持推理的准确性。

实验从准确性和速度两个方面对所提出的方法进行了评估。首先,在准确性方面,RetrievalAttention 的表现几乎与 FullAttention 相当。这意味着,通过有效地只提取重要的标记,计算成本得以降低,而不会影响模型的推理结果。基准任务 ∞-Bench 的结果证实了这一结果。

另一方面,推理速度也有显著提高。特别是在处理 128,000 个标记的长语境时,发现 RetrievalAttention 的推理速度比传统的 FullAttention 快了近五倍。这种速度提升是通过大幅减少对不必要标记的访问实现的:在 "大海捞针 "任务中,RetrievalAttention 从海量数据中提取特定信息的效率尤为突出,RetrievalAttention 的卓越检索性能得到了展示。

RetrievalAttention 在 GPU 内存使用方面也很出色。通常情况下,处理长上下文需要大量内存,但所提出的方法只需 16 GB GPU 内存即可处理 128,000 个标记,从而在保持较低硬件成本的同时实现了高效推理。

因此,RetrievalAttention 是一种既能显著提高推理速度和记忆效率,又能保持准确性的方法,并已显示出实用性能,尤其是在具有较长语境的任务中。

总结

本文的结论是,所提出的 "RetrievalAttention "方法在简化处理长语境的大规模语言模型(LLM)推理方面非常有效。由于涉及大量的标记,正常的注意力计算往往需要大量的时间和内存。特别是,上下文越长,注意力计算的负荷就会呈指数增长。然而,RetrievalAttention 通过关注注意力中的 “动态稀疏性”,只对必要部分进行有效处理,从而解决了这一问题。

与传统方法相比,该方法能动态选择重要的标记,并以更少的计算量和内存使用量达到相当的准确率。实验结果还表明,使用 RetrievalAttention 可以显著提高推理速度,尤其是在长上下文任务中,最多可提高五倍。

此外,即使 GPU 内存有限,RetrievalAttention 也能高效处理长上下文,从而减少内存使用量。这一功能使得以前需要非常昂贵的硬件才能完成的任务,现在也能在更经济实惠的环境中完成了。

总之,在处理长语境时,RetrievalAttention 是一种既能保持准确性又能显著降低推理成本的强大技术,是 LLM 未来发展的一项非常重要的技术。

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

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

相关文章

电脑USB端口禁止软件有哪些?什么软件能指定USB端口禁用?分享四款好用软件!

想象一下,你正准备在办公桌上插入U盘,打算快速拷贝文件,突然系统蹦出一个警告:“这个USB端口已被禁用!” 是不是感觉好像被一双隐形的手制止了? 其实,这双“隐形的手”就是专门为企业安全设计…

visionpro脚本

visionproToolBlock的脚本的优先级优于工具连线的优先级,一般是照着脚本的执行顺序进行执行对应的工具,最常用的是C#的高级脚本,C#的脚本如下分为5部分。 第一部分:主要是一些库的引用,对于有些类型不知道库的时候&…

vue2中字符串动态拼接字段给到接口

【设计初衷是用户可根据给定的字段进行准确描述】 实现功能: 1. 文本域内容串动态配置字段,以$ {英文}拼接格式给到接口。 (传参如:$ {heat_status_code}正常,$ {wdy_temp}也正常!) 2. 编辑时根…

Instagram全面升级“青少年账号”保护措施,除了信息分类过滤,还应从根源加强内容审核

在持续多年的监管和诉讼压力下,作为社交网站的巨头,Instagram落实了“最严格的青少年用户保护法”。 Instagram 上所有未满 18 岁的用户都将被归为“青少年用户”,默认把账号设置为私密状态,自动实施多项防护措施,很多…

Vue3实战:使用 errorHandler 捕获全局错误

你好同学,我是沐爸,欢迎点赞、收藏、评论和关注。 在 Vue3 中,app.config.errorHandler 是一个错误处理器,用于为应用内抛出的未捕获错误指定一个全局处理函数,它接收三个参数:错误对象、触发该错误的组件…

什么品牌超声波清洗机质量好?四大绝佳超声波清洗机品牌推荐!

在快节奏的现代生活中,个人物品的清洁卫生显得至关重要。眼镜、珠宝饰品、手表乃至日常餐厨用具,这些频繁接触的物品极易累积污渍与细菌。拿眼镜为例,缺乏定期清洁会让油渍与尘埃积累,进而成为细菌的温床,靠近眼睛使用…

人脸识别系统+电插锁安装配置过程

一、适用场景 1、各住宅小区内,一个单元涉及多户,一楼安装公共的人脸识别门禁进行身份的认证。 2、某企业的职工住宅区,企业统一安装人脸识别门禁认证身份。 3、自建楼栋,分多间出租给住户时,每个住户配备电子钥匙存在…

GEE使用require函数调用自己的Js库

新建了一个repository,名为Lib 把我的地形校正的函数放了进去 在自己的代码中调用就用到这个路径,主要Lib后面用冒号

观《中国数据库前世今生》有感:从历史到未来的技术变迁

观《中国数据库前世今生》有感:从历史到未来的技术变迁 在数字化浪潮中,数据库技术作为信息化建设的核心,承载了时代发展的脉搏。观看了纪录片《中国数据库前世今生》后,我深深感受到了中国数据库技术从无到有、从追赶到引领的艰…

深度残差网络ResNet简介

【图书推荐】《PyTorch深度学习与企业级项目实战》-CSDN博客 《PyTorch深度学习与企业级项目实战(人工智能技术丛书)》(宋立桓,宋立林)【摘要 书评 试读】- 京东图书 (jd.com) 卷积神经网络经典模型架构简介-CSDN博客 深度残差网络&#xf…

10分钟搞清楚为什么Transformer中使用LayerNorm而不是BatchNorm

1. Norm(Normalization) 首先,LayerNorm和BatchNorm的Norm是Normalization的缩写,不是Norm-范数。 Normalization在统计学中一般翻译为归一化,还有类似的是Standardization,一般翻译成标准化。这两个概念有什么区别呢? 归一化是…

vue2 + moment 实现日历,并带有上个月和下个月日期的日历

在 Vue 2 中使用 moment 库绘制一个带有上个月和下个月日期的日历,可以通过以下步骤实现。这个日历将显示当前月份的天数,以及前一个月和下一个月的部分日期(通常为了让日历对齐为6行,每行7天)。 主要步骤&#xff1a…

海睿思ABI——不只是BI,更多的是数据和智能

在当今这个数据洪流席卷各行各业的数字化时代,企业BI的建设已不再是可选项,而是驱动企业转型升级、实现精细化运营的必由之路。传统BI通过临时数据集直连业务系统,仅能展示预设报表和仪表盘,难以集成异构数据源,适应业…

【数学二】函数概念、常用函数、函数四大性质

考试要求 1、理解函数的概念,掌握函数的表示法,并会建立应用问题的函数关系. 2、了解函数的有界性、单调性、周期性和奇偶性. 3、理解复合函数及分段函数的概念、了解反函数及隐函数的概念。 4、掌握基本初等函数的性质及其图形、了解初等函数的概念。…

SpringCloud从零开始简单搭建 - JDK17

文章目录 SpringCloud Nacos从零开始简单搭建 - JDK17一、创建父项目二、创建子项目三、集成Nacos四、集成nacos配置中心 SpringCloud Nacos从零开始简单搭建 - JDK17 环境要求:JDK17、Spring Boot3、maven。 那么,如何从零开始搭建一个 SpringCloud …

PyQGIS开发 3 基础功能开发

PyQGIS开发 3 基础功能开发 1 添加图层树与地图视图 1.1 添加控件 1.2 Python代码 from PyQt5.QtCore import QMimeData from qgis.PyQt.QtWidgets import QMainWindow from qgis._core import QgsMapLayer, QgsRasterLayer, QgsVectorLayer from qgis.core import QgsProje…

美联储降息引爆股市,标普500指数逼近历史新高

在美联储宣布大幅降息后,股市迎来了强劲反弹。投资者信心大增,此前他们就预期美联储会降息0.5个百分点。周四的股市涨幅让标普500指数接近历史收盘最高点。 周四,标普500指数有望刷新历史纪录,此前美联储的大幅降息为市场注入了活…

基于STM32的智能门禁系统(指纹、蓝牙、刷卡、OLED、电机)

目录 一、主要功能 二、硬件资源 三、程序编程 四、实现现象 一、主要功能 基于STM32单片机,六个按键,分别代表指纹、蓝牙、刷卡的正确进门与错误进门; 比如第一个按键按下,表示指纹正确,OLED显示指纹正确&#x…

OpenHarmony(鸿蒙南向开发)——小型系统内核(LiteOS-A)【内核启动】

往期知识点记录: 鸿蒙(HarmonyOS)应用层开发(北向)知识点汇总 鸿蒙(OpenHarmony)南向开发保姆级知识点汇总~ 子系统开发内核 轻量系统内核(LiteOS-M) 轻量系统内核&#…

faiss安装 (CPU版本)

faiss版本 faiss-v1.7.4 cd faiss-v1.7.4cmake -B build . -DBUILD_TESTINGOFF -DFAISS_ENABLE_GPUOFF -DFAISS_ENABLE_PYTHONOFFmake -C build -j faiss; 默认安装路径如下 -- Installing: /usr/local/lib64/libfaiss.a -- Installing: /usr/local/include/faiss…