[ PROMPT_NODE_22492 ]
Inference Serving VLLM 故障排查
[ SKILL_DOCUMENTATION ]
# 故障排除指南
## 目录
- 显存溢出 (OOM) 错误
- 性能问题
- 模型加载错误
- 网络与连接问题
- 量化问题
- 分布式服务问题
- 调试工具与命令
## 显存溢出 (OOM) 错误
### 症状: 模型加载期间出现 `torch.cuda.OutOfMemoryError`
**原因**: 模型 + KV 缓存超过了可用 VRAM
**解决方案 (按顺序尝试)**:
1. **降低 GPU 显存利用率**:
bash
vllm serve MODEL --gpu-memory-utilization 0.7 # 尝试 0.7, 0.75, 0.8
2. **减少最大序列长度**:
bash
vllm serve MODEL --max-model-len 4096 # 替代 8192
3. **启用量化**:
bash
vllm serve MODEL --quantization awq # 4倍显存缩减
4. **使用张量并行** (多 GPU):
bash
vllm serve MODEL --tensor-parallel-size 2 # 分布在 2 个 GPU 上
5. **减少最大并发序列数**:
bash
vllm serve MODEL --max-num-seqs 128 # 默认是 256
### 症状: 推理期间 OOM (非模型加载)
**原因**: 生成过程中 KV 缓存填满
**解决方案**:
bash
# 减少 KV 缓存分配
vllm serve MODEL --gpu-memory-utilization 0.85
# 减少批大小
vllm serve MODEL --max-num-seqs 64
# 减少每个请求的最大 tokens
# 在客户端请求中设置: max_tokens=512
### 症状: 量化模型出现 OOM
**原因**: 量化开销或配置不正确
**解决方案**:
bash
# 确保量化标志与模型匹配
vllm serve TheBloke/Llama-2-70B-AWQ --quantization awq # 必须指定
# 尝试不同的数据类型
vllm serve MODEL --quantization awq --dtype float16
## 性能问题
### 症状: 低吞吐量 (100)
**诊断步骤**:
1. **检查 GPU 利用率**:
bash
watch -n 1 nvidia-smi
# GPU 利用率应 >80%
如果 <80%,增加并发请求数:
bash
vllm serve MODEL --max-num-seqs 512 # 从 256 增加
2. **检查是否受内存限制**:
bash
# 如果内存达到 100% 但 GPU 1 秒)
**原因与解决方案**:
**长提示词**:
bash
vllm serve MODEL --enable-chunked-prefill
**无 p