不是H100租不起,而GPU混布更有性价比!

作者:方佳瑞,腾讯 · 专家工程师。
声明:本文只做分享,版权归原作者,侵权私信删除!
原文:https://zhuanlan.zhihu.com/p/707684656

编辑:青稞AI

大模型推理加速卷了这么久了,相信大家都明白一件事,用单一类型的GPU来部署和提供大型语言模型(LLM)服务不是最有性价比的方案。

一、利用GPU异构性的降本空间

目前,LLM推理设备选择的日益丰富,不仅有新旧型号的各种NVIDIA GPU,还有逐渐壮大的国产NPU大军,这些设备在计算能力、内存容量、带宽等关键性能指标上各有所长。同时,大型语言模型(LLM)的推理请求在输入输出和吞吐等方便是变化的,导致LLM服务负载的计算和存储访问特性也在不断变化。因此,对于每个具体的请求而言,最适合的计算设备也不尽相同,没有任何单一的GPU能够在处理所有类型的请求时始终保持最高的性价比。

我之前用Roofline模型来分析不同NVIDIA GPU的擅长负载的类型,就是在说明这个现象。很多人试图用一个数值来代表GPU在大模型推理任务上的表现(一个值更容易给GPU服务器定价)但显然容易以偏概全。

利用GPU的异构性(Heterogeneity)有很大的LLM服务降本空间:不同类型的LLM计算负载,就应该用最适合他们的GPU来服务。这里计算负载可以是一个请求,一此forward计算,甚至是一个算子。

比如,Mooncake将一个Request的Prefill和Decode forward计算分离部署在不同的GPU上,本质利用了Request内不同阶段计算差异来利用GPU异构性。

而UC Berkeley的最新工作Mélange(法语,混合的意思)的出发点是利用Request之间的输入、输出和Request ratio等因素的变化,将不同类型请求用不同GPU服务,本质是利用Request之间差异来利用GPU异构性。

Mélange论文链接如下,作者来自Ion Stoica团队,也就是大名鼎鼎的Spark、Ray、vLLM等项目的发起者。

https://arxiv.org/pdf/2404.14527

二、LLM推理成本效益和影响它的三个因素

大家对GPU异构性多少有些直观的感受。比如,做LLAMA2-7B线上服务,短序列可以用小卡A10,长序列可以用大卡比如A100,我们可以根据输入长度,选择不同的GPU实例类型服务。Mélange将大家的模糊印象,更精确定义出来。

Mélange的优化目标是GPU的成本效益定义为每美元成本处理输入+输出令牌的数量(T/$),作者发现GPU的成本效益由三个关键的LLM服务特性决定:

1. 请求大小(Request Size)

LLM请求的大小由其输入和输出token长度组成。直观理解,对于较小的请求大小,低端GPU通常比高端GPU产生更高的T/$。

为了更精确地描述这一现象,我们展示一些实测结果。下图展示了Llama2-7b不同请求大小在A10和A100真实的成本效益,对于较小的请求大小,A10G显示出比A100高达2.6倍的T/$。相反,对于较大的请求大小,A100的成本效益可以达到A10G的1.5倍。

afa943ea562485a62f2571a0d7789f21.jpeg

2. 请求速率(Request Rate)

响应服务的GPU容量应与请求速率相匹配。直观理解,在低请求速率下,服务可以通过从昂贵的高端GPU调整为便宜的低端GPU来降低成本。

下图更精确展示了使用三种策略在不同请求速率下服务Llama2-7b的成本:仅使用A10G、仅使用A100,或混合使用两者。随着请求速率的增加,仅使用A100的策略相比仅使用A10G的策略成本效益更高。然而,在低请求速率(0-1 req/s)下,仅使用A10G仍具有优势。在实际服务中,空闲或低活动期是常见的,当高端GPU(如A100)严重未充分利用时,服务应调整为更便宜的GPU(如A10G)。

16c425c9da3040a3d4420a32bfc57d40.jpeg

3. 服务级别目标(SLO)

服务通常会建立延迟SLO以确保服务质量。直观理解,由于低端GPU通常比高端GPU产生更高的延迟,因此对于严格的SLO,需要高端GPU,而在宽松SLO设置下,低端GPU可以降低成本。

下图展示了A10G和A100在不同TPOT(Time Per Output Token) SLO和请求大小下的相对成本效益。在严格的SLO(40-60ms)下,A100始终具有更高的T/$(高达2倍)。在80ms时,对于小请求大小,A10开始显示出对A100的适度优势。最后,在100−160ms时,对于相同的请求大小,A10显示出比A100更大的T/$(高达2倍)。

9d1e69a1c078b3572b60326363d4024a.jpeg

结合上述三个关键因素,可以设置一种LLM推理服务的GPU分配策略:高成本的A100 GPU处理长请求并满足严格的SLO,而低成本的A10G GPU在更高的T/$下服务于较小的请求和较宽松的SLO。然后,在服务活动较低的时期,服务可以调整为更便宜的L4 GPU,以最低成本维持服务可用性。因此,GPU异构性提供了提高GPU成本效益的机会,但这些机会高度依赖于LLM服务的特性。关键挑战在于创建一个能够应对LLM服务多样性(请求大小、请求速率、延迟SLO)和GPU类型多样性的GPU分配框架,以找到最佳的GPU分配方案。

论文提出了Mélange,它是一个GPU分配框架,旨在为给定的大型语言模型(LLM)服务自动推导出成本最低的GPU分配方案。如下图所示,该框架首先通过一次性的离线分析步骤(2),对每种GPU类型(1a)在不同请求大小和速率下的性能进行测量。然后,基于这些分析结果和LLM服务的定义(1b)。Mélange的目标是选择一种GPU分配方案,以最小化服务工作负载的成本,这一任务可以看作是成本感知的装箱(cost-aware bin packing problem)问题,其中GPU是箱子,工作负载可以切分成若干slice,每个负载slice是物品。Mélange将问题形式化为整数线性规划(ILP),并使用现成的求解器(3)高效求解。求解后,Mélange生成一种GPU分配方案,该方案能够在满足服务SLO(4)的同时,以最低成本服务LLM服务。

94022b39a8e1ebeb7daeaa129f62c4fa.jpeg

三、最佳成本效益的GPU配置是求解装箱问题

Mélange将GPU分配定义成一个装箱问题。

装箱问题的目标是将一组物品放入箱子中,每个箱子有一定的容量限制和一个成本。每个物品都有一个给定的尺寸,并且不能分割。问题的核心是最小成本箱子的使用成本。

工作负载如何转化为物品:如前文的Fig 3所示,工作负载可以表示成一个热力图(原文histogram),热力图具有两个维度:输入长度和输出长度。热力图的每一个位置(小方块,原文bucket)的值表示在该输入输出大小范围内的聚合请求速率。我们进一步将每个方块细分为切片(slice),以便进行更细粒度的装箱。一个参数,切片因子(slice factor),表示每个桶被分割成的切片数量。当切片因子为8时,如果一个小方块的聚合请求速率为4,那么该桶将被分割成8个切片,每个切片对应于0.5请求/秒的请求速率。每个切片就是一个物品,而他的请求速率就是它的尺寸。

GPU如何转化为箱子:GPU的成本就是它的租赁费用,GPU容纳切片容量需要用一个离线Profiling获得。对于在一种GPU型号G上请求大小为s和速率为r的切片,其负载计算为 r / MaxTput(G, s, SLO),其中MaxTput(G, s, SLO)是该型号GPU在遵守SLO的情况下,对于大小为s的请求所能达到的最大请求数/秒。例如,如果MaxTput(G, s, SLO) = 10 reqs/s,且r = 1,则负载计算为1/10 = 0.1。每个GPU的最大容量定义为1。

举个例子,切片因子为8。输入100-输出100,聚合请求率为2 req/sec,每个切片为0.25 req/sec。输入200-输出200,聚合请求率为4 req/sec,每个切片为0.5 req/sec。GPU G,输入100-输出100的MaxTput(G, 100-100, SLO)为16 req/sec,输入200-输出200的MaxTput(G, 200-200, SLO)为4 req/sec。那么它能容纳16/0.25=64个输入100-输出100切片,或4/0.5=8个输入200-输出200切片,或32个输入100-输出100切片和4个输入200-输出200切片。

基于离线分析,我们为工作负载热力图中的每个小方块计算MaxTput(G, s, SLO)。

定义好物品和箱子,就可以求解装箱问题,论文用的方法是整数规划(ILP)。细节不赘述,想了解具体求解过程可以看原文。

这种问题等价转化的方式很有趣,读完很有启发。但是问题定义比较理想化,难以使用,比如:

  • • 工作负载的分布没有那么容易刻画。首先,请求速率(物品尺寸和箱子尺寸)是比较难统计的。这里假设我们可以通过采集很长一段时间数据,并假设未来的负载和当前分布一样

  • • 给定一个请求输入长度,我们其实不知道输出长度。因此,我们实际上是无法将一个具体请求精确定位到一个热力图的小方格中。所以我们就无法确切知道应该将一个请求转发哪种类型GPU。文中使用先前服务的请求来估计新请求的输出长度,对于每个输入长度,跟踪所有先前看到的输出长度的平均值。在接收到新请求时,使用这个平均值作为新请求输出长度的估计,从而允许识别请求所属的具体请求大小的小方格。

  • • 论文的SLO比较简单,之考虑生成速度TPOT。如果考虑TTFT(Time To Fisrt Token)和TBT(Time Between Tokens)等更细粒度指标,求解函数会很复杂。

总结

Mélange通过形式化方法定义了“如何基于负载差异性利用GPU异构性以降低部署成本”的问题。它识别了影响成本效益的三个关键LLM推理服务因素:请求大小、请求速率和SLO,并将成本效益最大化问题转化为一个装箱问题,采用ILP(整数线性规划)进行求解。

尽管论文中的问题定义较为理想化和简化,但其推导出的一些洞察具有借鉴价值。我们相信,未来利用多GPU处理不同请求的模式将成为主流趋势。


备注:昵称-学校/公司-方向/会议(eg.ACL),进入技术/投稿群

11102d9920fa5141e6c1c003d795e717.png

id:DLNLPer,记得备注呦

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值