1. 核心参数解析
参数 | 说明 | 推荐值(Qwen3-32B) |
---|---|---|
--trust-remote-code | 允许加载自定义模型代码(如 Qwen 的特殊结构) | 必加 |
--tensor-parallel-size 8 | 张量并行 GPU 数量(需与物理 GPU 数匹配) | 8(L20 8 卡) |
--max-num-seqs 256 | 最大并发请求数(过高可能导致 OOM) | 128(保守值) |
--max-model-len 65536 | 模型支持的最大上下文长度 | 根据需求调整(如 32768) |
--max-num-batched-tokens 65536 | 单批次最大 token 数(影响吞吐量) | 32768(平衡显存) |
--dtype bfloat16 | 计算精度(float16/bfloat16/auto) | bfloat16(L20 支持) |
--gpu-memory-utilization 0.95 | GPU 显存占用比例(过高易 OOM) | 0.85(更安全) |
--host 0.0.0.0 | 服务监听地址(对外开放需此配置) | 按需调整 |
--port 40014 | 服务端口号 | 自定义 |
--served-model-name Qwen3-32B | 模型服务名称(API 调用标识) | 自定义 |
--enable-auto-tool-choice | 启用自动工具调用(如函数调用) | 按需启用 |
--tool-call-parser hermes | 指定工具调用解析器 | 依赖模型支持 |
2. 补充关键参数
(1)性能优化
参数 | 说明 | 示例 |
---|---|---|
--block-size 16 | KV Cache 的块大小(影响内存碎片) | 16 或 32 |
--swap-space 16 | GPU 显存不足时使用的交换空间(GB) | 8(保守值) |
--enforce-eager | 禁用 CUDA 图优化(调试用) | 调试时启用 |
--max-lora-rank 64 | LoRA 适配器的最大秩 | 微调时需设置 |
(2)请求控制
参数 | 说明 | 示例 |
---|---|---|
--disable-log-requests | 禁用请求日志(提升性能) | 生产环境启用 |
--max-log-len 512 | 日志中截断的 token 长度 | 256 |
(3)安全与监控
参数 | 说明 | 示例 |
---|---|---|
--ssl-keyfile | HTTPS 私钥文件路径 | --ssl-keyfile key.pem |
--ssl-certfile | HTTPS 证书文件路径 | --ssl-certfile cert.pem |
--metrics-interval 10 | 监控指标输出间隔(秒) | 30 |
3. 针对 NVIDIA L20 的优化建议
(1)精度与显存平衡
推荐 --dtype bfloat16 :
L20 支持 BF16 加速,但若出现数值不稳定(如 NaN),可尝试:
- --dtype float16 # 更稳定的替代方案
显存管理 :
- --gpu-memory-utilization 0.85 # 预留更多显存余量 --swap-space 8 # 启用 8GB 磁盘交换
(2)张量并行配置
8 卡推荐配置 :
- --tensor-parallel-size 8 # 充分利用 L20 --block-size 16 # 减少内存碎片
若 NCCL 报错 :
- NCCL_DEBUG=INFO vllm serve ... # 查看通信日志 NCCL_P2P_DISABLE=1 *# 禁用 Peer-to-Peer 通信(调试用)*
(3)请求吞吐量
- 高并发场景 :
- --max-num-seqs 128 # 控制并发数 --max-num-batched-tokens 32768 # 平衡显存与吞吐
4. 完整示例命令
vllm serve /model \
--trust-remote-code \
--tensor-parallel-size 8 \
--max-num-seqs 128 \
--max-model-len 32768 \
--max-num-batched-tokens 32768 \
--dtype bfloat16 \
--gpu-memory-utilization 0.85 \
--block-size 16 \
--swap-space 8 \
--host 0.0.0.0 \
--port 40014 \
--served-model-name Qwen3-32B \
--disable-log-requests \
--metrics-interval 30
5. 调试技巧
定位 OOM 或越界错误 :
- CUDA_LAUNCH_BLOCKING=1 TORCH_USE_CUDA_DSA=1 vllm serve ...
监控 GPU 状态 :
- watch -n 1 nvidia-smi
日志分析 :
- tail -f vllm.log | grep -E "OOM|ERROR"
通过调整这些参数,可以在 NVIDIA L20 8 卡 上实现更稳定的 Qwen3-32B 部署。如果仍有问题,建议提供具体的错误日志进一步分析!