一、方法一(使用docker镜像进行部署)
安装Linux服务器,本机测试系统为Ubuntu系统;(带有2张A100的GPU服务器)
思路为:使用docker部署python环境镜像在此基础上安装vllm拉取Qwen3-8b模型
docker-compose.yml文件部分配置为:
services:images_name:build: ./buildimage: images_namecontainer_name: images_namerestart: alwaysruntime: nvidiaprivileged: trueenvironment:# - CUDA_VISIBLE_DEVICES=1- HF_ENDPOINT=https://hf-mirror.com- HF_HUB_ENABLE_HF_TRANSFER=1ports:- xxxxx:22volumes:- ./data:/data- ./root:/roottty: truedeploy:resources:reservations:devices:- driver: nvidiacount: allcapabilities: [gpu]restart_policy:condition: on-failuredelay: 5smax_attempts: 3window: 120s
启动docker-compose文件后台运行
#启动docker-compose文件并后台运行
docker-compose up -d
#查看启动情况
docker-compose ps
#如果启动失败,则重新启动命令
docker-compose restart
#如果配置修改或启动错误,则需要down掉容器再次启动
docker-compose down
docker-compose up -d
正常运行情况如下:
进入容器内进行操作:
docker exec -it vllm /bin/bash
激活base环境
. /opt/conda/etc/profile.d/conda.sh && conda activate base
第一步先更新conda
#更新conda
conda update conda
#如果失败了,也可更新anaconda
conda update anaconda
部分conda命令以供参考
#查看conda版本
conda --version
#查看conda的环境配置
conda config --show
#设置清华镜像
conda config --add channels https://mirrors.tuna.tsinghua.edu.cn/anaconda/pkgs/free/
conda config --add channels https://mirrors.tuna.tsinghua.edu.cn/anaconda/pkgs/main/
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/bioconda/
#设置bioconda
conda config --add channels bioconda
conda config --add channels conda-forge
#设置搜索时显示通道地址
conda config --set show_channel_urls yes#将conda自身更新到最新版本
conda update conda
#将整个Anaconda都更新到确保稳定性和兼容性的最新版本
conda update Anaconda
#创建虚拟环境
conda create -n env_name python=3.8
#创建虚拟环境的同时安装必要的包
conda create -n env_name panda python=3.10
#查看虚拟环境
conda env list
conda info -e
conda info --envs#激活虚拟环境
conda activate env_name
#删除虚拟环境
conda remove --name env_name --all
conda remove --name env_name package_name
#退出虚拟环境
conda deactivate
这里为vllm创建一个虚拟环境vllm-env,并激活此环境
#创建虚拟环境
conda create -n vllm_env python=3.10
#激活虚拟环境
conda activate vllm_env
#安装vllm
conda install vllm或#使用pip安装
pip install vllm#部署Qwen3
vllm serve Qwen/Qwen3-8b
解决PackagesNotFoundError: The following packages are not available from的方法
将conda-forge添加到搜索路径上
conda config --append channels conda-forge
- 它告诉conda在搜索软件包时也要在conda-forge channel上查看。
- 然后你就可以尝试利用如下命令再次安装
如果不行,则需要直接在官网下载anaconda.org ;
注意:
-
2025-04 中旬:vLLM 在 0.8.4 中合并了对 Qwen3 系列(含 8B、MoE 等)的核心适配 。
-
2025-07-30:官方 Hugging Face 页面明确给出 “
vllm≥0.8.5
可直接部署” 的示例命令 。
需要注意的是,如果使用conda安装vllm版本小于0.8.5则需要使用pip安装最新的才可以使用,否则不兼容Qwen3,只要你的 vLLM 版本 ≥ 0.8.5(推荐直接用最新 0.9.x),Qwen3-8B 可以“一键启动”。如果还停留在 0.8.0/0.8.1,请先升级再继续。
二、方法二(分割线以下为物理机安装,后续换为直接使用python进行安装cuda驱动及vllm)
安装工具
确保系统中安装了必要的工具,如 wget
(用于下载文件)和 bash
(用于执行脚本)。您可以通过以下命令安装这些工具:
sudo apt update && sudo apt install wget -y # Ubuntu/Debian
使用以下命令下载最新的 Anaconda 安装脚本:
wget https://repo.anaconda.com/archive/Anaconda3-2025.06-0-Linux-x86_64.sh
请根据 Anaconda 官方网站上的最新版本替换链接中的文件名。
运行安装脚本:
bash Anaconda3-2025.06-0-Linux-x86_64.sh
安装过程中,您需要:
-
阅读并接受许可协议。
-
确认安装路径(默认为
~/anaconda3
)。 -
完成安装后,选择是否初始化 Anaconda。
初始化 Anaconda
如果在安装时选择了初始化,安装程序会自动配置环境变量。如果没有选择,可以手动运行以下命令完成初始化:
~/anaconda3/bin/conda init
在终端中运行以下命令激活 Conda 环境:
source ~/.bashrc
使用 Conda 创建一个新的虚拟环境以隔离开发项目:
conda create --name vllm_env python=3.10
-
vlln_env是虚拟环境的名称,您可以根据需要更改。
-
python=3.10
指定了 Python 版本。
激活环境:
conda activate vllm_env
安装vllm并启动
pip install vllmvllm serve Qwen/Qwen3-8B \--port 8000 \--max-model-len 4096
退出环境:
conda deactivate
在虚拟环境中,您可以使用 conda
或 pip
安装所需的库。例如:
conda install numpy pandas matplotlib
pip install flask django
Anaconda 默认集成了 Jupyter Notebook,这是数据科学开发的重要工具。安装并启动 Jupyter Notebook:
conda install jupyter
jupyter notebook
浏览器会自动打开 Jupyter Notebook 界面,您可以在其中编写和运行 Python 代码。
如果需要将环境迁移到其他设备,可以导出当前环境的配置:
conda env export > environment.yml
在新设备上,通过以下命令恢复环境:
conda env create -f environment.yml
当某个环境不再需要时,可以删除它以释放空间:
conda remove --name vllm_env --all
Qwen3-4B下载
使用ModelScope下载并启动Qwen3-4B,在此之前要先pip install modelscope,也可以不安装modelscope删除VLLM_USE_MODELSCOPE=true直接下载模型启动
VLLM_USE_MODELSCOPE=true vllm serve Qwen/Qwen3-8B --enable-reasoning --reasoning-parser deepseek_r1 --tensor-parallel-size 4
在下载前,请先通过如下命令安装ModelScope
pip install modelscope
下载完整模型库
modelscope download --model Qwen/Qwen3-8B
# 启动服务,开放 8000 端口
vllm serve /home/docker/projects/kayer/dir \--tensor-parallel-size 2 \--max-model-len 4096 \--reasoning-parser qwen3 \--port 7088 \--host 0.0.0.0
vLLM 官方不再集成 Gradio,需要 自己搭一个轻量前端(30 秒搞定):
pip install gradio requests
开放防火墙端口
ufw allow 8000/tcp
把下面脚本保存为 chat_ui.py
并运行:
import gradio as gr, requests, json
API = "http://localhost:7088/v1/chat/completions"def chat_fn(history):msgs = [{"role":"user","content":h[0]} for h in history] + \[{"role":"assistant","content":h[1]} for h in history[:-1]]msgs.append({"role":"user","content":history[-1][0]})r = requests.post(API, json={"model":"/data/models/Qwen3-8B","messages":msgs}, stream=False)return history + [[history[-1][0], r.json()["choices"][0]["message"]["content"]]]gr.ChatInterface(chat_fn).launch(server_name="0.0.0.0", server_port=7860)
运行python chat_ui.py
浏览器访问
http://<服务器IP>:7860
即可图形化聊天。
更简洁的步骤---直接一步到位
#!/usr/bin/env python3
"""
一键启动 Qwen3-8B + Gradio WebUI
python run_qwen3.py
访问 http://<服务器IP>:7861 即可聊天
"""import os
import subprocess
import time
import requests
import gradio as gr
from pathlib import Path# ============== 参数区(按需修改) ==============
MODEL_PATH = "/home/docker/projects/kayer/dir" # 本地权重目录
TP_SIZE = 2 # GPU 并行数
MAX_LEN = 4096 # 最大上下文
VLLM_PORT = 8000 # vLLM 后端端口
GRADIO_PORT = 7861 # 前端端口
HOST = "0.0.0.0"
# ==============================================API = f"http://localhost:{VLLM_PORT}/v1/chat/completions"def start_vllm():"""后台拉起 vLLM 服务"""cmd = ["vllm", "serve", MODEL_PATH,"--tensor-parallel-size", str(TP_SIZE),"--max-model-len", str(MAX_LEN),"--reasoning-parser", "qwen3","--port", str(VLLM_PORT),"--host", HOST]print("[INFO] Starting vLLM backend ...")# 输出日志到当前目录 vllm.loglog = open("vllm.log", "w")proc = subprocess.Popen(cmd, stdout=log, stderr=log)return procdef wait_vllm_ready(timeout=120):"""等待 vLLM /docs 可访问"""for _ in range(timeout):try:requests.get(f"http://localhost:{VLLM_PORT}/docs", timeout=2)print("[INFO] vLLM backend ready.")returnexcept requests.exceptions.RequestException:time.sleep(1)raise RuntimeError("vLLM backend not ready in time")def chat_fn(message, history):messages = []for h in history:if len(h) == 2:messages.append({"role": "user", "content": h[0]})messages.append({"role": "assistant", "content": h[1]})messages.append({"role": "user", "content": message})resp = requests.post(API, json={"model": MODEL_PATH,"messages": messages,"temperature": 0.7,"max_tokens": 1024}, timeout=60)resp.raise_for_status()return resp.json()["choices"][0]["message"]["content"]def main():# 1. 启动后端vllm_proc = start_vllm()try:wait_vllm_ready()# 2. 启动前端demo = gr.ChatInterface(fn=chat_fn,title="Qwen3-8B Chat",type="messages")demo.launch(server_name=HOST, server_port=GRADIO_PORT)finally:vllm_proc.terminate()if __name__ == "__main__":main()
三、常见问题及解决方案
安装完成后无法激活环境?
确保执行了初始化命令 conda init
并重启了终端。
遇到依赖冲突问题?
使用以下命令解决:
conda update --all
需要额外支持 GPU 的包?
可通过安装 conda install -c nvidia cudatoolkit
获得 GPU 加速支持。
更换镜像源
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 --set show_channel_urls yes
直接创建并编辑编辑conda
的配置文件.condarc
使用以下命令创建conda
配置文件:.condarc
文件是用户主目录下的一个隐藏文件。可在其中编写以下内容:
channels:- https://mirrors.tuna.tsinghua.edu.cn/anaconda/pkgs/main/- https://mirrors.tuna.tsinghua.edu.cn/anaconda/pkgs/free/- defaults
show_channel_urls: true
CUDA 版本兼容的 vLLM 版本
vLLM wheel 标签 | 要求最低 NVIDIA 驱动 | 备注 |
---|---|---|
+cu118 | ≥ 525.60 | CUDA 11.8 |
+cu121 | ≥ 535.54 | CUDA 12.1 |
+cu126 | ≥ 550.54 | CUDA 12.6 |
+cu128 | ≥ 570.86 | CUDA 12.8(官方默认,支持 Blackwell B200/GB200) |
部署成功,测试正常。。