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

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

最近、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()

(私が見つけたのはテンソルフロー

次のメッセージを受け取りました:

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!。これは、インストールは確かに成功したが、他に問題があることを示しています。

問題が何であるか、そしてそれをどのように解決するか知っていますか?

ベストアンサー1

この警告は何についてのものですか?

現代のCPUは、通常の算術演算や論理演算に加えて、SSE2、SSE4、AVXなどの拡張機能と呼ばれる低レベル命令を多数提供しています。ウィキペディア:

Advanced Vector Extensions ( AVX ) は、Intel と AMD のマイクロプロセッサ向けの x86 命令セット アーキテクチャの拡張機能で、2008 年 3 月に Intel によって提案され、2011 年第 1 四半期に出荷された Sandy Bridge プロセッサで Intel によって最初にサポートされ、その後、2011 年第 3 四半期に出荷された Bulldozer プロセッサで AMD によってサポートされました。AVX は、新しい機能、新しい命令、および新しいコーディング スキームを提供します。

特にAVXは融合乗算累積(FMA) 演算は、ドット積、行列乗算、畳み込みなどの線形代数計算を高速化します。ほぼすべての機械学習トレーニングにはこれらの演算が大量に含まれており、そのため AVX と FMA をサポートする CPU では高速化されます (最大 300%)。警告には、CPU が AVX をサポートしていることが示されています (やった!)。

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

ではなぜ使われないのでしょうか?

テンソルフローのデフォルトディストリビューションが構築されているためCPU拡張なし、SSE4.1、SSE4.2、AVX、AVX2、FMA など。デフォルトのビルド ( のものpip install tensorflow) は、できるだけ多くの CPU と互換性があるように設計されています。もう 1 つの議論は、これらの拡張機能があっても CPU は GPU よりもはるかに遅く、中規模および大規模の機械学習トレーニングは GPU で実行されることが予想されるということです。

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

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

# Just disables the warning, doesn't take advantage of AVX/FMA to run faster
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をビルドする必要があります。この質問そしてまたこのGitHubの問題Tensorflowは、アドホックビルドシステムと呼ばれるバゼルビルドするのはそれほど簡単ではありませんが、確かに実行可能です。その後、警告が消えるだけでなく、TensorFlow のパフォーマンスも向上するはずです。

おすすめ記事