【torchserve安装和使用】torchserve部署方法|常见问题汇总|mmdetection使用torchserve部署|不使用docker

 QQ:1757093754  欢迎交流!!!

什么是torchserve?

(百度)torchserve是Facebook和AWS联手开发的一款用于机器学习模型部署和调用的微服务程序

接触torchserve是因为项目落地最终需要部署到平台上面,所以就开始了torchserve的使用之旅。

安装方法: 

pip3 install torchserve -i https://pypi.tuna.tsinghua.edu.cn/simple

torchserve官网: 

1. TorchServe — PyTorch/Serve master documentationhttps://pytorch.org/serve/

 环境依赖:(建议)

torch==1.9.x

openjdk==11

python==3.8


 个人学习安装、使用torchserve:

 1.安装虚拟机

对于模型的部署,torchserve支持windows,但是我们最好在linux下面进行练习,大部分的项目落地都以linux为主。

下载一个linux虚拟机必不可少:

(centos)

第一步:下载 VMware Workstation
第二步:下载centos系统镜像
第三步:安装系统镜像到虚拟机

镜像下载链接: 

CentOS 安装镜像 · ISRC - 镜像站 (iscas.ac.cn)https://mirror.iscas.ac.cn/mirror/centos-release.html将下载好的iso镜像安装到虚拟机里面:

 在虚拟机打开终端:

 2.安装anaconda

和我们平时使用一样,我们需要一个包管理工具去管理我们下载好的包和库。

wget https://mirrors.tuna.tsinghua.edu.cn/anaconda/archive/Anaconda3-2021.05-Linux-x86_64.sh

注意:这里的anaconda版本可以随意,最好保证不要太新,也不要太旧就行。

注:图中的anaconda是我已经安装完成的,正常下载完了只有旁边那一个.sh文件。 

 之后执行.sh文件实现安装:

bash Anaconda3-2021.05-Linux-x86_64.sh

注意:安装的时候仔细看给的提示英文,不要盲目的一路回车过去!!! 

报错:Cannot open xxx/anaconda3/conda.exe or archive xxx/anaconda3/conda.exe.pkg

解决方法:

不要从windows上直接下载anaconda,在传到linux上面!

 如果正常安装完成的话,anaconda会自动加入环境变量。

3.安装openjdk==11

torchserve的使用需要java环境,官方建议openjdk11。

注:如果在后续使用过程中出现任何和java环境有关的报错,都是jdk版本问题,或者是jdk环境没导入的问题。

yum install -y java-11-openjdk

配置环境变量:

vi /etc/profile
export JAVA_HOME=自己的jdk位置
export PATH=$JAVA_HOME/bin:$PATH
export CLASSPATH=.:$JAVA_HOME/lib/dt.jar:$JAVA_HOME/lib/tools.jar 
source /etc/profile

检查环境变量是否配置成功:

java –version

 4.安装集成开发环境

第4步就是在虚拟机上面安装pycharm(推荐),等集成开发环境。这一步就不详细说明了。(づ ●─● )づ

5.安装torchserve

pip3 install torchserve -i https://pypi.tuna.tsinghua.edu.cn/simple
pip3 install torch-model-archiver -i https://pypi.tuna.tsinghua.edu.cn/simple

6.命令行使用

第一步:打包(注册模型)

torchserve需要部署torch-model-archiver生成好的mar文件,所以我们把权重和模型的配置文件打包成一个mar包。

注册模型:(模板)

torch-model-archiver --model-name xxx --version 1.0 --model-file model.py --serialized-file xxx.pth --handler image_classifier[这里可以自己写handle文件] --extra-files index_to_name.json[一个类别索引json]

注:模型的注册重点在handle,可以重写这个文件来实现属于自己的模型部署。(torchserve只支持torch、torchscript模型的部署),如果需要部署其他模型,需要自己重写handle文件。

启动 torchserve服务:

torchserve --start --model-store model_store[存放mar文件的文件夹] --models yolo[自定义注册的模型名称]=xxx.mar

7.测试 

部署状态查询(端口号具体看部署到的端口号)

curl http://localhost:8080/ping

测试xxx.jpg(端口号具体看部署到的端口号)

curl http://localhost:8080/predictions/test -T xxx.jpg

下面是一张在做项目时候测试结果图片: 


 实际使用过程中遇到的问题汇总:

handler.py

# 自定义handler
class MyHandler(BaseHandler):
    threshold = 0.5

    # 初始化
    def initialize(self, context):
        pass

    # 数据的预处理
    def preprocess(self, data):
        pass

    # 推理部分
    def inference(self, data, *args, **kwargs):
        pass

    # 后处理部分
    def postprocess(self, data):
        pass

注:torchserve源代码只支持torch模型和torchscript模型的部署。

 也可以在handler.py里面自定义一个模型加载类来加载模型:

def _load_pickled_model(self, model_dir, model_file, model_pt_path):
    pass

注:正式使用的时候需要安装CUDA 

CUDA下载地址:CUDA Toolkit Archive | NVIDIA Developerhttps://developer.nvidia.com/cuda-toolkit-archive版本对应关系:(该网站可以直接通过不同的cuda版本下载pytorch)以前的 PyTorch 版本 |PyTorchhttps://pytorch.org/get-started/previous-versions/

自定义部署网站端口号:

 config.properties.txt:

修改完端口之后再部署: 

torchserve --start --model-store xxx --models xxx=xxx.mar --ts-config ./config.propertes

注:--model-store 参数为存放mar压缩包的文件夹路径。 

停止部署服务:

torchserve --stop

 mmdetection使用torchserve部署:

 由图可见,mmdetection自己封装好了一个handler.py可以直接使用。仍只支持torch和torchscript模型权重。

python .\tools\deployment\mmdet2torchserve.py F:\ms\yolox_s_8x8_300e_coco.py F:\ms\best_bbox_mAP_epoch_109.pth --output-folder output_mar --model-name yolox -f

打包完成之后可以直接使用 test_torchserve.py 文件进行测试,也可以使用终端进行测试。

  • 10
    点赞
  • 26
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 14
    评论
评论 14
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

活成自己的样子啊

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值