在上一篇文章中我们学习了如何来搭建TensorFlow-Serving的Docker环境,但是在启动TensorFlow-Serving服务的时候,会有一行日志: 1
2
3I external/org_tensorflow/tensorflow/core/platform/cpu_feature_guard.cc:141]
Your CPU supports instructions that this TensorFlow binary was not compiled to
use: AVX2 FMA
说明默认的TensorFlow-Serving的二进制版本不满足CPU优化的条件,这时候需要手动编译TensorFlow-Serving的源码。在官方文档提供了一种Docker的编译方法,但是在实际环境中执行的时候因为网速的原因一直没有成功,所以这里选择了另外自己编译的方法。
下载devel版本的TensorFlow
1 | sudo docker pull tensorflow/serving:nightly-devel |
编译TensorFlow-Serving
1 | sudo docker run -it tensorflow/serving:nightly-devel bash #进入容器 |
可能会遇到错误找不到/usr/include/python3.6m,解决方法是: 1
2sudo add-apt-repository ppa:deadsnakes/ppa
sudo apt-get install python3-dev
完成后TensorFlow-Serving的二进制文件位置:/tensorflow_serving/bazel-bin/tensorflow_serving/model_servers/tensorflow_model_server
保存Docker Image
刚才的操作都是在Docker中,一旦退出Docker之前的更改全部失效,所以需要退出之前保存该Image的更改。另起一个窗口执行命令: 1
2sudo docker ps #查找当前运行Docker对应的Container ID
sudo docker commit containerId tensorflow/serving:nightly-devel
执行TensorFlow-Serving
1 | # 启动Docker |
可以看到,这次启动时没有出现Your CPU supports instructions that this TensorFlow binary was not compiled to use: AVX2 FMA的报警。
后续
但是使用这种方法编译后的TensorFlow-Serving,在实际测试时候并没有提升预测的耗时性能,具体原因还需要后续继续分析。另外TensorFlow的编译最好使用Docker环境编译,在物理机上涉及到很多环境变量和其他软件版本的不匹配问题。