这是运行脚本检查Tensorflow是否工作时收到的消息:

I tensorflow/stream_executor/dso_loader.cc:125] successfully opened CUDA library libcublas.so.8.0 locally
I tensorflow/stream_executor/dso_loader.cc:125] successfully opened CUDA library libcudnn.so.5 locally
I tensorflow/stream_executor/dso_loader.cc:125] successfully opened CUDA library libcufft.so.8.0 locally
I tensorflow/stream_executor/dso_loader.cc:125] successfully opened CUDA library libcuda.so.1 locally
I tensorflow/stream_executor/dso_loader.cc:125] successfully opened CUDA library libcurand.so.8.0 locally
W tensorflow/core/platform/cpu_feature_guard.cc:95] The TensorFlow library wasn't compiled to use SSE4.2 instructions, but these are available on your machine and could speed up CPU computations.
W tensorflow/core/platform/cpu_feature_guard.cc:95] The TensorFlow library wasn't compiled to use AVX instructions, but these are available on your machine and could speed up CPU computations.
I tensorflow/stream_executor/cuda/cuda_gpu_executor.cc:910] successful NUMA node read from SysFS had negative value (-1), but there must be at least one NUMA node, so returning NUMA node zero

我注意到它提到了SSE4.2和AVX,

什么是SSE4.2和AVX? 这些SSE4.2和AVX如何提高Tensorflow任务的CPU计算。 如何使用这两个库使Tensorflow编译?


当前回答

这是最简单的方法。只有一步。

它对速度有很大的影响。以我为例,每一步训练所花费的时间几乎减半。

请参考 tensorflow的自定义构建

其他回答

要隐藏这些警告,可以在实际代码之前执行此操作。

import os
os.environ['TF_CPP_MIN_LOG_LEVEL']='2'
import tensorflow as tf

2.0兼容方案:

在终端(Linux/MacOS)或命令提示符(Windows)中执行以下命令,使用Bazel安装Tensorflow 2.0:

git clone https://github.com/tensorflow/tensorflow.git
cd tensorflow

#The repo defaults to the master development branch. You can also checkout a release branch to build:
git checkout r2.0

#Configure the Build => Use the Below line for Windows Machine
python ./configure.py 

#Configure the Build => Use the Below line for Linux/MacOS Machine
./configure
#This script prompts you for the location of TensorFlow dependencies and asks for additional build configuration options. 

#Build Tensorflow package

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

#GPU support
bazel build --config=opt --config=cuda --define=no_tensorflow_py_deps=true //tensorflow/tools/pip_package:build_pip_package

当从源代码构建TensorFlow时,您将运行configure脚本。configure脚本问的其中一个问题如下:

Please specify optimization flags to use during compilation when bazel option "--config=opt" is specified [Default is -march=native]

configure脚本将您指定的标志附加到构建TensorFlow pip包的bazel命令。一般来说,你可以用以下两种方式之一来回应这个提示:

如果你构建TensorFlow的CPU类型与你将要运行TensorFlow的CPU类型相同,那么你应该接受默认值(-march=native)。这个选项将针对您机器的CPU类型优化生成的代码。 如果你在一种CPU类型上构建TensorFlow,但将在另一种CPU类型上运行TensorFlow,那么可以考虑提供gcc中描述的更具体的优化标志 文档。

在按照前面的项目列表配置TensorFlow之后,您应该能够通过在运行的任何bazel命令中添加——config=opt标志来构建针对目标CPU的完全优化的TensorFlow。

多亏了所有这些回复和一些试验和错误,我成功地将它安装在Mac上。所以分享一下我的解,也许对别人有用。

请遵循文档-从源代码安装TensorFlow的说明 当提示 当bazel选项"——config=opt"被指定时,请指定在编译过程中使用的优化标志[默认值是-march=native]

然后复制粘贴这个字符串:

-mavx -mavx2 -mfma -msse4.2

(默认选项会导致错误,其他一些标志也是如此。我没有得到错误与上述标志。顺便说一句,我回答了n个其他问题)

安装后,我验证了在训练深度模型时,相对于基于默认轮子的另一个安装(在macOS上安装TensorFlow),速度提高了~2倍到2.5倍

希望能有所帮助

这是最简单的方法。只有一步。

它对速度有很大的影响。以我为例,每一步训练所花费的时间几乎减半。

请参考 tensorflow的自定义构建