阿里与上交大提出 LLM 长文本计算新解法:可处理文本长达 1900k 字节

news2024/11/24 16:31:11

在实际应用大模型的过程中,尤其是处理长文本的上下文信息时,如何高效灵活地调度计算资源成为一个学术界与工业界共同关注的问题。

大语言模型所能容纳的上下文长度直接影响了诸如 ChatGPT 等高级应用与用户交互体验的优劣程度,这给云环境下的 LLM 服务系统提出了严峻挑战:不合理的资源配置不仅可能导致性能瓶颈,还可能造成宝贵的计算资源浪费。

最近,上海交通大学携手阿里研究团队针对这个问题开展了一项研究。

他们提出一个名为 DistAttention 的新颖注意力机制以及一套名为 DistKV-LLM 的分布式 LLM 服务架构,针对长文本语言任务处理中的计算难题提出了新解法,或是对行业的启示。

图片

论文链接:https://arxiv.org/pdf/2401.02669.pdf

长文本处理

LLM云服务是指通过云计算平台提供的,基于大型语言模型的各项服务。各家在LLM云服务之上也下足了马力。目前市场上主要的 LLM 云服务提供商包括但不限于亚马逊的 SageMaker、谷歌的 Cloud AI Platform、微软的 Azure Machine Learning 以及国内的阿里云等。这些平台通常提供了从模型开发到部署的一站式服务,包括计算资源、数据存储、模型训练和部署等。

上个月,一则关于阿里云 OpenSearch-LLM 服务出现故障的消息在技术人员之间传播开来。然而,由于 LLM 云服务这一概念尚未普及至大众认知层面,因此该事件在持续了一天后,便鲜有人再提起。

但这样一个不起眼的故障事件,为我们带来了一个新的思考,基于大型预训练语言模型的在线LLM云服务虽然拥有巨大的超能力,能够为用户提供高效、实时的语言理解和生成能力,但而与之而来的是其对于算力资源的巨大挑战。

拿阿里云 OpenSearch-LLM 智能问答服务为例,公开资料显示,该服务利用了先进的LLM技术,在云端提供强大的自然语言处理功能。由于模型运行所需的计算资源波动较大,特别是在处理长上下文场景时对内存和计算力的需求激增导致的。这种情况下,传统的资源分配策略可能无法有效应对动态变化的需求,从而引发服务不稳定甚至中断。

可以看出即使强大如阿里云也会受制于 LLM 长文本处理的难题。在 Infinite-LLM 的研究中,揭示了这样一个现象:LLM服务的核心运作往往倚赖于多张 GPU 卡的协同工作以完成复杂的文本任务,然而其内在的动态自回归生成机制犹如一道待解的计算难题。

在模型自回归过程中,文本如同一幅逐步渲染的画卷,每一步都根据前序内容迭代地生成新的词语或token,并将它们融合到当前上下文中作为后续生成的基础输入。这种高度动态且连续的过程使得提前精确规划资源分配成为一项不可预知的任务,从而对设计和优化云端 LLM 服务架构构成了实质性挑战。

图片

图注:在采用传统模型并行策略将网络分布在更多GPU上时,这些不随上下文扩展的层会被过度细粒度地分割

打个比方,这就类似于一位顶级厨师运用最先进的智能厨房设备,尝试烹饪一道工序繁复且需灵活调整口味的创新菜品。每当加入一种新鲜食材时,都必须依据现有的风味组合重新调配调料,而且无法预见究竟需要多少种类的食材才能成就这道完美的佳肴。

面对这一亟待解决的问题,业界各方表现出共同的关注与期待。众多研发团队积极投入研究,其中 PagedAttention等方案试图通过改进 GPU 与 CPU 之间的数据交换策略,有效地管理和调度内存资源,以期化解上述困扰LLM服务效率提升的棘手问题。

但这种方法存在几个局限性:

首先,PagedAttention的内存置换范围局限于单一节点内的GPU和CPU内存,因此对极长上下文长度的支持能力受限;

其次,尽管其分页策略旨在最小化内存碎片,但基于请求级别整体交换KV缓存(Key-Value,键值缓存,是一种计算机存储技术),错失了在分布式云环境中实现更为灵活、精细化调度的机会;

此外,对于被置换出的请求所造成的计算中断可能会导致运行任务性能抖动,从而可能违反对云服务至关重要的服务协议(SLAs)。

为了解决业界长期面临的大规模语言模型(LLM)服务中的内存管理与资源分配难题,阿里与上海交大的团队提出了一种名为 DistAttention 的新型注意力算法。

DistAttention将 KV 缓存划分为rBlocks——统一的子块,以便为具有长上下文长度的LLM服务分布式计算和内存管理注意力模块。与主要利用单个节点内的GPU或CPU内存的传统方法不同,DistAttention允许优化分布式数据中心中所有可访问的GPU或CPU内存资源,特别是那些现在利用率不高的资源。这不仅支持更长的上下文长度,还避免了与数据交换或实时迁移过程相关的性能波动。

这就像一位技艺高超的仓储大师,巧妙地将一个不断扩展的、宛如巨大食材仓库的KV缓存分割成大小适中的rBlocks储物箱,使得在面对一道配料繁多、制作复杂的超长菜单(相当于处理长上下文任务)时,每一种“食材”(数据)都能迅速而准确地送达各自的烹饪台(分布式计算节点)。

与那些只在单一厨房(单个GPU或CPU内存节点)内调配食材的传统方法相比,这位“仓储大师”更擅长调动整个美食广场(即数据中心内的所有可用GPU和CPU内存资源),特别是那些闲置或使用率低的空间,使制作超长菜单变得可行且高效,避免了因频繁搬运食材造成的混乱和效率波动。

换言之,DistAttention能够灵活调度跨数据中心的所有可访问GPU或CPU内存资源,特别是那些利用率较低的部分,从而不仅支持更长的上下文处理,还能有效降低由于数据交换或实时迁移带来的性能起伏。

图片

图注:展示了DistKV-LLM如何解决内存碎片化问题

基于此,Infinite-LLM团队进一步开发了集成 DistAttention 技术的 DistKV-LLM 分布式LLM服务引擎。

DistKV-LLM 是一个与 DistAttention 无缝集成的分布式LLM服务引擎。DistKV-LLM 擅长管理KV缓存,有效地在数据中心内的分布式 GPU 和 CPU 之间协调内存使用。当一个LLM服务实例由于 KV 缓存扩展而面临内存不足时,DistKV-LLM主动从负担较轻的实例寻求补充内存。

相比起 DistAttention,DistKV-LLM更像一位精明的协调员,在数据中心内部妥善管理和优化分布式GPU和CPU之间的KV缓存使用。当一个LLM服务实例因为KV缓存扩大而导致内存不足时,它会主动从负载较小的实例借用额外内存。

同时,DistKV-LLM还引入了一套精细的通信协议,促进云端运行的多个LLM服务实例之间进行高效、扩展性强且一致的互动协作。这套协议的核心目标是高效管理和平衡庞大的内存资源,并优先关注数据存储位置就近性和通信效率提升,这对于解决与KV缓存分布存储相关的性能瓶颈至关重要。

这意味着DistKV-LLM能够更好地驾驭大型语言模型在众多GPU和CPU上的并行运算。当LLM服务因需处理海量信息而面临内存压力时,DistKV-LLM能智慧地从负载较轻的区域获取额外内存,并制定一套高级协同规则,确保不同云上LLM实例间能够高效有序、步调一致地完成工作。这一系列设计的关键在于优化内存使用、确保数据快速存取以及减少各部分间的通信成本,即使面临复杂的分布式存储挑战,也能保障系统的整体高性能表现。

DistAttention与DistKV-LLM双管齐下,为分布式环境下LLM服务所面临的资源分配与优化挑战提供了一个切实有效的解决方案。

在具体的实验测评之中,DistAttention与DistKV-LLM在资源管理方面也有卓越的表现。

研究人员在一个包含4个节点和32块GPU的集群上部署了DistKV-LLM系统。每个节点配备了8块NVIDIA A100(80GB)GPU。模型方面则选择了一个具有代表性的模型LLaMA2 进行评估(LLaMA2系列包含了三个不同规模的模型:7B、13B和70B。)。

团队对分布式系统配置进行了广泛测试,涵盖了从2个到32个实例的多种规模。在评测过程中,采用了包含上下文长度最高达1,900K字节的18个代表性基准数据集进行严格检验。结果显示,相较于当前最尖端的技术,系统成功实现了1.03至2.4倍的显著端到端性能飞跃,并且在处理更长上下文信息方面表现出色,支持的上下文长度可扩展至原先的2至19倍之多。同时,在处理标准长度上下文任务场景下,系统的吞吐量也取得了令人瞩目的提升,增长幅度在1.4至5.3倍之间。

图片

结语

随着深度学习技术在自然语言处理领域的广泛应用与深化,端到端性能的研究受到了广泛关注。在应对长文本时,这种性能飞跃的重要性尤为凸显,因为它直接影响了我们能否高效而准确地驾驭海量文本数据,并从中抽丝剥茧般提取出有价值的信息。

DistAttention与DistKV-LLM的结合,通过智能管理内存资源、优化分布式计算策略,成功解决了大规模语言模型服务在长上下文处理中的难题,使系统能够从容应对超长文本序列,同时保持端到端性能提升以及上下文长度扩展能力。未来云端自然语言处理应用有望迎来全新的突破与变革。

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

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

相关文章

【问题】SpringBoot项目中log4j与logback的Jar包冲突问题

这篇文章主要给大家介绍了解决SpringBoot项目中log4j与logback的Jar包冲突问题,文中有详细的解决方法和冲突的原因。 SLF4J: Class path contains multiple SLF4J bindings. SLF4J: Found binding in [jar:file:/C:/Users/lx/.m2/repository/org/slf4j/slf4j-log4j12/1.7.25/sl…

Java学习笔记(六)——基本数据类型及其对应的包装类

文章目录 包装类基本数据类型及其对应的包装类获取Integer对象的方式(了解)获取Integer对象两种方式的区别(掌握) 包装类的计算:自动装箱和自动拆箱Integer成员方法综合练习练习1练习2练习3练习4练习5 包装类 包装类:基本数据类型对应的引用数据类型。 …

10本医护升职称可用的医药普刊推荐,参数大全!

医、药、护、技及医学工程等相关的人员,进行卫生高级职称评审时,需要在专业期刊上公开发表本专业学术论文,论文的方向、内容质量以及发表的刊物都至关重要。今天常笑医学给大家整理了10本不错的医药普刊,供大家参考! 1…

x-cmd pkg | busybox - 嵌入式 Linux 的瑞士军刀

目录 简介首次用户功能特点竞品和相关作品 进一步阅读 简介 busybox 是一个开源的轻量级工具集合,集成了一批最常用 Unix 工具命令,只需要几 MB 大小就能覆盖绝大多数用户在 Linux 的使用,能在多款 POSIX 环境的操作系统(如 Linu…

普中STM32-PZ6806L开发板(有点悲伤的故事续-人灯还未了)

简介 继上篇 普中STM32-PZ6806L开发板(有点悲伤的故事) 说到 关于 普中STM32-PZ6806L开发板的LED流水灯也被烧坏掉了,再也无法玩流水灯, 内心充满了只会流水灯的不甘, 流水灯就是单片机的Hello World,怎么能没有呢? 事情发展 好巧不巧想起最近…

十九:爬虫最终篇-平安银行商城实战

平安银行商场实战 需求 获取该商城商品信息 目标网址 https://m.yqb.com/bank/product-item-50301196.html?mcId1583912328849970&loginModepab&historyy&sceneModem&traceid30187_4dXJVel1iop详细步骤 1、寻找数据接口 2、对比payload寻找可疑参数 3、多…

Spring——基于注解的AOP控制事务

基于注解的AOP控制事务 1.拷贝上一次代码 2.applicationContext.xml <!-- 开启spring对注解事务的支持 --> <tx:annotation-driven transaction-manager"transactionManager"/> 3.service Service Transactional(readOnlytrue,propagation Propagatio…

RT_Thread 调试笔记:时间相关,时钟管理函数,延时,定时器、 毫秒转换为时分秒 等

说明&#xff1a;记录日常使用 RT_Thread 开发时做的笔记。 持续更新中&#xff0c;欢迎收藏。 1. 延时函数 1. us延时函数 rt_hw_us_delay(rt_uint32_t us);//输如数据是us rt_hw_us_delay(200);//输入数据是us 2. ms延时函数 rt_thread_mdelay(1000);//输入数据是ms 2…

Android Matrix (二)具体图形变换参数的获取

Android Matrix &#xff08;二&#xff09;具体图形变换参数的获取 Matrix 类在 Android 中用于表示 3x3 的变换矩阵。这个矩阵可以应用于画布&#xff08;Canvas&#xff09;&#xff0c;视图&#xff08;View&#xff09;或者位图&#xff08;Bitmap&#xff09;&#xff0…

C#设计模式之单例模式

介绍 单例模式&#xff08;Singleton&#xff09;保证一个类仅有一个实例&#xff0c;并提供一个访问它的全局访问点。 单例模式的结构图如下所示&#xff1a; 使用单例模式的原因 对一些类来说&#xff0c;只有一个实例是很重要的。如何才能保证一个类只有一个实例并且这个…

【JAVA】Iterator 怎么使用?有什么特点

&#x1f34e;个人博客&#xff1a;个人主页 &#x1f3c6;个人专栏&#xff1a; JAVA ⛳️ 功不唐捐&#xff0c;玉汝于成 目录 前言 正文 Iterator 接口的主要方法&#xff1a; 例子 特点&#xff1a; 结语 我的其他博客 前言 在编程的世界里&#xff0c;迭代…

【QML COOK】- 000-创建Project

1. 文件->New Project... 2. Application(Qt)->Qt Quick Application(compat) 3. 填好【名称】和【创建路径】 4. 选择CMake 5. 选择QT6.2 6. 直接【下一步】 7. 直接下一步 8. 直接下一步 9. 出现工程文件 10. 点击运行 11. 出现窗口

npm报错error:03000086:digital envelope routines::initialization error

可能是因为node版本过高&#xff0c;与现在的项目不符合 这是降低node版本的命令&#xff0c;然后重新运行 npm install npm8.1.2 -g

张留念瞰游天下总经理与汤加政府签署合作备忘 将于2024年隆重启动

汤加是南太平洋上一个美丽的岛国&#xff0c;是南太平洋唯一维持君主立宪制的国家&#xff0c;全国由173个海岛组成&#xff0c;海洋、海岛旅游资源丰富&#xff0c;是个原生态的旅游胜地。 中汤两国建交25年以来&#xff0c;两国政府高级官员和代表团互访频繁&#xff0c;在政…

【源码预备】Calcite基础知识与概念:关系代数概念、查询优化、sql关键字执行顺序以及calcite基础概念

文章目录 一. 关系代数的基本知识二. 查询优化三. SQL语句的解析顺序1. FROM2. WHERE3. GROUP BY4. HAVING5. SELECT 四. Apache Calcite中的基本概念1. Adapter2. Calcite中的关系表达式2.1. 关系表达式例子2.2. 源码底层结构 3. Calcite的优化规则4. Calcite的Trait--算子物理…

自动挡的闪300?QJ要做第一个吃螃蟹的人了?

其实在发布会当天&#xff0c;有一台车在现场热度是比赛921还高的&#xff0c;因为四缸大跑车大家可能都见多了&#xff0c;而QJ带来一台自动挡的闪300&#xff0c;这个自动挡其实是需要加个引号的&#xff0c;因为升档的时候是需要你按一下手把上的按键的&#xff0c;有点类似…

设计模式的艺术P1基础—2.4-2.11 面向对象设计原则

设计模式的艺术P1基础—2.4-2.11 面向对象设计原则 2.4 面向对象设计原则概述 向对象设计的目标之一在于支持可维护性复用&#xff0c;一方面需要实现设计方案或者源代码的重用&#xff0c;另一方面要确保系统能够易于扩展和修改&#xff0c;具有较好的灵活性。 面向对象设计…

基于Java SSM框架实现实现机房预约系统项目【项目源码+论文说明】

基于java的SSM框架实现机房预约系统演示 摘要 21世纪的今天&#xff0c;随着社会的不断发展与进步&#xff0c;人们对于信息科学化的认识&#xff0c;已由低层次向高层次发展&#xff0c;由原来的感性认识向理性认识提高&#xff0c;管理工作的重要性已逐渐被人们所认识&#…

这款Web剪藏工具绝了,支持10+平台内容剪辑同步!

前言 Web Clipper 是一个开源项目&#xff0c;旨在帮助用户轻松地保存和组织网页内容。它可以作为浏览器插件安装到常见的浏览器中&#xff0c;如Chrome、Firefox 等&#xff0c;用户可以使用它来保存网页、截取文章、添加标签和注释等操作&#xff0c;从而方便地管理和分享自…

[VUE]4-状态管理vuex

目录 状态管理 vuex 1、vuex 介绍 2、安装 3、使用方式 4、总结 &#x1f343;作者介绍&#xff1a;双非本科大三网络工程专业在读&#xff0c;阿里云专家博主&#xff0c;专注于Java领域学习&#xff0c;擅长web应用开发、数据结构和算法&#xff0c;初步涉猎Python人工智…