百度360必应搜狗淘宝本站头条
当前位置:网站首页 > 技术资源 > 正文

用PyTorch部署模型

off999 2024-11-25 15:54 32 浏览 0 评论

作者:Francesco Zuppichini

编译:ronghuaiyang

导读

演示了使用PyTorch最近发布的新工具torchserve来进行PyTorch模型的部署。

最近,PyTorch推出了名为torchserve.的新生产框架来为模型提供服务。我们看一下今天的roadmap:

1、使用Docker安装

2、导出模型

3、定义handler

4、保存模型

为了展示torchserve,我们将提供一个经过全面训练的ResNet34进行图像分类的服务。

使用Docker安装

官方文档:https://github.com/pytorch/serve/blob/master/README.md##install-torchserve

安装torchserve最好的方法是使用docker。你只需要把镜像拉下来。

可以使用以下命令保存最新的镜像。

docker pull pytorch/torchserve:latest

所有可用的tags:https://hub.docker.com/r/pytorch/torchserve/tags

关于docker和torchserve的更多信息:https://github.com/pytorch/serve#quick-start-with-docker

Handlers

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

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

默认 handlers

Torchserve支持以下默认 handlers

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

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

自定义 handlers

torchserve提供了一个丰富的接口,可以做几乎所有你想做的事情。一个Handler是一个必须有三个函数的类。

  • preprocess
  • inference
  • postprocess

你可以创建你自己的类或者子类BaseHandler。子类化BaseHandler 的主要优点是可以在self.model上访问加载的模型。下面的代码片段展示了如何子类化BaseHandler。

回到图像分类的例子。我们需要

  • 从每个请求中获取图像并对其进行预处理
  • 从模型中得到预测
  • 发送回一个响应

预处理

.preprocess函数接受请求数组。假设我们正在向服务器发送一个图像,可以从请求的data或body字段访问序列化的图像。因此,我们可以遍历所有请求并单独预处理每个图像。完整的代码如下所示。

self.transform是我们的预处理变换,没什么花哨的。对于在ImageNet上训练的模型来说,这是一个经典的预处理步骤。

在我们对每个请求中的每个图像进行预处理之后,我们将它们连接起来创建一个pytorch张量。

推理

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

后处理

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

把所有的东西打包到一起,我们的handler是这样的:

因为所有的处理逻辑都封装在一个类中,所以你可以轻松地对它进行单元测试!

导出你的模型

官方文档:https://github.com/pytorch/serve/tree/master/model-archiver#creating-a-model-archive

Torchserve 需要提供一个.mar文件,简而言之,该文件只是把你的模型和所有依赖打包在一起。要进行打包,首先需要导出经过训练的模型。

导出模型

有三种方法可以导出torchserve的模型。到目前为止,我发现的最好的方法是trace模型并存储结果。这样我们就不需要向torchserve添加任何额外的文件。

让我们来看一个例子,我们将部署一个经过充分训练的ResNet34模型。

按照顺序,我们:

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

创建 .mar 文件

官方文档:https://github.com/pytorch/serve/blob/master/model-archiver/README.md

你需要安装torch-model-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路径中。

用模型进行服务

这是一个简单的步骤,我们可以运行带有所有必需参数的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提供模型服务


英文原文:https://towardsdatascience.com/deploy-models-and-create-custom-handlers-in-torchserve-fc2d048fbe91

相关推荐

windows server2019(windowsserver2019密钥激活码)

WindowsServer2019那是给服务器用的系统。服务器的作用是计算数据,而不是图像处理。所以WindowsServer2019里面精简了大量有关图形的功能。办公和打游戏是需要图像处理的...

一键还原系统怎么卸载(一键还原系统软件怎么用)

打开控制面板,点击“系统”,再点击“高级系统设置”,再点“高级”标签,再点“启动和故障恢复”里的“设置”,,出来新对话框,把“默认操作系统“选到”WIN10,然后下面的”显示操作系统列表的时间“选到0...

电脑装两个系统好不好(电脑装两个系统好不好用)

安装双系统的好处是根据应用不同,可以选用不同的操作系统,坏处是每次开机后都要对操作系统进行选择,否则就会进入默认操作系统1苹果电脑装双系统是不错的选择。2装双系统可以让用户在同一台电脑上同时运行不...

office2010以上版本(office2010各版本区别)

该版本不是最高的,但是可以满足日常办公,放心使用。DOC文件只有WORD能打开,估计你用的版本不是正版或有什么问题,请参考:microsoftoffice软件是装了高版本软件就自动卸载(或覆盖,建议...

强制申诉qq成功人工客服(qq申诉人工秒成功 客服电话)

QQ密码申诉结果,一般会在4小时内发到用户的联系邮箱。帐号申诉,是指通过提交个人资料及帐号使用信息,来证明用户是帐号主人的方式。申诉成功后可修改密码或密保。申诉结果一般会在4小时内发到用户的联系邮箱。...

google框架一键安装(谷歌框架三件套一键安装)

一加手机自带手机框架,需要下载Play商店激活。1、google服务框架是可以在系统软件里面可以删除的一个APK程序,但现在有很多的软件和游戏需要谷歌服务的支持,如果没有安装或者又删除系统软件的朋友可...

office2010家庭和学生版密钥

1.MicrosoftExcel2010家庭版的产品密钥是需要购买正版软件时提供的一串字符序列。2.这是为了确保用户使用正版软件,并且能够享受到软件的全部功能和服务。3.为了获得Micros...

16949认证费用是多少(16949审核员太难考了)

需要参加培训和考试,培训和考试是需要收费的,一般在300到500左右。内审员证书一般3年有效(因为标准是会更改的,更改标准则需要从新培训)大多数由企业组织人员参加培训。费用由企业承担,个人学这个的还是...

mba是什么意思(长江商学院emba是什么意思)
mba是什么意思(长江商学院emba是什么意思)

工商管理硕士(MBA)是工商管理类硕士研究生学位,MBA是培养能够胜任工商企业和经济管理部门高层管理工作需要的务实型、复合型和应用型高层次管理人才,兼具理论与实践相结合,而其他硕士研究生只是培养科研型和教学型人才,偏向理论,不参与实践。MB...

2026-01-14 07:51 off999

mdf文件游戏怎么安装(win10mdf文件游戏怎么安装)

朋友,应该还有一个只有几K的KuaiZipMount.mds文件吧?请确保这两个文件在同一个目录中然后用Daemontools等虚拟光驱软件,载入其中的mds文件之后进入虚拟光驱所在盘符执行...

c盘莫名其妙的满了怎么办(c盘莫名其妙的满了怎么办windows)

当C盘突然满了,首先需要找到原因。可能是因为系统更新或安装了大量软件,也可能是因为存在大量垃圾文件或临时文件。可以通过清理垃圾文件、卸载无用软件、更改默认下载路径等方式来释放C盘空间。另外,可以考虑将...

联通路由器怎么改wifi密码(联通路由器怎么改wifi密码和名称)
  • 联通路由器怎么改wifi密码(联通路由器怎么改wifi密码和名称)
  • 联通路由器怎么改wifi密码(联通路由器怎么改wifi密码和名称)
  • 联通路由器怎么改wifi密码(联通路由器怎么改wifi密码和名称)
  • 联通路由器怎么改wifi密码(联通路由器怎么改wifi密码和名称)
怎么查电脑型号配置(电脑怎么看型号配置)
  • 怎么查电脑型号配置(电脑怎么看型号配置)
  • 怎么查电脑型号配置(电脑怎么看型号配置)
  • 怎么查电脑型号配置(电脑怎么看型号配置)
  • 怎么查电脑型号配置(电脑怎么看型号配置)
电脑如何修改默认浏览器(电脑上怎样修改默认浏览器)

1、按下“windows+i”快捷键打开Windows设置,在设置界面选择系统。2、在系统里左边点击默认程序一项,右边会出现新的选项来。3、右边滚动鼠标滑轮下拉,点击web默认程序,点击选择想要默认打...

如何下载youtube视频(如何下载youtube视频2160p)

这个可以在应用宝中下载,就是在手机上下载一个应用宝,然后在搜索栏里输入软件名字,点击搜索,根据提示下载就可以了。将视频下载到电脑上有几种途径,如果是网络上的,可以下载的视频会设置有下载标记或按钮,点...

取消回复欢迎 发表评论: