vLLM 常见报错与排查指南
本文总结了生产环境中常见的大模型部署问题及解决方案。针对显存溢出(CUDA out of memory)问题,建议检查模型大小、调整KV Cache配置参数;多卡NCCL错误可通过检查GPU拓扑或临时禁用多卡通信解决;请求无响应问题可通过增大max-num-seqs等参数优化;PyTorch CUDA版本错误需重新安装GPU版本;模型加载卡顿可通过使用国内镜像或修改缓存权限解决。总体排查思路为:先
前言
真正的生产环境中,从来都不是风平浪静的。显存溢出、延迟飙升、服务卡死、网关超时等等,这些问题都可能会出现,但这并不是模型不行,而是资源分配和调度策略不合理导致的。本文就对常见的问题制定一套合理的方案,从排查报错的顺序和对应的解决指令来一一拨开迷雾。
显存相关报错
- CUDA out of memory 错误
这是一个最典型的报错了,可能导致的原因先列出来,然后再一一排查:
|
可能原因 |
本质 |
|
max-model-len 过大 |
KV Cache 预留爆炸 |
|
并发太高 |
同时生成的 token 过多了 |
|
gpu-memory-utilization 过于激进 |
没给系统留有余量 |
|
模型太大 |
权重将显存占满 |
- 排查顺序
1、检查模型大小
#通过指令查看模型加载后显存占多少?如果一上来就 90%+,后面必炸。
nvidia-smi
2、检查KV Cache的配置
#检查这几个参数的配置
--max-model-len
--max-num-batched-tokens
--max-num-seqs
- 解决方案
可以参考以下列表分别降低对应参数的配置
|
方式 |
建议幅度 |
|
↓ max-model-len |
4096 → 2048 |
|
↓ max-num-batched-tokens |
8192 → 4096 |
|
↓ max-num-seqs |
256 → 128 |
|
↓ gpu-memory-utilization |
0.95 → 0.8 |
|
开启 --swap-space 4 |
给 CPU 做缓冲 |
一般情况下,出现OOM问题80%的概率都是上下文长度调太大导致。
启动时报 NCCL 错误(多卡会出现)
- NCCL错误:
可能会报:RuntimeError: NCCL error in: ...
这也是一个常见的报错,可能导致的原因先列出来,然后再逐一排查:
|
可能原因 |
本质 |
|
GPU 之间不能够通信 |
没 NVLink / PCIe 拓扑异常 |
|
驱动 与 CUDA 不匹配 |
版本不一致导致的冲突 |
|
Docker 没有开启权限 |
缺少 --ipc=host |
- 排查顺序
1、检查多卡之间的拓扑结构
#展示 GPU 拓扑连接矩阵,判断多卡通信方式
nvidia-smi topo -m
2、检查多卡环境变量的取值
# 查看变量值
echo $NCCL_P2P_DISABLE
- 解决方案
临时禁用多卡通信,确认是否通信导致的错误
#设置变量为禁用
export NCCL_P2P_DISABLE=1
export NCCL_IB_DISABLE=1
Docker的环境可以增加以下参数,开启权限来校验
#开启权限,使用宿主机IPC命名空间
--ipc=host
请求无响应
- 请求无响应的问题,一直没有返回
可能导致的原因先列出,再逐一排查:
|
可能原因 |
本质 |
|
批处理队列塞满 |
请求排队过久 |
|
max-num-seqs 过小 |
新请求进不来 |
|
输出 token 过长 |
一个请求霸占 GPU 过久 |
- 排查顺序
检查日志有无:Waiting for free blocks in KV cache
- 解决方案
|
方案 |
作用 |
|
增大 max-num-seqs |
提升并发能力 |
|
限制 max_tokens |
防止单请求一直占用资源 |
|
增大 max-num-batched-tokens |
提高吞吐能力 |
启动时报‘Torch not compiled with CUDA enabled’
这种错误比较直观,可以很快做出判断
- 原因
很明显PyTorch安装为CPU版本,不支持CUDA
- 解决方案
卸载CPU版本PyTorch,直接安装CUDA版本的PyTorch,指令如下
#卸载CPU版本的PyTorch
pip uninstall torch
#安装GPU版本的PyTorch
pip install torch==2.9.1 torchvision==0.24.1 torchaudio==2.9.1 --index-url https://download.pytorch.org/whl/cu128
加载模型卡住不动
这也是经常出现的一个问题,就是下载模型无响应。
- 原因
以下列出常见原因
|
问题 |
说明 |
|
HuggingFace 下载慢 |
网络问题,国内限制,可以寻找国内镜像 |
|
权限不足 |
cache 目录不可写 |
|
safetensors 校验 |
大模型加载慢是正常的 |
- 解决方案
1、网络问题导致的下载慢
可以使用国内加速,修改HuggingFace为国内镜像,以下为对应指令
# HF镜像配置
export HF_ENDPOINT=https://hf-mirror.com
2、cache权限不足
可以找到对应目录增加权限,以下为对应指令
# 给当前用户赋予该目录的读写权限(最常用)
sudo chown -R $USER:$USER ~/.cache/huggingface
总结
以上是几个常见的错误,其实是提供一个思路。总结下来就是先看显存,再看并发,再看 batch,最后看驱动。整理下来就是如下列表:
|
现象 |
第一怀疑对象 |
|
OOM |
max-model-len |
|
慢 |
batched-tokens |
|
卡住 |
seqs / KV cache |
|
多卡报错 |
NCCL |
|
启动失败 |
CUDA / Torch |
这是遇到vLLM错误排查的一些思路,以供参考,当然也欢迎在评论区补充。
更多推荐


所有评论(0)