保姆级教程:用Docker Compose一键部署Mineru 2.5 API与Gradio服务(昇腾310/910B)
在AI应用开发领域,如何快速部署高性能的推理服务一直是开发者关注的焦点。Mineru 2.5作为基于华为昇腾NPU优化的开源项目,通过VLLM引擎的引入显著提升了处理效率。本文将手把手教你如何利用Docker Compose实现Mineru服务的生产级部署,从环境准备到服务调优,覆盖昇腾310和910B硬件的完整配置流程。
1. 环境准备与基础配置
1.1 硬件与驱动检查
在开始部署前,请确保您的昇腾设备已正确安装驱动和工具链。运行以下命令验证环境:
npu-smi info输出应显示类似以下信息:
+------------------------------------------------------------------------------------------------+ | npu-smi 23.0.rc1 Version: 23.0.rc1 | |-------------------------------+-------------------------------+-------------------------------| | NPU Name | Health | Power(W) | Temp(C) | Memory-Usage(MB) | | Chip | Bus-Id | AICore-Usage(%) | Memory-Usage(MB) | HBM-Usage(MB) | |======================+=================+=================+=================+=================| | 0 Ascend910B | OK | 75.3 | 45 | 0 / 32768 | | 0 | 0000:82:00.0 | 0 | 0 / 32768 | 0 / 65536 | +-------------------------------+-------------------------------+-------------------------------+关键检查点:
- 确认CANN版本≥8.2.rc1
- 检查
/dev/davinci*设备节点存在 - 验证
/usr/local/Ascend目录结构完整
1.2 基础镜像准备
Mineru 2.5需要特定版本的vLLM镜像作为基础:
docker pull quay.io/ascend/vllm-ascend:v0.10.2rc1版本兼容性矩阵:
| 组件 | 最低版本 | 推荐版本 |
|---|---|---|
| Python | 3.9 | 3.11 |
| PyTorch | 2.7.1 | 2.7.1+ |
| torch-npu | 2.7.1.dev20250724 | 同左 |
| numpy | 1.26.4 | 1.26.4 |
提示:建议使用conda创建专用Python环境避免依赖冲突
2. Docker Compose架构解析
2.1 服务拓扑设计
Mineru的Docker Compose部署包含三个核心服务:
mineru-vllm-server:负责模型推理的核心引擎
- 监听端口:30000
- 关键参数:
--data-parallel-size控制多卡并行
mineru-api:提供RESTful接口服务
- 监听端口:8000
- 支持多种backend模式切换
mineru-gradio:可视化交互界面
- 监听端口:7860
- 可独立启停的Web UI
2.2 关键配置详解
以下是docker-compose-npu.yaml的核心配置片段:
services: mineru-vllm-server: devices: - "/dev/davinci0:/dev/davinci0" - "/dev/davinci_manager:/dev/davinci_manager" volumes: - "/usr/local/Ascend/driver:/usr/local/Ascend/driver" environment: ASCEND_RT_VISIBLE_DEVICES: "0,1"设备挂载说明:
davinci*:NPU计算单元设备davinci_manager:设备管理接口devmm_svm:内存管理设备
性能调优参数:
--gpu-memory-utilization:KV缓存占比(0.4-0.9)--data-parallel-size:多卡并行数ulimits.memlock:解除内存锁定限制
3. 生产级部署实践
3.1 分阶段服务启动
利用--profile参数实现灵活启停:
# 仅启动API服务 docker-compose -f docker-compose-npu.yaml --profile api up -d # 启动完整服务集群 docker-compose -f docker-compose-npu.yaml --profile api --profile vllm-server --profile gradio up -d服务健康检查机制:
healthcheck: test: ["CMD-SHELL", "curl -f http://localhost:30000/health || exit 1"] interval: 30s timeout: 10s retries: 33.2 资源监控与调优
通过npu-smi实时监控资源使用:
watch -n 1 npu-smi info常见性能瓶颈处理:
| 现象 | 可能原因 | 解决方案 |
|---|---|---|
| 内存不足 | KV缓存过大 | 降低gpu-memory-utilization |
| 吞吐量低 | 未启用多卡 | 增加data-parallel-size |
| 响应延迟 | 请求堆积 | 调整max_num_seqs参数 |
4. 高级功能与故障排查
4.1 多后端模式切换
Mineru支持多种推理后端配置:
# API调用示例 requests.post("http://localhost:8000/file_parse", files={"file": open("test.pdf", "rb")}, data={"backend": "vlm-http-client"} )后端类型对比:
| 模式 | 适用场景 | 优缺点 |
|---|---|---|
| vlm-vllm-async-engine | 单进程部署 | 延迟低,但资源隔离差 |
| vlm-http-client | 分布式部署 | 扩展性好,额外网络开销 |
| vlm-sglang | 兼容旧版 | 性能较差,不推荐 |
4.2 常见问题解决方案
问题1:设备权限不足
# 解决方案:重建容器并添加privileged权限 docker-compose down docker-compose up -d --force-recreate问题2:模型加载失败
# 检查模型路径是否正确 docker exec -it mineru-vllm-server ls /root/.mineru/models问题3:CANN版本冲突
# 验证驱动版本一致性 docker exec -it mineru-vllm-server npu-smi info host npu-smi info实际部署中遇到最多的问题往往是设备映射不完整或版本不匹配。记得每次变更配置后使用docker-compose logs查看各服务日志,能快速定位大多数异常情况。