RelayAttention:让大型语言模型更高效地处理长提示符

一、前言

虽然大型语言模型 (LLM) 近年来取得了非常显著的进展,也在各种自然语言处理任务中展现出强大的能力。然而,LLM 的在实际的应用落地层面也面临着一些实际挑战,其中之一就是效率和成本问题,导致了在垂直行业实际落地的应用非常少。因为现有的 LLM 通常需要大量的计算资源和内存,这限制了它们在实际应用中的部署。

特别是在处理长文本输入时,LLM 的效率问题尤为突出。这是因为 LLM 需要存储和处理大量的中间结果,而长文本输入会导致中间结果的数量急剧增加。为了解决这个问题,研究人员提出了各种方法来提高 LLM 的效率,例如模型压缩、剪枝和量化等。

最近,由香港城市大学朱磊和商汤研究院联合发布的研究论文《RelayAttention for Efficient Large Language Model Serving with Long System Prompts》中提到 RelayAttention 是一种新的注意力机制,可以有效地提高 LLM 处理长文本输入的效率。RelayAttention 通过减少内存访问冗余来实现这一点,它允许 LLM 在处理一批输入词时仅从内存中读取一次隐藏状态,而不是多次读取。这可以显著减少 LLM 的计算量和内存占用,从而提高其效率。

从上图中的测试结果对比,可以看到 RelayAttention 将 LLM 的吞吐量提高了 75%。这意味着使用 RelayAttention 的 LLM 可以在相同的时间内处理比使用传统注意力机制的 LLM 多 75% 的请求。

1、延迟与系统提示长度: 左侧图表显示了不同注意力机制的延迟随系统提示长度的增加而变化的情况。RelayAttention(蓝色条形图)在所有提示长度中都具有最低的延迟,对于最长的提示长度,它比 PagedAttention(橙色条形图)快 7 倍。这是因为 RelayAttention 可以从 DRAM 中读取隐藏状态一次,用于一批输入词,而 PagedAttention 需要多次读取它们。

2、吞吐量: 右侧图表显示了不同 LLM 配置的吞吐量随请求速率的增加而变化的情况。vLLM-RA(ours)(蓝线)在所有请求速率中都具有最高的吞吐量,对于最高的请求速率,它比 vLLM-PS(橙线)高 75%。这是因为 RelayAttention 每秒可以处理比 PagedAttention 更多的词,因为它的延迟更低。

二、RelayAttention 解决了什么问题?

在实际应用中,大型语言模型 (LLM) 需要高效地处理大量请求,尤其是当这些请求包含用于引导模型响应的冗长系统提示符时。然而,长提示符会增加计算量,并随着序列长度的增加而导致生成新词的成本不断提高,最终造成模型吞吐量和延迟的瓶颈。RelayAttention 旨在就是为了解决这一问题,在不影响生成质量的前提下,提高 LLM 在处理长系统提示符时的效率。

RelayAttention 的主要优势在于它能够减少内存访问冗余。传统的注意力机制需要将隐藏状态从片外 DRAM 传输到片上 SRAM 多次,才能处理每个请求。而 RelayAttention 只需要将隐藏状态从 DRAM 中读取一次,就可以处理一批输入词。这可以显著减少 LLM 的计算量和内存占用,从而提高其效率。

RelayAttention 的另一个优势是它不需要对模型进行重新训练。这意味着它可以很容易地集成到现有的 LLM 中,而无需更改模型本身。

RelayAttention 可以大幅提高 LLM 的吞吐量,因为它可以降低注意力计算的延迟。这意味着 LLM 可以更快地处理每个请求,从而在相同的时间内处理更多的请求。

三、RelayAttention 如何解决问题?

RelayAttention 是一种创新的注意力算法,它针对现有因果注意力算法在处理系统提示符时内存使用效率低下的问题进行了优化。现有的算法需要反复访问内存,将缓存的隐藏状态从片外 DRAM 传输到片上 SRAM,而 RelayAttention 允许这些隐藏状态仅从 DRAM 中读取一次,并用于处理一批输入词。这种对内存访问冗余的减少不仅提高了效率,同时也保证了生成质量。RelayAttention 的另一个优点是简单易用,它基于对因果注意力机制的数学公式的重新构造,无需对模型进行重新训练

四、RelayAttention 的实际应用情况

研究人员在 ShareGPT 和 MMLU 数据集以及三种不同的 GPU 上测试了 RelayAttention 的性能。他们使用了 vLLM 的三种不同版本,vLLM 是一个专门为高吞吐量 LLM 服务设计的流行开源库。

其中两种配置使用了 PagedAttentionPromptCaching 技术,而第三种配置使用了 RelayAttention。研究人员还发布了将 RelayAttention 与 vLLM 一起使用的代码,方便其他研究人员进行测试和应用。

测试结果表明将 RelayAttention 集成到 vLLM 中,可以将 Llama2-7B 模型在聊天机器人工作负载中的可持续请求率提高 2.2 倍,吞吐量提高 2 倍。研究人员还观察到,其他几种流行的 LLM 也取得了类似的效率提升。

值得注意的是,随着系统提示符长度的增加,RelayAttention 带来的效率提升也更加明显。更重要的是,即使提示符的长度持续增加,RelayAttention 也能够保持其吞吐量,这对于能够支持跨越数十万个词的上下文的新模型来说特别有用。

RelayAttention 特别适用于批量推理,因为批量大小越大,RelayAttention 的效率就越高。但是,当只有一个请求时,例如在设备上运行 LLM 时,RelayAttention 就没有明显的优势。因此,RelayAttention 更适合云服务场景。

随着 LLM 被部署在不同的环境和设备中,研究人员正在寻找新的方法来提高它们的运行速度和降低内存占用。RelayAttention 是优化 LLM 推理的几种技术之一。最近,苹果公司推出了“LLM in a flash”技术,可以减少 LLM 在笔记本电脑和智能手机等边缘设备上的内存占用量。苏黎世联邦理工学院的研究人员也提出了一种新的方法,可以通过重新排列 Transformer 架构来消除不必要的计算,并将推理速度提高高达 300 倍。

五、RelayAttention 的未来发展?

RelayAttention 的出现为 LLM 的运行效率带来了显著提升,特别是在处理系统密集型任务方面。由于它可以无需修改模型本身即可集成,因此有望被 LLM 服务快速采用并得到广泛应用。此外,RelayAttention 的代码已经公开[2],LLM 社区可以对其进行进一步测试和优化,推动其发展和应用。

六、References

[1]. Lei Zhu, Xinjiang Wang, Wayne Zhang, Rynson W.H. Lau, R. (2024). RelayAttention for Efficient Large Language Model Serving with Long System Prompts: https://github.com/rayleizhu/vllm-ra

[2]. vLLM with RelayAttention integration, A vLLM fork with RelayAttention implemented: https://github.com/rayleizhu/vllm-ra

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

【python】Jupyter Notebook 修改默认路径

文章目录 一、修改前(一)问题(二)修改前的默认路径 二、修改配置文件、更改路径(一)找到配置文件并打开(二)创建目标文件夹、得到新的路径(三)修改配置文件 三…

Salesforce宣布将停用Workflow Rules和Process Builder!

在近期的公告中,Salesforce透露在2025年12月31日之后将不再支持Workflow Rules和Process Builder。 Salesforce敦促用户在截止日期前将其自动化流程迁移到Flow Builder,以确保不间断的支持和漏洞修复。此举正值Salesforce将重点转向更现代、可扩展、低代…

【双指针】Leetcode 有效三角形的个数

题目解析 611. 有效三角形的个数 算法讲解 回顾知识&#xff1a;任意两数之和大于第三数就可以构成三角形 算法 1&#xff1a;暴力枚举 int triangleNumber(vector<int>& nums) {// 1. 排序sort(nums.begin(), nums.end());int n nums.size(), ret 0;// 2. 从…

LabVIEW智能家居安防系统

LabVIEW智能家居安防系统 随着科技的飞速发展和人们生活水平的不断提升&#xff0c;智能家居系统以其便利性和高效性&#xff0c;逐渐成为现代生活的新趋势。智能家居安防系统作为智能家居系统的重要组成部分&#xff0c;不仅能够提高家庭的安全性&#xff0c;还能为用户提供更…

3-Flume之拦截器与GangLia监控

Flume Interceptor 概述 Interceptor(拦截器)本身是Source的子组件之一&#xff0c;可以对数据进行拦截、过滤、替换等操作不同于Selector&#xff0c;一个Source上可以配置多个Interceptor&#xff0c;构成拦截器链。需要注意的是&#xff0c;后一个拦截器不能和前一个拦截…

zookeeper面试题

文章目录 ZooKeeper 是什么&#xff1f;ZooKeeper 提供什么&#xff1f;1. 文件系统2. 通知机制 ZooKeeper 文件系统四种类型的 znode1. PERSISTENT (持久化目录节点)2. PERSISTENT_SEQUENTIAL (持久化顺序编号目录节点)3. EPHEMERAL (临时目录节点)4. EPHEMERAL_SEQUENTIAL (临…

flutter 弹窗之系列二

自定义弹窗&#xff08;含底部抽屉&#xff09;Dialog class MyHomePage extends StatefulWidget {const MyHomePage({super.key, required this.title});final String title;overrideState<MyHomePage> createState() > _MyHomePageState(); }class _MyHomePageState…

教程3_图像的轮廓

目录 目标 1. 特征矩 2、轮廓质心 3. 轮廓面积 4. 轮廓周长 5. 轮廓近似 6. 轮廓凸包 7. 边界矩形 7.1.直角矩形 7.2. 旋转矩形 8. 最小闭合圈 9. 拟合一个椭圆 10. 拟合直线 目标 在本文中&#xff0c;我们将学习 - 如何找到轮廓的不同特征&#xff0c;例如面积&…

【数据分享】1929-2023年全球站点的逐年平均露点(Shp\Excel\免费获取)

气象数据是在各项研究中都经常使用的数据&#xff0c;气象指标包括气温、风速、降水、能见度等指标&#xff0c;说到气象数据&#xff0c;最详细的气象数据是具体到气象监测站点的数据&#xff01; 有关气象指标的监测站点数据&#xff0c;之前我们分享过1929-2023年全球气象站…

某云盘encryptMsg 加密之自动化扣webpack

前言 本文主要介绍了webpack半自动化扣代码的流程。不需要ast基础。也不涉及加密的过程。网站硬扣的话很麻烦。特地挑一个模块多的网站去搞。着重介绍于webpack工具的使用与实现方式。 这里的话。本人也开源到了github上了。本人代码写的烂。大佬勿喷&#xff0c; https://gi…

PriorityQueue详细解读

咦咦咦&#xff0c;各位小可爱&#xff0c;我是你们的好伙伴——bug菌&#xff0c;今天又来给大家普及Java SE相关知识点了&#xff0c;别躲起来啊&#xff0c;听我讲干货还不快点赞&#xff0c;赞多了我就有动力讲得更嗨啦&#xff01;所以呀&#xff0c;养成先点赞后阅读的好…

Quartus II仿真出现错误

ModelSim executable not found in D:/intelFPGA/18.0/quartus/bin64/modelsim_ase/win32aloem/ Error. 找不到modelsim地址&#xff0c;原来是我下载了.exe,但没有双击启动安装ase文件夹呀&#xff01;&#xff01;&#xff01;&#xff01;晕&#xff0c;服了我自己

【C++11】thread线程库

【C11】thread线程库 目录 【C11】thread线程库thread类的简单介绍函数指针lambda表达式常用在线程中 线程函数参数join与detach利用RAII思想来自动回收线程 原子性操作库(atomic)atomic中的load函数&#xff1a;atomic中对变量进行原子操作的一些函数 CAS(Compare-And-Swap)无…

YOLOv5全网独家改进: 红外小目标 | 注意力改进 | 多膨胀通道精炼(MDCR)模块,红外小目标暴力涨点| 2024年3月最新成果

💡💡💡本文独家改进:多膨胀通道精炼(MDCR)模块,解决目标的大小微小以及红外图像中通常具有复杂的背景的问题点,2024年3月最新成果 💡💡💡红外小目标实现暴力涨点,只有几个像素的小目标识别率大幅度提升 改进结构图如下: 收录 YOLOv5原创自研 https://b…

jupyter lab使用虚拟环境

python -m ipykernel install --name 虚拟环境名 --display-name 虚拟环境名然后再启动jupyter lab就行了

Gitea CORS Access-Control-Allow-Origin 的问题

最近我们在想使用我们提供的代码库进行元数据提供的时候&#xff0c;启动的服务报 CORS 问题。 如果你的 Gitea 服务器是直接暴露给外部使用的话&#xff0c;可以在 Gitea 的配置文件中添加下面的配置&#xff1a; [cors] ENABLED true ALLOW_DOMAIN *在完成上面的…

【学习心得】神经网络知识中的符号解释

这里我对我学到的神经网络知识中&#xff0c;常见的符号做一下记录和总结&#xff0c;方便自己在后面学习中复习。下图二分类识别图像识别猫为例。为了保存一张图片&#xff0c;需要三个矩阵&#xff0c;它们分别对应图片中的红、绿、蓝三种颜色通道&#xff0c;如果图片大小为…

MySQL高阶SQL语句

文章目录 MySQL高阶SQL语句MySQL常用查询1、按关键字排序1.1 语法1.2 ASC和DESC1.3 对数据表中信息进行排序1.3.1 普通排序1.3.2 结合where进行条件过滤1.3.3 对多个字段进行排序 2、区间判断及查询不重复记录2.1 and/or —— 且/或2.1.1 普通查询2.1.2 嵌套/多条件查询 2.2 di…

aspect-ratio宽高比

<div class"wrapper"><div class"item">grid-tamplate-columns&#xff1a;设置容器每列的宽度(项目的宽度)grid-template-rows&#xff1a;设置容器每行的宽度(项目的高度)grid-row-gap&#xff1a;设置每行之间的行间距grid-column-gap&…

指定的文件类型无效: animExport

指定的文件类型无效: animExport 原因anim插件没有启用 你可以在 Maya 的“窗口”&#xff08;Window&#xff09;> “设置/首选项”&#xff08;Settings/Preferences&#xff09;> “插件管理器”&#xff08;Plug-in Manager&#xff09;中查看和管理插件。
最新文章