问题出现得很突然,日志倒是留得挺全。启动后 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,否则最后一个一定起不来。拖得越久,排查成本越高,因为现场状态会被后续操作覆盖。