您的CPU支持该TensorFlow二进制文件未编译为使用的指令:AVX AVX2
tensorflow
21
0

我是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!运行并输出Hello, TensorFlow! ,表示安装确实成功,但还有其他错误。

您知道问题是什么以及如何解决?

参考资料:
Stack Overflow
收藏
评论
共 7 个回答
高赞 时间 活跃

使用GPU进行CPU优化

即使您拥有GPU并将其用于训练和推理,也可以通过从源代码安装TensorFlow来获得性能提升。原因是某些TF操作仅具有CPU实现,不能在您的GPU上运行。

此外,还有一些性能增强技巧可以充分利用您的CPU。 TensorFlow的性能指南建议以下内容:

将输入管道操作放在CPU上可以显着提高性能。在输入管道中使用CPU将使GPU腾出精力来进行培训。

为了获得最佳性能,您应该编写代码以利用CPU和GPU协同工作,如果有的话,不要将其全部转储到GPU上。为您的CPU优化TensorFlow二进制文件可以节省数小时的运行时间,因此您只需执行一次。

收藏
评论

我发现解决此问题的最简单方法是卸载所有内容,然后安装特定版本的tensorflow-gpu:

  1. 卸载tensorflow:
    pip uninstall tensorflow
  1. 卸载tensorflow-gpu :(即使不确定是否已安装,也请确保运行此程序)
    pip uninstall tensorflow-gpu
  1. 安装特定的tensorflow-gpu版本:
    pip install tensorflow-gpu==2.0.0

您可以通过将以下代码添加到python文件中来检查是否可行:

from __future__ import absolute_import, division, print_function, unicode_literals

import numpy as np

import tensorflow as tf
import tensorflow_hub as hub
import tensorflow_datasets as tfds

print("Version: ", tf.__version__)
print("Eager mode: ", tf.executing_eagerly())
print("Hub Version: ", hub.__version__)
print("GPU is", "available" if tf.config.experimental.list_physical_devices("GPU") else "NOT AVAILABLE")

运行文件,然后输出应如下所示:

Version:  2.0.0
Eager mode:  True
Hub Version:  0.7.0
GPU is available

希望这可以帮助

收藏
评论

这是什么警告?

现代CPU提供大量的低级别的指示,除了一般的算术和逻辑,被称为扩展,例如SSE2,SSE4,AVX等。从维基百科

Advanced Vector ExtensionsAVX )是Intel在2008年3月提出的针对Intel和AMD微处理器的x86指令集体系结构的扩展,并由Intel首先在2011年第一季度发布的Sandy Bridge处理器中得到支持,随后由AMD在Bulldozer处理器中发布。在2011年第三季度发布。AVX提供了新功能,新指令和新编码方案。

特别是,AVX引入了融合乘法累加 (FMA)运算,从而加快了线性代数的计算速度,即点积,矩阵乘法,卷积等。几乎每个机器学习训练都涉及很多这些运算,因此将在支持AVX和FMA的CPU上速度更快(最高300%)。该警告指出您的CPU确实支持AVX(万岁!)。

我想在这里强调一下:这CPU有关。

那为什么不使用呢?

由于tensorflow默认发行版是在没有CPU扩展的情况下构建的,例如SSE4.1,SSE4.2,AVX,AVX2,FMA等。默认构建(来自pip install tensorflow )旨在与尽可能多的CPU兼容。另一个论点是,即使有了这些扩展,CPU也比GPU慢很多,并且期望在GPU上进行中型和大型的机器学习培训。

你该怎么办?

如果您有GPU ,则不必在乎AVX的支持,因为大多数昂贵的操作都会在GPU设备上调度(除非明确设置为不这样做)。在这种情况下,您可以通过以下方式忽略此警告

# Just disables the warning, doesn't enable AVX/FMA
import os
os.environ['TF_CPP_MIN_LOG_LEVEL'] = '2'

...或者如果您在Unix上,则设置export TF_CPP_MIN_LOG_LEVEL=2 。无论如何,Tensorflow都运行良好,但是您不会看到这些烦人的警告。


如果没有GPU,并希望利用CPU尽可能的, 你应该与 AVX,AVX2 你的 CPU优化的源代码编译tensorflow,如果你的CPU支持他们启用了FMA。在这个问题以及GitHub问题中都对此进行了讨论。 Tensorflow使用了一个称为bazel的临时构建系统,构建它并不是那么简单,但是肯定是可行的。此后,不仅警告会消失,而且tensorflow性能也应提高。

收藏
评论

对于Windows(感谢所有者f040225),请转到此处: https : //github.com/fo40225/tensorflow-windows-wheel,以结合“ tf + python + cpu_instruction_extension”为您的环境获取URL。然后使用此cmd进行安装:

pip install --ignore-installed --upgrade "URL"

如果遇到“文件不是zip文件”错误,请将.whl下载到本地计算机,然后使用此cmd进行安装:

pip install --ignore-installed --upgrade /path/target.whl
收藏
评论

使用此命令为您的CPU和OS更新tensorflow二进制文件

pip install --ignore-installed --upgrade "Download URL"

您可以在此处找到whl文件的下载网址

https://github.com/lakshayg/tensorflow-build

收藏
评论

如果您使用的是tensorflow的pip版本,则意味着它已经被编译,并且您正在安装它。基本上是安装tensorflow-gpu,但是当您从存储库下载并尝试构建时,应该使用CPU AVX支持来构建它。如果忽略它,则每次在cpu上运行时都会收到警告。

收藏
评论

对于Windows,您可以检查由AVX2编译的TensorFlow车轮的官方英特尔MKL优化 。此解决方案加快了我的推断速度,达到x3。

conda install tensorflow-mkl
收藏
评论
新手导航
  • 社区规范
  • 提出问题
  • 进行投票
  • 个人资料
  • 优化问题
  • 回答问题

关于我们

常见问题

内容许可

联系我们

@2020 AskGo
京ICP备20001863号