在网上查了很多,除了官方文档,torchserver部署方面的资料很少, 在踩坑两周后终于部署成功。
本文主要针对服务器部署深度学习torch模型中遇到的各种各样问题,欢迎讨论~
部署结果展示
主要包含7个文件,依次为:
1.env:Python环境
2.jdk:java jdk环境
3.logs:输出log
4.model_store:模型及代码打包
5.TMP:启动服务时的临时存储文件夹
6.run.sh:启动shell
7.runse.properties:服务config配置
这7个文件夹移植到任意新的服务器上,运行run.sh就可以直接启动服务、
其中,3和5为服务自动生成,无需特殊处理。下面依次看下剩余五个部分如何配置。
一、Python环境
(一)创建虚拟环境
最新的torchserver版本为0.6.0,要求python>=3.8,其他版本要求可自行查阅:https://github.com/pytorch/serve
conda create -n torchserver python=3.8
(二)安装torch,cuda等
一定需注意torch,cudatoolkit和自己服务器cuda版本适配:
torchserver提供的各版本cuda对应的torch,cudatoolkit版本:https://github.com/pytorch/serve/tree/master/requirements
这里提供一个对于cuda11及以上的安装方式:
conda install pytorch==1.12.0 torchvision==0.13.0 torchaudio==0.12.0 cudatoolkit=11.3
也可以参考torch官网:https://pytorch.org/get-started/previous-versions/
安装前配置好国内源,注意conda或pip语句最后不要添加 -c pytorch,不然不会使用配置好的清华源等,会很慢。
(三)Python环境移植
将anaconda/envs目录下你创建的虚拟环境(例如上面我们创建的anaconda/envs/torchserver)直接进行拷贝,我这里拷贝后改名为env就变成了最终的Python环境,如下第一个文件夹。
最后在run.sh中需要指定环境变量PATH来使用我们移植出来的虚拟环境,具体在run.sh那节还会详述。
export PYTHONPATH=./env/lib/python3.9/site-packages
export PATH=env/bin:$PATH
二、java jdk环境
(一)java jdk安装
由于torchserver底层是使用java实现的,这里我们需要安装最新版本的 OpenJDK 来运行,主要有两种方式:
1.sudo安装,需要sudo权限
Ubuntu服务器
apt install openjdk-11-jdk
centos服务器
yum install openjdk-11-jdk
第一种方便利于本地部署,不过如果需要移植还需要第二种方法,因为要把jdk的环境一起进行移植
2.安装包安装(推荐)
在官网下载安装包:https://www.openlogic.com/openjdk-downloads
拷贝到服务器中,使用tar -xzvf 解压成jdk环境包
(二)java jdk环境移植
将jdk文件夹移植,就变成了如下第二个文件夹
最后在run.sh中需要指定环境变量JAVA_HOME来使用我们移植出来的java jdk环境,具体在run.sh那节还会详述。
export JAVA_HOME=./jdk/jdk-11
三、模型及代码打包
核心部分,也是坑最多的地方,尽我所理解的讲述,因为涉及到一些私密文件,不能全部展示,肯定有不全的地方。