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.mzph.cn/news/780212.shtml

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

相关文章

【spring】@Primary注解学习

Primary介绍 Primary 是 Spring 框架中的一个注解,用于在多个相同类型的 bean 中指定一个默认的 bean。当 Spring 容器在自动装配时遇到类型冲突,即存在多个相同类型的 bean 时,如果没有使用 Qualifier 或其他方式指定具体的 bean&#xff0…

关于深度学习的 PyTorch 项目如何上手分析?从什么地方切入?

文章目录 PyTorch 项目分析1.背景2.分析流程 PyTorch 项目分析 1.背景 当我们拿到一个 PyTorch 的深度学习项目时,应该怎么入手?怎么去查看代码? 2.分析流程 首先阅读对应项目的 README.md 文件。通过阅读 README.md ,一般可以…

高风险IP来自哪里:探讨IP地址来源及其风险性质

在网络安全领域,高风险IP地址是指那些可能涉及恶意活动或网络攻击的IP地址。了解这些高风险IP地址的来源可以帮助网络管理员更好地识别和应对潜在的安全威胁。本文将探讨高风险IP地址的来源及其风险性质,并提供一些有效的应对措施。 风险IP查询&#xf…

计算机毕业设计Python+Spark知识图谱高考志愿推荐系统 高考数据分析 高考可视化 高考大数据 大数据毕业设计 机器学习 深度学习 人工智能

学院(全称): 专业(全称): 姓名 学号 年级 班级 设计(论文) 题目 基于Spark的高考志愿推荐系统设计与实现 指导教师姓名 职称 拟…

Vulnhub:MY FILE SERVER: 1

目录 信息收集 1、arp 2、nmap 3、whatweb WEB web信息收集 dirmap FTP匿名登录 enum4linux smbclient showmount FTP登录 ssh-kegen ssh登录 提权 系统信息收集 脏牛提权 get root 信息收集 1、arp ┌──(root㉿ru)-[~/kali/vulnhub] └─# arp-scan -l I…

前端bugs

问题: Failed to load plugin typescript-eslint declared in package.json eslint-config-react-app#overrides[0]: Cannot find module eslint/package.json 解决: google了一晚上还得是chatgpt管用 运行以下命令【同时还要注意项目本身使用的Node版…

【2024】使用zabbix监控ESXI 6.5虚拟化系统

本次实验将采用docker部署zabbix 5.2平台监控ESXI 6.5虚拟化系统—————————————————————————— 请自行准备环境: 关于docker部署方案请参考: docker之核心概念与安装 关于docker部署zabbix方案请参考: docker容器方式部署zabbix监控平台 关于ESXI安…

Halcon3D表面平面度检测-平面差值法

//倾斜平面矫正 https://blog.csdn.net/m0_51559565/article/details/137146179前言 通常我们对表面平面度进行检测时,通常使用2种方式。1:通过大卷积核的高斯滤波进行拟合平面,然后求取拟合平面与3D模型间的点间的距离。2:通过平…

Android裁剪图片为波浪形或者曲线形的ImageView

如果需要做一个自定义的波浪效果的进度条,裁剪图片,对ImageView的图片进行裁剪,比如下面2张图,如何实现? 先看下面的效果,看到其实只需要对第一张高亮的图片进行处理即可,灰色状态的作为背景图。…

centos7配置阿里云的镜像站点作为软件包下载源

目录 1、备份 2、下载新的 CentOS-Base.repo 到 /etc/yum.repos.d/ 3、测试 阿里镜像提供的配置方法:centos镜像_centos下载地址_centos安装教程-阿里巴巴开源镜像站 1、备份 [rootlocalhost ~]# mv /etc/yum.repos.d/CentOS-Base.repo /etc/yum.repos.d/CentO…

第十二章:预处理命令

文章目录 第十二章:预处理命令宏定义无参宏定义带参数的宏定义 文件包含处理 第十二章:预处理命令 作用:由编译预处理程序对程序中的特殊命令作出解释,以产生新的源程序对其进行正式编译 C语言与其他语言的重要区别就是可以使用预…

PTA L2-038 病毒溯源

病毒容易发生变异。某种病毒可以通过突变产生若干变异的毒株,而这些变异的病毒又可能被诱发突变产生第二代变异,如此继续不断变化。 现给定一些病毒之间的变异关系,要求你找出其中最长的一条变异链。 在此假设给出的变异都是由突变引起的&a…

用 AI 编程-释放ChatGPT的力量

最近读了本书,是 Sean A Williams 写的,感觉上还是相当不错的。一本薄薄的英文书,还真是写的相当好。如果你想看,还找不到,可以考虑私信我吧。 ChatGPT for Coders Unlock the Power of AI with ChatGPT: A Comprehens…

Vue2版本封装公共echarts的监听方法

#注意 : 因为一个页面有多个图表,所以封装一个公共的js文件,方便后续使用。 适用于Vue2版本,粘贴即用即可。 1、echartsMixin.js文件如下 // echartsMixin.js import echarts from echartsexport default {data() {return {myC…

标题:基于uQRCode的Vue前端二维码生成组件技术探究

摘要:随着移动互联网的普及,二维码作为信息传递的媒介在各类应用中得到了广泛使用。前端开发中,二维码生成功能已成为一个常见的需求。本文将深入探讨如何使用uQRCode库在Vue前端框架中封装一个二维码生成组件,该组件可适用于所有…

小迪学习笔记(内网安全)(常见概念和信息收集)

小迪学习笔记(内网安全)(一) 内网分布图内网基本概念工作组和域环境的优缺点内网常用命令域的分类单域父域和子域域数和域森林 Linux域渗透问题内网安全流程小迪演示环境信息收集mimikatzLazagne(all)凭据信息政集操作演示探针主机…

夏季水域安全管理,AI智能识别算法防溺水视频监控方案

随着夏季的到来,不少人为了一时的痛快凉爽就私自下水游泳,特别是在野外池塘,由于长期无人监管,极易发生人员溺亡事件,如何对池塘水域进行全天候无人值守智能监管,并实现发生人员闯入就立即告警?…

C# 学习第五弹——语句

一、if语句 —简单if语句 —if else 语句 —if else if else 语句 1、简单if语句 if(表达式){语句} (1)表达式必须使用圆括号括起来; (2)表达式:关系表达式或逻辑表达…

数据结构:单调栈和单调队列

文章目录 一、单调栈1.1、栈的思想1.2、单调栈1.2.1、单调栈的基本应用:找出数组中每个元素右侧第一个更大的元素1.2.2、单调栈的基本应用:找出数组中每个元素左侧第一个更大的元素1.2.3、单调栈拓展1.2.4、单调栈LeetCode题单 二、单调队列2.1、队列的思…

java数据结构与算法刷题-----LeetCode34. 在排序数组中查找元素的第一个和最后一个位置

java数据结构与算法刷题目录(剑指Offer、LeetCode、ACM)-----主目录-----持续更新(进不去说明我没写完):https://blog.csdn.net/grd_java/article/details/123063846 文章目录 二分查找 二分查找 解题思路:时间复杂度O( l o g 2 …