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

基于 Dify + vLLM插件 + Qwen3 构建问答机器人Docker版

前提条件

  1. 硬件要求:

    • 推荐 NVIDIA GPU (至少 16GB 显存,Qwen3 可能需要更多)

    • 至少 32GB 内存

    • 足够的存储空间 (Qwen3 模型文件较大)

  2. 软件要求:

    • Docker 和 Docker Compose

    • Python 3.8+

    • CUDA 和 cuDNN (与你的 GPU 兼容的版本)

安装步骤

1. 安装 Dify

根据官方文档,你可以通过以下方式安装 Dify

https://blog.csdn.net/qq_60245590/article/details/147661284?sharetype=blogdetail&sharerId=147661284&sharerefer=PC&sharesource=qq_60245590&spm=1011.2480.3001.8118

2. 安装 vLLM

vLLM 是一个高效的大语言模型推理引擎,我们需要安装支持 Qwen 的版本:

pip install vllm
# 或者使用特定版本
pip install vllm==0.3.3

查看vllm安装路径: 

3. 下载 Qwen3 模型

下载 Qwen3 模型 👈

# huggingface方式下载
pip install huggingface_hub
python -c "from huggingface_hub import snapshot_download; snapshot_download(repo_id='Qwen/Qwen3-8B', local_dir='./Qwen3-8B')"python -c "from huggingface_hub import snapshot_download; snapshot_download(repo_id='Qwen/Qwen3-0.6B', local_dir='./Qwen3-4B')"#ModelScope(阿里云镜像)下载
pip install modelscope
python -c "from modelscope import snapshot_download; snapshot_download('Qwen/Qwen3-0.6B', cache_dir='./qwen3-4b')"

4. 配置 Dify 使用 vLLM 和 Qwen3

4.1 创建模型目录

在 dify/docker 目录下执行:

# 创建 qwen3-7b 目录
mkdir -p qwen3-7b

目录结构示例:

dify/└── docker/├── qwen3-7b/    # 你新建的目录├── docker-compose.yml└── .env
4.2 通过环境变量配置(推荐)

修改 dify/docker/.env 文件,添加以下内容:

# vLLM 配置
VLLM_ENABLED=true
VLLM_SERVER_URL=http://vllm-server:8000  # 如果vLLM单独容器部署# Qwen3 模型配置
MODEL_PROVIDER=vllm
MODEL_NAME=qwen3-4b

修改 dify/docker/docker-compose.yml,在 api 服务部分添加 vLLM 相关环境变量:

services:# API serviceapi:image: langgenius/dify-api:0.15.3restart: alwaysenvironment:<<: *shared-api-worker-env  # 保留锚点合并GOOGLE_STORAGE_BUCKET_NAME: ""  # 可以覆盖为空VLLM_ENABLED: "true"        # 改为冒号键值对VLLM_SERVER_URL: "http://vllm-server:8000"MODEL_PROVIDER: "vllm"MODEL_NAME: "qwen3-4b"MODE: "api"SENTRY_DSN: "${API_SENTRY_DSN:-}"SENTRY_TRACES_SAMPLE_RATE: "${API_SENTRY_TRACES_SAMPLE_RATE:-1.0}"SENTRY_PROFILES_SAMPLE_RATE: "${API_SENTRY_PROFILES_SAMPLE_RATE:-1.0}"depends_on:- db- redisvolumes:- ./volumes/app/storage:/app/api/storagenetworks:- ssrf_proxy_network- default
4.3 启动 vLLM 服务

建议使用单独的 Docker 容器运行 vLLM,修改 docker-compose.yml

services:vllm-server:image: vllm/vllm-openai:latest  # 从Docker Hub拉取deploy:resources:reservations:devices:- driver: nvidiacount: allcapabilities: [gpu]command:- --model=/data/qwen3-4b- --trust-remote-code- --host=0.0.0.0- --port=8000volumes:- ./qwen3-4b:/data/qwen3-4bports:- "8000:8000"networks:- default  # 必须和 api 在同一网络
这个镜像是什么?
  • 镜像名称ghcr.io/vllm/vllm-openai:latest

  • 用途: 这是 vLLM 官方提供的镜像,用于部署高性能的 OpenAI 兼容 API 服务(支持类似 ChatGPT 的接口)。

  • 典型场景: 在 dify 等 LLM 应用框架中,用于连接本地模型(如你配置的 qwen3-4b)。

4.4 启动服务:
cd dify/docker
docker compose down 
docker compose up -d

服务启动过程中如遇 

Error response from daemon: could not select device driver "nvidia" with capabilities: [[gpu]]

  • 表示 Docker 无法找到 NVIDIA 驱动接口

  • Connection refused
    因为 vLLM 需要 GPU 才能启动,没有 GPU 支持时服务会直接失败

解决方案步骤
① 验证 NVIDIA 驱动
nvidia-smi  # 确认驱动已安装且正常工作

如果无输出,需先安装驱动:

# Ubuntu 示例(根据你的系统调整)
sudo apt-get install -y nvidia-driver-535
sudo reboot
② 安装 NVIDIA Container Toolkit
# 添加仓库
distribution=$(. /etc/os-release;echo $ID$VERSION_ID)
curl -s -L https://nvidia.github.io/nvidia-docker/gpgkey | sudo apt-key add -curl -s -L https://nvidia.github.io/nvidia-docker/$distribution/nvidia-docker.list | sudo tee /etc/apt/sources.list.d/nvidia-docker.list# 安装工具包
sudo apt-get update
sudo apt-get install -y nvidia-container-toolkit# 重启 Docker
sudo systemctl restart docker

拉取 CUDA 镜像并验证 GPU

手动拉取镜像并运行 nvidia-smi

镜像加速(推荐)

tee /etc/docker/daemon.json <<EOF
{
"registry-mirrors": ["https://docker.mirrors.ustc.edu.cn"]
}
EOF

修改后重启 Docker:

systemctl restart docker# 运行测试(验证 GPU 是否可见)
docker run --rm --gpus all nvidia/cuda:12.2.0-base nvidia-smi
③ 验证 Docker GPU 支持
docker run --rm --gpus all nvidia/cuda:12.2.0-base nvidia-smi

应该会显示与主机 nvidia-smi 相同的输出。

④ 重建 vLLM 服务
cd /dify/docker
docker compose down
docker compose up -d vllm-server
⑤ 检查服务状态
docker compose logs -f vllm-server | grep -i error
curl http://localhost:8000/v1/models
4.5 验证配置

检查 vLLM 服务是否正常运行:

curl http://localhost:8000/v1/models

curl http://localhost:8001/v1/models

检查 Dify API 是否识别到模型:

curl http://localhost/v1/models -H "Authorization: Bearer your-api-key"

5. 在 Dify 中创建应用

  1. 访问 Dify 控制台 (通常是 http://localhost:80)

  2. 创建新应用,选择"对话型应用"

  3. 在模型设置中,选择 vLLM 作为提供商,然后选择 Qwen3-7B 模型

  4. 配置提示词和对话流程

6. 测试和优化

  1. 在 Dify 的 playground 中测试问答功能

  2. 根据性能调整 vLLM 参数:

    • --tensor-parallel-size: 张量并行度

    • --gpu-memory-utilization: GPU 内存利用率

    • --max-num-seqs: 最大序列数

常见问问题解决

GPU 内存不足
  1. 你的 RTX 3090 只有 24GB 显存

  2. QWen-4B 模型需要约 20GB+ 显存(加载后)

  3. 剩余内存不足以处理请求(需要额外空间用于计算)

查看显存状态

nvidia-smi
watch -n 1 nvidia-smi  # 动态监控
启用量化(显存减半)
pip install auto-gptq  # 先安装量化支持python3 -m vllm.entrypoints.openai.api_server \--model=/data/qwen3-4b \--quantization=gptq \                # 启用4bit量化--gpu-memory-utilization=0.9

相关文章:

  • 机器人--MCU
  • MySQL数据操作全攻略:DML增删改与DQL高级查询实战指南
  • Oracle RAC ‘Metrics Global Cache Blocks Lost‘告警解决处理
  • 火语言RPA--DestoonV8商品发布
  • Qt 中实现观察者模式(Observer Pattern)
  • ros2 humble 控制真实机械臂(以lerobot为例)
  • 【Unity】XLua访问C#文件
  • 人工智能助力工业制造:迈向智能制造的未来
  • HarmonyOS NEXT——DevEco Studio的使用(还没写完)
  • Vue实现成绩增删案例
  • 在pycharm profession 2020.3将.py程序使用pyinstaller打包成exe
  • (37)VTK C++开发示例 ---纹理地球
  • [更新完毕]2025东三省B题深圳杯B题数学建模挑战赛数模思路代码文章教学:LED显示屏颜色转换设计与校正
  • 【掌握 DDL】:SQL 中的数据库与表管理
  • with的用法
  • 机器学习_线性回归
  • 数据库基础-库,表的操作
  • 大模型开发的环节
  • IDEA回滚代码操作
  • REINFORCE蒙特卡罗策略梯度算法详解:python从零实现
  • 金价大反攻,国内金饰价格涨回千元,能否重返巅峰?
  • 竞彩湃|巴萨客场淘汰国际米兰,巴黎双杀阿森纳
  • 习近平同欧洲理事会主席科斯塔、欧盟委员会主席冯德莱恩就中欧建交50周年互致贺电
  • “注胶肉”或已泛滥?这几种肉,再爱吃也要管住嘴
  • 国产基因测序仪龙头华大智造业绩持续承压,今年有望迎来拐点?
  • 李学明谈笔墨返乡:既耕春圃,念兹乡土