当前位置: 首页 > news >正文

从零开始部署Qwen3-8b大模型到本地

一、方法一(使用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

在虚拟环境中,您可以使用 condapip 安装所需的库。例如:

conda install numpy pandas matplotlibpip install flask django

Anaconda 默认集成了 Jupyter Notebook,这是数据科学开发的重要工具。安装并启动 Jupyter Notebook:

conda install jupyterjupyter 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.60CUDA 11.8
+cu121≥ 535.54CUDA 12.1
+cu126≥ 550.54CUDA 12.6
+cu128≥ 570.86CUDA 12.8(官方默认,支持 Blackwell B200/GB200)

部署成功,测试正常。。

http://www.dtcms.com/a/317741.html

相关文章:

  • Centos 安装 redis
  • 17_INIT_WORKLinux内核模块
  • prefetch 下载 GEO 数据注意事项
  • 设计模式—桥梁模式(Bridge)
  • 移动端跨平台框架(支持Harmony、iOS、Android)
  • 《第十篇》深入解析 `MilvusKBService`:基于 Milvus 的知识库服务实现
  • 在线计算“蛋白-蛋白复合物”的MM/GBSA
  • KMP算法详解及应用指南
  • Cartographer安装测试与模块开发(四)--Cartographer纯定位思路
  • 【代码随想录day 12】 力扣 102.107.199. 二叉树的层序遍历
  • 数据库设计方法详解
  • Spring之【初识AOP】
  • 应急响应linux
  • 英伟达算力卡巅峰对决:H100、A100与消费级显卡哪里找?
  • 数语科技登陆华为云商店,助力企业释放数据潜能
  • day20|学习前端
  • JavaScript 基础语法
  • 频数分布表:数据分析的基础工具
  • Adobe Analytics 数据分析平台|全渠道客户行为分析与体验优化
  • Qt 容器类详解:顺序容器与关联容器及其遍历方法
  • [LVGL] 配置lv_conf.h | 条件编译 | 显示屏lv_display
  • 组合模式(Composite Pattern)及其应用场景
  • 基于spring boot的个人博客系统
  • tkwebview-tkinter的web视图
  • 解决云服务器端口无法访问的方法
  • java学习 leetcode24交换链表节点 200岛屿数量 +一些开发任务
  • Redis(七):Redis高并发高可用(主从复制)
  • JP3-4-MyClub后台前端(二)
  • C++、STL面试题总结(三)
  • 考研408_数据结构笔记(第四章 串)