torch-model-archiver --model-name roadcross --version 1.0 --model-file model.py --serialized-file resnet34b_16.pth --handler resnetHandler --export-path model-store -f
参数说明:
--model-name 模型名称,根据自己需要定义,不需要跟真正的模型名称相同
--version 模型版本
--model-file 模型类文件,里面只能有一个类
--serialized-file 模型参数文件
--handler 模型处理文件,非常重要
--extra-files json文件,可以讲类别对于的名称放进去
--export-path 导出的.mar文件存放的位置,需要手动创建
实际上我在加载模型的时候,用的是torchscript格式文件,没有用到model.py,为什么还是要加这个参数呢,因为不知道为什么,如果不加该参数,会提示找不到模型。
我的文件结构如下:
执行完成后会在model-store下生成文件:
torchserve docker镜像列表
https://hub.docker.com/r/pytorch/torchserve/tags?page=1&ordering=last_updated
拉取CPU镜像
docker pull pytorch/torchserve:latest
因为基础镜像中没有安装opencv-pyhton包,所以需要在原镜像的基础上,打包镜像
在一个空文件夹中,创建Dockerfile文件
在文件中写入
FROM pytorch/torchserve:latest
RUN pip install opencv-python -i https://pypi.tuna.tsinghua.edu.cn/simple
sudo docker build -t roadclssify:v1 .
命令知识将torchserve服务运行起来,可以通过http请求进行控制,注册模型、管理模型、访问等等。
sudo docker run --rm -it -p 3000:8080 -p 3001:8081 -v /mnt/d/image-process/torchserver-deploy/roadcross/model-store/model_store:/home/model-server/model-store roadclassify:v1.0
参数说明:
-p 表示端口映射,主机端口3000映射到容器的8080, 3001映射到8081
-v 将本地文件夹/mnt/d/image-process/torchserver-deploy/roadcross/model-store/model_store中的模型复制到容器目录下/home/model-server/model-store
容器目录一定要写成/home/model-server/model-store,即将.mar文件放在这个文件夹下,方便模型注册等
torchserve API文档
https://pytorch.org/serve/management_api.html#register-a-model
注册API: http://localhost:3001/models?url=roadcross.mar
注册模型
参数说明:
发起post请求:
url为必填字段,可以为一个http链接,提交请求后,容器会自动进行下载,将模型下载到容器目录之下,然后运行。
也可以为本地模型名称,这里的本地是指容器,如果使用路径的话,需要将.mar模型文件放在/home/model-server/model-store下面
http://localhost:3001/models/roadcross?min_worker=3
http://localhost:3000/predictions/roadcross
发送图像文件测试
OK