1. ホーム
  2. サーバー
  3. CPU

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

2022-01-21 23:28:27
<パス

質問です。

TensorFlow(CPU版)をpip install tensorflow installationでインストールしたところ、インストールはすべてうまくいったのですが、簡単なプログラムを実行すると、次のような現象に遭遇しました。

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

理由

最近の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サポートについて気にする必要はありません。その場合、この警告を無視すればよいのです。


    import os
    os.environ['TF_CPP_MIN_LOG_LEVEL'] = '2'

  • CPU版がインストールされている場合(pip install tensorflow)

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


    import os
    os.environ['TF_CPP_MIN_LOG_LEVEL'] = '2'
    2. TensorFlowのソースコードをコンパイルします。
    GPUを持っておらず、できるだけCPUを活用したい場合、CPUがAVX、AVX2、FMAをサポートしていれば、CPUに最適化されたソースからtensorflowをビルドする必要があります。 この問題 は、この問題で、また、この GitHubの課題 . Tensorflowはbazelというアドホックなビルドシステムを使用しており、ビルドはそれほど簡単ではありませんが、確実に実行することが可能です。この後、警告が消えるだけでなく、tensorflowのパフォーマンスも改善されるはずです。

参考

https://stackoverflow.com/questions/47068709/your-cpu-supports-instructions-that-this-tensorflow-binary-was-not-compiled-to-u? answerertab=votes#tab-top