再也不用切环境了,wsl2安装运行vllm指南

541 阅读3分钟

再也不用切环境了,wsl2安装运行vllm指南

千文发布了多模态模型 Qwen2.5-VL模型 想要在本地尝试一下 ,一般这种模型还是推荐在linux系统上进行尝试,win上经常会碰到莫名奇妙的坑,虽然机器上有win+ubuntu双系统 但总是切来切去很蛮烦 而且大部分文件都存在win上,所以又捡起了几年千试过的wsl(当时安装时还是wsl刚推出,安装cuda 又没官方文档只有几个帖子最后还是失败了) 这次安装下来发现 和丝滑,在不追求性能下是个好东西

wsl

wsl 全称 Windows Subsystem for Linux 可用于在 Windows 计算机上运行 Linux 环境 主要有两个版本wsl1 和wsl2 主要区别是wsl还是在win上运行linux系统 wsl2则是使用了hyperivisor技术,linux内核和window内核都是运行在hyperivisor上的

1.png

wsl1 和wsl2之间的区别

2.png 本次因为要使用到gpu 需要使用底层的硬件,所以需要安装wsl2,wsl2运行在hyperivisor 所以可以完美支持docker 也可以运行nvidia-docker 切换各个cuda版本

步骤

1.首页要开机时进bios 开启虚拟化

转存失败,建议直接上传图片文件

4.png 2. 安装wsl2及相关配置

wsl --install
设置用户及密码
sudo passwd root  //设置root密码

3.安装cuda 环境 查看是否有nvida驱动

nvidia-smi.exe

或者

nvidia-smi

5.png 安装cuda 这边选择的版本是cuda12.4 cudnn是 8.9.7 由于是在wsl上上安装 选择wsl版本 -cuda12.4下载地址

6.png 之后按指示

wget https://developer.download.nvidia.com/compute/cuda/repos/wsl-ubuntu/x86_64/cuda-wsl-ubuntu.pin
sudo mv cuda-wsl-ubuntu.pin /etc/apt/preferences.d/cuda-repository-pin-600
wget https://developer.download.nvidia.com/compute/cuda/12.4.0/local_installers/cuda-repo-wsl-ubuntu-12-4-local_12.4.0-1_amd64.deb
sudo dpkg -i cuda-repo-wsl-ubuntu-12-4-local_12.4.0-1_amd64.deb
sudo cp /var/cuda-repo-wsl-ubuntu-12-4-local/cuda-*-keyring.gpg /usr/share/keyrings/
sudo apt-get update
sudo apt-get -y install cuda-toolkit-12-4

再安装cudnn -cudnn下载地址

7.png

 sudo cp cudnn-linux-x86_64-8.9.7.29_cuda12-archive/include/cudnn*.h /usr/local/cuda/include
 sudo cp -P cudnn-linux-x86_64-8.9.7.29_cuda12-archive/lib/libcudnn* /usr/local/cuda/lib64/
 sudo chmod a+r /usr/local/cuda/include/cudnn*.h /usr/local/cuda/lib64/libcudnn*

4.安装 conda 并设置清华源

wget https://repo.anaconda.com/archive/Anaconda3-2024.02-1-Linux-x86_64.sh
bash Anaconda3-2024.02-1-Linux-x86_64.sh
conda config --add channels https://mirrors.tuna.tsinghua.edu.cn/anaconda/pkgs/main/
conda config --add channels https://mirrors.tuna.tsinghua.edu.cn/anaconda/pkgs/free/
conda config --add channels https://mirrors.tuna.tsinghua.edu.cn/anaconda/cloud/conda-forge/
conda config --add channels https://mirrors.tuna.tsinghua.edu.cn/anaconda/cloud/msys2/
conda config --add channels https://mirrors.tuna.tsinghua.edu.cn/anaconda/cloud/bioconda/
conda config --add channels https://mirrors.tuna.tsinghua.edu.cn/anaconda/cloud/menpo/
conda config --add channels https://mirrors.tuna.tsinghua.edu.cn/anaconda/cloud/pytorch/
conda config --set show_channel_urls yes

然后顺便把pip的源也换了

pip config set global.index-url https://mirrors.tuna.tsinghua.edu.cn/pypi/web/simple

5. 设置魔法 要能下载huggingface 上的模型 必然要使用魔法 宿主机使用clash使用魔法端口为7890 并开启,局域网代理, 由于win对于wsl在网络层面处理不是很优雅,导致wsl2的ip 并不是局域网的ip 需要修改~/.bash

export hostip=$(cat /etc/resolv.conf |grep -oP '(?<=nameserver\ ).*')
export https_proxy="http://${hostip}:7890"
export http_proxy="http://${hostip}:7890"

当然如果上层网络直接能使用软路由代理也是一个不错的方法 6. 宿主机pycharm 连wsl的python环境 python解析器选择wsl-> 选择conda环境->选择对应的conda env 最后小跑一个vllm例子看安装是否成功

from vllm import LLM, SamplingParams
# 推理数据以List[str]格式组织
prompts = [
    "Hello, my name is",
    "The president of the United States is",
    "The capital of France is",
    "The future of AI is",
]
# 设置采样参数
sampling_params = SamplingParams(temperature=0.8, top_p=0.95)
# 加载模型
llm = LLM(model="facebook/opt-125m")
# 执行推理
outputs = llm.generate(prompts, sampling_params)

# 输出推理结果
for output in outputs:
    prompt = output.prompt
    generated_text = output.outputs[0].text
    print(f"Prompt: {prompt!r}, Generated text: {generated_text!r}")

8.png

当然在最后一步可能出现 代理不通 下载不了huggingface上的模型 可以在环境变量上加上 我们的代理地址

9.png

最后欢迎关注我的公众号

qrcode_for_gh_4f5df1890852_258.jpg

引用

-从wsl到wsl2明显是退步,为什么还有人鼓吹wsl2? -vLLM使用指北