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+Flask224 * 2240.018
torchserve-gpu224 * 2240.025
torchserve-cpu224 * 2240.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)
### 部署YOLO模型于本地环境 对于希望在本地环境中部署YOLO模型的情况,如果仅需简单使用或部署YOLO模型,则可以直接下载对应的预训练模型文件[^2]。然而,当涉及到基于特定数据集进行优化或是自定义训练时,则需要下载完整的YOLO项目并将其导入到开发环境中。 #### 准备工作 确保已安装Python以及pip工具,在命令行输入`python --version`和`pip --version`来验证版本信息。接着,创建一个新的虚拟环境用于隔离依赖包: ```bash python -m venv yolov_env source yolov_env/bin/activate # Linux or macOS .\yolov_env\Scripts\activate # Windows ``` #### 安装必要的库 激活虚拟环境后,可以利用pip安装所需的软件包。通常情况下,官方文档会提供详细的依赖列表。以YOLOv8为例,可以通过如下方式快速设置运行环境[^3]: ```bash pip install ultralytics ``` 这一步骤将自动处理所有必需的第三方库安装过程。 #### 下载预训练权重 为了简化流程,可以从互联网上获取已经过大规模数据集训练好的权重文件。例如,访问YOLO官方网站或其他可信资源站点下载适合版本的`.pt`格式权重文件,并保存至指定目录下。 #### 使用TorchServe部署服务 完成上述准备工作之后,借助TorchServe框架可以在本地轻松启动一个RESTful API服务器来进行实时预测。具体操作步骤包括但不限于配置model_store路径、编写Marshall脚本等[^1]。下面是一个简单的例子展示如何加载模型并通过HTTP接口接收图片请求并返回识别结果: ```json { "handler": "object_detection", "model_name": "yolov_model", "serialized_file": "./weights/best.pt" } ``` 最后,通过浏览器或者其他客户端向http://127.0.0.1:5000/v1发送POST请求上传待测图像,即可获得类似这样的响应体结构[^4]: ```json [ { "xmin": 0.0, "ymin": 53.827671051, "xmax": 1024.0, "ymax": 1537.0, "confidence": 0.8689030409, "class": 0, "name": "person" } ] ```
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值