我是TensorFlow的新手 . 我最近安装了它(Windows CPU版本)并收到以下消息:
已成功安装tensorflow-1.4.0 tensorflow-tensorboard-0.4.0rc2
然后,当我试图跑
import tensorflow as tf
hello = tf.constant('Hello, TensorFlow!')
sess = tf.Session()
sess.run(hello)
'Hello, TensorFlow!'
a = tf.constant(10)
b = tf.constant(32)
sess.run(a + b)
42
sess.close()
(我通过https://github.com/tensorflow/tensorflow找到了)
我收到以下消息:
2017-11-02 01:56:21.698935:IC:\ tf_jenkins \ home \ workspace \ rel-win \ M \ windows \ PY \ 36 \ tensorflow \ core \ platform \ cpu_feature_guard.cc:137]你的CPU支持指令此TensorFlow二进制文件未编译为使用:AVX AVX2
但是当我跑的时候
import tensorflow as tf
hello = tf.constant('Hello, TensorFlow!')
sess = tf.Session()
print(sess.run(hello))
它按原样运行并输出 Hello, TensorFlow!
,这表明安装确实成功,但还有其他错误 .
你知道问题是什么以及如何解决它吗?谢谢 .
3 回答
这个警告是关于什么的?
除了通常的算术和逻辑之外,现代CPU提供了许多低级指令,称为扩展,例如,扩展 . SSE2,SSE4,AVX等来自Wikipedia:
特别是,AVX引入了fused multiply-accumulate(FMA)操作,这加速了线性代数计算,即点积,矩阵乘法,卷积等 . 几乎每一次机器学习培训都涉及大量的这些操作,因此会更快 . 支持AVX和FMA的CPU(最高300%) . 警告声明您的CPU确实支持AVX(万岁!) .
我'd like to stress here: it'所有关于 CPU only .
为什么不使用呢?
因为张量流默认分布是构建without CPU extensions,例如SSE4.1,SSE4.2,AVX,AVX2,FMA等 . 默认构建(来自
pip install tensorflow
的构建)旨在与尽可能多的CPU兼容 . 另一个论点是,即使使用这些扩展,CPU也比GPU慢很多,并且预计可以在GPU上执行中型和大型机器学习培训 .你应该怎么做?
If you have a GPU ,您不应该关心AVX支持,因为大多数昂贵的操作都将在GPU设备上调度(除非明确设置为不) . 在这种情况下,您可以简单地忽略此警告
...或者如果你看到这些恼人的警告,请设置
export TF_CPP_MIN_LOG_LEVEL=2
.If you don't have a GPU 并希望尽可能多地利用CPU,如果您的CPU支持,则启用AVX,AVX2和FMA you should build tensorflow from the source optimized for your CPU . 它已在this question和this GitHub issue中讨论过 . Tensorflow使用一个名为bazel的临时构建系统,并且构建它并不是那么简单,但肯定是可行的 . 在此之后,警告不仅会消失,张力流性能也会提高 .
使用此命令更新CPU和OS的tensorflow二进制文件
可以在此处找到whl文件的下载URL
https://github.com/lakshayg/tensorflow-build
使用GPU进行CPU优化
即使您拥有GPU并将其用于培训和推理,也可以通过从源安装TensorFlow获得性能提升 . 原因是某些TF操作只有CPU实现,无法在GPU上运行 .
此外,还有一些性能增强技巧可以充分利用您的CPU . TensorFlow's performance guide建议如下:
为了获得最佳性能,您应该编写代码以利用CPU和GPU协同工作,如果有的话,不要将其全部转储到GPU上 . 为您的CPU优化TensorFlow二进制文件可以节省数小时的运行时间,而且您必须执行一次 .