vLLM显存不足

CUDA out of memory. Tried to allocate 报错

报错原文

CUDA out of memory. Tried to allocate <n> GiB. GPU 0 has a total capacity of <n> GiB of which <n> MiB is free.

尖括号 <…> 里的内容每次运行都会不同。

是什么意思

vLLM 和 Transformers 底层的 PyTorch 没能分配下一个张量。在 vLLM 里,这通常意味着按你给的设置,模型加上预留的 KV 缓存装不下。

为什么会出现

  • 这个格式的权重装不下,或者装下后留给 vLLM 的 KV 缓存和 CUDA graph 的空间太少。
  • --max-model-len 太长,vLLM 需要的最小缓存也就很大。
  • 其他进程占用了部分显存。

怎么解决

  1. 先缩短 --max-model-len;之后再考虑调高 --gpu-memory-utilization,且不要超过显卡实际能给的量。
  2. 换成模型的 4 比特 AWQ 或 GPTQ 版本;先在计算器里对照你的显卡核对。
  3. --enforce-eager 跳过 CUDA graph 捕获,能省出一些显存,但速度会下降。

改参数之前,先核对大小

大多数显存报错其实是大小问题。把模型、量化档位、上下文和你的显卡填进显存计算器:如果那里是红色,什么参数都没法让它装下。

相关指南

相关报错

核对来源

报错原文于 2026-10-26 从源码中读取核对。