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 需要的最小缓存也就很大。- 其他进程占用了部分显存。
怎么解决
- 先缩短
--max-model-len;之后再考虑调高--gpu-memory-utilization,且不要超过显卡实际能给的量。 - 换成模型的 4 比特 AWQ 或 GPTQ 版本;先在计算器里对照你的显卡核对。
--enforce-eager跳过 CUDA graph 捕获,能省出一些显存,但速度会下降。
改参数之前,先核对大小
大多数显存报错其实是大小问题。把模型、量化档位、上下文和你的显卡填进显存计算器:如果那里是红色,什么参数都没法让它装下。
相关指南
相关报错
核对来源
报错原文于 2026-10-26 从源码中读取核对。