公司服务器上从源码编译MKL集成的tensorflow
网上相应的记录很多,但因为是在公司服务器上进行,需要注意代理的配置,而且是在docker中进行的,因此这里写一下算是工作记录了。
需要提前注意的事项:
- bazel与tf版本之间的适配性
可以是 tensorflow/configure.py 中指定的介于 _TF_MIN_BAZEL_VERSION 和
_TF_MAX_BAZEL_VERSION 之间的任意版本。(https://tensorflow.google.cn/install/source)
所以需要提前了解自己要编译的tf版本,找到对应的branch,然后查看他的bazel版本。
我需要编译的是tf r1.15,对应的bazel版本信息为:
_TF_MIN_BAZEL_VERSION = ‘0.24.1’
_TF_MAX_BAZEL_VERSION = ‘0.26.1’ (https://github.com/tensorflow/tensorflow/blob/r1.15/configure.py)
- python等执行文件所在的位置
主要是python和cuda,后面再配置tf的configure文件中需要用到。
过程记录
0、设置代理
后面好几步都涉及到要在网上下载东西,经常报错,这个代理可以每次都设置一下,类似于重启大法好
export http_proxy=公司代理:端口
export https_proxy=公司代理:端口
1、安装及下载bazel
mkdir bazel
export BAZEL_VERSION=0.25.0
cd bazel
curl -x 公司代理:端口 -H "User-Agent: Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/57.0.2987.133 Safari/537.36" -fSsL -O https://github.com/bazelbuild/bazel/releases/download/$BAZEL_VERSION/bazel-$BAZEL_VERSION-installer-linux-x86_64.sh
2、安装bazel
chmod +x bazel-*.sh
./bazel-$BAZEL_VERSION-installer-linux-x86_64.sh --user
source /home/powerop/.bazel/bin/bazel-complete.bash
export PATH=$PATH:$HOME/bin
后面两行是将路径放到环境变量里面,一定要加上。
3、git tensorflow
git config --global http.proxy 公司代理:端口
git clone https://github.com/tensorflow/tensorflow
cd tensorflow
git checkout r1.15
4、设置configure
除了cuda和xla是选的y,其他都选的n,不然会找不到要依赖的文件在哪里
5、编译
- python
bazel build --config=opt --config=cuda --config=mkl //tensorflow/tools/pip_package:build_pip_package
bazel-bin/tensorflow/tools/pip_package/build_pip_package /tmp/tensorflow_pkg
编译好的whl文件在/tmp/tensorflow_pkg文件夹下
cd /tmp/tensorflow_pkg
pip3 install tensorflow-1.14.0-cp36-cp36m-linux_x86_64.whl
python版大功告成
- C++
bazel build --config=mkl --config=opt //tensorflow:libtensorflow_cc.so
- java
bazel build --config=mkl --config=opt \
//tensorflow/java:tensorflow \
//tensorflow/java:libtensorflow_jni
编译好的libtensorflow.jar在bazel-bin/tensorflow/java下面,后续的替换Java版依赖的tf的jar包是公司同事在做了,如果有机会我再来补上他这一部分。
上一篇: 安装pybrain遇到的问题。
下一篇: XMl解析之DOM解析