1. ホーム
  2. TensorFlow

Running tensorflow program prompts Your CPU supports instructions that this TensorFlow binary was not compiled to use:

2022-01-23 11:01:59
<パス

tensorflowプログラムを実行すると、「Your CPU supports instructions that this TensorFlow binary was not compiled to use」と表示されます。AVX2 FMA

質問

今日、tensorflowのプログラムを実行していたら、このような問題が

<マーク おそらく、あなたのCPUはAVX拡張をサポートしているが、インストールしたTensorFlowのバージョンはAVX用にコンパイルされていないことを意味します。

理由を教えてください。
最近のCPUには、通常の演算や論理に加えて、SSE2、SSE4、AVXなど、拡張命令と呼ばれる低レベルの命令が多数用意されている。ウィキペディアより

<ブロッククオート

AVX(Advanced Vector Extensions)は、2008年3月にインテルが提案し、2011年第1四半期にインテルがSandy Bridgeプロセッサ、2011年第3四半期にAMDがBulldozerプロセッサを通じて初めて導入した、インテルおよびAMDマイクロプロセッサのx86命令セットアーキテクチャに対する拡張機能であり、新たな機能、新しい命令および新しいエンコーディングスキームを提供します。
特にAVXは、ドット積、行列の乗算、畳み込みなどの線形代数計算を高速化するFMA(fused multiplicative accumulation)演算を導入しています。ほぼすべての機械学習トレーニングは、これらの演算を多く含むため、AVXとFMA(最大300%)をサポートするCPUは高速です。この警告は、お使いのCPUがAVXをサポートしていることを示しています(万歳!)。

ここで強調したいのは

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

では、なぜこのような警告が表示されるのでしょうか。

デフォルトのtensorflowの配布は、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のパフォーマンスも改善されるはずです。


参考ブログ記事
著者 タオは、プログラミングを学ぶためにあなたを取る
出典 CSDN
元の記事 https://blog.csdn.net/hq86937375/article/details/79696023