PaddleClas基于PaddleHub Serving的服务化部署指南
1. 概述
PaddleClas作为飞桨生态下的图像分类开发套件,提供了便捷的服务化部署方案。本文将详细介绍如何通过PaddleHub Serving快速部署图像分类服务,让开发者能够轻松将训练好的模型转化为可调用的API服务。
2. 环境准备
在开始部署前,需要确保已安装以下环境:
# 推荐安装paddlehub 2.1.0版本
python3.7 -m pip install paddlehub==2.1.0 --upgrade
注意:
- Python版本建议使用3.6/3.7
- PaddleHub版本建议2.1.0以获得最佳兼容性
3. 模型准备
服务部署需要准备推理模型文件,包括:
- 模型结构文件:
inference.pdmodel
- 模型权重文件:
inference.pdiparams
模型存放路径默认为PaddleClas/inference/
,可通过修改params.py
中的inference_model_dir
参数调整。
模型来源有两种方式:
- 使用PaddleClas提供的预训练模型(支持ImageNet-1k等公开数据集)
- 使用自己训练并导出的模型
4. 服务模块安装
PaddleHub Serving的服务包包含以下核心文件:
clas/
├── __init__.py
├── config.json # 服务配置文件
├── module.py # 服务主逻辑
└── params.py # 参数配置文件
安装服务模块:
cd PaddleClas/deploy
hub install hubserving/clas/
5. 服务启动方式
5.1 命令行参数启动
适用于CPU环境的基础启动方式:
hub serving start --modules clas_system --port 8866
参数说明:
--modules
:指定服务模块--port
:服务端口号(默认8866)--use_multiprocess
:是否启用多进程模式--workers
:并发任务数
5.2 配置文件启动
支持更灵活的配置,适用于CPU/GPU环境:
{
"modules_info": {
"clas_system": {
"init_args": {
"version": "1.0.0",
"use_gpu": true,
"enable_mkldnn": false
},
"predict_args": {}
}
},
"port": 8866,
"use_multiprocess": false,
"workers": 2
}
启动命令:
hub serving start -c config.json
注意事项:
- GPU使用时需设置
CUDA_VISIBLE_DEVICES
环境变量 use_gpu
和use_multiprocess
不能同时为true- MKL-DNN加速和GPU不能同时启用
6. 客户端请求示例
服务启动后,可通过以下脚本测试:
python3.7 hubserving/test_hubserving.py \
--server_url http://127.0.0.1:8866/predict/clas_system \
--image_file ./hubserving/ILSVRC2012_val_00006666.JPEG \
--batch_size 8
关键参数说明:
server_url
:服务地址image_file
:测试图像路径(支持单图或目录)batch_size
:批处理大小resize_short
/crop_size
:预处理参数(Transformer类模型需设为384)
返回结果格式:
[
[topk_class_ids], # 分类结果ID
[topk_scores], # 对应置信度
time_cost # 预测耗时
]
7. 自定义服务修改
如需自定义服务逻辑,需按以下步骤操作:
- 修改
module.py
和params.py
文件 - 重新安装服务模块:
hub uninstall clas_system hub install hubserving/clas/
- 重启服务
常见自定义项:
- 模型路径修改
- top-k结果数量调整
- 类别映射文件修改
- 数据预处理逻辑调整
8. 最佳实践建议
- 生产环境建议使用配置文件方式启动,便于参数管理
- 高并发场景建议启用多进程模式(CPU环境)
- 对于Transformer类模型,注意调整输入尺寸参数
- 客户端预处理可减轻服务端压力,提升吞吐量
通过PaddleHub Serving,PaddleClas实现了从训练到服务化部署的完整闭环,开发者可以快速构建高性能的图像分类服务,满足各类业务场景需求。
创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考