1. ホーム
  2. python

[解決済み】お使いのCPUは、このTensorFlowバイナリが使用するようにコンパイルされていない命令をサポートしています。AVX AVX2

2022-01-23 06:50:29

質問

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

何が問題なのか、どうすれば解決するのか、わかりますか?

解決方法は?

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

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

高度なベクター拡張機能 ( AVX は、x86命令の拡張機能です。 インテルとAMDのマイクロプロセッサ用セット・アーキテクチャで 2008年3月にインテルが発表し、インテルがサンディ・コーポレーションで初めてサポートしました。 ブリッジ・プロセッサは2011年第1四半期に出荷され、その後AMDが出荷しています。 2011年第3四半期に出荷されたBulldozerプロセッサ。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をお持ちの場合 なぜなら、ほとんどの高価な処理は GPU デバイスでディスパッチされるからです (明示的にそうしないように設定されている場合を除く)。この場合、次の方法でこの警告を無視することができます。

# Just disables the warning, doesn't take advantage of AVX/FMA to run faster
import os
os.environ['TF_CPP_MIN_LOG_LEVEL'] = '2'

... あるいは export TF_CPP_MIN_LOG_LEVEL=2 Unixの場合。Tensorflowはいずれにせよ正常に動作していますが、このような煩わしい警告は表示されません。


GPUを搭載していない場合 で、なるべくCPUを活用したい。 に最適化されたソースからtensorflowをビルドする必要があります。 あなたの CPU AVX、AVX2、FMAをサポートしているCPUであれば有効にしてください。これは、以下のサイトで説明されています。 この質問 また このGitHubの課題 . Tensorflow は、以下のようなアドホックなビルドシステムを使用しています。 バゼル で、ビルドはそれほど簡単ではありませんが、確実に実行可能です。この後、警告が消えるだけでなく、tensorflowのパフォーマンスも改善されるはずです。