TorchServe部署pytorch模型

2023-11-07

文件准备:
1、model-file:model.py
参考:https://github.com/pytorch/serve/blob/master/examples/object_detector/maskrcnn/model.py
2、serialized-file:模型权重文件 model.pth
3、handler:handler.py
参考:https://github.com/pytorch/serve/blob/master/ts/torch_handler/object_detector.py

Ubuntu torchserve安装
conda install torchserve torch-model-archiver torch-workflow-archiver -c pytorch
sudo apt install openjdk-11-jdk

第一步 . 打包模型
将这三个文件放到一个文件夹server下面
在这里插入图片描述
在server所在的文件夹下,新建一个文件夹,之后所有打包好的模型文件都将会放到这里

mkdir model_store 

在server文件夹所在的当前目录中右键,点击Git Bash Here
在这里插入图片描述
在打开的命令窗口中输入命令

torch-model-archiver --model-name mymodel --version 1.0 --model-file ./server/model.py --serialized-file ./server/model.pth --handler ./server/handler.py --export-path model_store          

在这里插入图片描述
注意文件路径
torch-model-archiver命令:
–model-name:部署的模型的名称
–version:模型版本号
–model-file:该文件应该包含单个模型的类,该模型类应该可以使用 load_state_dict 来成功加载 model.pth 提供的权重
–serialized-file:模型权重文件,在训练过程中通过 model.state_dict() 获得的模型权重文件
–handler:处理模型输出的文件
–export-path:打包后的模型文件存放位置
这步之后,model_store文件夹下会出现 mymodel.mar 文件,这就是我们打包好的模型文件。
在这里插入图片描述

第二步 . 启动模型服务器
在命令窗口继续输入命令,启动模型服务器

torchserve --start --ncs --model-store model_store --models ./model_store/mymodel.mar

torchserve --start --ncs
–model-store:打包的模型文件mymodel.mar所在文件夹
–models:mymodel.mar的绝对路径
在这里插入图片描述
此时,当前文件夹下会出现一个log文件夹记录日志
在这里插入图片描述
第三步 . 测试图片
将一张图片放置到当前文件夹下
在这里插入图片描述
在命令窗口中输入命令

curl http://127.0.0.1:8080/predictions/mymodel -T test_ori.png

运行成功
在这里插入图片描述

第四步 . 停止模型服务器
在服务终端,ctrl+C结束。
使用torchserve --stop,关闭服务。

torchserve --stop

删除日志:

rm -rf logs

附加
torchserve命令

$ torchserve --help

用法:

 torchserve [-h] [-v | --version]
                    [--start]
                    [--stop]
                    [--ts-config TS_CONFIG]
                    [--model-store MODEL_STORE]
                    [--models MODEL_PATH1 MODEL_NAME=MODEL_PATH2... [MODEL_PATH1 MODEL_NAME=MODEL_PATH2... ...]]
                    [--log-config LOG_CONFIG]

mandatory arguments:
–model-store MODEL_STORE 打包好的模型所存储位置

optional arguments:
-h, --help 展示帮助页面
-v, --version 返回 TorchServe 版本
–start 启动模型服务器
–stop 关闭模型服务器
–ts-config TS_CONFIG TorchServe的配置文件
–models MODEL_PATH1 MODEL_NAME=MODEL_PATH2… [MODEL_PATH1 MODEL_NAME=MODEL_PATH2… …]
通过使用[ model_name = ] model_location来加载模型,model_location可以是HTTP URL,也可以是model_store中已经打包好的模型文件。
–log-config LOG_CONFIG TorchServe的Log4j日志配置文件
–ncs, --no-config-snapshots Disable snapshot feature

参数:
1、models: 可选, <model_name>=<model_path> 名称路径对.
a) 模型路径可以是model_store中的mar文件名或URI(s3链接或http链接)
s3 link: s3://S3_endpoint[:port]/…
http link: http://hostname/path/to/resource
b) 加载模型存储中的所有模型,将模型值设置为“全部
torchserve --model-store /models --start --models all
c) 模型文件的扩展名为.mar,它实际上是一个zip文件,扩展名为.mar,它包装了经过训练的模型和模型签名文件。
d) 通过指定多个名称路径对,也支持多种模型加载。

2、model-store:可选,默认或本地模型的存储位置。启动TorchServe时,可以通过注册api调用或通过models参数在模型存储中注册可用的模型。

3、ts-config: 可选,提供配置文件config.properties。

4、log-config: 可选,此参数将覆盖服务器中存在的默认log4j.properties。

相关链接:
https://github.com/pytorch/serve/blob/master/docs/README.md

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

TorchServe部署pytorch模型 的相关文章

随机推荐

  • 使用algorithm中的sort进行vector的自定义排序

    名称 使用algorithm中的sort进行vector的自定义排序 说明 可以使用sort进行自定义排序 不过要定义比较函数 在此处的比较 函数为Compare 名字可以任取 在比较函数中 定义自己的排序方式 然后在sort函数中传入函数
  • idea将本地新项目上传至svn

    目录 第一步 将本地代码交给svn管理 第二步 将代码提交至svn 第一步 将本地代码交给svn管理 1 file gt setting进入设置 2 点击Version Control gt 点击 加号 gt 选择本地项目文件 gt 选择S
  • 修改Mysql数据库的用户名和密码【详细】

    数据库的用户名默认是root 1进入到Mysql 首先要登录数据库 1win r输入cmd 管理员身份打开 或者 2搜索输入命令提示符 2 输入mysql uroot p点击回车 注意 mysql默认用户名是root 我以前修改过 所以我输
  • 看起来很长但还是有用的Spring学习笔记

    本文首发于泊浮目的专栏 https segmentfault com blog Spring致力于提供一种方法管理你的业务对象 在大量Java EE的应用中 随处可见Spring 今天我将简单的介绍一下Spring这个框架 本文适合读者 想
  • Verilog中generate语句的用法

    在Verilog 2001中新增了语句generate 通过generate循环 可以产生一个对象 比如一个元件或者是一个模块 的多次例化 为可变尺度的设计提供了方便 generate语句一般在循环和条件语句中使用 为此 Verilog 2
  • DLL的引入方式(DllImport的特殊引入方式)

    Dll引入方式有四种 1 就是普通的比如一个解决方案中有多个项目 将其他项目的引入到该项目中 2 就是软件自带的程序集的引入 3 就是使用dll的引入 普通的本身就是VS的dll文件 4 就是使用dll的引入 不是属于该语言的vs的Dll文
  • 减少GC开销 &&可能出现内存泄漏的情况&&两个对象相互引用会不会被GC

    如何降低java GC开销 减少GC次数 其他详见 如何减少垃圾回收的次数 jvm虚拟机 1 选择一个较好的GC器 Java9在2017年九月发布 G1 Garbage First 垃圾回收器 成为 HotSpot 虚拟机默认的垃圾回收器
  • 还没用熟 TypeScript 社区已经开始抛弃了

    前端Q 我是winty 专注分享前端知识和各类前端资源 乐于分享各种有趣的事 关注我 一起做个有趣的人 公众号 点击上方 前端Q 关注公众号 回复加群 加入前端Q技术交流群 根据 rich harris talks sveltekit an
  • C# 加密解码各种方法

    目录 一 加密解密介绍 二 MD5 三 SHA x系列 四 DES 3DES 五 RC2 六 AES 七 Base64 八 Rsa 九 参考文献 一 加密解密介绍 不可逆加密 MD5 SHA x系列对称式加密 Des 3DES RC2 AE
  • “加密系统”的巨坑

    在来公司之前 我压根就不知道这世界上原来还有 加密系统 这种软件产品存在 学名叫数据防泄漏 也怪我孤陋寡闻了 因为之前在厦门从来没听说过哪家公司有在用加密系统 当然 每家公司都有自己独特的管理需求 也许公司这边也确实重要信息比较多 核心机密
  • java自定义排序

    java中sort的自定义排序 一 Arrays sort nums 的一般用法 二 最大数 力扣179 三 合并区间 力扣59 四 总结 一 Arrays sort nums 的一般用法 整个数组按照升序排序 若需要降序排序 将数组转置即
  • ng-model数据绑定实例

    ng mode的作用是数据绑定 placeholder是默认显示值 在input里面输入任何字符都会对应显示到你下面ng model对应的name中 name
  • Python 3基础教程19-模块导入语法

    本文开始介绍模块导入的一些基本语法 我们现在还在Python自带的IDLE编辑器里写Python代码 如果你要需要一个功能 例如build in的模块 那么你就需要先导入这个模块 然后才能使用这个模块相关方法 不像在Pycharm编辑器了
  • 剑指 Offer 18. 删除链表的节点

    题目链接 18 删除链表的节点 Definition for singly linked list struct ListNode int val ListNode next ListNode int x val x next NULL c
  • 良品铺子年报:将冲击百亿营收门槛 斥资1.8亿现金分红

    雷递网 雷建平 3月23日报道 良品铺子 603719 SH 日前公布2021年度业绩 财报显示 良品铺子2021年公司营收93 24亿元 较2020年的78 94亿元增长18 11 近五年营收翻番 这意味着 良品铺子2022年将冲击百亿门
  • local_irq_save和 local_irq_disable

    如果你要禁止所有的中断该怎么办 在2 6内核中 可以通过下面两个函数中的其中任何一个关闭当前处理器上的所有中断处理 这两个函数定义在
  • constraints java_java-来自javax.validation.constraints的注释不起作用

    java 来自javax validation constraints的注释不起作用 使用id 如name NotNull等 中的注释需要什么配置 这是我的代码 import javax validation constraints Not
  • 深入理解Solidity——创建合约

    Solidity的合约类似于面向对象语言中的类 它们包含存放持久化数据的状态变量和可修改这些变量的函数 调用不同的合约实例上的函数将执行EVM函数调用 从而切换上下文 使得状态变量不可访问 创建合约 Creating Contracts 合
  • 支付宝商户转账给支付宝个人

    首先引入支付宝的jar
  • TorchServe部署pytorch模型

    文件准备 1 model file model py 参考 https github com pytorch serve blob master examples object detector maskrcnn model py 2 se