Tensorflow Serving是谷歌tensorflow框架针对自身深度学习模型线上服务研发的高性能开源库,使用gPRC作为接口接受外部调用。实际应用具有速度快、版本便于管理、并发性能好等等优点。但安装起来相对繁琐,我打算把安装的过程记录下来,便于下次遇到相同的坑能迅速躲开。Tensorflow Serving具有docker安装和源码编译两种形式,本文先着重介绍后者,因为后者尤其麻烦。
- 源码编译Tensorflow Serving
源码编译环境基于Centos7+Anaconda3(python3.6)
首先安装所需的一系列依赖:
# Java
sudo yum -y install java-1.8.0-openjdk-devel
然后安装谷歌自己的编译工具bazel,这里选择bazel0.19.2版本,在GitHub issue上提出,0.19.2和0.18.x版本对import StringIO这个python2特有的包做的处理比较好,不会出现“ImportError: No module named 'StringIO'”这样的错误。
# Bazel
接下来利用git下载Tensorflow Serving源码,这里选择Tensorflow Serving 1.11版本,是和bazel相匹配的最高版本。
git clone -b r1.11 --recurse-submodules https://github.com/tensorflow/serving
下载后需要调整一下目录结构,将serving/tools下面bazel.rc移动到serving/下面,并重命名为.bazelrc。
mv tools/bazel.rc ../.bazelrc
然后开始利用bazel进行编译,注意指定python路径,否则默认Centos7系统中自带的python2.7进行编译。如果编译环境资源不足,可以用 --local_resources 2048,.5,1.0参数来限制。其中2048可以修改为4096甚至更大。
PYTHON_BIN_PATH
编译时间较长,需要耐心等待。
编译成功后,可以使用如下命令指定好模型名称和路径,启动Tensorflow Serving服务。
=port --model_name
参考文献:
MingCong18/Lead_Quality_Predictiongithub.com