实验设备: 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-smiGPU-Util 依然显示 100%(即空转满载),请先重置显卡状态:

  1. 重置 GPU: sudo nvidia-smi --gpu-reset -i 0

  2. 开启持久化: 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% 空间给系统,提高稳定性
Logo

免费领 150 小时云算力,进群参与显卡、AI PC 幸运抽奖

更多推荐