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