前提条件
-
硬件要求:
-
推荐 NVIDIA GPU (至少 16GB 显存,Qwen3 可能需要更多)
-
至少 32GB 内存
-
足够的存储空间 (Qwen3 模型文件较大)
-
-
软件要求:
-
Docker 和 Docker Compose
-
Python 3.8+
-
CUDA 和 cuDNN (与你的 GPU 兼容的版本)
-
安装步骤
1. 安装 Dify
根据官方文档,你可以通过以下方式安装 Dify
2. 安装 vLLM
vLLM 是一个高效的大语言模型推理引擎,我们需要安装支持 Qwen 的版本:
python
pip install vllm
# 或者使用特定版本
pip install vllm==0.3.3
查看vllm安装路径:

3. 下载 Qwen3 模型
下载 Qwen3 模型 👈
python
# 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 相关环境变量:
python
services:
# API service
api:
image: langgenius/dify-api:0.15.3
restart: always
environment:
<<: *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
- redis
volumes:
- ./volumes/app/storage:/app/api/storage
networks:
- ssrf_proxy_network
- default
4.3 启动 vLLM 服务
建议使用单独的 Docker 容器运行 vLLM,修改 docker-compose.yml
:
python
services:
vllm-server:
image: vllm/vllm-openai:latest # 从Docker Hub拉取
deploy:
resources:
reservations:
devices:
- driver: nvidia
count: all
capabilities: [gpu]
command:
- --model=/data/qwen3-4b
- --trust-remote-code
- --host=0.0.0.0
- --port=8000
volumes:
- ./qwen3-4b:/data/qwen3-4b
ports:
- "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 中创建应用
-
访问 Dify 控制台 (通常是
http://localhost:80
) -
创建新应用,选择"对话型应用"
-
在模型设置中,选择 vLLM 作为提供商,然后选择 Qwen3-7B 模型
-
配置提示词和对话流程
6. 测试和优化
-
在 Dify 的 playground 中测试问答功能
-
根据性能调整 vLLM 参数:
-
--tensor-parallel-size
: 张量并行度 -
--gpu-memory-utilization
: GPU 内存利用率 -
--max-num-seqs
: 最大序列数
-
常见问问题解决
GPU 内存不足:
-
你的 RTX 3090 只有 24GB 显存
-
QWen-4B 模型需要约 20GB+ 显存(加载后)
-
剩余内存不足以处理请求(需要额外空间用于计算)
查看显存状态
python
nvidia-smi
watch -n 1 nvidia-smi # 动态监控
启用量化(显存减半)
python
pip install auto-gptq # 先安装量化支持
python3 -m vllm.entrypoints.openai.api_server \
--model=/data/qwen3-4b \
--quantization=gptq \ # 启用4bit量化
--gpu-memory-utilization=0.9