一、方法一(使用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) |
部署成功,測試正常。。