首页 文章

您的CPU支持未编译此TensorFlow二进制文件的指令:AVX AVX2

提问于
浏览
346

我是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 回答

  • 14

    这个警告是关于什么的?

    除了通常的算术和逻辑之外,现代CPU提供了许多低级指令,称为扩展,例如,扩展 . SSE2,SSE4,AVX等来自Wikipedia

    高级矢量扩展(AVX)是英特尔和AMD于2008年3月提出的英特尔和AMD微处理器的x86指令集架构的扩展,首先得到英特尔的支持,其中Sandy Bridge处理器于2011年第一季度发布,之后由AMD推出Bulldozer处理器2011年第3季度发货.AVX提供新功能,新指令和新的编码方案 .

    特别是,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设备上调度(除非明确设置为不) . 在这种情况下,您可以简单地忽略此警告

    # 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 .


    If you don't have a GPU 并希望尽可能多地利用CPU,如果您的CPU支持,则启用AVX,AVX2和FMA you should build tensorflow from the source optimized for your CPU . 它已在this questionthis GitHub issue中讨论过 . Tensorflow使用一个名为bazel的临时构建系统,并且构建它并不是那么简单,但肯定是可行的 . 在此之后,警告不仅会消失,张力流性能也会提高 .

  • 81

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

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

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

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

  • 474

    使用GPU进行CPU优化

    即使您拥有GPU并将其用于培训和推理,也可以通过从源安装TensorFlow获得性能提升 . 原因是某些TF操作只有CPU实现,无法在GPU上运行 .

    此外,还有一些性能增强技巧可以充分利用您的CPU . TensorFlow's performance guide建议如下:

    在CPU上放置输入管道操作可以显着提高性能 . 利用CPU作为输入管道可以让GPU专注于培训 .

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

相关问题