1. ホーム
  2. 機械学習

undefinedTenSorFlow警告 このTensorFlowバイナリが使用するためにコンパイルされていない命令を、あなたのCPUはサポートしています。AVX

2022-02-08 06:37:10

ランタイム環境 : python 3.6.0

サードパーティライブラリ : tensorflow 1.9.0

問題点:

       tensorflowのインストールは、CPUのバージョンですpip install tensorflow清華イメージを使用して、インストールがスムーズに行った、プログラムも正常に実行することができますが、問題は、プログラムが赤いフォントのうち、この文の過程で実行されることです、プログラムは実行できますが、常にこの種のことは特に不快であると感じています...

2019-07-25 09:00:48.684950: I T:\src\github\tensorflow\tensorflow\core\platform\cpu_feature_guard.cc:141]
Your CPU supports instructions that this TensorFlow binary was not compiled to use: AVX2

       どういう意味ですか?

       それは、次のことを意味します。あなたのCPUは、TensorFlowのバイナリが使用するためにコンパイルされていない命令をサポートしています。AVX2

理由: 最近のCPUは、通常の演算・論理に加えて、SSE2、SSE4、AVXなど、拡張となる低レベルの命令が多数用意されています。

AVX命令セットは、Sandy BridgeおよびLarrabeeアーキテクチャの新しい命令セットです。AVXは、従来の128ビットから256ビットに拡張されたものです。 単一命令複数データストリーム . Sandy Bridgeの単一命令マルチストリームアルゴリズムユニットは256ビットに拡張され、データ転送も改善されているため、理論的にはCPUコアの 浮動小数点演算 性能は2倍に向上しています。

インテル AVX 命令セット、で 単一命令複数データストリーム 演算性能の向上を図るとともに、同じMMX/RXを踏襲しています。 SSE命令セット . ただし MMX /SSEは、命令形式から大きく変わったAVX命令の強化が異なります。x86(IA-32/Intel 64)アーキテクチャは、プレフィックス(Prefix)の追加が基本なので、新しい命令が実装され、より複雑な命令が可能になり、x86 CPUの性能が向上しています 。

       もちろんです。

これはCPUのみに限定されます。 GPU をお持ちの場合、ほとんどの高価な処理は GPU デバイス間で分割されるのが一般的であるため(yo が明示的にブックマークしない限り)、これは気にする必要はありません。 その場合、この警告は無視できます。

       では、なぜこのような警告が出るのでしょうか?

SSE4.1, SSE4.2, AVX, AVX2, FMA などの CPU 拡張を使わずにビルドされているためです。 デフォルトバージョン(pip install tensorflowによる) は、できるだけ多くのCPUに対応させることを意図しています。また、これらの拡張機能を使っても、CPUはGPUよりはるかに遅く、中・大規模な機械学習の学習はGPUで行うことを想定している点です。

解決方法 :

  • GPUバージョンがインストールされている場合

       GPUを持っている場合、ほとんどの高価な操作はGPUデバイスに割り当てられるので(明示的に設定されていない限り)、AVXサポートについて気にする必要はありません。その場合、この警告を無視すればよいのです。 

       インポート os 
       os.environ['TF_CPP_MIN_LOG_LEVEL'] = '2' です。

  • CPU版がインストールされている場合(pip install tensorflow)
<ブロッククオート

1. 以下のコードを追加して、警告を無視します。 

       インポート os 
       os.environ['TF_CPP_MIN_LOG_LEVEL'] = '2' です。 

2. TensorFlowのソースコードをコンパイルする 

       GPUを持っておらず、CPUをできるだけ活用したい場合、CPUがAVX、AVX2、FMAをサポートしていれば、CPUに最適化されたソースからtensorflowをビルドすべきです。これについては、このGitHub issueと同様に、このissueで説明されています。Tensorflowはbazelというアドホックなビルドシステムを使っており、ビルドはそれほど簡単ではありませんが、確実に実行可能です。この後、警告が消えるだけでなく、tensorflowのパフォーマンスも改善されるはずです。

実はエラーではなく警告で、osモジュールで警告レベルを設定すればOK