因为卤煮的云主机只有1G的内存,blade编译的时候一直OOM,所以只能在自己的mac上编译。
blade和TF-Serving版本、gcc版本之间都需要匹配,特别是bazel和TF-Serving之间匹配,不然经常因为各种原因装不上,这里列一下清单:
名称 | 版本 | 下载地址 |
---|---|---|
TF-Serving | r1.15 | https://github.com/tensorflow/serving |
bazel | 0.24.1 | https://github.com/bazelbuild/bazel/releases/tag/0.24.1 |
python | 2.7.10 | |
gcc | 6 | brew |
java和python的依赖项:
yum -y install java-1.8.0-openjdk-devel automake autoconf libtool libicu patch pip install --upgrade pip pip install numpy grpcio Keras-Applications Keras-Preprocessing h5py requests enum --trusted-host pypi.doubanio.com
拉源码下来:
git clone --recurse-submodules https://github.com/tensorflow/models.git git checkout r1.15 cd serving bazel build -c opt //tensorflow_serving/model_servers:tensorflow_model_server --verbose_failures
然后进入漫长的编译,中间会把依赖项拉下来,所以需要有外网的访问权限。
python中没安装, 找到模块的包名,pip install 即可
brew search gcc brew install gcc@6
编辑 ~/.zshrc
alias gcc="gcc-6" alias g++="g++-6" alias cc="gcc-6" alias c++="c++-6"
然后关闭控制台重新开一个:
➜ ~ gcc -v Using built-in specs. COLLECT_GCC=gcc-6 COLLECT_LTO_WRAPPER=/usr/local/Cellar/gcc@6/6.5.0_2/libexec/gcc/x86_64-apple-darwin18.5.0/6.5.0/lto-wrapper Target: x86_64-apple-darwin18.5.0 Configured with: ../configure --build=x86_64-apple-darwin18.5.0 --prefix=/usr/local/Cellar/gcc@6/6.5.0_2 --libdir=/usr/local/Cellar/gcc@6/6.5.0_2/lib/gcc/6 --enable-languages=c,c++,objc,obj-c++,fortran --program-suffix=-6 --with-gmp=/usr/local/opt/gmp --with-mpfr=/usr/local/opt/mpfr --with-mpc=/usr/local/opt/libmpc --with-isl=/usr/local/opt/isl --with-system-zlib --enable-stage1-checking --enable-checking=release --enable-lto --with-build-config=bootstrap-debug --disable-werror --with-pkgversion='Homebrew GCC 6.5.0_2' --with-bugurl=https://github.com/Homebrew/homebrew-core/issues --disable-nls --disable-multilib --with-native-system-header-dir=/usr/include --with-sysroot=/Library/Developer/CommandLineTools/SDKs/MacOSX.sdk Thread model: posix gcc version 6.5.0 (Homebrew GCC 6.5.0_2)
yum install -y centos-release-scl-rh centos-release-scl && yum install -y devtoolset-4-gcc devtoolset-4-gcc-c++ devtoolset-4-gdb echo "source /opt/rh/devtoolset-4/enable" >> /etc/bashrc source /etc/bashrc
非常久,不建议。
如果已经装了protoc又跟TF-Serving版本不匹配,需要卸载protoc。
可以检查版本,成功查询就是编译成功了:
➜ serving git:(r1.15) ✗ ./bazel-bin/tensorflow_serving/model_servers/tensorflow_model_server --version TensorFlow ModelServer: 1.15.0-rc2+dev.sha.748217e4 TensorFlow Library: 1.15.0