IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> 人工智能 -> 演示用torchserve来部署模型 -> 正文阅读

[人工智能]演示用torchserve来部署模型

演示用torchserve进行pytorch模型部署

步骤分为四步:

  • 使用docker环境
  • 导出模型
  • 定义handler
  • 保存模型

本文使用训练好的ResNet34 进行图像分类的服务

1 .使用docker安装torchserve

pull项目docker环境是复现demo最好的方法之一!!!

docker pull pytorch/torchserve:latest

2. 导出模型

torchserve需要提供一个.mar文件,简而言之,该文件只是把你的模型和所有依赖打包在一起,要进行打包,首先需要导出经过训练的模型。
??有三种方法可以导出torchserve的模型,其中最好用的方法是trace模型并存储结果,这样就不需要向torchserve添加任何额外的文件。
for example: 导出resnet34
在这里插入图片描述
顺序如下:

  • 加载模型
  • 创建一个dummy输入
  • 使用torch.jit.trace来trace模型的输入
  • 保存模型
2.1 创建.mar文件

前提:需要安装 torch-mode-archiver

git clone https://github.com/pytorch/serve.git
cd serve/model-archiver
pip install .

然后通过下面命令来创建.mar文件

torch-model-archiver --model-name resnet34 \--version 1.0 \--serialized-file resnet34.pt \--extra-files ./index_to_name.json,./MyHandler.py \--handler my_handler.py  \--export-path model-store -f

变量–model-name定义了模型的最终名称。这是非常重要的,因为它将是endpoint的名称空间,负责进行预测。你还可以指定一个–version。–serialized-file指向我们之前创建的存储的 .pt模型。–handler 是一个python文件,我们在其中调用我们的自定义handler。一般来说,是这样的:
在这里插入图片描述
??它暴露了一个handle函数,我们从该函数调用自定义handler中的方法。你可以使用默认名称来使用默认handler(例如,–handler image_classifier)。
??在–extra-files中,你需要将路径传递给你的handlers正在使用的所有文件。在本例中,我们必须向.json文件中添加路径。使用所有人类可读标签名称,并在MyHandler.py 中定义每个类别。
??如果你传递一个index_to_name.json文件,它将自动加载到handler ,并通过self.mapping访问。
??--export-path就是 .mar存放的地方,我还添加了-f来覆盖原有的文件。
??如果一切顺利的话,你可以看到resnet34.mar存放在./model-store路径中。

3.Handlers

官方文档:https://github.com/pytorch/serve/blob/master/docs/custom_service.md

处理程序负责使用模型对一个或多个HTTP请求进行预测。

3.1 默认 handlers

Torchserve支持以下默认 handlers

  1. image_classifier
  2. object_detector
  3. text_classifier
  4. image_segmenter

但是请记住,它们都不支持batching请求!

3.2 自定义handlers

torchserve提供了一个丰富的接口,可以做几乎你想做的任何事情,跟所有推理框架一样,都是需要实现三个类

  • preprocess
  • inference
  • postprocess

你可以创建你自己的类或者子类BaseHandler。子类化BaseHandler 的主要优点是可以在self.model上访问加载的模型。下面的代码片段展示了如何子类化BaseHandler。
在这里插入图片描述
这里我们演示将ResNet34分类任务,思路流程

  • 从每个请求中获取图像并对其进行预处理
  • 从模型中得到推理结果
  • 后处理回传结果
预处理

.preprocess函数接受请求数组。假设我们正在向服务器发送一个图像,可以从请求的data或body字段访问序列化的图像。因此,我们可以遍历所有请求并单独预处理每个图像。完整的代码如下所示。
在这里插入图片描述
self.transform是我们的预处理变换,没什么花哨的。对于在ImageNet上训练的模型来说,这是一个经典的预处理步骤。

推理

在这里插入图片描述
这一步很简单,我们从 .preprocess得到张量。然后对每幅图像提取预测结果。

后处理

现在我们有了对每个图像的预测,我们需要向客户返回一些内容。Torchserve总是返回一个数组。BaseHandler也会自动打开一个.json 文件带有index -> label的映射(稍后我们将看到如何提供这样的文件),并将其存储self.mapping中。我们可以为每个预测返回一个字典数组,其中包含label和index 的类别。
在这里插入图片描述

总体代码

所有东西打包一起,handler是这样:
在这里插入图片描述
在这里插入图片描述

用模型来进行服务

运行安装torchserve docker容器

docker run --rm -it \-p 3000:8080 -p 3001:8081 \-v $(pwd)/model-store:/home/model-server/model-store pytorch/torchserve:0.1-cpu \torchserve --start --model-store model-store --models resnet34=resnet34.mar

我将容器端口8080和8081分别绑定到3000和3001(8080/8081已经在我的机器中使用)。然后,我从./model-store 创建一个volume。最后,我通过padding model-store并通过key-value列表的方式指定模型的名称来调用torchserve。

??这里,torchserve有一个endpoint /predictions/resnet34,我们可以通过发送图像来预测。这可以使用curl来实现。

curl -X POST http://127.0.0.1:3000/predictions/resnet34 -T inputs/kitten.jpg

在这里插入图片描述

  • 结果:
{
  "label": "tiger_cat",
  "index": 282
}

总结:

  • 使用docker安装torchserve
  • 默认以及自定义handlers
  • 模型打包生成
  • 使用docker提供模型服务
  人工智能 最新文章
2022吴恩达机器学习课程——第二课(神经网
第十五章 规则学习
FixMatch: Simplifying Semi-Supervised Le
数据挖掘Java——Kmeans算法的实现
大脑皮层的分割方法
【翻译】GPT-3是如何工作的
论文笔记:TEACHTEXT: CrossModal Generaliz
python从零学(六)
详解Python 3.x 导入(import)
【答读者问27】backtrader不支持最新版本的
上一篇文章      下一篇文章      查看所有文章
加:2022-05-05 11:19:11  更:2022-05-05 11:19:41 
 
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁

360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年11日历 -2024/11/26 7:37:06-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码