vLLM+Dify部署记录
从零搭建私有大模型服务:vLLM 推理 + Dify 应用平台完整指南
环境信息:Ubuntu Linux + CUDA 12.9 | 模型:Qwen/Qwen3.5-0.8B | 推理框架:vLLM | 应用平台:Dify
目录
整体架构
CUDA 环境 → vLLM 推理服务(OpenAI 兼容 API) → Dify 应用平台(Docker) → 浏览器访问
一、环境准备:配置 CUDA 路径
在安装 vLLM 之前,先确保 CUDA 工具链的环境变量正确配置(以12.9版本为例):
# 设置 CUDA 路径(添加到 ~/.bashrc 可永久生效)
export PATH=/usr/local/cuda-12.9/bin:$PATH
export LD_LIBRARY_PATH=/usr/local/cuda-12.9/lib64:$LD_LIBRARY_PATH
💡 提示:如需永久生效,将上面两行追加到
~/.bashrc并执行source ~/.bashrc。
二、安装 vLLM 及依赖
2.1 安装 pip 和 python3-venv
sudo apt install -y pip python3-venv
2.2 创建并激活 Python 虚拟环境
使用虚拟环境隔离依赖,避免污染系统全局 Python 环境:
python3 -m venv vllm_env
source vllm_env/bin/activate
2.3 安装 vLLM 及相关工具包
使用国内镜像源加速下载,推荐使用清华镜像,备用中科大镜像:
# 清华镜像(推荐)
pip install -i https://pypi.tuna.tsinghua.edu.cn/simple/ vllm
pip install -i https://pypi.tuna.tsinghua.edu.cn/simple/ modelscope
pip install -i https://pypi.tuna.tsinghua.edu.cn/simple/ pandas
pip install -i https://pypi.tuna.tsinghua.edu.cn/simple/ datasets
pip install -i https://pypi.tuna.tsinghua.edu.cn/simple/ openai
# 备用:中科大镜像源地址
# https://pypi.mirrors.ustc.edu.cn/simple/
2.4 验证安装
vllm --version
⚠️ 注意:如果需要运行 Qwen3.5 等新架构模型,可能需要升级到最新版 vLLM:
pip install -U vllm
三、下载模型
使用 ModelScope 命令行工具下载模型权重文件,以 Qwen3.5-0.8B 为例:
modelscope download --model Qwen/Qwen3.5-0.8B --cache_dir /home/server/models/Qwen3.5-0.8B
✅ 下载完成后,模型文件位于
/home/server/models/Qwen3.5-0.8B/Qwen/Qwen3.5-0.8B/,启动脚本中MODEL_PATH需指向包含config.json的最内层目录。
四、启动 vLLM 推理服务
4.1 创建启动脚本
新建文件 start_api.sh,写入以下内容:
#!/bin/bash
# ================= 配置区域 =================
# 模型路径(指向包含 config.json 的最内层目录)
MODEL_PATH="/home/server/models/Qwen3.5-0.8B/Qwen/Qwen3.5-0.8B"
# 服务端口
PORT=8000
# 主机地址(0.0.0.0 允许外部访问,127.0.0.1 仅本地访问)
HOST="0.0.0.0"
# GPU 显存利用率(显存较小时可降低至 0.8)
GPU_MEM_UTIL=0.9
# 张量并行数(单卡填 1,多卡填卡数)
TP_SIZE=1
# 最大上下文长度(可根据显存大小调整)
MAX_MODEL_LEN=32768
# ================= 启动命令 =================
echo "正在启动 vLLM 服务..."
echo "模型路径: $MODEL_PATH"
echo "监听地址: $HOST:$PORT"
python3 -m vllm.entrypoints.openai.api_server \
--model "$MODEL_PATH" \
--host "$HOST" \
--port "$PORT" \
--tensor-parallel-size "$TP_SIZE" \
--gpu-memory-utilization "$GPU_MEM_UTIL" \
--max-model-len "$MAX_MODEL_LEN" \
--trust-remote-code \
--dtype auto \
--enable-chunked-prefill \
--served-model-name qwen3.5-0.8b
echo "服务已启动。"
4.2 核心参数说明
| 参数 | 说明 | 建议值 |
|---|---|---|
--gpu-memory-utilization |
GPU 显存使用比例,剩余留给系统 | 0.9(显存不足时用 0.8) |
--tensor-parallel-size |
张量并行数,与 GPU 数量对应 | 单卡填 1 |
--max-model-len |
最大上下文 token 长度 | 32768(可减小以节省显存) |
--served-model-name |
API 调用时使用的模型名称别名 | qwen3.5-0.8b |
--enable-chunked-prefill |
开启分块预填充,提升长文本吞吐量 | 推荐开启 |
4.3 赋予权限并后台运行
# 赋予执行权限
sudo chmod +x start_api.sh
# 后台运行,日志输出到 qwen.log
nohup ./start_api.sh > qwen.log 2>&1 &
# 查看启动日志
tail -f qwen.log
💡 提示:也可以使用
tmux进行会话管理,便于随时查看实时日志:tmux new -s vllm # 在会话中运行 ./start_api.sh
五、对话脚本测试
新建文件 chat_test.py,写入以下内容:
#!/usr/bin/env python3
# -*- coding: utf-8 -*-
from openai import OpenAI
# ========== 配置区域 ==========
BASE_URL = "http://localhost:8000/v1"
MODEL_NAME = "qwen3.5-0.8b" # 与 --served-model-name 保持一致
API_KEY = "sk-123" # vLLM 不验证 key,填任意非空字符串即可
# ========== 初始化客户端 ==========
client = OpenAI(base_url=BASE_URL, api_key=API_KEY)
messages = [
{"role": "system",
"content": "你是一个智能助手,由 Qwen3.5 驱动。请用简洁、友好的中文回答用户的问题。"}
]
def chat():
print(f"--- 已连接到 vLLM ({BASE_URL}) | 模型: {MODEL_NAME} ---")
print("输入 exit 退出对话\n")
while True:
user_input = input("\033[92m你:\033[0m ")
if not user_input.strip():
continue
if user_input.lower() in ["exit", "quit", "退出"]:
print("再见!")
break
messages.append({"role": "user", "content": user_input})
print("\033[94mQwen:\033[0m ", end="", flush=True)
stream = client.chat.completions.create(
model=MODEL_NAME,
messages=messages,
temperature=0.7,
max_tokens=1024,
stream=True
)
full_response = ""
for chunk in stream:
content = chunk.choices[0].delta.content
if content:
print(content, end="", flush=True)
full_response += content
print()
messages.append({"role": "assistant", "content": full_response})
if __name__ == "__main__":
chat()
运行脚本:
python3 chat_test.py
⚠️ 注意:首次对话可能需要等待一段时间(模型预热)。如果等待过长,可将
start_api.sh中的MAX_MODEL_LEN调小(如8192),以减少显存占用和预热时间。
六、部署 Dify 可视化应用平台
6.1 获取 Dify 源码
前往 GitHub: langgenius/dify 下载 ZIP 包并上传到服务器,然后解压:
unzip dify-main.zip
6.2 初始化配置并启动容器
# 进入 docker 目录(按实际路径调整)
cd /home/server/dify-main/docker
# 复制示例配置
cp .env.example .env
# 启动所有容器
docker compose up -d
# 查看容器运行状态
docker ps -a
6.3 修改默认端口(可选)
如果 80 或 443 端口已被占用,编辑 .env 文件修改端口配置:
# Docker Compose Service Expose Host Port Configurations
EXPOSE_NGINX_PORT=6060
EXPOSE_NGINX_SSL_PORT=6443
修改后重新启动容器:
cd /home/server/dify-main/docker
sudo docker compose up -d
6.4 访问 Dify 管理界面
在浏览器中输入服务器 IP 和端口即可访问:
http://<服务器IP>:<端口号>
✅ 初次访问需要注册管理员账号。完成后,可在「模型供应商」中添加 vLLM 作为 OpenAI 兼容的自定义 API,地址填写
http://localhost:8000/v1,即可在 Dify 中使用本地大模型。
如有问题欢迎在评论区交流,转载请注明出处。
更多推荐


所有评论(0)