问题出现得很突然,日志倒是留得挺全。启动后 nvidia-smi 显示显存直接到 23.4G/24G,同一张卡上另一个小服务立刻被挤掉,但实际请求量很低。

刚开始盯着「同卡还跑着别的进程,没有预留余量」,折腾了半个多小时,排掉了。

这类报错背后常见的原因有几处,逐个排除就行。gpu-memory-utilization 默认 0.9,启动即预占。也可能是KV cache 按比例一次性分配,不用也占着。

少数情况下是张量并行下每张卡都按同一比例预占。

动手时先把显存占用比例降到留有余量的档位

vllm serve Qwen/Qwen2.5-7B-Instruct --gpu-memory-utilization 0.75

限制并发与上下文,减少预留需求

vllm serve Qwen/Qwen2.5-7B-Instruct --max-num-seqs 4 --max-model-len 4096

接着启动后确认剩余显存

nvidia-smi --query-gpu=memory.used,memory.total --format=csv

同卡部署时给另一个服务留固定额度和端口

vllm serve Qwen/Qwen2.5-1.5B-Instruct --port 8001 --gpu-memory-utilization 0.25

改完先别撤,确认这几项。启动后显存占用落在设定比例附近,同卡上的另一个服务不再被挤掉,两个端口都能正常响应。

提醒一点。这个比例是按总量算的,不是按剩余量算的,多进程同卡部署时几个比例相加必须小于 1,否则最后一个一定起不来。拖得越久,排查成本越高,因为现场状态会被后续操作覆盖。

作者 9823189