docker下部署 vLLM 启动Qwen3-VL-32B-Instruct模型
环境:centos 、显卡A10 6X24G
1、下载vLLM镜像和大模型文件
# 拉取vLLM最新版本镜像
docker pull vllm/vllm-openai:latest
下载模型地址:https://www.modelscope.cn/models/Qwen
2、启动容器脚本
#!/bin/bash
# ============================================================================
# vLLM 启动脚本:Qwen3-VL-32B-Instruct(双卡 TP=2,上下文 32k)
# ============================================================================
# 1. 停止并删除旧容器(若存在)
docker stop Qwen3-VL-32B-Instruct
docker rm Qwen3-VL-32B-Instruct
# 2. 启动新容器
docker run -d \
# 仅映射 GPU-2 与 GPU-3(两张 A10 共 46 GB)用于 TP=2
--gpus '"device=2,3"' \
# 容器名称与模型同名,方便管理
--name Qwen3-VL-32B-Instruct \
# 模型权重挂载(只读)
-v /home/models/Qwen/Qwen3-VL-32B-Instruct:/models/Qwen3-VL-32B-Instruct:ro \
# 宿主机端口映射
-p 11435:8000 \
# 共享内存充足,NCCL 需要
--ipc=host \
# 关闭 seccomp & apparmor,避免 pthread/clone 被拦截
--security-opt seccomp=unconfined \
--security-opt apparmor=unconfined \
# 进程数 & 文件描述符上限放大,防止多线程报错
--ulimit nproc=65535:65535 \
--ulimit nofile=65536:65536 \
# 限制 OpenBLAS/OpenMP/Numba 线程数,减少上下文切换
-e OPENBLAS_NUM_THREADS=1 \
-e OMP_NUM_THREADS=1 \
-e NUMBA_NUM_THREADS=1 \
# 绕过 NumPy 1.26+ 在容器里的 dispatcher 竞态 bug
-e NUMPY_DISABLE_CPU_FEATURES="sse3 ssse3 sse41 popcnt avx avx2 fma3" \
# 官方镜像 ≥ 0.11 已支持 Qwen3-VL
vllm/vllm-openai:latest \
# 以下均为 vLLM 启动参数
--model /models/Qwen3-VL-32B-Instruct \
# 两张卡做 Tensor Parallel
--tensor-parallel-size 2 \
# 显存利用率留一点余量给 NCCL 缓存
--gpu-memory-utilization 0.85 \
# Qwen3 原生支持 32 k,如需 64 k 再翻倍
--max-model-len 32768 \
# 模型含自定义视觉/音频 processor,必须加
--trust-remote-code \
# 与官方对齐,节省显存(32B 权重 ≈ 60 GB fp16)
--dtype bfloat16
chmod +x run_Qwen3-VL-32B-Instruct.sh
./run_Qwen3-VL-32B-Instruct.sh
3、验证:
curl -X POST "http://127.0.0.1:11435/v1/chat/completions" \
-H "Content-Type: application/json" \
--data '{
"model": "/models/Qwen3-VL-32B-Instruct",
"messages": [
{
"role": "user",
"content": "你能干什么?"
}
]
}'