torchserve 部署模型 自定义 handler 实践

torch serve介绍

在生产中部署和管理模型通常是机器学习过程中最困难的部分,这项工作包括构建定制的预测 API,对其进行扩展,并加以保护等等。

简化模型部署过程的一种方法是使用模型服务器,即专门设计用于在生产中提供机器学习预测的现成的 Web 应用程序。

模型服务器可轻松加载一个或多个模型,并自动创建由可扩展 Web 服务器提供支持的预测 API。

模型服务器还可以根据预测请求运行代码预处理和后处理。

最后同样重要的一点是,模型服务器还提供对生产至关重要的功能,例如日志记录、监控和安全性等。

广为使用的模型服务器有 TensorFlow Serving 和 Multi Model Server。

torchserve是Pytorch(Facebook)和Amazon于2020年联合推出的PYtorch模型服务库,可使大规模部署经过训练的 PyTorch 更加轻松,不需要编写自定义代码。

官方Github:https://github.com/pytorch/serve

模型 输入尺寸 耗时(s)
TensorRT+Flask 224 * 224 0.018
torchserve-gpu 224 * 224 0.025
torchserve-cpu 224 * 224 0.19

torchserve 环境,在Linux 的安装

pip install torch==1.12.0+cu113 torchvision==0.13.0+cu113 torch-model-archiver==0.6.0 nvgpu==0.9.0 captum==0.5.0 torchserve==0.6.0 torchsummary==1.5.1

torchserve 步骤

[1] 先将模型以及推理前后处理打包成mar文件

  • 如果是pt文件保存的是模型参数需要指定模型网络结构文件地址
torch-model-archiver --model-name modnet --version 20220822 --model-file modnet.py --serialized-file modnet.pt --handler image_segmenter --extra-files *** 
torch-model-archiver --model-name modnet --version 20220822 --serialized-file modnet.pt --handler matting.py --extra-files base_handler.py

[2] 将模型mar部署成服务

torchserve --start --model-store model_store --models modnet=modnet.mar --ts-config config.properties
  • 其中config.properties可根据自行需要配置,如下:
max_request_size=655350000
max_response_size=655350000

在这里插入图片描述

[3] 调用模型监控服务

  • 通过curl命令在terminal调用

curl http://127.0.0.1:8081/models

{ “models”: [
    {
    “modelName”: “modnet”,
    “modelUrl”: “modnet.mar”
    } ] }

[4] 调用预测服务

  • 通过curl命令在terminal调用

curl http://127.0.0.1:8080/predictions/modnet -T persons.jpg

  • 通过python调用
import requests
headers = {'Content-Type' : 'image/jpg'}
fp = open('persons.jpg', 'rb')

y = requests.post('http://127.0.0.1:8080/predictions/modnet', data=fp, headers=headers)

相关文章

学习编程是顺着互联网的发展潮流,是一件好事。新手如何学习...
IT行业是什么工作做什么?IT行业的工作有:产品策划类、页面...
女生学Java好就业吗?女生适合学Java编程吗?目前有不少女生...
Can’t connect to local MySQL server through socket \'/v...
oracle基本命令 一、登录操作 1.管理员登录 # 管理员登录 ...
一、背景 因为项目中需要通北京网络,所以需要连vpn,但是服...