EdgeShard:通过协作边缘计算实现高效的 LLM 推理

news2025/5/21 3:39:25

(2024-05-23) EdgeShard: Efficient LLM Inference via Collaborative Edge Computing (EdgeShard:通过协作边缘计算实现高效的 LLM 推理)

作者: Mingjin Zhang; Jiannong Cao; Xiaoming Shen; Zeyang Cui;
期刊: (发表日期: 2024-05-23)
期刊分区:
本地链接: Zhang 等 - 2024 - EdgeShard Efficient LLM Inference via Collaborative Edge Computing.pdf
DOI: 10.48550/arXiv.2405.14371
摘要: Large language models (LLMs) have shown great potential in natural language processing and content generation. However, current LLMs heavily rely on cloud computing, leading to prolonged latency, high bandwidth cost, and privacy concerns. Edge computing is promising to address such concerns by deploying LLMs on edge devices, closer to data sources. Some works try to leverage model quantization to reduce the model size to fit the resource-constraint edge devices, but they lead to accuracy loss. Other works use cloud-edge collaboration, suffering from unstable network connections. In this work, we leverage collaborative edge computing to facilitate the collaboration among edge devices and cloud servers for jointly performing efficient LLM inference. We propose a general framework to partition the LLM model into shards and deploy on distributed devices. To achieve efficient LLM inference, we formulate an adaptive joint device selection and model partition problem and design an efficient dynamic programming algorithm to optimize the inference latency and throughput, respectively. Experiments of Llama2 serial models on a heterogeneous physical prototype demonstrate that EdgeShard achieves up to 50% latency reduction and 2x throughput improvement over baseline methods.

此文为机器辅助翻译,仅供个人学习使用,如有翻译不当之处欢迎指正

Abstract

大语言模型(LLMs)在自然语言处理和内容生成方面展现出了巨大潜力。然而,当前的大语言模型严重依赖云计算,这导致了延迟延长、带宽成本高昂以及隐私方面的问题。边缘计算有望通过在更靠近数据源的边缘设备上部署大语言模型来解决这些问题。一些研究尝试利用模型量化来减小模型大小,以适配资源受限的边缘设备,但这会导致精度损失。还有一些研究采用云边协作的方式,却受到网络连接不稳定的困扰。在本研究中,我们利用协同边缘计算来促进边缘设备和云服务器之间的协作,从而共同高效地执行大语言模型推理。我们提出了一个通用框架,将大语言模型划分为多个分片,并部署在分布式设备上。为了实现高效的大语言模型推理,我们构建了一个自适应的联合设备选择和模型分区问题,并设计了一种高效的动态规划算法,分别对推理延迟和吞吐量进行优化。在异构物理原型上对 Llama2 系列模型进行的实验表明,与基线方法相比,EdgeShard 的推理延迟最多可降低 50%,吞吐量最多可提高 2 倍。

引言

近年来,大语言模型(LLMs)的出现引起了公众、行业和学术界的广泛关注,它代表了人工智能(AI)领域的一项重大突破。许多参与者带着他们的先进模型进入这一领域,比如 OpenAI 的 GPT-4 [1]、Meta 的 Llama [2] 以及谷歌的 PALM [3]。大语言模型基于 Transformer 架构 [4] 构建,其特点是参数数量庞大,并且训练数据量巨大。大语言模型的参数规模通常高达数千亿,这使得模型能够捕捉语言和上下文的复杂模式,从而在生成连贯且符合上下文的回复方面表现出色。这种现象也被称为 “智能涌现” 。大语言模型的卓越能力使其在广泛的应用领域中具有很高的价值和出色的表现,从聊天机器人、内容生成(例如文本摘要和代码生成)到教育和研究辅助工具等。

然而,当前的大语言模型严重依赖云计算,面临响应时间长、带宽成本高以及隐私问题 [5]。首先,对云计算的依赖限制了模型在实时应用(如机器人控制、导航或勘探)中进行快速推理的能力,在这些应用场景中,即时响应至关重要。其次,大量数据(包括文本、视频、图像、音频和物联网传感数据)传输到云数据中心,这会导致大量的带宽消耗,给网络架构带来巨大压力。第三,基于云的大语言模型引发了严重的隐私问题,尤其是在处理医院和银行的敏感数据,以及手机上的文本输入和照片等个人数据时。

边缘计算有望通过在更靠近数据源的网络边缘设备(如边缘服务器、边缘网关和手机)上部署大语言模型(LLMs)来解决上述挑战[6]。然而,大语言模型计算量极大且资源需求高。例如,全精度的Llama2 - 7B模型推理至少需要28GB内存,这可能超出了大多数边缘设备的容量。一些研究利用模型量化技术[7]-[12]来减小模型大小,以适配资源受限的边缘设备。但这往往会导致精度损失。其他研究倾向于采用云边协作的方式[13]、[14],即将大语言模型划分为两个子模型,并将部分计算工作负载卸载到配备高端GPU的强大云服务器上。然而,边缘设备与云服务器之间的延迟通常较高且不稳定。

![[Pasted image 20250509094450.png]]

另外,近年来我们见证了边缘计算能力的持续增长,大量边缘服务器和边缘云被部署在网络边缘,还有大量资源有待利用。因此,最近提出了协同边缘计算(CEC)[15,16],旨在整合地理上分散的边缘设备和云服务器的计算资源,以实现高效的资源利用和性能优化。如图1所示,无处不在的分布式边缘设备和云服务器相互连接,形成一个共享资源池,共同提供即时数据处理和人工智能服务。协同边缘计算(CEC)与现有的边缘计算研究有所不同。现有的边缘计算研究侧重于云、边缘和终端设备之间的垂直协作,却忽视了边缘设备之间的水平协作,存在资源利用未优化、服务覆盖范围受限以及性能不均衡等问题。

受协同边缘计算(CEC)愿景的启发,我们提出了一种通用的大语言模型推理框架EdgeShard,以支持在分布式边缘设备和云服务器上进行高效的大语言模型协同推理。为简便起见,以下我们用计算设备指代边缘设备和云服务器。在一个由异构计算设备组成的网络中,EdgeShard将大语言模型划分为多个分片,并根据异构的计算和网络资源以及设备的内存预算,将它们分配给合适的设备。为了优化性能,我们构建了一个联合设备选择和模型分区问题,并设计了一种高效的动态规划算法,分别用于最小化推理延迟和最大化推理吞吐量。在实际测试平台上进行的大量实验表明,与设备本地推理和垂直云边协同推理方法相比,EdgeShard的推理延迟最多可降低50%,吞吐量最多可提高2倍。

我们的工作与那些在云数据中心将大语言模型进行划分并分配到多个GPU上的研究有所不同,比如Gpipe[17]和PipeDream[18]。在边缘计算环境中部署大语言模型与在云端部署有很大差异。其一,云服务器通常配备同质化的GPU,而边缘设备本质上具有异构的计算能力。其二,用于大语言模型的现代云GPU通常通过高带宽网络连接,如InfiniBand和Nvlinks,而边缘设备则通过异构的低带宽网络连接。例如,Nvlinks的带宽可达600GB/s,而边缘设备之间的带宽范围仅从几十Kbps到1000Mbps。为云数据中心设计的大语言模型部署方案忽略了异构且资源受限的边缘计算环境。

我们的贡献主要体现在三个方面。

  • 首先,我们提出了一个通用的大语言模型推理框架,用于在边缘计算环境中部署大语言模型,该框架支持异构边缘设备和云服务器之间进行协同推理。
  • 此外,我们定量研究了如何选择计算设备以及如何对大语言模型进行分区以优化性能。我们从数学角度构建了联合设备选择和模型分区问题,并分别提出了动态规划算法来优化推理延迟和吞吐量。
  • 我们还在物理测试平台上,使用最先进的Llama2系列模型对EdgeShard的性能进行了评估。实验结果表明,EdgeShard的性能显著优于各种基线方法。

预备知识与研究动机

生成式大语言模型推理。 大语言模型通常是指基于解码器的拥有数十亿参数的Transformer模型。与基于编码器架构的BERT[19]不同,BERT的推理过程是单阶段的,而大语言模型的推理过程是迭代的,通常包括两个阶段:提示处理阶段和自回归生成阶段。提示处理阶段也被称为预填充阶段。

在提示处理阶段,模型将用户输入的初始词元 ( x 1 , . . . , x n ) (x_{1}, ..., x_{n}) (x1,...,xn)作为输入,并通过计算概率 P ( x n + 1 ∣ x 1 , . . . , x n ) P(x_{n+1} | x_{1}, ..., x_{n}) P(xn+1x1,...,xn)生成第一个新的词元 x n + 1 x_{n+1} xn+1

在自回归生成阶段,模型基于初始输入和目前已生成的词元,每次生成一个词元。这一阶段会通过多次迭代按顺序生成词元,直到满足停止条件,即生成序列结束(EOS)词元,或者达到用户指定的最大词元数量,又或者达到大语言模型所限制的最大词元数量。

![[Pasted image 20250509094836.png]]

如图 2 所示,假设大语言模型有 N 层,它会接收一系列输入词元,并运行所有层,逐个生成词元。在预填充阶段,模型一次性接收输入 “Today is a”,生成的第一个词元是 “good”。在自回归生成阶段,模型首先将 “Today is a good” 作为输入,生成下一个词元 “day”。然后,它将 “Today is a good day” 作为输入,生成下一个词元 “EOS”,这表明生成结束。由于生成的每个词元都由序列中它前面的所有词元决定,大语言模型利用键值缓存(KV 缓存)来避免重复计算,存储之前的计算结果以加快响应速度,从而减少计算工作量并缩短响应时间。预填充阶段生成一个词元的时间比自回归阶段要长得多(通常是10倍),因为预填充阶段需要计算所有输入词元的键值缓存(KV缓存)进行初始化。

![[Pasted image 20250509095008.png]]

大语言模型非常消耗内存。单个边缘设备可能没有足够的内存来容纳一个大语言模型。以最受欢迎的大语言模型之一——Llama2为例。如表1所示,Llama2有三种不同的版本,即70亿参数(7B)、130亿参数(13B)和700亿参数(70B)。从表中我们可以看到,Llama2-7B的全精度推理至少需要28GB的内存,而智能手机通常只有6到12GB的内存,英伟达Jetson Orin NX设备也只有8到16GB的内存。这些设备无法承担在本地进行大语言模型推理的任务。一些研究尝试使用低精度量化,例如8比特和4比特量化。然而,这仍然可能超过边缘设备的内存容量。例如,Llama2-70B的4比特推理至少需要35GB的内存,这是大多数边缘设备无法容纳的。此外,低精度推理会导致性能下降。

在这项工作中,我们利用了协同边缘计算,这是一种计算范式,在这种范式下,地理上分布的边缘设备和云服务器协同执行计算任务。基于这一理念,我们提出了EdgeShard,这是一个通用的大语言模型推理框架。该框架允许在分布式计算设备上进行自适应的设备选择和大语言模型分区,以解决高内存需求的问题,并利用异构资源来优化大语言模型的推理。

面向大语言模型的协同边缘计算

该框架包含三个阶段,分别是性能分析、任务调度优化以及协同推理。其工作流程如图3所示。

![[Pasted image 20250509095132.png]]

性能分析是一个离线步骤,它为优化步骤分析必要的运行时跟踪信息,并且只需要进行一次。这些跟踪信息包括:1)不同设备上每一层的执行时间;2)大语言模型每一层的激活数据大小和内存消耗;3)每个设备的可用内存以及设备之间的带宽。对于每一层的执行时间,我们分别分析预填充阶段和自回归阶段生成一个词元的时间,然后取平均值。对于那些可能没有足够内存来完整加载模型以进行性能分析的设备,我们采用了动态模型加载技术。在该技术中,模型的各层会被依次加载,以适配受限的内存。然后,这些性能分析信息将被用于支持智能的任务调度策略。

调度优化。在任务调度优化阶段,调度器通过确定让哪些设备参与、如何按层划分大语言模型以及应将模型分片分配给哪些设备,来生成一个部署策略。该策略全面考虑了异构资源、设备的内存预算以及隐私限制,随后会应用到选定的设备上,以实现高效的大语言模型推理。更多细节将在第四节中阐述。

协同推理。在获得大语言模型的分区和分配策略后,选定的设备将进行协同推理。我们会在每个参与的设备上预先为键值缓存分配内存空间。对于协同推理,我们考虑两种情况,即顺序推理和流水线并行推理。

![[Pasted image 20250509095444.png]]

在顺序推理中,设备轮流使用分配的模型分片来执行计算。如图 4(a)所示,假设大语言模型被划分为 3 个分片,并分别分配给设备 1、设备 2 和设备 3。设备 1 将首先处理输入数据,然后将激活数据 / 输出发送给设备 2,设备 2 处理数据后再传输给设备 3。顺序推理适用于为单个用户服务的场景,例如智能家居场景,在这种场景中,用户的个人设备(如平板电脑、手机和智能音箱)协同执行大语言模型推理。在这样的场景中,用户输入一个提示并得到回复,然后再输入另一个提示。我们的目标是将顺序推理的延迟降至最低。

然而,从系统的角度来看,顺序推理的资源利用效率并不高。当设备1在执行计算时,设备2和设备3处于闲置状态。因此,我们采用流水线并行的方式来提高资源利用率。对于像之前在云服务器上的Gpipe[17]和PipeDream[18]等工作中所采用的流水线并行推理,输入数据首先会被分割成微批次,然后输入到系统中。如图4(b)所示,设备1首先处理数据B1,然后将中间数据传输给设备2。在处理完数据B1后,设备1会立即开始处理数据B2。以这样的流水线方式运行,每个设备都处于忙碌状态,系统资源利用率很高。

优化大语言模型推理

我们考虑一个由异构设备和异构带宽连接组成的通用协同边缘网络。更具体地说,对于一组通过异构带宽连接的异构设备,EdgeShard旨在选择设备的一个子集,并将大语言模型划分为多个分片,然后将这些分片分配给选定的设备,以最小化推理延迟或最大化吞吐量。

系统模型。大语言模型通常具有分层架构,该架构由一个嵌入层、多个解码器层和一个输出层组成。各层的参数规模和激活值(即某一层的输出)大小各不相同。我们假设该模型有 N N N层。 O i O_{i} Oi表示第 i i i层( 0 ≤ i ≤ N − 1 0 \leq i \leq N - 1 0iN1)激活值的规模。第 i i i层的内存消耗用 R e q Req Req表示。

我们考虑一个由 M M M个边缘设备和云服务器组成的网络。这些设备具有异构的计算能力和内存能力,并且云服务器在计算能力方面比边缘设备强大得多。设备 3 3 3的内存预算为 M e m j Mem _{j} Memj 。这些计算设备是相互连接的。设备 k k k与设备 j j j之间的带宽为 B k , j B_{k, j} Bk,j ,其中 0 ≤ k ≤ M − 1 0 \leq k \leq M - 1 0kM1 0 ≤ j ≤ M − 1 0 \leq j \leq M - 1 0jM1 。存在一个源节点,输入词元存储在该源节点中。在不失一般性的情况下,我们将源节点设为节点 0 0 0。本文中使用的主要符号如表二所示。

![[Pasted image 20250509101524.png]]

A. 优化大语言模型(LLM)的推理延迟

问题表述。我们使用一个二元变量 X i , j X_{i,j} Xi,j来表示大语言模型(LLM)的分配策略。如果第 i i i层被分配到节点 j j j,则 X i , j X_{i,j} Xi,j等于 1 1 1,否则 X i , j X_{i,j} Xi,j等于 0 0 0。某一层将且仅会被分配到一个节点。因此,对于所有的 i i i,有 ∑ j = 0 M − 1 X i , j = 1 \sum_{j = 0}^{M - 1}X_{i,j} = 1 j=0M1Xi,j=1 。设 t i , j comp t_{i,j}^{\text{comp}} ti,jcomp表示第 i i i层在节点 j j j上的计算时间。假设第 i − 1 i - 1 i1层和第 i i i层分别被分配到节点 k k k和节点 j j j。我们用 t i − 1 , k , j comm t_{i - 1,k,j}^{\text{comm}} ti1,k,jcomm表示将第 i − 1 i - 1 i1层的激活值从节点 k k k传输到节点 j j j的通信时间。数据传输时间由某一层的输出规模以及两个节点之间的带宽决定。如果第 i − 1 i - 1 i1层和第 i i i层在同一个节点上,我们假设传输时间为 0 0 0。因此,我们有:

t i − 1 , k

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

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

相关文章

火山 RTC 引擎9 ----集成 appkey

一、集成 appkey 1、网易RTC 初始化过程 1)、添加头文件 实现互动直播 - 互动直播 2.0网易云信互动直播产品的基本功能包括音视频通话和连麦直播,当您成功初始化 SDK 之后,您可以简单体验本产品的基本业务流程,例如主播加入房间…

Adminer:一个基于Web的轻量级数据库管理工具

Adminer 是一个由单个 PHP 文件实现的免费数据库管理工具,支持 MySQL、MariaDB、PostgreSQL、CockroachDB、SQLite、SQL Server、Oracle、Elasticsearch、SimpleDB、MongoDB、Firebird、Clickhouse 等数据库。 Adminer 支持的主要功能如下: 连接数据库服…

RK3568下QT实现按钮切换tabWidget

运行效果: 在 Qt 应用程序开发过程中,TabWidget 是一种非常实用的 UI 组件,它能够以选项卡的形式展示多个页面内容,帮助我们有效组织和管理复杂的界面布局。而在实际使用时,常常会有通过按钮点击来切换 TabWidget 页面的需求,本文将通过一个完整的示例,详细介绍如何在 Q…

2025 OceanBase 开发者大会全议程指南

5 月 17 日,第三届 OceanBase 开发者大会将在广州举办。 我们邀请数据库领军者与AI实践先锋,与开发者一起探讨数据库与 AI 协同创新的技术趋势,面对面交流 OceanBase 在 TP、AP、KV 及 AI 能力上的最新进展,深度体验“打破技术栈…

day017-磁盘管理-实战

文章目录 1. 硬盘命名规则2. 添加硬盘2.1 查看硬盘名称 3. 硬盘分区3.1 分区命名规则:mbr分区表格式3.2 创建分区:fdisk3.2.1 fdisk -l:查看硬盘及分区信息3.2.2 fdisk /dev/sdc :为该硬盘分区3.2.3 创建扩展分区和逻辑分区3.2.4 保存设置并退…

【成品设计】STM32和UCOS-II的项目

项目1:《基于STM32和UCOS-II的水质监测系统》 Ps:分为带系统版本和不带系统版本,功能都一样。 功能说明: 1. 单片机主控:STM32F103C8T6单片机作为核心控制。 2. 酸碱度传感器:实时采集当前PH值。 3. 水质…

Ngrok 配置:实现 Uniapp 前后端项目内网穿透

文章目录 一、下载并安装 ngrok二、配置 ngrok Authtoken三、启动本地 uniapp 项目四、使用 ngrok 暴露本地服务五、通过公网 URL 访问项目六、后端API项目的穿透问题排查 (uni-app 后端 API 示例)交互流程图示 七、ngrok Web 界面 (本地监控)八、停止 ngrok总结 ngrok 是一款…

鸿蒙ArkUI体验:Hexo博客客户端开发心得

最近部门也在跟进鸿蒙平台的业务开发,自己主要是做 Android 开发,主要使用 Kotlin/Java 语言。,需要对新的开发平台和开发模式进行学习,在业余时间开了个项目练手,做了个基于 Hexo 博客内容开发的App。鸿蒙主要使用Ark…

鸿蒙NEXT开发动画案例10

1.创建空白项目 2.Page文件夹下面新建Spin.ets文件,代码如下: interface TranslateOffset {x?:numbery?:number } /*** SpinKit动画组件 - SpinTen* author: CSDN-鸿蒙布道师* since: 2025/05/16*/ ComponentV2 export struct SpinTen {Require Para…

【Linux】Linux安装并配置Redis

目录 1.安装 2.启动服务 3.配置 3.1.绑定地址 3.2.保护模式 3.3.持久化选项 3.3.1.RDB 持久化 3.3.2.AOF 持久化 3.3.3.如何选择 1.安装 Redis 可以从默认的 CentOS 软件仓库中安装。运行以下命令来安装 Redis sudo dnf install redis -y 响应如下 2.启动服务 安装完成后&…

【11408学习记录】考研英语辞职信写作三步法:真题精讲+妙句活用+范文模板

应聘信 英语写作2005年考研英语真题小作文写作思路第一段第二段妙句7 9妙句11补充3补充4 第三段 妙句成文 每日一句词汇第一步:找谓语第二步:断句第三步:简化主句原因状语从句 英语 写作 2005年考研英语真题小作文 Directions:​​ Two m…

《黑马前端ajax+node.js+webpack+git教程》(笔记)——node.js教程+webpack教程(nodejs教程)

黑马程序员前端AJAX入门到实战全套教程,包含学前端框架必会的(ajaxnode.jswebpackgit),一套全覆盖 文章目录 Node.js与Webpack-01.Node.js入门定义和作用什么是前端工程化?(离不开node.js)Node.…

Flink 快速入门

本文涉及到大量的底层原理知识,包括运行机制图解都非常详细,还有一些实战案例,所以导致本篇文章会比较长,内容比较多,由于内容太多,很多目录可能展示不出来,需要去细心的查看,非常适…

阻塞队列:线程安全与生产者消费者模型解析

一、阻塞队列 阻塞队列就是基于普通队列做出扩展 1.线程安全的 如果针对一个已经满了的队列进行入队列,此时入队列操作就会阻塞,一直阻塞到队列不满(其他线程出队列元素)之后 如果针对一个已经空了的队列进行出队列&#xff0c…

【入门|Docker】基础知识扫盲:什么是 Docker?

文章目录 基础知识扫盲:什么是 Docker?Docker 是什么?Docker 核心组件Docker 与虚拟机的区别Docker 在现代开发中的核心角色Docker 的局限性 基础知识扫盲:什么是 Docker? 最近打算开始系统性地学习与云计算相关的技术…

【MYSQL】基本查询,表的增删查改

📚 博主的专栏 🐧 Linux | 🖥️ C | 📊 数据结构 | 💡C 算法 | 🅒 C 语言 | 🌐 计算机网络 |🗃️ mysql 摘要:本文详细介绍了MySQL中的CRUD操作(创…

Android Studio 日志系统详解

文章目录 一、Android 日志系统基础1. Log 类2. 日志级别 二、Android Studio 中的 Logcat1. 打开 Logcat2. Logcat 界面组成3. 常用 Logcat 命令 三、高级日志技巧1. 自定义日志工具类2. 打印方法调用栈3. 打印长日志4. JSON 和 XML 格式化输出 四、Logcat 高级功能1. 自定义日…

Feign异步模式丢失上下文问题

Feign异步模式丢失上下文问题 问题描述 当我们使用异步对我们代码进行操作优化时,代码中使用了RequestContextHolder去获取上下文的数据,当我们执行原来可以执行的业务时发现报了空指针异常或数据为空,这是为什么呢? 原理解释 …

【AWS入门】Amazon SageMaker简介

【AWS入门】Amazon SageMaker简介 [AWS Essentials] Brief Introduction to Amazon SageMaker By JacksonML 机器学习(Machine Learning,简称ML) 是当代流行的计算机科学分支技术。通常,人们在本地部署搭建环境,以满足机器学习的要求。 AWS…

MYSQL 故障排查与生产环境优化

目录 一.前置知识点 1. 案例需求 (1)mysql 常见故障解决 (2)mysql 性能优化 2.案例实施思路 (1)单库常见故障分析 (2)主从常见故障分析 (3)从几个不同…