vLLM 0.6.3 启动报 ValueError,原文 Free memory on device cuda:0 is less than desired GPU memory utilization,nvidia-smi 显示只占 2GB,机器上并没有别的进程。
这类报错背后常见的原因有几处,逐个排除就行。启动前的检测读到了其他上下文占用的显存;gpu_memory_utilization 设得比可用比例高;同机另一个服务刚退出,显存没及时回收;MIG 或容器限制让可见显存小于物理显存。
第一件事是看当前各卡的占用与进程
nvidia-smi --query-gpu=memory.used,memory.total --format=csv
再往下确认没有残留进程占着显存
nvidia-smi --query-compute-apps=pid,used_memory --format=csv
接着把显存比例从 0.95 降到 0.85 再启动
python -m vllm.entrypoints.openai.api_server --model Qwen/Qwen2.5-7B-Instruct --gpu-memory-utilization 0.85
指定单卡避免多卡检测干扰
CUDA_VISIBLE_DEVICES=0 python -m vllm.entrypoints.openai.api_server --model Qwen/Qwen2.5-7B-Instruct --gpu-memory-utilization 0.8
当时还开着另一个排查窗口,两边日志对照着看才定位到。
同一份数据我导出了两份,一份留底,一份拿来试。
这类问题以前遇到过,但这次的触发条件和上次不一样。
恢复的判定其实很直接。服务正常起在 8000 端口,日志里 KV cache 分配成功,显存占用稳定在设定比例以内。
补一句。vLLM 的显存检测在加载权重之前跑,残留进程和容器限制都会让这个数字失真。拖得越久,排查成本越高,因为现场状态会被后续操作覆盖。
