Phi-3-mini-4k-instruct-gguf部署教程:Docker Compose编排vLLM服务+Chainlit+Redis会话存储
·
Phi-3-mini-4k-instruct-gguf部署教程:Docker Compose编排vLLM服务+Chainlit+Redis会话存储
1. 环境准备与快速部署
在开始部署Phi-3-mini-4k-instruct-gguf模型之前,我们需要确保系统满足以下基本要求:
- 操作系统:推荐使用Ubuntu 20.04/22.04或兼容的Linux发行版
- Docker版本:20.10.0或更高
- Docker Compose:v2.0.0或更高
- 硬件要求:
- 至少16GB内存(推荐32GB)
- 支持CUDA的NVIDIA GPU(推荐RTX 3090或更高)
- 至少20GB可用磁盘空间
1.1 安装Docker和NVIDIA容器工具包
首先安装必要的依赖项:
# 安装Docker
sudo apt-get update
sudo apt-get install -y docker.io docker-compose
# 添加当前用户到docker组
sudo usermod -aG docker $USER
newgrp docker
# 安装NVIDIA容器工具包
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
sudo systemctl restart docker
1.2 准备部署文件
创建项目目录并准备docker-compose.yml文件:
mkdir phi3-deployment && cd phi3-deployment
创建docker-compose.yml文件:
version: '3.8'
services:
vllm:
image: vllm/vllm-openai:latest
runtime: nvidia
environment:
- MODEL=Phi-3-mini-4k-instruct-gguf
- HOST=0.0.0.0
- PORT=8000
volumes:
- ./models:/models
ports:
- "8000:8000"
command: --model /models/Phi-3-mini-4k-instruct-gguf --host 0.0.0.0 --port 8000 --tensor-parallel-size 1
chainlit:
image: chainlit/chainlit:latest
depends_on:
- vllm
- redis
environment:
- OPENAI_API_BASE=http://vllm:8000/v1
- OPENAI_API_KEY=EMPTY
- REDIS_URL=redis://redis:6379
volumes:
- ./app:/app
ports:
- "8001:8000"
command: run /app/app.py --port 8000 --host 0.0.0.0
redis:
image: redis:alpine
ports:
- "6379:6379"
volumes:
- redis_data:/data
volumes:
redis_data:
创建Chainlit应用文件app/app.py:
import chainlit as cl
from openai import AsyncOpenAI
client = AsyncOpenAI(
base_url="http://vllm:8000/v1",
api_key="EMPTY"
)
@cl.on_chat_start
async def on_chat_start():
await cl.Message(content="Phi-3-mini-4k-instruct模型已准备好,请问您有什么问题?").send()
@cl.on_message
async def on_message(message: cl.Message):
response = await client.chat.completions.create(
model="Phi-3-mini-4k-instruct-gguf",
messages=[
{"role": "system", "content": "你是一个乐于助人的AI助手"},
{"role": "user", "content": message.content}
],
temperature=0.7,
)
await cl.Message(content=response.choices[0].message.content).send()
2. 模型部署与验证
2.1 下载模型并启动服务
下载Phi-3-mini-4k-instruct-gguf模型:
mkdir models
wget -O models/Phi-3-mini-4k-instruct-gguf https://huggingface.co/TheBloke/Phi-3-mini-4k-instruct-gguf/resolve/main/Phi-3-mini-4k-instruct-gguf-q4_0.gguf
启动所有服务:
docker-compose up -d
2.2 验证服务状态
检查vLLM服务日志:
docker-compose logs vllm
如果看到类似以下输出,表示模型已成功加载:
INFO 05-20 12:34:56 llm_engine.py:72] Initializing an LLM engine with config: model='/models/Phi-3-mini-4k-instruct-gguf', tokenizer='/models/Phi-3-mini-4k-instruct-gguf', tokenizer_mode=auto, trust_remote_code=False, dtype=auto, tensor_parallel_size=1)
INFO 05-20 12:35:12 llm_engine.py:143] # GPU blocks: 918, # CPU blocks: 512
INFO 05-20 12:35:12 model_runner.py:115] Loading model weights took: 16.23s
INFO 05-20 12:35:12 model_runner.py:119] Model loaded in 16.25s
2.3 访问Chainlit前端
Chainlit前端将在端口8001上可用。在浏览器中访问:
http://localhost:8001
您将看到一个简单的聊天界面,可以开始与Phi-3-mini-4k-instruct模型交互。
3. 系统架构与工作原理
3.1 组件交互流程
整个系统由三个主要组件组成:
- vLLM服务:负责加载和运行Phi-3-mini-4k-instruct模型,提供OpenAI兼容的API接口
- Redis服务:存储聊天会话历史,实现对话上下文保持
- Chainlit前端:提供用户友好的Web界面,处理用户输入和模型输出展示
3.2 关键技术点
- vLLM的高效推理:vLLM采用PagedAttention技术,显著提高大语言模型的推理效率
- Redis会话存储:所有对话历史自动存储在Redis中,确保对话连续性
- Chainlit的便捷交互:Chainlit简化了构建聊天界面的过程,只需少量代码即可实现完整功能
4. 常见问题与解决方案
4.1 模型加载失败
问题现象:vLLM服务启动后无法加载模型
可能原因:
- 模型文件路径不正确
- 模型文件损坏
- GPU内存不足
解决方案:
- 检查模型文件是否位于正确的路径(
./models/目录下) - 重新下载模型文件
- 尝试减小
tensor-parallel-size参数值
4.2 Chainlit无法连接vLLM
问题现象:Chainlit前端显示"无法连接到模型服务"
解决方案:
- 检查vLLM服务是否正常运行:
docker-compose ps - 确保Chainlit配置中的
OPENAI_API_BASE正确指向vLLM服务 - 检查网络连接,确保容器间可以互相访问
4.3 响应速度慢
优化建议:
- 增加
docker-compose.yml中vLLM服务的GPU资源限制 - 调整Chainlit的
temperature参数(值越小响应越确定但可能缺乏创意) - 考虑使用更高性能的GPU
5. 总结
本教程详细介绍了如何使用Docker Compose编排Phi-3-mini-4k-instruct-gguf模型的完整部署方案,包括:
- 使用vLLM高效部署文本生成模型
- 通过Chainlit构建用户友好的Web界面
- 利用Redis实现对话历史存储
- 完整的Docker Compose编排方案
这套方案具有以下优势:
- 一键部署:所有服务通过Docker Compose一键启动
- 资源高效:vLLM优化了模型推理效率
- 易于扩展:可以方便地添加更多功能或替换组件
获取更多AI镜像
想探索更多AI镜像和应用场景?访问 CSDN星图镜像广场,提供丰富的预置镜像,覆盖大模型推理、图像生成、视频生成、模型微调等多个领域,支持一键部署。
更多推荐




所有评论(0)