站长今天直接切入正题。很多人以为 vLLM 是 Linux 专属,实际上在 Windows 11 上通过 WSL2 或原生 Python 环境也能跑通,但坑位极多。本文基于站长实测,覆盖从环境准备到性能调优的全流程,重点标注了 90% 新手会踩的雷区。全程无废话,直接上命令。
一、前置依赖:别一上来就 pip install
⚡ 【免费资源】DeepSeek/Ollama 部署排错手册 + 全套 AI 提示词资料包
站长已将大模型部署排错指南、常用环境配置文件及 AI 提效指令库整合分享至夸克网盘,可极速免费转存:
vLLM 官方明确不支持原生 Windows,但通过 WSL2(Windows Subsystem for Linux 2)可以完美运行。站长强烈建议不要尝试在原生 Windows 上硬编,因为 vLLM 依赖 CUDA 的某些底层特性,而 Windows 驱动层对显存池管理方式与 Linux 不同,会出现无法解释的段错误。
1.1 开启 WSL2 并安装 Ubuntu 22.04
以管理员身份打开 PowerShell,执行:
wsl --install -d Ubuntu-22.04
wsl --set-default-version 2
安装完成后重启系统。进入 WSL 终端,验证版本:
wsl -l -v
确保 VERSION 列为 2。如果显示 1,执行 wsl --set-version Ubuntu-22.04 2 升级。
1.2 安装 NVIDIA 驱动(Windows 侧)
注意:驱动必须装在 Windows 宿主上,WSL 内不需要也无法安装驱动。去 NVIDIA 官网下载对应显卡的最新驱动(Game Ready 或 Studio 均可),安装后重启。然后在 WSL 内验证:
nvidia-smi
如果能显示 GPU 信息(如 RTX 4090),说明 CUDA 透传成功。这里有个常见坑:如果显示 “No devices were found”,多半是 Windows 驱动版本过旧,更新到 535 以上版本。
1.3 安装 CUDA Toolkit 和 cuDNN(WSL 内)
vLLM 需要 CUDA 11.8 或 12.1。站长推荐 CUDA 12.1,兼容性最好。在 WSL 内执行:
wget https://developer.download.nvidia.com/compute/cuda/repos/wsl-ubuntu/x86_64/cuda-keyring_1.1-1_all.deb
sudo dpkg -i cuda-keyring_1.1-1_all.deb
sudo apt-get update
sudo apt-get -y install cuda-12-1
安装完成后设置环境变量(写入 ~/.bashrc):
export PATH=/usr/local/cuda-12.1/bin:$PATH
export LD_LIBRARY_PATH=/usr/local/cuda-12.1/lib64:$LD_LIBRARY_PATH
cuDNN 需要从 NVIDIA 官网手动下载(需注册账号),下载 cuDNN for CUDA 12.x 的 tar 包,然后:
tar -xvf cudnn-linux-x86_64-8.9.7.29_cuda12-archive.tar.xz
sudo cp cudnn-*-archive/include/cudnn*.h /usr/local/cuda-12.1/include/
sudo cp -P cudnn-*-archive/lib/libcudnn* /usr/local/cuda-12.1/lib64/
sudo chmod a+r /usr/local/cuda-12.1/lib64/libcudnn*
1.4 创建 Python 虚拟环境
vLLM 要求 Python 3.9-3.12,站长推荐 3.10。使用 conda 或 venv 均可:
sudo apt-get install -y python3.10 python3.10-venv python3-pip
python3.10 -m venv vllm_env
source vllm_env/bin/activate
二、安装 vLLM:版本选择是关键
直接 pip install vllm 会拉取最新版,但最新版往往有未修复的 bug。站长建议安装 0.4.2 版本(稳定且对 Windows 兼容性最好):
pip install vllm==0.4.2
pip install torch==2.1.2+cu121 torchvision==0.16.2+cu121 --extra-index-url https://download.pytorch.org/whl/cu121
注意:PyTorch 版本必须与 vLLM 匹配,否则会报 CUDA 版本冲突。安装完成后验证:
python -c "import vllm; print(vllm.__version__)"
如果报错 ImportError: libcuda.so.1: cannot open shared object file,说明 CUDA 路径没配好。执行:
sudo ldconfig /usr/local/cuda-12.1/lib64
三、实际部署:用 Qwen2-7B 测试推理
💡 关联延伸阅读:如果你在配置过程中遇到相关报错,请参阅站长之前的解决教程:大模型推理加速框架vllm部署的实战方案:从零到生产环境的保姆级教程
站长以阿里开源的 Qwen2-7B-Instruct 为例,模型文件放在 ~/models/qwen2-7b-instruct。启动 vLLM 服务:
python -m vllm.entrypoints.openai.api_server \
--model ~/models/qwen2-7b-instruct \
--served-model-name qwen2-7b \
--tensor-parallel-size 1 \
--gpu-memory-utilization 0.85 \
--max-model-len 8192 \
--port 8000
参数说明:--tensor-parallel-size 在单卡上设为 1;--gpu-memory-utilization 控制显存占用比例,0.85 是安全值,如果你的显卡显存小于 16GB,建议降到 0.7;--max-model-len 控制最大序列长度,过大会爆显存。
启动成功后,你会看到类似 Uvicorn running on http://0.0.0.0:8000 的输出。此时用 curl 测试:
curl http://localhost:8000/v1/completions \
-H "Content-Type: application/json" \
-d '{
"model": "qwen2-7b",
"prompt": "你好,介绍一下你自己",
"max_tokens": 128,
"temperature": 0.7
}'
四、避坑要点排查(站长实测踩过的雷)
坑 1:显存不足导致 OOM
症状:启动时报 CUDA out of memory 或 RuntimeError: CUDA error: out of memory。
排查:先看显存占用 nvidia-smi,如果其他程序占用过多,关掉。然后调低 --gpu-memory-utilization 到 0.5,同时降低 --max-model-len 到 4096。站长建议 7B 模型至少需要 12GB 显存,如果不够,换 3B 或 1.5B 模型。
坑 2:WSL2 内存分配不足
症状:加载模型时 WSL 直接崩溃或卡死。
原因:WSL2 默认只分配 50% 物理内存给虚拟机。编辑 C:\Users\你的用户名\.wslconfig 文件(没有就新建):
[wsl2]
memory=16GB
swap=8GB
processors=8
保存后在 PowerShell 执行 wsl --shutdown 重启 WSL 生效。
坑 3:CUDA 版本不匹配导致无法加载模型
症状:报 AssertionError: Torch not compiled with CUDA enabled 或 CUDA error: no kernel image is available for execution on the device。
排查:执行 python -c "import torch; print(torch.cuda.is_available())",如果返回 False,说明 PyTorch 装成了 CPU 版。卸载重装:
pip uninstall torch torchvision
pip install torch==2.1.2+cu121 torchvision==0.16.2+cu121 --extra-index-url https://download.pytorch.org/whl/cu121
坑 4:vLLM 与 FlashAttention 冲突
症状:启动时报 ModuleNotFoundError: No module named 'flash_attn'。
原因:vLLM 0.4.2 默认尝试加载 FlashAttention,但 Windows 下编译困难。解决方案:设置环境变量禁用:
export VLLM_USE_FLASH_ATTN=0
或者在启动命令加 --disable-flash-attn 参数。站长实测禁用后性能损失约 10%,但稳定性大幅提升。
坑 5:端口被占用
症状:启动报 Address already in use。
排查:netstat -tulpn | grep 8000 找到占用进程,kill 掉。或者换端口 --port 8001。
坑 6:模型下载超时或中断
症状:HuggingFace 模型下载到一半失败。
解决方案:使用镜像站。设置环境变量:
export HF_ENDPOINT=https://hf-mirror.com
然后重新下载。注意:如果已经下载了一半,先删掉 ~/.cache/huggingface 里的缓存文件再重试。
坑 7:WSL2 网络代理问题
症状:pip 安装时无法连接 PyPI。
排查:如果你在 Windows 上用了代理软件,WSL2 默认不走代理。在 WSL 内手动设置:
export http_proxy=http://$(ip route show default | awk '{print $3}'):端口号
export https_proxy=http://$(ip route show default | awk '{print $3}'):端口号
注意端口号是你代理软件的 HTTP 端口(如 Clash 默认 7890)。
坑 8:并发请求导致崩溃
症状:多个请求同时进来时,服务响应变慢或直接 503。
优化:vLLM 本身支持连续批处理,但需要调整参数。启动时加上:
--max-num-seqs 4 \
--max-num-batched-tokens 4096
同时可以开启 --enable-prefix-caching 加速重复前缀的推理。
五、性能验证与基准测试
部署成功后,站长建议跑一次基准测试确认性能达标。使用 vLLM 自带的 benchmark:
python -m vllm.benchmarks.benchmark_throughput \
--model ~/models/qwen2-7b-instruct \
--tensor-parallel-size 1 \
--input-len 512 \
--output-len 128 \
--num-prompts 100
在 RTX 4090 上,站长实测吞吐量约为 2500 tokens/s(输入)+ 800 tokens/s(输出)。如果远低于这个值,检查是否启用了 FlashAttention(如果禁用了,性能下降明显)。
六、总结与最终建议
站长最后强调几点:
1. 不要尝试原生 Windows 安装——vLLM 的某些 CUDA 调用在 Windows 上会直接崩溃,WSL2 是唯一稳定路径。
2. 版本锁定——vLLM 0.4.2 + PyTorch 2.1.2 + CUDA 12.1 是经过站长反复验证的黄金组合,升级大版本前务必备份。
3. 显存管理——7B 模型至少需要 12GB 显存,如果不够,用 --quantization awq 加载 4bit 量化模型,显存占用可降低 60%。
4. 生产环境建议——如果要在 Windows 上长期运行,建议将 WSL2 设置为开机自启,并编写 systemd 服务来管理 vLLM 进程,避免手动启动。
5. 日志排查——遇到任何报错,先看 nvidia-smi 确认显存状态,再看 dmesg | tail -20 检查内核日志,最后才去看 Python 堆栈。
按照上述步骤操作,站长保证你可以在 30 分钟内完成从零到可用的部署。如果遇到本文未覆盖的坑,欢迎在评论区贴出报错信息,站长会逐一回复。
相关 AI 排错与深度技术延伸
⚡ 开发者实操必备资源与算力限时特惠通道
阅读完本教程准备实操?站长已将 AI 部署排错手册、提示词全集与服务器限时优惠整理如下,即拿即用: