vLLM
是一个并发性能优良的大模型部署框架,然而vLLM
目前对RTX50
系显卡支持不足,导致使用50
系显卡部署的时候会遇到很多问题。这里提供一个手动编译vLLM
的解决方案,以解决部署失败的问题,在官方支持跟进之前,可以使用这种方案来使用RTX50
系显卡部署大模型。
准备工作
- 安装
wsl
在wsl
上安装Ubuntu 24.0.4
并初始化安装git
配置环境
步骤 1:安装pipx
建议将 uv
安装到隔离环境中,这里使用pipx
。使用如下命令安装:
# 安装 pipxsudo apt update sudo apt install pipx
步骤 2:安装uv
uv
是一个非常快的 Python
环境管理器,来创建和管理 Python
环境。
使用如下命令安装:
pipx install uv
验证安装:
# 输出版本号(如 0.1.0)即安装成功uv --version
步骤 3:安装vLLM
- 安装
uv
后,可以使用以下命令创建新的 Python
环境并安装 vLLM
执行命令:
# 创建虚拟环境,需要等待一段时间uv venv --python 3.12 --seed# 切换到虚拟环境source .venv/bin/activate
重要:使用50系显卡时,目前官方兼容性比较差,需要手动编译vllm。
参考文章:CSDN-慕迟明的文章
- 拉取代码:
# 拉取代码git clone https://github.com/vllm-project/vllm.git# 进入项目目录cd vllm# 切换到合适的分支,请自行到github页面查询,以仓库最新版本分支为准git checkout releases/v0.9.1
- 环境准备
安装对应的pytorch
版本,目前最新版为2.7.1
,已经支持cuda12.8
。
请在网站:pytorch.org/get-started… 进行查询。
我的RTX5070ti
对应的命令如下:
pip3 install torch torchvision torchaudio --index-url https://download.pytorch.org/whl/cu128
附:重新安装pytorch
# 卸载pytorchpip 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…
最终环境检查:
# 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 版本(如适用)
- 手动编译:
# 使用已安装的torchpython use_existing_torch.py # 准备编译环境pip install -r requirements/build.txtpip install -r requirements/common.txtpip 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 索引。
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
下载模型,请在运行上述命令之前设置以下内容:
export VLLM_USE_MODELSCOPE=true
首先需要安装modelscope
:
pip install modelscope>=1.18.1
这里的nvidia-cuda-toolkit
版本需要和PyTorch
对应支持的CUDA
版本/显卡驱动CUDA
版本匹配。
可以访问 PyTorch 的安装页面查看版本适配,使用以下命令查看当前cuda版本,如果CUDA版本不对应,需要安装别的版本,解决兼容性问题。
查询nvidia-cuda-toolkit
版本:
nvcc --version
查询显卡驱动版本:
nvidia-smi
如果版本不兼容,请安装其它版本的CUDA
工具包。
下载对应的模型:
# 其中,--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
)已经创建。此时开始下载相应文件,等待下载完成即可,显示如下:
Downloading Model from https://www.modelscope.cn to directory: /home/miesme/llms/vllm/qwen/qwen3-8b-awqDownloading [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]
部署时,运行命令:
# 不使用推理模式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
如果服务启动成功,应该会提示:
INFO: Started server process [15361]INFO: Waiting for application startup.INFO: Application startup complete.
步骤 5:测试结果
如果使用
50
系显卡,不采用手动编译vLLM
的方式,虽然服务能正常启动,但是执行推理的时候会报错崩溃。
使用Postman
或ApiFox
等工具发送http
对话请求:
POST http://{你配置的主机地址}:{你配置的端口号}/v1/chat/completions# 例:默认部署在本机,端口号8000POST http://localhost:8000/v1/chat/completions
对应的RequestBody
:
{ "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
数。
测试结果:
{ "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
应用中,到此,我们就完成了vLLM
的50
系列显卡本地大模型部署,通过手动编译配置,解决了报错问题。
显存占用:
硬件要求
这里我的GPU
为RTX5070ti 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+
的显存,一般是企业用,这里就不再介绍。
如果使用张量并行的分布式推理,操作非常简单,如:
vllm serve Qwen/Qwen3-8B --tensor-parallel-size 4
此时报错: