WSL2 Ubuntu22安装vLLM推理引擎并运行大模型

环境信息

Windows11 + WSL2 Ubuntu22 + RTX 5060Ti 16G + CUDA 13.1 + Python 3.10

基础准备

Windows11安装好NVIDIA驱动,然后激活WSL2并初始化Ubuntu22.04LTS系统。

确认 WSL2 GPU 支持: 原则上win11安装驱动之后,WSL2会自动识别到显卡,在Ubuntu对话窗口执行如下命令验证

nvidia-smi

通过NVIDIA-SMI能看到电脑安装的Driver Version驱动版本,以及CUDA版本13.1(vLLM最低要求CUDA 11.8+),还有GPU使用情况:

image.png

更新为国内镜像加速: 先替换 Ubuntu 官方源为阿里云源,避免下载超时:

# 备份原数据源
sudo mv /etc/apt/sources.list /etc/apt/sources.list.bak
# 编辑数据源文件
sudo vim /etc/apt/sources.list

# sources.list插入阿里云源(Ubuntu 22.04 对应 jammy 版本)
deb http://mirrors.aliyun.com/ubuntu/ jammy main restricted universe multiverse
deb-src http://mirrors.aliyun.com/ubuntu/ jammy main restricted universe multiverse
deb http://mirrors.aliyun.com/ubuntu/ jammy-security main restricted universe multiverse
deb-src http://mirrors.aliyun.com/ubuntu/ jammy-security main restricted universe multiverse
deb http://mirrors.aliyun.com/ubuntu/ jammy-updates main restricted universe multiverse
deb-src http://mirrors.aliyun.com/ubuntu/ jammy-updates main restricted universe multiverse
deb http://mirrors.aliyun.com/ubuntu/ jammy-backports main restricted universe multiverse
deb-src http://mirrors.aliyun.com/ubuntu/ jammy-backports main restricted universe multiverse


# 以上sources.list保存后,执行源的更新
sudo apt update && sudo apt upgrade -y

检查Python3是否安装: 一般都自带了Python3环境,此步仅仅是为了检查确认一下

python3 --version

可以看到当前Python3是3.10版本,vLLM最低要求是python3.8,故当前版本可用:

image.png

前置依赖安装: 先安装 Ubuntu 系统依赖和 Python 工具链

# 1. 更新系统包
sudo apt update && sudo apt upgrade -y

# 2. 安装编译依赖(vllm 编译需要)
sudo apt install -y build-essential cmake git libopenmpi-dev libssl-dev zlib1g-dev

# 3. 安装 Python 依赖工具
sudo apt install -y python3-pip python3-venv python3-dev

安装vLLM及核心依赖

vllm 依赖 Python 3.8+、CUDA 11.8+、CMake 等。

创建独立 Python 虚拟环境

避免依赖冲突,优先使用python虚拟环境:

# 1. 创建虚拟环境(命名为 vllm-env,可自定义)
python3 -m venv vllm-env

# 2. 激活虚拟环境(激活后命令行前缀会显示 (vllm-env))
source vllm-env/bin/activate

# 退出Python虚拟环境执行 deactivate 命令即可

# 3. 升级 pip 并配置国内镜像(永久生效,避免后续下载慢)
pip install --upgrade pip
pip config set global.index-url https://pypi.tuna.tsinghua.edu.cn/simple
pip config set global.trusted-host pypi.tuna.tsinghua.edu.cn

# 4. 备用镜像:阿里云
pip config set global.extra-index-url https://mirrors.aliyun.com/pypi/simple/

# 5. 优化下载参数
pip config set global.timeout 120
pip config set global.retries 5
pip config set global.default-timeout 120

# 6. 检查配置信息
pip config list

安装 CUDA Toolkit 工具链

WSL2 已识别 CUDA 13.1,但需要安装 CUDA Toolkit(编译 vllm 时需要 nvcc 编译器),用 NVIDIA 国内镜像:

CUDA Toolkit最新版本下载清单:https://developer.nvidia.com/cuda-downloads

CUDA Toolkit历史版本下载清单:https://developer.nvidia.com/cuda-toolkit-archive

这个需要根据自身CUDA版本下载对应的CUDA Toolkit:

image.png

从NVIDIA获取CUDA Toolkit安装信息后,按如下方式执行下载和安装:

# 1. 下载地址仅供参考,一定要从官网获取地址
wget https://developer.download.nvidia.com/compute/cuda/13.1.1/local_installers/cuda_13.1.1_590.48.01_linux.run

# 2. 增加执行权限
chmod +x cuda_13.1.1_590.48.01_linux.run

# 3. 安装 CUDA Toolkit(仅安装工具链,不覆盖 Win11 的驱动),本步执行可能需要1分钟以上
sudo ./cuda_13.1.1_590.48.01_linux.run --silent --toolkit --toolkitpath=/usr/local/cuda-13.1

# 4. 删除安装包,安装完就可以删掉了
rm cuda_13.1.1_590.48.01_linux.run

# 5. 配置 CUDA 环境变量(永久生效)
echo 'export PATH=/usr/local/cuda-13.1/bin:$PATH' >> ~/.bashrc
echo 'export LD_LIBRARY_PATH=/usr/local/cuda-13.1/lib64:$LD_LIBRARY_PATH' >> ~/.bashrc
# 使配置立即生效
source ~/.bashrc

# 6. 验证 nvcc(编译器)是否安装成功(显示 CUDA 13.1 即可)
nvcc -V

安装 vllm 及核心依赖

# 激活虚拟环境(激活后命令行前缀会显示 (vllm-env))
source ~/vllm-env/bin/activate

# 1. 安装 PyTorch(AI生成的匹配 CUDA 13.1,默认用阿里镜像)
pip install torch==2.1.2 torchvision==0.16.2 torchaudio==2.1.2 --index-url https://download.pytorch.org/whl/cu131

# 2. 安装其他依赖(AI生成的 transformers、accelerate 等,阿里镜像自动生效)
pip install transformers==4.35.2 accelerate==0.24.1 sentencepiece==0.1.99 protobuf==4.25.3

# 3. 安装vllm,方式一:直接安装「CUDA 13.1 专用预编译包」
pip3 install vllm[cuda131] -i https://pypi.tuna.tsinghua.edu.cn/simple

# 3. 安装vllm,方式二:pip 直接安装指定稳定版本(国内镜像加速)
# pip install vllm==0.2.7  # 0.2.7 是稳定版,适配 CUDA 13.1 和 Python 3.10

# 3. 安装vllm 方式三:源码编译安装(如果 pip 安装失败,用这种,同样国内镜像)
# git clone https://gitee.com/mirrors/vllm.git  # 国内 gitee 镜像(替代 github)
# cd vllm
# pip install -e .  #  editable 安装,支持后续修改

安装包还是较大的,耐心等待:

image.png

验证安装结果:

# 1. 验证 vllm 是否能导入(无报错即成功)
python -c "from vllm import LLM, SamplingParams; print('vllm 导入成功')"

# 2. 验证 CUDA 可用性(显示 True 即成功)
python -c "import torch; print('CUDA 可用:', torch.cuda.is_available())"

# 3. 显示GPU型号
python -c "import torch; print('GPU 型号:', torch.cuda.get_device_name(0))"

# 4. 查看vllm
pip show vllm
image.png

安装nvitop GPU监控

nvidia-smi实测vllm运行后都检测不到gpu的process,故需要安装更强大的nvitop来做GPU监控:

# 安装nvitop
pip install --upgrade pip
pip install nvitop
# 查看GPU信息
nvitop

q键退出
image.png

魔搭社区下载运行大模型

访问国内最大的模型开源社区魔搭社区:https://www.modelscope.cn/home

Qwen3-4B-Instruct-2507-FP8下载运行

下载阿里官方上传的qwen3-4B模型,显存有限,使用8位量化 https://www.modelscope.cn/models/Qwen/Qwen3-4B-Instruct-2507-FP8

# 以下,在python虚拟环境下运行

# 安装modelscope
pip install modelscope

# 将模型下载到指定目录,如/home/hello/models下
modelscope download --model Qwen/Qwen3-4B-Instruct-2507-FP8 --local_dir /home/hello/models/Qwen3-4B-Instruct-2507-FP8

# 下载qwen3_nonthinking.jinja模板,启动qwen3稠密模型时应用该模板会默认非思考模式运行
sudo mkdir -p /home/hello/models/chat-template
wget https://qwen.readthedocs.io/en/latest/_downloads/c101120b5bebcc2f12ec504fc93a965e/qwen3_nonthinking.jinja

# Python虚拟环境下运行(python3指向了明确的虚拟机路径) 启动模型
CUDA_VISIBLE_DEVICES=0 nohup /home/hello/vllm-env/bin/python3 -m vllm.entrypoints.openai.api_server \
  --model="/home/hello/models/Qwen3-4B-Instruct-2507-FP8" \
  --tensor-parallel-size 1 \
  --max-num-seqs 16 \
  --served-model-name "qwen3-4b-fp8" \
  --enable-auto-tool-choice \
  --chat-template /home/hello/models/chat-template/qwen3_nonthinking.jinja \
  --tool-call-parser hermes \
  --host 0.0.0.0 \
  --gpu-memory-utilization 0.5 \
  --port 8080 --max-model-len 4096 > logs-qwen3_4b_fp8.log 2>&1 &
  

# 停止服务方法:python虚拟机下运行nvitop,找到模型的GPU ProcessID,然后kill process
nvitop
kill -9 GPU ProcessID

# curl测试模型
curl -X POST http://172.18.57.229:8080/v1/chat/completions \
-H "Authorization: Bearer " \
-H "Content-Type: application/json" \
-d '{
    "model": "qwen3-4b-fp8",
    "messages": [
        {
            "role": "system",
            "content": "You are a helpful assistant."
        },
        {
            "role": "user",
            "content": "编写一首七绝诗!"
        }
    ]
}'

BAAI/bge-m3下载运行

从魔搭社区下载Embedding文本向量模型bge-m3并启动运行:

# 以下,在python虚拟环境下运行

# 安装ModelScope
pip install modelscope

# 下载到指定目录
modelscope download --model BAAI/bge-m3 --local_dir /home/hello/models/bge-m3

# Python虚拟环境下运行(python3指向了明确的虚拟机路径) 启动模型
CUDA_VISIBLE_DEVICES=0 nohup /home/hello/vllm-env/bin/python3 -m vllm.entrypoints.openai.api_server \
  --model="/home/hello/models/bge-m3" \
  --max-num-seqs 4 \
  --served-model-name "bge-m3" \
  --max-model-len 8192 \
  --host 0.0.0.0 \
  --port 8081 > logs-bge-m3.log 2>&1 &

# 停止服务方法:python虚拟机下运行nvitop,找到模型的GPU ProcessID,然后kill process
nvitop
kill -9 GPU ProcessID

curl -X POST "http://172.18.57.229:8081/v1/embeddings" \
  -H "accept: application/json" \
  -H "Content-Type: application/json" \
  -H "Authorization: Bearer " \
  -d '{
    "model": "bge-m3",
    "input": "大语言模型(Large Language Model,简称 LLM)是一种基于深度学习技术的人工智能模型。"
  }'

BAAI/bge-reranker-v2-m3下载运行

从魔搭社区下载ReRank重排序模型bge-reranker-v2-m3并启动运行:

# 以下,在python虚拟环境下运行

# 安装ModelScope
pip install modelscope

# 下载到指定目录
modelscope download --model BAAI/bge-reranker-v2-m3 --local_dir /home/hello/models/bge-reranker-v2-m3

# Python虚拟环境下运行(python3指向了明确的虚拟机路径) 启动模型
CUDA_VISIBLE_DEVICES=0 nohup /home/hello/vllm-env/bin/python3 -m vllm.entrypoints.openai.api_server \
  --model="/home/hello/models/bge-reranker-v2-m3" \
  --served-model-name "bge-reranker-v2-m3" \
  --host 0.0.0.0 \
  --max-model-len 8192 \
  --port 8082 > logs-bge-reranker-m3-v2.log 2>&1 &


# 停止服务方法:python虚拟机下运行nvitop,找到模型的GPU ProcessID,然后kill process
nvitop
kill -9 GPU ProcessID


curl -X POST "http://172.18.57.229:8082/v1/rerank" \
  -H "Content-Type: application/json" \
  -d '{
    "model": "bge-reranker-v2-m3",
    "query": "什么是大语言模型?", 
    "documents": [
      "大语言模型是基于海量文本数据训练的深度学习模型,能理解和生成人类语言。",
      "猫是一种常见的家庭宠物,性格温顺,喜欢吃鱼。",
      "大语言模型的代表产品有 GPT、LLaMA 等,广泛用于对话、写作等场景。",
      "大语言模型(Large Language Model,简称 LLM)是一种基于深度学习技术的人工智能模型,更可靠的内容生成机制(如事实核查、引用溯源)以及更完善的安全防护策略(如数据脱敏、权限控制、偏见检测),以推动大语言模型向更安全、更可控、更实用的方向发展。",
    " 大语言模型主要有有 GPT、LLaMA 和qwen,广泛用于对话、写作等场景。",
    "什么是大型建模的模具,大型建模的模具就是用来生成制造大型建模的工具"
    ],
    "top_n": 6
  }'

nvitop检查process运行情况:

image.png

测试模型:

image.png

qwen模型日志:

image.png
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

  • """1.个性化消息: 将用户的姓名存到一个变量中,并向该用户显示一条消息。显示的消息应非常简单,如“Hello ...
    她即我命阅读 9,115评论 0 6
  • 1、expected an indented block 冒号后面是要写上一定的内容的(新手容易遗忘这一点); 缩...
    庵下桃花仙阅读 3,851评论 0 2
  • 一、工具箱(多种工具共用一个快捷键的可同时按【Shift】加此快捷键选取)矩形、椭圆选框工具 【M】移动工具 【V...
    墨雅丫阅读 4,292评论 0 0
  • 跟随樊老师和伙伴们一起学习心理知识提升自已,已经有三个月有余了,这一段时间因为天气的原因休课,顺便整理一下之前学习...
    学习思考行动阅读 3,707评论 0 2
  • 一脸愤怒的她躺在了床上,好几次甩开了他抱过来的双手,到最后还坚决的翻了个身,只留给他一个冷漠的背影。 多次尝试抱她...
    海边的蓝兔子阅读 3,342评论 0 4

友情链接更多精彩内容