vLLM 启动报 CUDA error 怎么办?3 个常见原因排查
vLLM 版本更新快,报错信息以你实际终端输出为准,本文给常见原因和排查方向。
按教程装好 vLLM,一启动直接报 CUDA error,模型加载不起来。很多人第一反应是"卡坏了"或者"vLLM 不支持这个模型"——其实大概率是下面 3 个原因。
原因 1:CUDA 版本和 vLLM 版本不匹配
vLLM 对 CUDA 版本有要求。你装的 vLLM 和服务器上的 CUDA 对不上,启动就会报版本相关的 CUDA error。
先查你的 CUDA 版本:
nvidia-smi右上角会显示 CUDA 版本号。然后去对照你装的 vLLM 版本支持哪个 CUDA。
解决办法:最省心的是直接用官方 Docker 镜像——镜像里 CUDA、vLLM、依赖都是配好的,不用自己折腾版本匹配。比在系统里 pip 装干净得多。
原因 2:显存不够,但不是模型本身的问题
第二个很常见:你算着 FP16 权重刚好塞得下,结果 vLLM 启动还是 out of memory。
原因是:vLLM 不只要装模型权重,还要额外分配一大块显存给KV Cache(做连续批处理用)。所以"权重能塞下"不等于"vLLM 能启动"。
解决办法:
- 调
--gpu-memory-utilization,告诉 vLLM 最多能用多少显存(默认 0.9,视情况调整); - 开量化(INT8 / AWQ),把权重压小,省出显存给 KV Cache;
- 别把
--max-model-len开太大,上下文越长 KV Cache 越吃显存。
原因 3:模型格式不对(不是 safetensors)
第三个:加载模型时报格式相关的错。vLLM 对模型文件格式有要求,最稳的是safetensors格式。有些老模型还是 bin(pytorch_model.bin)格式,vLLM 可能加载失败。
解决办法:确认模型目录里是.safetensors文件。如果只有 bin 格式,用 transformers 提供的转换脚本转成 safetensors 再加载。
你的 vLLM 报错是哪种?
| 报错现象 | 大概率原因 | 先做什么 |
|---|---|---|
| 启动就报版本不兼容 | CUDA 与 vLLM 不匹配 | 用官方 Docker 镜像 |
| 模型加载一半 OOM | KV Cache 显存不够 | 调 gpu-memory-utilization / 开量化 |
| 报模型格式错误 | 不是 safetensors | 转格式 |
你用 vLLM 部署报什么错?把终端里的错误信息贴评论区,我帮你看是版本、显存还是格式的问题。