我对TensorFlow不熟悉。我最近安装了它(Windows CPU版本),并收到以下消息:
Successfully installed 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: I C:\tf_jenkins\home\workspace\rel-win\M\windows\PY\36\tensorflow\core\platform\cpu_feature_guard.cc:137] Your CPU supports instructions that this TensorFlow binary was not compiled to use: AVX AVX2
但是当我跑的时候
import tensorflow as tf
hello = tf.constant('Hello, TensorFlow!')
sess = tf.Session()
print(sess.run(hello))
它按原样运行并输出Hello, TensorFlow!
,这表明安装确实成功,但还有其他错误。
你知道问题是什么以及如何解决吗?
这个警告是关于什么的?
除了通常的算术和逻辑外,现代CPU还提供许多低级指令,称为扩展,例如来自Wikipedia的SSE2、SSE4、AVX等:
特别地,AVX引入了fused multiply-accumulate(FMA)运算,加速了线性代数运算,即点积运算、矩阵乘法运算、卷积运算等。几乎每一个机器学习训练都涉及到大量的这些运算,因此在支持AVX和FMA的CPU上速度会更快(高达300%)。警告说明您的CPU确实支持AVX(万岁!)。
我想在这里强调一下:这都是关于CPU的。
那为什么不用呢?
因为tensorflow默认分布是构建在without CPU extensions上的,例如SSE4.1、SSE4.2、AVX、AVX2、FMA等。默认构建(来自
pip install tensorflow
)旨在与尽可能多的cpu兼容。另一种观点是,即使使用这些扩展,CPU也比GPU慢得多,而且预计中大型机器学习培训将在GPU上进行。你该怎么办?
如果您有一个GPU,您不应该关心AVX支持,因为最昂贵的操作将在GPU设备上分派(除非显式设置为not)。在这种情况下,您可以忽略此警告
。。。或者在Unix上设置
export TF_CPP_MIN_LOG_LEVEL=2
。Tensorflow运行良好,但您不会看到这些烦人的警告。如果您没有GPU,并且希望尽可能多地利用CPU,您应该从为您的CPU优化的源构建tensorflow,如果您的CPU支持它们,则启用AVX、AVX2和FMA。已经在this question和this GitHub issue中讨论过了。Tensorflow使用一个名为bazel的特别构建系统,构建它并不是那么简单,但肯定是可行的。在此之后,不仅警告将消失,tensorflow的性能也应该提高。
用GPU优化CPU
从源代码安装TensorFlow可以提高性能,即使您有GPU并将其用于训练和推理。原因是某些TF操作只有CPU实现,不能在GPU上运行。
此外,还有一些性能增强技巧可以很好地利用您的CPU。TensorFlow's performance guide建议如下:
为了获得最佳性能,您应该编写代码以利用您的CPU和GPU协同工作,如果您有一个GPU,则不要将其全部转储到GPU上。 为您的CPU优化TensorFlow二进制文件可以节省运行时间,而且您必须执行一次。
使用此命令更新CPU&O的tensorflow二进制文件
whl文件的下载url可以在这里找到
https://github.com/lakshayg/tensorflow-build
相关问题 更多 >
编程相关推荐