无话不谈|用PyTorch部署模型( 二 )
把所有的东西打包到一起 , 我们的handler是这样的:
因为所有的处理逻辑都封装在一个类中 , 所以你可以轻松地对它进行单元测试!
导出你的模型官方文档:#creating-a-model-archive
Torchserve 需要提供一个.mar文件 , 简而言之 , 该文件只是把你的模型和所有依赖打包在一起 。 要进行打包 , 首先需要导出经过训练的模型 。
导出模型
有三种方法可以导出torchserve的模型 。 到目前为止 , 我发现的最好的方法是trace模型并存储结果 。 这样我们就不需要向torchserve添加任何额外的文件 。
让我们来看一个例子 , 我们将部署一个经过充分训练的ResNet34模型 。
按照顺序 , 我们:
- 加载模型
- 创建一个dummy输入
- 使用torch.jit.trace来trace模型的输入
- 保存模型
官方文档:
你需要安装torch-model-archiver
git clone cd serve/model-archiverpip 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 。
推荐阅读
- 军人|国家部署一级战备状态,紧急召回的军人,如果买不到车票怎么办?
- 东风17|东风17导弹部署海峡前,美航母演练大规模伤亡,日澳这次坐不住了
- 海峡军武号|俄罗斯却迟迟没交付,印媒抱怨:中国已在前线部署S400
- 军中三剑客|边境部署重炮,警告随时军事打击,阿塞拜疆破坏停火炮击水库
- 参考消息网|美两军种大幅调整火力部署 美媒:为在印太地区对抗中国
- 夜郎古酒业召开能力提升培训暨2021年度经营战略部署会议
- 东风17|东风17或已部署东南沿海,射程覆盖美基地,美军:目前无法拦截
- 强国网|其为何接受美制裁也要部署?俄:为击落F35而生,土耳其S-400试射
- 海峡新资讯|印度这边却推迟发货,俄称受疫情影响,中国S400已部署边境
- 上海黄浦|执法大队召开全体会议 ——总结前三季度工作,部署第四季度及进博会保障工作
