我是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!,这表明安装确实成功,但是还有其他错误。

您知道问题出在哪里以及如何解决吗?

评论

tf起作用了,它吐出的信息只是意味着它没有尽其所能。要摆脱它,您可以从源代码安装它,请参见此处

我也遇到了与您可以成功运行的命令相同的问题。 >>> sess = tf.Session()2017-11-05 18:02:44.670825:IC:\ tf_jenkins \ home \ workspace \ rel-win \ M \ windows \ PY \ 35 \ tensorflow \ core \ platform \ cpu_feature_guard。 cc:137]您的CPU支持有关TensorFlow二进制文件尚未编译为使用的说明:AVX AVX2

@Ben这只是一个警告,但一切都会正常吗? (至少从初学者的角度来看)

要使用AVX指令编译Tensorflow,请参见此答案

在相同情况下,我收到了非常相似的消息,该消息是您的CPU支持该TensorFlow二进制文件未编译为使用的指令:AVX2。

#1 楼

这个警告是关于什么的?

现代CPU除了提供通常的算术和逻辑(称为扩展,例如扩展)外,还提供许多低级指令。 SSE2,SSE4,AVX等。Wikipedia:高级矢量扩展(AVX)是对x86指令集的扩展。
英特尔(Intel)于2008年3月提供服务,并由桑迪(Sandy)于2011年第一季度首次为英特尔提供支持,后来由AMD(AMD)于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'


...或设置export TF_CPP_MIN_LOG_LEVEL=2来忽略此警告(如果您使用的是Unix)。 Tensorflow仍然可以正常工作,但是您不会看到这些烦人的警告。


如果您没有GPU并希望尽可能多地利用CPU,则应在启用CPU的AVX,AVX2和FMA的支持下从针对CPU优化的源构建张量流。在这个问题以及GitHub问题中都对此进行了讨论。 Tensorflow使用一个称为bazel的临时构建系统,构建它并不是那么简单,但是肯定是可行的。此后,不仅警告会消失,而且tensorflow性能也将得到改善。

评论


值得一提的是,TensorFlow Serving具有针对未优化的CPU和优化的CPU(AVX,SSE4.1等)的单独安装。详细信息在这里:github.com/tensorflow/serving/blob/…

–克里斯·弗雷格利(Chris Fregly)
17年12月13日在21:08



根据对该问题的已删除答案,具有GPU(GTX1080Ti)的i9-7900x(Skylake-AVX512)上的AVX512F“在CIFAR10 1000次迭代中获得28%的增益68-> 48s”。您确定在使用GPU时忽略警告是一个很好的建议吗?除非该评论是虚假的,否则至少在某些情况下,CPU指令集似乎会有所帮助。

– Peter Cordes
18年1月3日在22:15

@PeterCordes如果是这样的话,我一定会把它包含在我的答案中。但是,语句“我的模型速度提高了30%”听起来与“我的C ++程序速度提高了30%”相同。究竟是什么型号?是否有手动CPU放置?数据如何传输?例如,在numpy中可能会做很多工作。当然,有可能使CPU成为瓶颈,因此在SO上存在很多问题。通常将其视为错误。

– Maxim
18年1月4日在10:16

@Maxim:删除的答案的全文为“在我的测试中,I9(7900x)GPU(GTX1080Ti)上的AVX512F指令在CIFAR10 1000次迭代中的增益为68s-> 48s,为28%”。因此,不幸的是没有细节(或标点,语法或格式)。

– Peter Cordes
18年1月4日在10:32



显然,如果您使用的是Mac,它将不会使用GPU,stackoverflow.com / questions / 46364917 /…

–帐篷Arthur Dent
18年1月29日在15:00

#2 楼

使用此命令为您的CPU和操作系统更新tensorflow二进制文件

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


可以在此处找到whl文件的下载URL

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

评论


我在Windows 10上尝试了网址stackoverflow.com/questions/47068709/…。我收到一条错误消息说zipfile.BadZipFile:文件不是zip文件

–苏珊莎·蒂丽娜·达亚拉特妮(Thusitha Thilina Dayaratne)
18年7月4日在1:07

当我下载并使用下载的版本时有效

–苏珊莎·蒂丽娜·达亚拉特妮(Thusitha Thilina Dayaratne)
18年7月4日在1:10

任何人收到“错误说zipfile.BadZipFile:文件不是zip文件”的信息,都应该获得像cuda9.2avx2之类的原始链接,该链接为github.com/fo40225/tensorflow-windows-wheel/raw/master/1.9.0/…

– Yeasin Ar Rahman
18年8月21日在13:03

对于Windows,我尝试了这个。使用“ pip uninstall tensorflow”卸载现有的tensorflow,然后使用“ pip install <下载的WHL文件的路径>”将其重新安装。如果您拥有3.6 Python和64位Windows,则将此WHL文件下载到您的计算机-github.com/fo40225/tensorflow-windows-wheel/blob/master/1.10.0/…中(忽略您看到的AMD)。否则,请在github中浏览一步,并搜索正确的WHL。有用

–国王
18/09/15在12:48



为我工作。 Ubuntu 16.04.4,Python 3.5.2,gcc 5.4.0-下载并已安装。当前使用p2.xLarge aws实例。对于自定义对象检测练习,在Faster R-CNN上运行230类时,性能从每次迭代的16秒提高到9秒。

–杏
18-10-16在3:59

#3 楼

使用GPU进行CPU优化

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

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


在CPU上放置输入管道操作可以显着提高性能。在输入管道中使用CPU可以使GPU专注于训练。


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

#4 楼

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

conda install tensorflow-mkl


评论


安装tensorflow-mkl后仍然收到此警告“您的CPU支持该TensorFlow二进制文件未编译为使用的指令:AVX AVX2”。知道为什么吗?

–捏
7月1日14:31

@Pinch:根据此问题的答案,只要MKL到位,警告就可以忽略。

– fuglede
8月14日9:10

@Pinch:特别是,即使使用tensorflow-mkl,我仍然看到对特定工作负载的1.5倍改进,即使我仍然遇到错误。也许有趣的是,我没有看到WSL的改进。在这里,tensorflow和tensorflow-mkl都比Windows基准提高了2倍。

– fuglede
8月14日9:43



#5 楼

对于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


评论


将GPU分成多个部分,并标记为.7z文件。如何将它们拼在一起?

–user3496060
3月8日5:49

@ user3496060我使用winrar解压缩拆分文件

–艾伦·杜尔松(Alan Dursun)
3月18日在1:56

#6 楼

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

评论


如何避免此错误,我需要遵循哪些步骤?

– jitsm555
19年4月24日在8:14

这不是错误。这是一个警告,表明sosorflow不支持cpu的AVX。如果您不想看到它,只需通过设置os.environ ['TF_CPP_MIN_LOG_LEVEL'] ='2'将其关闭

– Hazarapet Tunanyan
19-4-25在7:13



#7 楼

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


卸载tensorflow: >

卸载tensorflow-gpu :(即使不确定是否已安装,也请确保运行此程序)

    pip uninstall tensorflow



安装特定的tensorflow-gpu版本:

    pip uninstall tensorflow-gpu


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

    pip install tensorflow-gpu==2.0.0
    pip install tensorflow_hub
    pip install tensorflow_datasets


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

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")


希望对您有所帮助

评论


ModuleNotFoundError:没有名为“ tensorflow_hub”的模块

– D Adams
4月28日4:13

ModuleNotFoundError:没有名为“ tensorflow_datasets”的模块

– D Adams
4月28日4:14

尝试分别安装模块:pip install tensorflow_hub和pip install tensorflow_datasets

–詹姆斯·布雷特(James Brett)
4月29日下午13:05

是的->只是想对您回答的完整性有所帮助。

– D Adams
4月29日18:13

哦,我不记得必须单独安装它们了。谢谢!

–詹姆斯·布雷特(James Brett)
4月29日21:23

#8 楼

这个库对我有用的是https://pypi.org/project/silence-tensorflow/

安装该库并按照页面上的指示进行操作,它就像一个魅力一样工作!