Ubuntu 22.04 部署 VLLM + Qwen3-8B 并接入 Dify
在大模型应用快速落地的今天,越来越多开发者希望在本地环境中搭建一套完整、高效且可扩展的 AI 推理服务。通义千问 Qwen3-8B 凭借其出色的中文理解与生成能力,成为许多团队构建私有化 AI 助手的首选模型。而 vLLM 提供了高性能推理支持,Dify 则让前端集成和业务编排变得轻而易举。
本文将带你从零开始,在一台配备 NVIDIA GPU 的 Ubuntu 22.04 服务器上,完成vLLM 推理引擎部署 → Qwen3-8B 模型加载 → Dify 平台对接全流程操作。整个过程兼顾稳定性与实用性,适合个人开发者、中小企业或研究团队快速上线本地大模型服务。
系统准备:确认环境基础
我们使用的操作系统是Ubuntu 22.04.5 LTS(Jammy Jellyfish),这是当前最稳定的长期支持版本之一,对 CUDA 和主流 AI 框架兼容性极佳。
先验证系统版本:
lsb_release -a输出应类似:
Distributor ID: Ubuntu Description: Ubuntu 22.04.5 LTS Release: 22.04 Codename: jammy硬件方面建议使用至少16GB 显存的 NVIDIA GPU,如 RTX 3090/4090、A10G、V100 等,以确保 Qwen3-8B 在 FP16 精度下能顺利加载并运行。如果你计划并发处理多个请求,显存越大越好。
构建 Python 环境:Miniconda 安装与配置
为了更灵活地管理依赖和隔离项目环境,推荐使用 Miniconda 而非系统自带 Python。
下载并安装 Miniconda
wget https://repo.anaconda.com/miniconda/Miniconda3-latest-Linux-x86_64.sh若网络受限,可切换至清华镜像源加速下载:
wget https://mirrors.tuna.tsinghua.edu.cn/anaconda/miniconda/Miniconda3-latest-Linux-x86_64.sh赋予执行权限并启动安装:
chmod +x Miniconda3-latest-Linux-x86_64.sh ./Miniconda3-latest-Linux-x86_64.sh按提示操作:
- 回车浏览许可协议;
- 输入yes同意条款;
- 使用默认路径(~/miniconda3)直接回车;
- 建议选择yes初始化 Conda。
安装完成后关闭终端重新打开,或手动加载环境变量:
source ~/.bashrc验证是否成功:
conda --version # 示例输出:conda 24.1.2配置优化建议
避免每次打开终端自动进入base环境:
conda config --set auto_activate_base false更新 Conda 至最新版(推荐):
conda update -n base -c defaults conda添加清华镜像源,大幅提升 pip 和 conda 包的下载速度:
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 --add channels https://mirrors.tuna.tsinghua.edu.cn/anaconda/cloud/conda-forge/ conda config --set show_channel_urls yes这会自动生成~/.condarc文件,后续所有包安装都将优先走国内源。
常用 Conda 命令备忘
# 创建新环境 conda create --name vllm python=3.10 -y # 激活环境 conda activate vllm # 退出环境 conda deactivate # 删除环境 conda remove --name vllm --all -y # 查看所有环境 conda env list接下来我们将基于这个干净的环境部署 vLLM。
部署 vLLM 推理服务
vLLM 是目前最受欢迎的大语言模型推理引擎之一,它通过 PagedAttention 技术显著提升显存利用率和吞吐量,尤其适合高并发场景下的生产部署。
确认 GPU 与 CUDA 支持
首先检查 NVIDIA 驱动及 CUDA 是否已正确安装:
nvidia-smi你应该看到驱动版本以及支持的 CUDA 版本(例如:CUDA Version: 12.2)。注意这里的“支持”是指驱动层面,不代表你已经安装了完整的 CUDA Toolkit。
再验证编译器是否存在:
nvcc --version如果未安装,请补装 CUDA Toolkit。推荐 CUDA ≥ 12.1,以便兼容 vLLM 最新版(v0.9.2+)。
安装 vLLM
创建专用虚拟环境:
conda create -n vllm python=3.10 -y conda activate vllm pip install --upgrade pip pip uninstall vllm -y # 卸载旧版本(如有)根据你的 GPU 架构设置VLLM_CUDA_ARCH后安装:
# 对于 V100/A100/T4 等(Compute Capability ≥ 7.0) VLLM_CUDA_ARCH="7.0" pip install -i https://pypi.tuna.tsinghua.edu.cn/simple vllm==0.9.2 --no-cache-dir📌 不同显卡对应的架构值如下:
- RTX 30xx 系列(Ampere)→"8.6"
- RTX 40xx / A100-SXM(Ada Lovelace/Hopper)→"8.9"或"9.0"
安装完成后验证:
python -c "import vllm; print(vllm.__version__)" # 应输出:0.9.2下载 Qwen3-8B 模型
使用阿里官方推出的modelscope工具下载模型文件:
pip install modelscope创建模型存储目录并开始下载:
modelscope download \ --model qwen/Qwen3-8B \ --local_dir /root/models/qwen/Qwen3-8B该命令会拉取完整的模型组件,包括 tokenizer、config 文件和 safetensors 格式的权重文件,总大小约 15GB 左右。
📌注意事项:
- 若出现 SSL 错误或连接超时,尝试更换 pip 源:bash pip install modelscope -i https://pypi.tuna.tsinghua.edu.cn/simple
- 如需代理访问外网,提前设置环境变量:bash export HTTP_PROXY=http://proxy.company.com:8080 export HTTPS_PROXY=http://proxy.company.com:8080
启动推理服务
使用vllm serve命令启动一个兼容 OpenAI API 的服务端点:
CUDA_VISIBLE_DEVICES=0 nohup vllm serve /root/models/qwen/Qwen3-8B \ --served-model-name Qwen3-8B \ --dtype half \ --tensor-parallel-size 1 \ --gpu-memory-utilization 0.9 \ --max-num-seqs 64 \ --max-model-len 32768 \ --enforce-eager \ --host 0.0.0.0 \ --port 8990 \ --api-key "sk-qwen3-8b-secret" \ --uvicorn-log-level error > vllm_qwen3_8b.log 2>&1 &参数说明如下:
| 参数 | 作用 |
|---|---|
--served-model-name | 外部调用时使用的模型名 |
--dtype half | 使用 float16 降低显存占用 |
--gpu-memory-utilization 0.9 | 控制最大显存使用率(90%) |
--max-model-len 32768 | 支持最长 32K 上下文窗口 |
--enforce-eager | 关闭 CUDA Graph,提高兼容性(特别适用于某些老款驱动) |
--host 0.0.0.0 | 允许外部设备访问 |
--api-key | 认证密钥,防止未授权调用 |
日志将输出到当前目录下的vllm_qwen3_8b.log,可通过以下命令实时查看:
tail -f vllm_qwen3_8b.log当出现以下信息时表示服务已就绪:
Uvicorn running on http://0.0.0.0:8990 (Press CTRL+C to quit)测试服务可用性
先查询模型列表:
curl http://localhost:8990/v1/models \ -H "Authorization: Bearer sk-qwen3-8b-secret"预期返回包含Qwen3-8B的 JSON 数据。
再发送一条聊天请求:
curl http://localhost:8990/v1/chat/completions \ -H "Content-Type: application/json" \ -H "Authorization: Bearer sk-qwen3-8b-secret" \ -d '{ "model": "Qwen3-8B", "messages": [ {"role": "user", "content": "你好,请介绍一下你自己"} ], "temperature": 0.7 }'若收到流式响应文本,则说明模型加载和服务启动均成功!
进程与资源监控
查看运行中的 vLLM 进程:
ps aux | grep "vllm serve" | grep -v grep优雅停止服务:
kill $(pgrep -f "vllm serve")强制终止(慎用):
pkill -f "vllm serve"实时监控 GPU 使用情况:
watch -n 1 nvidia-smi正常情况下,Qwen3-8B 在 FP16 模式下显存占用约为 15–16GB。
部署 Dify 平台实现可视化集成
Dify 是一款开源的低代码 LLM 应用开发平台,支持对话机器人、知识库检索、Agent 编排等功能,非常适合快速构建企业级 AI 助手。
安装 Docker 与 Compose
Dify 使用容器化部署,因此需要先安装 Docker 及其 Compose 插件。
安装必要依赖:
sudo apt install apt-transport-https ca-certificates curl software-properties-common gnupg lsb-release -y添加阿里云 Docker GPG 密钥:
curl -fsSL http://mirrors.aliyun.com/docker-ce/linux/ubuntu/gpg | sudo apt-key add -添加软件源:
sudo add-apt-repository \ "deb [arch=amd64] http://mirrors.aliyun.com/docker-ce/linux/ubuntu $(lsb_release -cs) stable"更新索引并安装:
sudo apt update sudo apt install docker-ce docker-ce-cli containerd.io docker-compose-plugin -y将当前用户加入docker组以避免频繁使用sudo:
sudo usermod -aG docker $USER⚠️ 修改生效需重新登录或重启系统。
验证安装结果:
systemctl status docker.service docker --version docker compose version配置镜像加速(强烈推荐)
编辑守护进程配置:
sudo vim /etc/docker/daemon.json填入阿里云提供的专属加速地址(或其他国内镜像):
{ "registry-mirrors": [ "https://<your-code>.mirror.aliyuncs.com", "https://docker.mirrors.ustc.edu.cn", "http://hub-mirror.c.163.com" ] }保存后重启 Docker:
sudo systemctl restart docker验证配置生效:
sudo docker info | grep "Registry Mirrors" -A 5部署 Dify 服务
克隆项目代码:
cd /home/$USER git clone --depth=1 https://github.com/langgenius/dify.git cd dify/docker复制环境模板:
cp .env.example .env vim .env修改关键配置项:
EXPOSE_NGINX_PORT=9980 MYSQL_ROOT_PASSWORD=yourpass REDIS_PASSWORD=yourredispass保存后启动服务:
docker compose up -d首次启动会自动拉取镜像并初始化数据库,耗时约 2–5 分钟。
查看状态:
docker compose ps确保所有容器均为running状态。
初始化 Web 界面
浏览器访问:
http://<your-server-ip>:9980/install填写管理员邮箱、用户名、密码及实例名称(如“Qwen3本地部署”),提交后跳转至主页面。
登录地址为:
http://<your-server-ip>:9980将 Qwen3-8B 接入 Dify
添加自定义模型
- 进入【模型管理】→【语言模型(LLM)】
- 点击【+ 添加模型】
- 选择【OpenAI 兼容接口】
填写以下配置:
| 字段 | 值 |
|---|---|
| 模型名称 | Qwen3-8B |
| 模型类型 | text-generation |
| 基础 URL | http://<主机IP>:8990/v1(不要写 localhost) |
| API Key | sk-qwen3-8b-secret |
| 模型名称(远程) | Qwen3-8B |
✅ 示例(假设服务器内网 IP 为 192.168.0.18):
- Base URL:
http://192.168.0.18:8990/v1- Model Name:
Qwen3-8B
点击【保存】并测试连接。成功后会在列表中显示绿色“可用”标识。
设置为默认模型(可选)
进入【设置】→【默认模型】,将 Qwen3-8B 设为默认文本生成模型。
创建应用进行效果测试
- 回到首页,点击【新建应用】
- 选择【空白应用】或【聊天助手】模板
- 在模型配置中选择
Qwen3-8B - 开始对话体验
可以尝试提问:
- “请用中文写一首关于春天的诗”
- “解释什么是注意力机制?”
- “帮我润色一段产品介绍文案”
你会发现 Qwen3-8B 在逻辑推理、长文本理解和自然表达方面表现非常出色,尤其在中文语境下具备明显优势。
实战建议与常见问题排查
显存不足怎么办?
遇到CUDA out of memory报错时,可尝试以下措施:
- 降低
--gpu-memory-utilization至0.8 - 确保无其他进程占用显存(如 jupyter、其他推理服务)
- 使用
--dtype=half强制半精度加载 - 若仍失败,考虑升级显卡或使用量化版本(如 AWQ/GPTQ)
Dify 提示“模型不可达”?
常见原因包括:
- vLLM 未监听
0.0.0.0,导致外部无法访问 - 防火墙未开放
8990端口 - API Key 不一致
- Base URL 填错(特别是用了
localhost或127.0.0.1)
建议先在 Dify 服务器上执行:
curl http://<vllm-host>:8990/v1/models -H "Authorization: Bearer sk-qwen3-8b-secret"测试连通性。
总结:为什么这套组合值得推荐?
| 组件 | 核心价值 |
|---|---|
| Qwen3-8B | 80亿参数媲美更大模型,支持32K上下文,中英文双语能力强,性价比极高 |
| vLLM | 高性能推理引擎,PagedAttention 提升吞吐量3倍以上,OpenAI 接口即插即用 |
| Dify | 可视化低代码平台,支持知识库、工作流、Agent 扩展,快速构建生产级 AI 应用 |
这套方案特别适用于:
- 初创公司低成本上线 AI 客服
- 教育机构搭建智能问答系统
- 个人开发者实验大模型能力
- 中小企业部署私有化 AI 助手
一句话总结:
Qwen3-8B 是轻量化的旗舰级模型,配合 vLLM 实现高速推理,再通过 Dify 快速封装成应用,真正做到了“开箱即用”的本地大模型闭环解决方案。
🔧版本参考(实测环境)
| 组件 | 版本 |
|---|---|
| OS | Ubuntu 22.04.5 LTS |
| GPU | NVIDIA A10G / V100 |
| Driver | 535.230.02 |
| CUDA | 12.2 |
| Conda | 24.1.2 |
| Python | 3.10.14 |
| vLLM | 0.9.2 |
| Dify | main 分支(2025-Q2) |
| Qwen3-8B | 官方开源版 |
持续关注官方更新:
- Qwen GitHub: https://github.com/QwenLM
- Dify GitHub: https://github.com/langgenius/dify
- vLLM 文档: https://docs.vllm.ai
🎉 至此,你已完成 Qwen3-8B 的全链路本地化部署。现在,尽情探索属于你的 AI 世界吧!
创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考