TorchServe部署pytorch模型

文件准备:
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下面
TorchServe部署pytorch模型_第1张图片
在server所在的文件夹下,新建一个文件夹,之后所有打包好的模型文件都将会放到这里

mkdir model_store 

在server文件夹所在的当前目录中右键,点击Git Bash Here
TorchServe部署pytorch模型_第2张图片
在打开的命令窗口中输入命令

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          

TorchServe部署pytorch模型_第3张图片
注意文件路径
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部署pytorch模型_第4张图片

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

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

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

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

运行成功
TorchServe部署pytorch模型_第8张图片

第四步 . 停止模型服务器
在服务终端,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: 可选, = 名称路径对.
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

你可能感兴趣的:(pytorch)