PaddleClas基于PaddleHub Serving的服务化部署指南

PaddleClas基于PaddleHub Serving的服务化部署指南

PaddleClas A treasure chest for visual classification and recognition powered by PaddlePaddle PaddleClas 项目地址: https://gitcode.com/gh_mirrors/pa/PaddleClas

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参数调整。

模型来源有两种方式:

  1. 使用PaddleClas提供的预训练模型(支持ImageNet-1k等公开数据集)
  2. 使用自己训练并导出的模型

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_gpuuse_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. 自定义服务修改

如需自定义服务逻辑,需按以下步骤操作:

  1. 修改module.pyparams.py文件
  2. 重新安装服务模块:
    hub uninstall clas_system
    hub install hubserving/clas/
    
  3. 重启服务

常见自定义项:

  • 模型路径修改
  • top-k结果数量调整
  • 类别映射文件修改
  • 数据预处理逻辑调整

8. 最佳实践建议

  1. 生产环境建议使用配置文件方式启动,便于参数管理
  2. 高并发场景建议启用多进程模式(CPU环境)
  3. 对于Transformer类模型,注意调整输入尺寸参数
  4. 客户端预处理可减轻服务端压力,提升吞吐量

通过PaddleHub Serving,PaddleClas实现了从训练到服务化部署的完整闭环,开发者可以快速构建高性能的图像分类服务,满足各类业务场景需求。

PaddleClas A treasure chest for visual classification and recognition powered by PaddlePaddle PaddleClas 项目地址: https://gitcode.com/gh_mirrors/pa/PaddleClas

创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

华情游

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值