一、方法一(使用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.pswp.cn/pingmian/92047.shtml
繁体地址,请注明出处:http://hk.pswp.cn/pingmian/92047.shtml
英文地址,请注明出处:http://en.pswp.cn/pingmian/92047.shtml

如若内容造成侵权/违法违规/事实不符,请联系英文站点网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

AI产品经理如何理解和应用Transformer架构,以提升产品的技术能力和用户体验?

​你好&#xff0c;我是 ✨三桥君✨ 助你迈向AGI时代&#xff01;&#xff01;&#xff01; &#x1f4cc;本文介绍&#x1f4cc; >> 一、引言 在当今的AI浪潮中&#xff0c;Transformer架构已不再是一个陌生的技术名词。从OpenAI的GPT系列到Google的BERT&#xff0c;再…

数据结构(四)内核链表、栈与队列

一、内核链表基础1. 什么是 Linux 内核链表&#xff1f;Linux 内核链表是一种高效的 双向循环链表&#xff0c;广泛应用于内核模块开发中&#xff0c;用于管理数据结构。每个节点通过指针连接前一个和后一个元素&#xff0c;实现插入和删除的高性能。2. 链表的定义与初始化在 L…

软考信息安全工程师11月备考

目前是在职备考&#xff0c;主业是移动端开发工程师。第一个月(8.4-9.6)&#xff0c;将分享完下面所有章节内容&#xff0c;平均不到两天更新一节1.网络信息安全概述2.网络攻击原理与常用方法3.密码学基本理论4.网络安全体系与网络安全模型5.物理与环境安全技术6.认证技术与原理…

使用DrissionPage实现xhs笔记自动翻页并爬取笔记视频、图片

使用DrissionPage实现xhs笔记自动翻页并爬取笔记视频、图片 声明: 本文章中所有内容仅供学习交流使用,不用于其他任何目的,不提供完整代码,抓包内容、敏感网址、数据接口等均已做脱敏处理,严禁用于商业用途和非法用途,否则由此产生的一切后果均与作者无关! 本文章未经…

使用 input 上传文件, 选择文件后再次修改文件再上传失败( <input type=“file“ /> 自定义上传)

业务实际需求&#xff1a;点击【选择】按钮先选择文件&#xff0c;展示文件的详情&#xff1a;类型&#xff0c;大小&#xff0c;日期......点击【上传】按钮这个时候才去上传文件如图&#xff1a;BUG复现&#xff1a;点击上传文件后发现xlsx文件有些数据没填写&#xff0c;然后…

Win11 下解决 VScode/Trae 插件加载慢, 整个 VScode/Trae 很卡

最近在使用 Trae 写代码, 突然变得很卡, 尤其是插件系统, 比如我打开插件的面板, 以及比如我想预览一下写好的 .md 文件 (已安装了 Markdown Preview Enhanced 插件), 这些都要好几分钟才能打开. 最初以为是 Trae 坏掉了, 然后重启 Trae 不管用, 再重启电脑居然也不管用, 接着…

微型导轨:智能家居抽屉的智能化应用

当智能家居从“功能堆砌”转向“体验升级”&#xff0c;微型导轨凭借超薄结构、静音运行与精准定位能力&#xff0c;成为隐藏式设计、自动化交互的核心部件&#xff0c;让家具“动”得优雅且可靠。智能扫地机器人&#xff1a;微型导轨被应用于边刷的伸缩调节机构&#xff0c;能…

百套易语言教程、易语言视频教程【易语言编程入门教程】

百套易语言教程、易语言视频教程【易语言编程入门教程】 易语言辅助教程&#xff08;爱易编程论坛讲师 24课讲师&#xff1a;远航 9课爱易编程论坛讲师&#xff1a;爱易、小Call 8课&#xff09;.rar 时光论坛易语言全套教程【易语言零基础易语言抓包易语言填表】完整版.rar 易…

nlp-词汇分析

目录 一、语言中的词汇 1、词的形态学 2、词的词性 二、词语规范化 1、词语切分 2、词形还原 3、词干提取 三、中文分词 1、概述 2、基于最大匹配的中文分词 3、基于线性链条件随机场的中文分词 4、基于感知器的中文分词 词序列预测 模型参数学习 特征定义 5、…

Kafka ISR机制和Raft区别:副本数优化的秘密

Kafka的ISR机制和像Raft这样的传统基于Quorum&#xff08;法定人数&#xff09;的协议之间的区别确实很微妙&#xff0c;但也非常重要。让我们来分析一下为什么ISR可以减少所需的副本数量。在采用ISR模型和&#xff08;f1&#xff09;个副本数的配置下&#xff0c;一个Kafka分区…

新手向:GitCode疑难问题诊疗

Git疑难问题诊疗引言在软件开发过程中&#xff0c;版本控制系统&#xff08;VCS&#xff09;是不可或缺的工具&#xff0c;而Git以其分布式架构、强大的分支管理能力和高效的性能成为行业标准。然而&#xff0c;随着项目复杂度的提升&#xff0c;Git的使用也可能遇到各种疑难问…

电子电气架构 ---如何焕新升级为 48V 电气架构

我是穿拖鞋的汉子,魔都中坚持长期主义的汽车电子工程师。 老规矩,分享一段喜欢的文字,避免自己成为高知识低文化的工程师: 做到欲望极简,了解自己的真实欲望,不受外在潮流的影响,不盲从,不跟风。把自己的精力全部用在自己。一是去掉多余,凡事找规律,基础是诚信;二是…

JavaScript判断数字方法

在JavaScript中&#xff0c;判断一个值是否为数字有多种场景&#xff0c;以下是常见方法及适用情况&#xff1a;1. 严格判断数字类型&#xff08;排除NaN&#xff09;使用 typeof 结合 !isNaN()&#xff0c;确保值是 number 类型且非 NaN&#xff1a;javascriptfunction isNumb…

C++编程之旅-- -- --始探门庭的求知漫溯(二)

目录引用内联函数(C11)auto关键字基于范围的for循环指针空值---nullptr引用 引用&#xff1a;指将变量以另一个名称来展现的。它并非是一个新变量而是一个别名&#xff0c;它们同指一块内存空间。就如古时那些有字的人,亦或者是周树人&#xff0c;你说鲁迅是不是周树人呢&…

wordpress网站的“管理员邮箱地址”有什么用?

在WordPress网站的“设置”-“常规”中设置的“管理员邮箱地址”有多种用途&#xff0c;以下是详细介绍&#xff1a; 一、用户注册相关 密码找回功能 当网站用户忘记密码时&#xff0c;他们会通过点击登录页面上的“忘记密码”链接来重置密码。WordPress系统会向管理员邮箱地…

202506 电子学会青少年等级考试机器人六级实际操作真题

更多内容和历年真题请查看网站&#xff1a;【试卷中心 -----> 电子学会 ----> 机器人技术 ----> 六级】 网站链接 青少年软件编程历年真题模拟题实时更新 202506 青少年等级考试机器人实操真题六级 一、实际操作 1. 主题&#xff1a;姿态传感器交互步进电机左右…

Centos 安装 redis

1.下载redis&#xff0c;这个自己去网上找吧。2.上传文件&#xff0c;redis-7.4.1.tar.gz3.解压&#xff1a;执行 tar -xf redis-7.4.1.tar.gz在进行安装之前&#xff0c;检查一下有没有make、gcc、python3、没有的话全部 yum install。安装完之后&#xff0c;如果报一下错误&a…

算法训练营DAY55 第十一章:图论part05

并查集理论基础 背景 当我们需要判断两个元素是否在同一个集合里的时候&#xff0c;我们就要想到用并查集。 并查集主要有两个功能&#xff1a; 将两个元素添加到一个集合中。判断两个元素在不在同一个集合 原理讲解 从代码层面&#xff0c;我们如何将两个元素添加到同一个…

docker相关操作记录

1.docker清理服务器上面没有用到的镜像#删除本地镜像 docker rmi $(docker images -q) #强制删除本地镜像 docker rmi $(docker images -q) -f2.docker查看日志docker logs c36c56e4cfa3 (容器id)3.所有运行或没有运行的镜像 docker ps -a4、停止container&#xff0c;这样才…

LInux基础学习笔记七

/dev/zero和/dev/null 是什么/dev/zero&#xff1a;一个零设备文件&#xff0c;读取时会不断返回\0字节&#xff08;零值字节&#xff09;&#xff0c;常用于创建空文件或格式化/dev/null&#xff1a;一个空设备文件&#xff0c;写入它的内容会被丢弃&#xff0c;相当于“黑洞”…