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

image

image

 

二、安装WSL并连接

由于vllm原生不支持windows,因此需要启用windows子系统后,安装ubuntu (由于CUDA13开始支持的ubuntu最低版本为ubuntu22,建议安装ubuntu24)。

1. 安装wsl命令

管理员模式下打开 PowerShell,输入 wsl --install 命令,然后重新启动计算机。

wsl --install

2.  查看可用版本并进行安装

wsl --list --online

image

 3. 安装发行版 Ubuntu-24.04

wsl.exe --install Ubuntu-24.04

 4. 查看已安装版本,并修改默认版本

wsl -l -v
wsl --set-version Ubuntu-24.04 2

image

5.  修改wsl可用资源

此处尽量将内存调大点,同时调整下swap,避免后面并发编译时OOM,或者编译过慢。

image

image

 重启wsl加载新配置

wsl --shutdown
wsl

 6. 进入子系统

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

image

image

 三、安装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

启动完成后显示

image

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
}'

 

image

 

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

posted @ 2025-10-01 22:33  爱积累的隐匿猫  阅读(564)  评论(0)    收藏  举报