windows-WLS 50系显卡(5070TI)使用VLLM运行多模态大模型Qwen2.5-VL一站式说明
50系显卡需要CUDA13才能真正发挥作用,截至25年10月1日,pytorch主版本还不支持CUDA13(nightly版本支持),并且VLLM pip安装只支持主线版本,nightly版本需要先安装pytorch再手工编译vllm,整个部署过程中遇到了不少问题,记录总结下。
一、安装windows中的显卡驱动和toolkit
下载的时候要注意驱动版本和CUDA版本,我的显卡是5070TI,下载的驱动版本是581.29,cuda版本是13.0.1。 此处有个坑,我之前通过浏览器搜索cuda地址,下载安装的最新tookit版本始终是12.X,后来发现nvidia.cn和nvidia.com的最新版本竟然不一样。。。
显卡驱动下载地址: https://www.nvidia.com/drivers/lookup/
CUDA完整组件包:https://developer.nvidia.cn/cuda-download
CUDA和依赖显卡驱动版本: https://docs.nvidia.com/cuda/cuda-toolkit-release-notes/index.html
下载安装完成后cmd命令行执行验证cuda版本是否一致
nvidia-smi
nvcc --version


二、安装WSL并连接
由于vllm原生不支持windows,因此需要启用windows子系统后,安装ubuntu (由于CUDA13开始支持的ubuntu最低版本为ubuntu22,建议安装ubuntu24)。
1. 安装wsl命令
管理员模式下打开 PowerShell,输入 wsl --install 命令,然后重新启动计算机。
wsl --install
2. 查看可用版本并进行安装
wsl --list --online

3. 安装发行版 Ubuntu-24.04
wsl.exe --install Ubuntu-24.04
4. 查看已安装版本,并修改默认版本
wsl -l -v
wsl --set-version Ubuntu-24.04 2

5. 修改wsl可用资源
此处尽量将内存调大点,同时调整下swap,避免后面并发编译时OOM,或者编译过慢。


重启wsl加载新配置
wsl --shutdown
wsl
6. 进入子系统
cmd中命令行执行wsl进入子系统,或者通过终端工具连接,如果使用终端工具的话此处有个坑,开始的时候我还在子系统中安装ssh服务,后来发现使用过程中出现各种莫名其妙的问题,最后发现不能使用ssh方式连接,直接选择terminal里面的wsl也有问题,最后通过cmd初始化wsl.exe --distribution Ubuntu-24.04命令方式连接,如图所示,(此处安利个开源终端软件Windterm用起来很顺手)


三、安装Wsl子系统中的基础组件
0.安装ssh服务用于远程主机访问(非必须,可跳过)
# 更新系统 sudo apt update && sudo apt upgrade -y # 卸载并安装SSH sudo apt autoremove --purge openssh-server -y && sudo apt install openssh-server -y # 编辑配置文件 sudo vim /etc/ssh/sshd_config # 取消注释监听端口和IP配置 Port 10022 # 更新配置 sudo systemctl daemon-reload sudo systemctl restart ssh.socket # 查看本机IP ip address
1. 安装git(用于后续源码拉取编译)
sudo apt install git
2. 安装编译组件
sodu apt install build-essential
3. 安装cuda-toolkit
注意wsl子系统需要安装wsl版本专用的cuda-toolkit
# 下载密钥包
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
# 安装cuda
sudo apt-get -y install cuda-toolkit-13-0
# 查看cuda版本是否和步骤一中的版本是否一致
nvcc --version
nvidia-smi
4. 增加CUDA环境变量
# 编辑用户环境变量文件,并增加下方的环境变量 vi ~/.bashrc # CUDA 环境变量 export CUDA_HOME=/usr/local/cuda export PATH=$CUDA_HOME/bin:$PATH export LD_LIBRARY_PATH=$CUDA_HOME/lib64:$LD_LIBRARY_PATH
5. 验证CUDA
# 查看cuda版本是否和步骤一中的版本是否一致
nvcc --version
nvidia-smi
5.安装python开发组件
sudo apt install python3.12-dev python3-pip python3.12-venv
四、安装VLLM
1. 安装nightly版本pytorch
# 安装uv wget -qO- https://astral.sh/uv/install.sh | sh # 创建LLM目录
cd && mkdir LLM && cd LLM
# 创建虚拟环境 uv venv
# 加载环境变量 source .venv/bin/activate # 安装torch uv pip install --pre torch torchaudio torchvision --index-url https://download.pytorch.org/whl/nightly/cu130
2. 验证pytorch是否可以正常使用GPU计算
执行python进入控制台
import torch # 检查 CUDA 是否可用 print(f"CUDA 是否可用: {torch.cuda.is_available()}") # 查看当前 CUDA 版本 print(f"CUDA 版本: {torch.version.cuda}") # 查看 cuDNN 版本 print(f"cuDNN 版本: {torch.backends.cudnn.version()}") # 如果 CUDA 可用,打印当前设备名称 if torch.cuda.is_available(): print(f"当前设备: {torch.cuda.get_device_name(0)}")
3. 拉取vllm最新代码使用当前torch进行编译
编译并发度MAX_JOBS请根据WSL根据分配的内存和cpu调整到合适的值,否则可能会导致并发编译OOM。建议分配内存GB/2.5, 可参考我的配置,WSL分配32G内存,设置的并发度是12(内存与核心数可通过WSL settings调整,需要重启wsl)
这个步骤编译安装我的电脑大概用了20多分钟
git clone https://github.com/vllm-project/vllm.git
cd vllm
python use_existing_torch.py
uv pip install -r requirements/build.txt
# 设置编译并发数,根据分配的内存和cpu调整
export MAX_JOBS=12
uv pip install --no-build-isolation -e .
4. 启动模型服务
本次主要为了验证整体流程,首先硬件不足,采用最低配。可根据自身硬件调整vllm相关参数
加载的模型是提前下载到D盘dev/models目录, wsl中可以访问windows中的文件。权重文件下载可到魔搭,右侧下载有多种方法,后续视情况单独写篇文章。 https://modelscope.cn/models/Qwen/Qwen2.5-VL-3B-Instruct-AWQ
[vllm启动参数说明](https://docs.vllm.com.cn/en/latest/configuration/engine_args.html)
[多模态配置参数说明](https://docs.vllm.com.cn/en/latest/features/multimodal_inputs.html)
vllm serve /mnt/d/dev/models/Qwen2.5-VL-3B-Instruct-AWQ/ --port 8000 --host 0.0.0.0 --max_num_seqs 2 --limit_mm_per_prompt '{"image": 1, "video": 0}' --mm_processor_kwargs '{"max_pixels": 589824}' --max-model-len 1024 --quantization awq_marlin
启动完成后显示

5. 模型调用测试
# 模型调用
curl http://localhost:8000/v1/chat/completions \
-X POST \
-H "Content-Type: application/json" \
-d '{
"model": "/mnt/d/dev/models/Qwen2.5-VL-3B-Instruct-AWQ/",
"messages": [
{
"role": "user",
"content": [
{
"type": "text",
"text": "这张图片描绘了什么场景?"
},
{
"type": "image_url",
"image_url": {
"url": "https://upload.wikimedia.org/wikipedia/commons/thumb/d/dd/Gfp-wisconsin-madison-the-nature-boardwalk.jpg/2560px-Gfp-wisconsin-madison-the-nature-boardwalk.jpg"
}
}
]
}
],
"max_tokens": 512,
"temperature": 0.7
}'

至此,整个流程就全部跑通了,其中部分环节的参数可以根据自己的情况调整。

浙公网安备 33010602011771号