浅谈语言模型推理框架 vLLM 0.6.0性能优化

在此前的大模型技术实践中,我们介绍了加速并行框架Accelerate、DeepSpeed及Megatron-LM。得益于这些框架的助力,大模型的分布式训练得以化繁为简。

然而,企业又该如何将训练完成的模型实际应用部署,持续优化服务吞吐性能?我们不仅要考量模型底层的推理效率,还需从请求处理的调度策略上着手,确保每一环节都能发挥出最佳效能。

本期内容,优刻得将为大家带来vLLM[1],一款高性能推理服务框架的相关内容。vLLM于近期推出了0.6.0版本[2]。那么,相比旧版本推出了什么新功能,又做了哪些优化呢?

优刻得模型服务平台UModelVerse现已同步上线vLLM0.6.0。仅需几步,即刻畅享新版vLLM带来的极速推理体验。文末为您带来详细的使用教程。

01

API服务端-推理引擎进程分离

推理服务框架需要考虑服务部署的两个要素:面向客户请求的服务端,以及背后的模型推理端。在vLLM中,分别由API服务端 (API Server)模型推理引擎 (vLLM Engine)执行相应任务。

1.1 进程共用 vs. 进程分离

根据旧版vLLM设计,负责处理请求的API服务端与负责模型推理的推理引擎,共用同一个python进程;

0.6.0版本将API服务端和推理引擎分离,分别由两个python进程运行。进程之间的信息交互由ZeroMQ socket进行传输 [3]。

图片

上:API服务端与推理引擎共用同一个python进程;
下:API服务端与推理引擎各自独用python进程。

API服务端需要承担一系列处理HTTP请求等任务。通过对旧版本的性能分析,vLLM团队发现API服务端消耗大量CPU资源

举个例子,在推理引擎端,轻负载下使用Llama3 8B模型推理生成1个token的耗时约为13ms;而相对应地,API服务端需要能够每秒处理76个token才能跟上推理引擎的速度。由于python GIL的存在,推理引擎还会与服务端争抢CPU资源。CPU端负载巨大无法及时处理计算,则会使得GPU端因等待CPU而产生空闲,无法充分利用性能[3]。

在0.6.0版本中,将API服务端与推理引擎端分离为两个进程后,两个进程可以各自专注于份内职责,而不会受GIL的影响。而在分离后,团队后续可以更好地对两端分别进行更细致的性能优化和打磨。

1.2 TTFT、TPOT和ITL

在进入测试对比前,先了解一下衡量语言模型服务推理效率通常参照的三个指标,即:

首个token响应时长 (Time to first token, TTFT)

每个token输出时长 (Time per output token, TPOT)

跨token延迟 (Inter-token latency, ITL)

TTFT顾名思义,就是从客户端发出请求后开始计时,直到服务端返回第一个输出token的耗时。过程中,由服务端收到请求后着手处理,交由调度器准备推理。推理引擎需要完成prefill任务。基于prefill得到的kv值,decode得到第一个输出token后返回。

而TPOT和ITL概念相对接近,表达的都是后续一连串decode的耗时。根据vLLM测试代码 [4],我们定义如下:

TPOT是在一个请求从发出后,不纳入TTFT的耗时 (主要是为了排除prefill耗时),到所有token全部decode完成并返回的整体耗时除以一共返回的token数量,即每个token输出的平均时长

而ITL是在计算每次请求返回部分token时所需的时长,即服务端每次decode后返回一个或一批token所需的时长。

举个例子,如

评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值