
CUDA out of memory
快速结论:在 vLLM V1 引擎(0.7.0 及以上版本)中,相比 V0 引擎,显存占用更高,导致相同配置下更易触发 CUDA out of memory 错误。优先排查 --gpu-memory-utilization 和 --max-num-batched-tokens 参数是否设置过大,并确认是否正在使用 torch.compile。
问题场景
用户在 4x RTX 3070 上运行 Qwen/Qwen2.5-Coder-32B-Instruct-GPTQ-Int4 模型,从 vLLM 0.6.x 升级到 0.7.0 并启用 VLLM_USE_V1=1 后,原本可支持 12K context length,升级后仅能支撑 3K,超出即触发 CUDA OOM。其他用户在使用 Qwen2.5-32B-Instruct-AWQ(2x RTX 4070 Ti) 及 DeepSeek R1 32B 蒸馏模型时也遇到了相同问题。
报错原文
CUDA out of memory
原因分析
vLLM V1 引擎在内存 profiling 不够精确(运行时存在动态内存分配),并且默认启用 torch.compile 和大量 cudagraphs,这可能导致更高的峰值显存占用和更长的预热时间。这是 V1 引擎的已知性能回归问题。
环境排查
- vLLM 版本(0.7.0 或更高)
- 是否启用
VLLM_USE_V1环境变量 - 显卡型号及总显存(多卡时需确认并行规模)
- 模型名称及量化方式(如 GPTQ-Int4、AWQ)
解决步骤
- 降低
--gpu-memory-utilization: 不要设为 1.0,调整为 0.95 或 0.9。官方不建议设置 1.0,因为内存 profiling 并非 100% 准确且运行时会有动态内存分配。 - 减小
--max-num-batched-tokens: 将其降低到更合理的值,例如 2K,以减少峰值激活内存和 torch.compile 编译的内存消耗。 - 调整
--max-model-len: 如非必须,可适当降低 context length 上限。 - 尝试最新 nightly 构建: issue 中提到 PR #14508 已经合入以修复此问题,可测试最新 nightly 版本是否仍出现 OOM。
注意:以上步骤中的参数调整属于“可优先尝试”的解决方法,V1 引擎更大内存占用问题仍在修复中,并非 0.7.0 版本一定会完全修复。
验证方法
使用同样的模型和 context length,在 V1 引擎下调低上述参数后,观察服务启动是否不再报 CUDA out of memory,并检查是否能够正常处理预期的上下文长度。



