修正:CPUは、このTensorFlowバイナリがAVX2を使用するようにコンパイルされていないという指示をサポートしています



問題を排除するために楽器を試してください

高度なベクトル拡張 (( AVX 、 としても知られている SandyBridgeの新しい拡張機能 )は、2008年3月にIntelによって提案されたIntelおよびAMDのマイクロプロセッサ用のx86命令セットアーキテクチャの拡張機能であり、2011年第1四半期にSandy Bridgeプロセッサが出荷されてIntelによって最初にサポートされ、その後2011年第3四半期にBulldozerプロセッサが出荷されます。AVX新しい機能、新しい命令、および新しいコーディングスキームを提供します。



警告はcmdに表示されます



この警告メッセージは、TensorFlowの共有ライブラリによって出力されます。メッセージが示すように、共有ライブラリには、CPUが使用できる種類の命令が含まれていません。



この警告の原因は何ですか?

TensorFlow 1.6以降、バイナリはAVX命令を使用するようになりましたが、古いCPUでは実行できなくなる可能性があります。そのため、古いCPUはAVXを実行できませんが、新しいCPUの場合、ユーザーはCPUのソースからテンソルフローを構築する必要があります。以下は、この特定の警告について知っておく必要のあるすべての情報です。また、将来の使用のためにこの警告を取り除く方法。

AVXは何をしますか?

特に、AVXはFMA(Fused multiply-add)を導入しました。これは浮動小数点の乗算加算演算であり、このすべての演算は1つのステップで実行されます。これにより、問題なく多くの操作を高速化できます。これにより、代数の計算がより高速で簡単になり、内積、行列の乗算、畳み込みなども可能になります。これらはすべて、すべての機械学習トレーニングで最もよく使用される基本的な操作です。 AVXとFMAをサポートするCPUは、古いCPUよりもはるかに高速になります。ただし、警告にはCPUがAVXをサポートしていることが記載されているため、これは良い点です。

IntelAVXテクノロジー



デフォルトで使用されないのはなぜですか?

これは、TensorFlowのデフォルトのディストリビューションがCPU拡張なしで構築されているためです。 CPU拡張によって、AVX、AVX2、FMAなどが示されます。この問題をトリガーする命令は、使用可能なデフォルトビルドではデフォルトで有効になっていません。これらが有効になっていない理由は、これをできるだけ多くのCPUとの互換性を高めるためです。また、これらの拡張機能を比較すると、GPUよりもCPUの方がはるかに低速です。 CPUは小規模な機械学習で使用されますが、中規模または大規模な機械学習トレーニングで使用される場合はGPUの使用が予想されます。

警告の修正!

これらの警告は単なるメッセージです。これらの警告の目的は、ソースからビルドされたTensorFlowについて通知することです。ソースからTensorFlowをビルドすると、マシン上でより高速になる可能性があります。したがって、これらの警告はすべて、ソースからのTensorFlowの構築について説明しています。

マシンにGPUがある場合は、AVXサポートからのこれらの警告を無視できます。最も高価なものはGPUデバイスにディスパッチされるためです。そして、このエラーをもう見たくない場合は、これを追加するだけで無視できます。

インポート 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を構築する必要があります ここに 。

読んだ2分