csg*_*csg 577 cpu avx tensorflow
我是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()
Run Code Online (Sandbox Code Playgroud)
(我通过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))
Run Code Online (Sandbox Code Playgroud)
它运行应该和输出Hello, TensorFlow!
,这表明安装确实成功,但还有其他错误.
你知道问题是什么以及如何解决它?谢谢.
Max*_*xim 734
除了通常的算术和逻辑之外,现代CPU提供了许多低级指令,称为扩展,例如SSE2,SSE4,AVX等.来自维基百科:
高级矢量扩展(AVX)是英特尔和AMD于2008年3月提出的英特尔和AMD微处理器的x86指令集架构的扩展,并首次得到英特尔的支持,其中Sandy Bridge处理器于2011年第一季度发布,之后由AMD推出Bulldozer处理器在2011年第3季度.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'
Run Code Online (Sandbox Code Playgroud)
...或者通过设置export TF_CPP_MIN_LOG_LEVEL=2
你是否在Unix上.无论如何Tensorflow工作正常,但你不会看到这些烦人的警告.
如果没有GPU,并希望利用CPU尽可能的,你应该从优化源建立tensorflow 您的 CPU与AVX,AVX2,并启用了FMA如果你的CPU支持他们.这个问题以及GitHub问题已经讨论过了.Tensorflow使用一个名为bazel的ad-hoc构建系统,并且构建它并不是那么简单,但肯定是可行的.在此之后,警告不仅会消失,张力流性能也会提高.
Him*_*der 140
使用此命令更新CPU和OS的tensorflow二进制文件
pip install --ignore-installed --upgrade "Download URL"
Run Code Online (Sandbox Code Playgroud)
可以在此处找到whl文件的下载URL
https://github.com/lakshayg/tensorflow-build
Wes*_*sam 23
即使您拥有GPU并将其用于培训和推理,也可以通过从源安装TensorFlow获得性能提升.原因是某些TF操作只有CPU实现,无法在GPU上运行.
此外,还有一些性能增强技巧可以充分利用您的CPU. TensorFlow的性能指南建议如下:
在CPU上放置输入管道操作可以显着提高性能.利用CPU作为输入管道可以让GPU专注于培训.
为了获得最佳性能,您应编写代码以利用CPU和GPU协同工作,如果有的话,不要将其全部转储到GPU上.让TensorFlow二进制文件针对您的CPU进行优化可以节省数小时的运行时间并且您必须执行一次.
Fla*_*ayn 11
对于Windows,您可以检查由AVX2编译的TensorFlow车轮的官方英特尔MKL优化。此解决方案加快了我的推断速度,达到x3。
conda install tensorflow-mkl
Run Code Online (Sandbox Code Playgroud)
我发现解决此问题的最简单方法是卸载所有内容,然后安装特定版本的 tensorflow-gpu:
pip uninstall tensorflow
Run Code Online (Sandbox Code Playgroud)
pip uninstall tensorflow-gpu
Run Code Online (Sandbox Code Playgroud)
pip install tensorflow-gpu==2.0.0
pip install tensorflow_hub
pip install tensorflow_datasets
Run Code Online (Sandbox Code Playgroud)
您可以通过将以下代码添加到 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")
Run Code Online (Sandbox Code Playgroud)
运行文件,然后输出应该是这样的:
Version: 2.0.0
Eager mode: True
Hub Version: 0.7.0
GPU is available
Run Code Online (Sandbox Code Playgroud)
希望这可以帮助
对于Windows(感谢所有者f040225),请转到此处:https : //github.com/fo40225/tensorflow-windows-wheel,以结合“ tf + python + cpu_instruction_extension”为您的环境获取URL。然后使用此cmd进行安装:
pip install --ignore-installed --upgrade "URL"
Run Code Online (Sandbox Code Playgroud)
如果遇到“文件不是zip文件”错误,请将.whl下载到本地计算机,然后使用此cmd进行安装:
pip install --ignore-installed --upgrade /path/target.whl
Run Code Online (Sandbox Code Playgroud)
如果您使用的是tensorflow的pip版本,则意味着它已经被编译,并且您正在安装它。基本上是安装tensorflow-gpu,但是当您从存储库下载并尝试构建时,应该使用CPU AVX支持来构建它。如果忽略它,则每次在cpu上运行时都会收到警告。
归档时间: |
|
查看次数: |
424567 次 |
最近记录: |