当前位置: 首页 > 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

http://www.xdnf.cn/news/261325.html

相关文章:

  • 【计算机视觉】三维重建: OpenMVS:工业级多视图立体视觉重建框架
  • ActiveMQ 集群搭建与高可用方案设计(二)
  • 生成对抗网络(GAN, Generative Adversarial Network)​
  • More Effective C++学习笔记
  • ShaderToy学习笔记 08.阴影
  • 力扣:24两两交换链表的节点
  • 搭建一个 gRPC 服务端和客户端
  • 【Java学习】关于springBoot的自动配置和起步依赖
  • CSS 预处理器 Sass
  • 【2025软考高级架构师】——案例分析总结(13)
  • 如何写好大模型提问提示词:从入门到精通的实战指南
  • 华为云Flexus+DeepSeek征文|快速搭建Dify LLM应用开发平台教程
  • 启发式算法-蚁群算法
  • 2.2 矩阵
  • 前端跨域问题怎么在后端解决
  • flutter3.29 build.gradle.kts设置安卓签名
  • 吾爱出品 [Windows] EndNote 21.5.18513 汉化补丁
  • Linux中安装mysql8,转载及注意事项
  • 机器学习_线性回归
  • QT中的JSON
  • Python 装饰器优化策略模式:电商促销折扣的优雅解法
  • 【网络原理】深入理解HTTPS协议
  • 多多铃声 7.4| 拥有丰富的铃声曲库,满足不同用户的个性化需求,支持一键设置手机铃声
  • 接口隔离原则(ISP)
  • 「Mac畅玩AIGC与多模态15」开发篇11 - 增加输入变量的工作流示例
  • 用定时器做微妙延时注意事项
  • LOJ #193 线段树历史和 Solution
  • day13 python不平衡数据集的处理(补)
  • 数字智慧方案5857丨智慧机场解决方案与应用(53页PPT)(文末有下载方式)
  • 分享国产AI工作流集成数据库完成业务处理