vLLM在RTX50系显卡上部署大模型-使用wsl2

vLLM是一个并发性能优良的大模型部署框架,然而vLLM目前对RTX50系显卡支持不足,导致使用50系显卡部署的时候会遇到很多问题。这里提供一个手动编译vLLM的解决方案,以解决部署失败的问题,在官方支持跟进之前,可以使用这种方案来使用RTX50系显卡部署大模型。

准备工作

  • 安装wsl
  • wsl上安装Ubuntu 24.0.4并初始化
  • 安装git

配置环境

​步骤 1:安装pipx​

建议将 uv 安装到隔离环境中,这里使用pipx。 使用如下命令安装:

bash 复制代码
# 安装 pipx
sudo apt update sudo apt install pipx 
​步骤 2:安装uv​

uv是一个非常快的 Python 环境管理器,来创建和管理 Python 环境。

使用如下命令安装:

bash 复制代码
pipx install uv

验证安装:

bash 复制代码
# 输出版本号(如 0.1.0)即安装成功
uv --version 
​步骤 3:安装vLLM​
  1. 安装 uv 后,可以使用以下命令创建新的 Python 环境并安装 vLLM

执行命令:

bash 复制代码
# 创建虚拟环境,需要等待一段时间
uv venv --python 3.12 --seed
# 切换到虚拟环境
source .venv/bin/activate

重要:使用50系显卡时,目前官方兼容性比较差,需要手动编译vllm。

参考文章:CSDN-慕迟明的文章

  1. 拉取代码:
bash 复制代码
# 拉取代码
git clone https://github.com/vllm-project/vllm.git
# 进入项目目录
cd vllm
# 切换到合适的分支,请自行到github页面查询,以仓库最新版本分支为准
git checkout releases/v0.9.1
  1. 环境准备

安装对应的pytorch版本,目前最新版为2.7.1,已经支持cuda12.8

请在网站:pytorch.org/get-started... 进行查询。

我的RTX5070ti对应的命令如下:

bash 复制代码
pip3 install torch torchvision torchaudio --index-url https://download.pytorch.org/whl/cu128

附:重新安装pytorch

bash 复制代码
# 卸载pytorch
pip uninstall torch torchvision torchaudio
# 删除缓存
pip cache purge
# 重新安装
pip3 install torch torchvision torchaudio --index-url https://download.pytorch.org/whl/cu128

安装CUDA工具包,具体教程请查阅官方指南,这里我安装的是12.8版本。需要与pytorch支持的最高版本对应,请仔细检查。

关于具体的安装方法,请查阅官方文档:docs.nvidia.com/cuda/cuda-i...

最终环境检查:

bash 复制代码
# nvidia显卡驱动版本,最新即可
nvidia-smi 
# cuda版本:12.8+
nvcc --version 

# 使用python脚本检查PyTorch版本
python

>>> import torch
>>> print(torch.__version__)             # 查看 PyTorch 版本
>>> print(torch.cuda.is_available())     # 检查是否支持 CUDA
>>> print(torch.version.cuda)            # 查看 PyTorch 编译时的 CUDA 版本
>>> print(torch.backends.cudnn.version())  # 查看 cuDNN 版本(如适用)
  1. 手动编译:
bash 复制代码
# 使用已安装的torch
python use_existing_torch.py  
# 准备编译环境
pip install -r requirements/build.txt
pip install -r requirements/common.txt
pip install --upgrade pip setuptools setuptools-scm  
# 执行编译,使用MAX_JOBS参数执行并行处理加速,可以设置为自己处理器的核心数
MAX_JOBS=8 pip install -e . --no-build-isolation -v

如果你不是50系列显卡,没有兼容性问题,请参照下面的教程:

参考文档:vLLM文档

在虚拟环境中安装vLLM

如果您不使用RTX50系列显卡,建议利用 uv 通过 --torch-backend=auto(或 UV_TORCH_BACKEND=auto)检查已安装的 CUDA 驱动程序版本来在运行时自动选择合适的 PyTorch 索引

bash 复制代码
uv pip install vllm --torch-backend=auto

🍵这里需要等待一段时间安装。

​步骤 4:安装QWEN3​

注意:以下操作均在虚拟环境中。

对应文档:QWEN

借助vLLM,构建一个与OpenAI API兼容的API服务十分简便,该服务可以作为实现OpenAI API协议的服务器进行部署。默认情况下,它将在 http://localhost:8000 启动服务器。可以通过 --host--port 参数来自定义地址。

默认情况下,如果模型未指向有效的本地目录,它将从 Hugging Face Hub 下载模型文件。要从 ModelScope 下载模型,请在运行上述命令之前设置以下内容:

bash 复制代码
export VLLM_USE_MODELSCOPE=true

首先需要安装modelscope

bash 复制代码
pip install modelscope>=1.18.1

这里的nvidia-cuda-toolkit版本需要和PyTorch对应支持的CUDA版本/显卡驱动CUDA版本匹配。

可以访问 PyTorch 的安装页面查看版本适配,使用以下命令查看当前cuda版本,如果CUDA版本不对应,需要安装别的版本,解决兼容性问题。

查询nvidia-cuda-toolkit版本:

bash 复制代码
nvcc --version

查询显卡驱动版本:

bash 复制代码
nvidia-smi

如果版本不兼容,请安装其它版本的CUDA工具包。

下载对应的模型:

bash 复制代码
# 其中,--local_dir后面填写你的目录地址
modelscope download --model Qwen/Qwen3-8B-AWQ --local_dir /home/miesme/llms/vllm/qwen/qwen3-8b-awq

其中,/home/miesme/llms/vllm/qwen/qwen3-8b-awq是大模型文件安装的相对目录,请保证根目录(这里是/home)已经创建。 此时开始下载相应文件,等待下载完成即可,显示如下:

bash 复制代码
Downloading Model from https://www.modelscope.cn to directory: /home/miesme/llms/vllm/qwen/qwen3-8b-awq
Downloading [config.json]: 100%|███████████████████████████████████████████████████████████████████████████████████████████████████████| 1.02k/1.02k [00:00<00:00, 2.87kB/s]
Downloading [generation_config.json]: 100%|██████████████████████████████████████████████████████████████████████████████████████████████████| 239/239 [00:00<00:00, 661B/s]
Downloading [configuration.json]: 100%|████████████████████████████████████████████████████████████████████████████████████████████████████| 48.0/48.0 [00:00<00:00, 127B/s]
Downloading [README.md]: 100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████| 16.4k/16.4k [00:00<00:00, 35.3kB/s]
Downloading [tokenizer_config.json]: 100%|█████████████████████████████████████████████████████████████████████████████████████████████| 9.45k/9.45k [00:00<00:00, 16.9kB/s]
Downloading [vocab.json]: 100%|████████████████████████████████████████████████████████████████████████████████████████████████████████| 2.65M/2.65M [00:02<00:00, 1.02MB/s]
Downloading [LICENSE]: 100%|███████████████████████████████████████████████████████████████████████████████████████████████████████████| 11.3k/11.3k [00:04<00:00, 2.85kB/s]
Downloading [model.safetensors.index.json]: 100%|██████████████████████████████████████████████████████████████████████████████████████| 72.3k/72.3k [00:04<00:00, 17.7kB/s]
Downloading [merges.txt]: 100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████| 1.59M/1.59M [00:04<00:00, 347kB/s]
Downloading [tokenizer.json]: 100%|████████████████████████████████████████████████████████████████████████████████████████████████████| 10.9M/10.9M [00:08<00:00, 1.41MB/s]
Processing 12 items:  83%|████████████████████████████████████████████████████████████████████████████████████████████▌                  | 10.0/12.0 [00:08<00:03, 1.50s/it]
Downloading [model-00002-of-00002.safetensors]:   1%|▉                                                                                 | 13.0M/1.16G [00:04<05:27, 3.76MB/s]
Downloading [model-00002-of-00002.safetensors]:   3%|██▎                                                                               | 33.0M/1.16G [00:08<03:51, 5.22MB/s]
Downloading [model-00002-of-00002.safetensors]:  28%|███████████████████████▌                                                           | 337M/1.16G [01:02<02:37, 5.66MB/s]
Downloading [model-00001-of-00002.safetensors]:   1%|▋                                                                                 | 42.0M/4.52G [00:08<14:39, 5.47MB/s]
Downloading [model-00001-of-00002.safetensors]:   7%|██████▏                                                                            | 344M/4.52G [01:02<13:05, 5.72MB/s]

部署时,运行命令:

bash 复制代码
# 不使用推理模式
vllm serve /home/miesme/llms/vllm/qwen/qwen3-8b-awq --port 8000
# 使用推理模式,以及一些其他的参数
vllm serve /home/miesme/llms/vllm/qwen/qwen3-8b-awq --max-model-len 32768 --host 0.0.0.0 --port 8000 --enable-reasoning --reasoning-parser deepseek_r1

这里选择的是量化模型AWQ,减少显存占用。

对于可以下载的模型型号,可以查看:Hugging Face

如果服务启动成功,应该会提示:

bash 复制代码
INFO:     Started server process [15361]
INFO:     Waiting for application startup.
INFO:     Application startup complete.

​步骤 5:测试结果​

如果使用50系显卡,不采用手动编译vLLM的方式,虽然服务能正常启动,但是执行推理的时候会报错崩溃。

使用PostmanApiFox等工具发送http对话请求:

bash 复制代码
POST http://{你配置的主机地址}:{你配置的端口号}/v1/chat/completions
# 例:默认部署在本机,端口号8000
POST http://localhost:8000/v1/chat/completions

对应的RequestBody:

json 复制代码
{
  "model": "/home/miesme/llms/vllm/qwen/qwen3-8b-awq",
  "messages": [
    {"role": "user", "content": "who are you?."}
  ],
  "temperature": 0.9,
  "top_p": 0.95,
  "top_k": 20,
  "max_tokens": 2048
}

参数解析:

  • model:你的模型名称,如刚才的启动命令为vllm serve /home/miesme/llms/vllm/qwen/qwen3-8b-awq --port 8000,这里就填serve后面的/home/miesme/llms/vllm/qwen/qwen3-8b-awq

  • role:角色,指定信息来源。

  • content:提示词内容。

  • temperature:控制回答的随机度,越大越不随机,取值0-1

  • top_p:也称为核采样,控制输出多样性和连贯性的参数,越大越多样,取值0-1

  • top_k:在RAG中检索最相关文档的数量,越大检索量就大,但是生成慢。

  • max_tokens:最大的输出token数。

测试结果:

json 复制代码
{
    "id": "chatcmpl-afeb1a7bce014fb7a468195dc77278ce",
    "object": "chat.completion",
    "created": 1751800781,
    "model": "/home/miesme/llms/vllm/qwen/qwen3-8b-awq",
    "choices": [
        {
            "index": 0,
            "message": {
                "role": "assistant",
                "reasoning_content": "\nOkay, the user is asking, \"who are you?\" I need to respond appropriately. First, I should introduce myself as Qwen, the large language model developed by Alibaba. I should mention my capabilities, like answering questions, creating content, and engaging in conversations. I should keep it friendly and open-ended, inviting the user to ask anything they need. Let me make sure the response is clear and concise, avoiding any technical jargon. Also, I should check for any typos and ensure the tone is welcoming.\n",
                "content": "\n\nHello! I am Qwen, a large language model developed by Alibaba Cloud. I am designed to assist with a wide range of tasks, including answering questions, creating content, and engaging in conversations. Whether you need help with writing, coding, or just want to chat, feel free to ask anything you need! 😊",
                "tool_calls": []
            },
            "logprobs": null,
            "finish_reason": "stop",
            "stop_reason": null
        }
    ],
    "usage": {
        "prompt_tokens": 12,
        "total_tokens": 187,
        "completion_tokens": 175,
        "prompt_tokens_details": null
    },
    "prompt_logprobs": null,
    "kv_transfer_params": null
}

🎉可见,模型开启了深度思考,并给出了回复。

通过返回的json,也可以将大模型整合到我们的Web应用中,到此,我们就完成了vLLM50系列显卡本地大模型部署,通过手动编译配置,解决了报错问题。

显存占用:
硬件要求

这里我的GPURTX5070ti 16G显存,可以部署8B的模型。

对于不同的硬件条件,推荐的配置如下:

模型版本 参数规模 显存需求 推荐 GPU 推荐 CPU 内存要求 备注
Qwen/Qwen3-0.6B 6 亿 1GB+ GTX1050以上 Xeon W-2400系列或同等性能CPU 4GB+ 入门测试用
Qwen/Qwen3-1.7B 17 亿 2GB+ GTX1660以上 Xeon W-2400系列或同等性能CPU 8GB+ 入门测试用
Qwen/Qwen3-4B 40 亿 8GB+ RTX3090以上 Xeon W-2400系列或同等性能CPU 16GB+ 轻量部署/手机端应用
Qwen/Qwen3-8B 80 亿 14GB+ RTX4080以上 Xeon W-2400系列或同等性能CPU 16GB+ 电脑端或汽车端对话助手/语音助手等
Qwen/Qwen3-14B 140 亿 24GB+ RTX3090*2 以上 Xeon W-3400系列或同等性能CPU 32GB+ 企业级任务入门

此外,还有更大参数量的模型,最高为Qwen3-235B-A22B,需要350GB+的显存,一般是企业用,这里就不再介绍。


如果使用张量并行的分布式推理,操作非常简单,如:

bash 复制代码
vllm serve Qwen/Qwen3-8B --tensor-parallel-size 4

此时报错:

相关推荐
搞笑的秀儿3 分钟前
信息新技术
大数据·人工智能·物联网·云计算·区块链
阿里云大数据AI技术21 分钟前
OpenSearch 视频 RAG 实践
数据库·人工智能·llm
XMAIPC_Robot34 分钟前
基于ARM+FPGA的光栅尺精密位移加速度测试解决方案
arm开发·人工智能·fpga开发·自动化·边缘计算
加油吧zkf43 分钟前
YOLO目标检测数据集类别:分类与应用
人工智能·计算机视觉·目标跟踪
还是奇怪1 小时前
Linux - 安全排查 2
linux·运维·安全
Blossom.1181 小时前
机器学习在智能制造业中的应用:质量检测与设备故障预测
人工智能·深度学习·神经网络·机器学习·机器人·tensorflow·sklearn
天天扭码1 小时前
AI时代,前端如何处理大模型返回的多模态数据?
前端·人工智能·面试
难受啊马飞2.01 小时前
如何判断 AI 将优先自动化哪些任务?
运维·人工智能·ai·语言模型·程序员·大模型·大模型学习
顺丰同城前端技术团队1 小时前
掌握未来:构建专属领域的大模型与私有知识库——从部署到微调的全面指南
人工智能·deepseek
许泽宇的技术分享1 小时前
用.NET9+Blazor+Semantic Kernel,打造企业级AI知识库和智能体平台——AntSK深度解读
人工智能