1. ホーム
  2. スクリプト・コラム
  3. パイソン

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

2021-12-28 15:22:34

WindowsにTensorFlowをインストールしました。

<ブロッククオート

tensorflow-1.4.0 tensorflow-tensorboard-0.4.0rc2 のインストールに成功しました。

TensorFlowのコードを実行しようとすると:。

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: I C:\tf_jenkins_homeworkspace﹑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))

を出力すればOKです。 Hello, TensorFlow! .

解決方法は?

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

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

高度なベクター拡張機能 ( AVX 2008年3月にインテルが提案し、インテルが2011年第1四半期に出荷したSandy Bridgeプロセッサで、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のパフォーマンスも改善されるはずです。