VLLM框架部署大模型显存检测问题
实验设备: NVIDIA GeForce RTX 5090 (32GB / Blackwell 架构)
软件环境: vLLM 0.10.1.1 / CUDA 12.8 / PyTorch 2.9.1
故障现象: 物理显存空闲 30.87 GiB,但 vLLM 启动时报错 Free memory on device (0.53 GiB) is less than desired...。
1. 故障现象描述
在使用 vllm serve Qwen/Qwen3-0.6b 启动模型时,vLLM 的 EngineCore 进程无法通过初始化检查。尽管 nvidia-smi 显示没有任何进程占用显存,但 vLLM 的底层探测逻辑认为显卡几乎已被占满(仅剩 0.53 GiB 可用),导致无法分配预期的 28.23 GiB 显存空间。
2. 核心原因分析 (Root Cause)
2.1 Blackwell 架构兼容性问题
RTX 5090 采用了最新的 Blackwell 架构。在 vLLM 默认开启 CUDA Graph (编译模式) 的情况下,启动时会执行一系列复杂的算子捕获。如果 vLLM 版本对该架构的支持尚不完善,捕获过程会发生“静默失败”,导致显存地址分配异常,探测器继而返回错误的空闲数值。
2.2 vLLM V1 引擎的严格校验
日志显示你正在运行 V1 LLM engine。该版本在初始化时会锁定显存利用率(--gpu-memory-utilization 0.9)。当探测到的空闲显存(0.53 GiB)低于目标值时,系统会立即抛出 ValueError 并强行终止 EngineCore 进程。
3. 解决方案 (Solutions)
方案 A:强制使用 Eager 模式(最有效)
跳过复杂的 CUDA Graph 捕获逻辑,直接进行推理。这通常是新架构显卡解决显存报错的最快方法。
执行命令:
vllm serve Qwen/Qwen3-0.6b \
--host 0.0.0.0 --port 8189 \
--dtype bfloat16 \
--max-model-len 8192 \
--gpu-memory-utilization 0.8 \
--enforce-eager
方案 B:重置显卡上下文与持久化
如果 nvidia-smi 的 GPU-Util 依然显示 100%(即空转满载),请先重置显卡状态:
-
重置 GPU:
sudo nvidia-smi --gpu-reset -i 0 -
开启持久化:
sudo nvidia-smi -pm 1
方案 C:优化 Docker 资源映射
针对你在 Docker 环境下的部署,建议在 docker-compose.yml 中做以下微调:
-
明确设备 ID: 使用
device_ids: ['0']而不是count: all。 -
增加共享内存: 设置
shm_size: '16gb'确保多进程通信稳定。
4. 部署总结与建议
| 关键参数 | 建议设置 | 作用 |
--enforce-eager |
必选 | 解决 5090 显存识别错误的核心开关。 |
--dtype |
bfloat16 |
5090 原生支持,兼顾精度与速度。 |
--gpu-memory-utilization |
0.8 |
建议留出 20% 空间给系统,提高稳定性 |
更多推荐

所有评论(0)