如何实现tensorflow serving的离线安装



公司服务器无法直接连接外网,所以只能在本地进行下载或者变编译后,上传服务器,实现tensorflowserving的离线安装。本安装方法适用于centosRHEL系统,建议使用最新版操作系统,避免后续升级gcc或者安装各种最新插件的烦恼。

1 安装grpc

https://pypi.org/上下载最新版grpcio安装所需插件,下载完成后上传服务器安装即可,具体可根据grpcio(下载源码包)中setup.py中的可知,或者根据pip在本地机器的安装记录就可获得:

sudo python -m pip install grpcio

Collecting grpcio

 Downloadinghttps://files.pythonhosted.org/packages/0d/54/b647a6323be6526be27b2c90bb042769f1a7a6e59bd1a5f2eeb795bfece4/grpcio-1.11.0-cp27-cp27mu-manylinux1_x86_64.whl(8.7MB)

   100% |████████████████████████████████| 8.7MB 55kB/s

Requirement already satisfied:six>=1.5.2 in /usr/lib/python2.7/site-packages (from grpcio)

Collecting protobuf>=3.5.0.post1 (fromgrpcio)

 Downloadinghttps://files.pythonhosted.org/packages/9d/61/54c3a9cfde6ffe0ca6a1786ddb8874263f4ca32e7693ad383bd8cf935015/protobuf-3.5.2.post1-cp27-cp27mu-manylinux1_x86_64.whl(6.4MB)

   100% |████████████████████████████████| 6.4MB 102kB/s

Collecting futures>=2.2.0 (from grpcio)

 Downloadinghttps://files.pythonhosted.org/packages/2d/99/b2c4e9d5a30f6471e410a146232b4118e697fa3ffc06d6a65efde84debd0/futures-3.2.0-py2-none-any.whl

Requirement already satisfied:enum34>=1.0.4 in /usr/lib/python2.7/site-packages (from grpcio)

Requirement already satisfied: setuptoolsin /usr/lib/python2.7/site-packages (from protobuf>=3.5.0.post1->grpcio)

Installing collected packages: protobuf,futures, grpcio

Successfully installed futures-3.2.0grpcio-1.11.0 protobuf-3.5.2.post1

2 安装bazel

https://copr.fedorainfracloud.org/coprs/vbatts/bazel/中下载对应版本的repo文件,并拷贝到/etc/yum.repos.d/.中,该机器需有网络,使用命令

yum install –downloadonly bazel

就可以下载bazelrpm软件,缓存在/var/cache/yum目录下的子文件夹里,比如我的机器是在/var/cache/yum/x86_64/7/vbatts-bazel/packages下,将bazel-0.12.0-1.el7.centos.x86_64.rpm拷贝出来,上传服务器,直接在当前目录下,

yum install bazel-0.12.0-1.el7.centos.x86_64.rpm

即可实现安装,或者放置在服务器的yum缓存目录使用命令

yum -C install packetName

进行安装

 

3 安装serving

确保当前机器有网络,拷贝github程序:

git clone --recurse-submoduleshttps://github.com/tensorflow/serving

cd serving

 

使用bazel下载编译所需插件:

bazel fetch tensorflow_serving/...

 

注意这里有三个点,下载的程序并非放在当前文件夹下,而是在/root/.cache/bazel/(应该跟用户有关,观察下载时的日志即可定位到下载文件夹)下的子目录中,比如我的目录:

/root/.cache/bazel/_bazel_ethansheng/7c7ba1fef06177718927526275ae1387/external

 

external目录zip压缩后导出(压缩后不到2g),与git下载的serving文件夹一起上传到服务器对应目录下,执行编译和测试:

bazel build -c opt tensorflow_serving/...

bazel test -c opt tensorflow_serving/...

 

编译耗时跟机器性能有关,服务器应该花费不了多久。

 

还有一种方法就是本地使用与服务器相同的操作系统,编译完成后将编译完的文件上传服务器,这种方式应该也行得通,懒得去测试了。

你可能感兴趣的:(深度学习)