无话不谈|用PyTorch部署模型
作者:Francesco Zuppichini
编译:ronghuaiyang
导读演示了使用PyTorch最近发布的新工具torchserve来进行PyTorch模型的部署 。
最近 , PyTorch推出了名为torchserve.的新生产框架来为模型提供服务 。 我们看一下今天的roadmap:
1、使用docker安装
2、导出模型
3、定义handler
【无话不谈|用PyTorch部署模型】4、保存模型
为了展示torchserve , 我们将提供一个经过全面训练的ResNet34进行图像分类的服务 。
使用Docker安装官方文档:https://github.com/pytorch/serve/blob/master/README.md##install-torchserve
安装torchserve最好的方法是使用docker 。 你只需要把镜像拉下来 。
可以使用以下命令保存最新的镜像 。
docker pull pytorch/torchserve:latest所有可用的tags:
关于docker和torchserve的更多信息:https://github.com/pytorch/serve#quick-start-with-docker
Handlers官方文档:
处理程序负责使用模型对一个或多个HTTP请求进行预测 。
默认 handlers
Torchserve支持以下默认 handlers
- image_classifier
- object_detector
- text_classifier
- image_segmenter
自定义 handlers
torchserve提供了一个丰富的接口 , 可以做几乎所有你想做的事情 。 一个Handler是一个必须有三个函数的类 。
- preprocess
- inference
- postprocess
回到图像分类的例子 。 我们需要
- 从每个请求中获取图像并对其进行预处理
- 从模型中得到预测
- 发送回一个响应
.preprocess函数接受请求数组 。 假设我们正在向服务器发送一个图像 , 可以从请求的data或body字段访问序列化的图像 。 因此 , 我们可以遍历所有请求并单独预处理每个图像 。 完整的代码如下所示 。
self.transform是我们的预处理变换 , 没什么花哨的 。 对于在ImageNet上训练的模型来说 , 这是一个经典的预处理步骤 。
在我们对每个请求中的每个图像进行预处理之后 , 我们将它们连接起来创建一个pytorch张量 。
推理
这一步很简单 , 我们从 .preprocess得到张量 。 然后对每幅图像提取预测结果 。
后处理
现在我们有了对每个图像的预测 , 我们需要向客户返回一些内容 。 Torchserve总是返回一个数组 。 BaseHandler也会自动打开一个.json 文件带有index -> label的映射(稍后我们将看到如何提供这样的文件) , 并将其存储self.mapping中 。 我们可以为每个预测返回一个字典数组 , 其中包含label和index 的类别 。
推荐阅读
- 军人|国家部署一级战备状态,紧急召回的军人,如果买不到车票怎么办?
- 东风17|东风17导弹部署海峡前,美航母演练大规模伤亡,日澳这次坐不住了
- 海峡军武号|俄罗斯却迟迟没交付,印媒抱怨:中国已在前线部署S400
- 军中三剑客|边境部署重炮,警告随时军事打击,阿塞拜疆破坏停火炮击水库
- 参考消息网|美两军种大幅调整火力部署 美媒:为在印太地区对抗中国
- 夜郎古酒业召开能力提升培训暨2021年度经营战略部署会议
- 东风17|东风17或已部署东南沿海,射程覆盖美基地,美军:目前无法拦截
- 强国网|其为何接受美制裁也要部署?俄:为击落F35而生,土耳其S-400试射
- 海峡新资讯|印度这边却推迟发货,俄称受疫情影响,中国S400已部署边境
- 上海黄浦|执法大队召开全体会议 ——总结前三季度工作,部署第四季度及进博会保障工作
