欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

公司服务器上从源码编译MKL集成的tensorflow

程序员文章站 2022-05-29 08:19:29
...

网上相应的记录很多,但因为是在公司服务器上进行,需要注意代理的配置,而且是在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包是公司同事在做了,如果有机会我再来补上他这一部分。

相关标签: 配环境....