Advanced Vector Extensions(AVX、Sandy Bridge New Extensionsとも呼ばれる)は、2008年3月にIntelによって提案されたIntelおよびAMDのマイクロプロセッサ用のx86命令セットアーキテクチャに対する拡張機能であり、2011年第1四半期以降にSandy Bridgeプロセッサを搭載したIntelによって最初にサポートされました。 AMDが2011年第3四半期に出荷するBulldozerプロセッサを搭載しています。AVXは、新しい機能、新しい命令、新しいコーディングスキームを提供します。
この警告メッセージは、TensorFlowの共有ライブラリによって出力されます。メッセージが示すように、共有ライブラリには、CPUが使用できる種類の命令が含まれていません。
この警告の原因は何ですか?
TensorFlow 1.6以降、バイナリは以前のCPUでは実行できないAVX命令を使用するようになりました。したがって、古いCPUではAVXを実行できませんが、新しいCPUでは、ユーザーがCPUのソースからテンソルフローを構築する必要があります。以下は、この特定の警告について知っておく必要があるすべての情報です。また、将来の使用のためにこの警告を取り除く方法。
AVXは何をしますか?
特に、AVXはFMA(融合型積和演算)を導入しました。これは浮動小数点の積和演算であり、このすべての演算は1つのステップで実行されます。これにより、問題なく多くの操作を高速化できます。これにより、代数計算がより速く簡単に使用できるようになります。また、ドット積、行列乗算、畳み込みなども行われます。これらは、すべての機械学習トレーニングで最もよく使用される基本的な操作です。AVXおよびFMAをサポートするCPUは、以前のものよりもはるかに高速です。しかし、警告はCPUがAVXをサポートしていることを示しているので、それは良い点です。
デフォルトで使用されないのはなぜですか?
これは、TensorFlowのデフォルトのディストリビューションがCPU拡張なしで構築されているためです。CPU拡張機能により、AVX、AVX2、FMAなどが示されます。この問題をトリガーする命令は、使用可能なデフォルトのビルドではデフォルトで有効になっていません。それらが有効にならない理由は、これをできるだけ多くのCPUとより互換性のあるものにするためです。また、これらの拡張機能を比較すると、GPUよりもCPUの方がはるかに低速です。CPUは小規模な機械学習で使用されますが、中規模または大規模の機械学習トレーニングで使用される場合はGPUの使用が期待されます。
警告の修正!
これらの警告は単なるメッセージです。これらの警告の目的は、ビルドされたTensorFlowをソースから通知することです。ソースからTensorFlowを構築すると、マシン上でより高速になる可能性があります。つまり、これらの警告はすべて、ソースからのTensorFlowの構築であることを示しています。
マシンにGPUがある場合は、AVXサポートからのこれらの警告を無視できます。最も高価なものがGPUデバイスで発送されるためです。そして、このエラーを見たくない場合は、これを追加するだけで無視できます。
メインプログラムコードにOSモジュールをインポートし、そのマッピングオブジェクトを設定する
#警告インポートを無効にするためos os.environ ['TF_CPP_MIN_LOG_LEVEL'] = '2'
ただし、Unixを使用している場合は、bashシェルでexportコマンドを使用します
エクスポートTF_CPP_MIN_LOG_LEVEL = 2
ただし、GPUがなく、CPUをできるだけ使用したい場合は、ここでAVX、AVX2、FMAを有効にして、CPU向けに最適化されたソースからTensorFlowを構築する必要があります。