CPUは、このTensorFlowバイナリが使用するようにコンパイルされていないという命令をサポートしています。

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は、拡張機能として知られている通常の算術演算とロジックに加えて、多くの低レベルの命令を提供します。 SSE2、SSE4、AVXなど。Wikipediaから:

Advanced Vector Extensions (AVX) are extensions to the x86 instruction
set architecture for microprocessors from Intel and AMD proposed by
Intel in March 2008 and first supported by Intel with the Sandy
Bridge processor shipping in Q1 2011 and later on by AMD with the
Bulldozer processor shipping in Q3 2011. AVX provides new features,
new instructions and a new coding scheme.

特に、AVXはfused multiply-accumulate(FMA)操作を導入し、線形代数の計算、つまりドット積、行列乗算、畳み込みなどを高速化します。ほとんどすべての機械学習トレーニングはこれらの操作の多くを含むため、より高速になります。 AVXおよびFMAをサポートするCPU(最大300%)。警告は、CPUがAVXをサポートしていることを示しています(やっと!)。

ここで強調したいのは、CPUのみに関することです。

なぜ使用されないのですか?

Tensorflowのデフォルトの配布は、SSE4.1、SSE4.2、AVX、AVX2、FMAなどのwithout CPU extensionsでビルドされているためです。デフォルトのビルド(pip install tensorflowからの1つ)は、できるだけ多くのCPUと互換性があります。もう1つの議論は、これらの拡張機能を使用してもCPUはGPUよりもはるかに低速であり、GPUで中規模および大規模の機械学習トレーニングを実行することが期待されるということです。

あなたは何をするべきか?

GPUを使用している場合、ほとんどの高価なopはGPUデバイスにディスパッチされるため(明示的に設定しない限り)、AVXサポートを気にする必要はありません。この場合、この警告を単に無視することができます

# 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を可能な限り使用したい場合は、CPUがサポートしている場合、AVX、AVX2、およびFMAを有効にしてCPUに最適化されたソースからテンソルフローを構築する必要があります。 Tensorflowはthis questionおよびthis GitHub issueで説明されています。Tensorflowはbazelと呼ばれるアドホックビルドシステムを使用しており、ビルドはそれほど簡単ではありませんが、確実に実行できます。この後、警告が消えるだけでなく、テンソルフローのパフォーマンスも向上するはずです。

転載記事の出典を記入してください: CPUは、このTensorFlowバイナリが使用するようにコンパイルされていないという命令をサポートしています。 - コードログ