文件准备:
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: 可选,
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