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