VLLM性能调优

部署运行你感兴趣的模型镜像

1. 抢占

显存不够的时候,某些request会被抢占。其KV cache被清除,腾退给其他request,下次调度到它,重新计算KV cache。

报这条消息,说明已被抢占:

WARNING 05-09 00:49:33 scheduler.py:1057 Sequence group 0 is preempted by PreemptionMode.SWAP mode because there is not enough KV cache space. This can affect the end-to-end performance. Increase gpu_memory_utilization or tensor_parallel_size to provide more KV cache memory. total_cumulative_preemption_cnt=1

如果不想被抢占,解决办法:

- 增大gpu_memory_utilization。提高KV cache占用的显存百分比。

- 减少max_num_seqs或max_num_batched_tokens。减少一个batch里的请求、token个数,从而减少KV cache占用。

- 增大tensor_parallel_size。使用多张GPU的TP并行。

可以查看VLLM自带的Prometheus指标,查看抢占的请求数量。或者打开日志disable_log_stats=False。

2. chunked prefill

默认下,prefill优先,prefill和decode不放到相同batch里

chunked prefill打开后,decode优先,decode的token不够时用prefill token来凑:

好处

decode延迟减小;GPU使用率增大;

batch大小:

batch越小,则ITL越小(我的实验也是观察到这个现象)。原因:decode阶段加入的prefill tokens少,就能不怎么变慢。

batch越大,则TTFT越小。原因:prefill的请求可以在更少的batch里完成。

总体来说,batch太小的话,会给吞吐量带来灾难。因为计算不够密集。

VLLM推荐的2个paper:

(https://arxiv.org/pdf/2401.08671 or https://arxiv.org/pdf/2308.16369)

您可能感兴趣的与本文相关的镜像

Vllm-v0.11.0

Vllm-v0.11.0

Vllm

vLLM是伯克利大学LMSYS组织开源的大语言模型高速推理框架,旨在极大地提升实时场景下的语言模型服务的吞吐与内存使用效率。vLLM是一个快速且易于使用的库,用于 LLM 推理和服务,可以和HuggingFace 无缝集成。vLLM利用了全新的注意力算法「PagedAttention」,有效地管理注意力键和值

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值