bazel 从源代码构建 Tensorflow

bazel build Tensorflow from source

我在 python 3.6 中有许多大型深度学习任务,我想从源代码构建 tensorflow(仅 CPU),因为我的带有 Touchbar 13" 的 MacBook Pro 注意到 tensorflow 运行 如果它是使用 SSE4.1 SSE4.2 AVX AVX2 和 FMA 支持构建的,速度会更快。Whosebug 和 GitHub 上有很多关于该主题的问题,我都阅读了它们。None of这解决了为什么它对我不起作用。

我严格按照 https://www.tensorflow.org/install/install_sources

提供的说明进行操作

我的配置是这样的

./configure
Please specify the location of python. [Default is /anaconda/bin/python]: /anaconda/python.app/Contents/MacOS/python
Please specify optimization flags to use during compilation when bazel option "--config=opt" is specified [Default is -march=native]: 
Do you wish to build TensorFlow with Google Cloud Platform support? [y/N] n
No Google Cloud Platform support will be enabled for TensorFlow
Do you wish to build TensorFlow with Hadoop File System support? [y/N] n
No Hadoop File System support will be enabled for TensorFlow
Do you wish to build TensorFlow with the XLA just-in-time compiler (experimental)? [y/N] n
No XLA JIT support will be enabled for TensorFlow
Do you wish to build TensorFlow with VERBS support? [y/N] n
No VERBS support will be enabled for TensorFlow
Found possible Python library paths:
  /anaconda/python.app/Contents/lib/python3.6/site-packages
Please input the desired Python library path to use.  Default is [/anaconda/python.app/Contents/lib/python3.6/site-packages]

Using python library path: /anaconda/python.app/Contents/lib/python3.6/site-packages
Do you wish to build TensorFlow with OpenCL support? [y/N] n
No OpenCL support will be enabled for TensorFlow
Do you wish to build TensorFlow with CUDA support? [y/N] n
No CUDA support will be enabled for TensorFlow
INFO: Starting clean (this may take a while). Consider using --async if the clean takes more than several minutes.
Configuration finished

使用 bazel 0.4.5 然后我尝试按照说明进行构建

bazel build --config=opt //tensorflow/tools/pip_package:build_pip_package

这没有错误地执行,但它给出了数百个警告。我可以提供这样的例子,但几乎没有任何片段会在没有警告的情况下继续进行。

感谢大家的帮助,非常感谢大家。

不幸的是,编译器警告是生活中的事实。但是,其中许多来自被拉入构建的外部库。这些可以用 Bazel 的 "output_filter" 参数过滤掉:

bazel build --config=opt --output_filter='^//tensorflow' //tensorflow/tools/pip_package:build_pip_package

这将输出限制为 TensorFlow 代码生成的警告(您也可以通过这种方式完全关闭警告,但这会带走编译的所有乐趣)。由于用于构建的工具与 TensorFlow 的开发工具更匹配,因此警告更少(我得到一些关于多行注释延续、一堆 signed/unsigned 整数比较,以及一些关于 "may" 未初始化)。

None 其中表示明确的错误,只是有时容易出错的代码模式。如果编译器知道出了什么问题,它就会发出一个错误。这是一个很长的方式说没有什么可担心的。