警告 お使いのCPUは、このTensorFlowバイナリが使用するためにコンパイルされていない命令をサポートしています。AVX2 FMA
質問です。
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. 以下のコードを追加して、警告を無視します。
2. TensorFlowのソースコードをコンパイルします。
import os
os.environ['TF_CPP_MIN_LOG_LEVEL'] = '2'
GPUを持っておらず、できるだけCPUを活用したい場合、CPUがAVX、AVX2、FMAをサポートしていれば、CPUに最適化されたソースからtensorflowをビルドする必要があります。 この問題 は、この問題で、また、この GitHubの課題 . Tensorflowはbazelというアドホックなビルドシステムを使用しており、ビルドはそれほど簡単ではありませんが、確実に実行することが可能です。この後、警告が消えるだけでなく、tensorflowのパフォーマンスも改善されるはずです。
参考
関連
-
Ubuntu16 Nvidiaドライバ(GTX1060グラフィックカード)をインストールします。
-
解決 このTensorFlowバイナリがコンパイルされていない命令を、お使いのCPUがサポートしています。
-
TclError: 表示名がなく、$DISPLAY環境変数もない。
-
TclError: 表示名がなく、$DISPLAY環境変数もない。
-
TclError: 表示名がなく、$DISPLAY環境変数もない。
-
Win10でのTensorFlowインストールエラーの解決:お使いのCPUは、このTensorFlowバイナリが使用するためにコンパイルされていない命令をサポートしています。AVX AVX2
最新
-
nginxです。[emerg] 0.0.0.0:80 への bind() に失敗しました (98: アドレスは既に使用中です)
-
htmlページでギリシャ文字を使うには
-
ピュアhtml+cssでの要素読み込み効果
-
純粋なhtml + cssで五輪を実現するサンプルコード
-
ナビゲーションバー・ドロップダウンメニューのHTML+CSSサンプルコード
-
タイピング効果を実現するピュアhtml+css
-
htmlの選択ボックスのプレースホルダー作成に関する質問
-
html css3 伸縮しない 画像表示効果
-
トップナビゲーションバーメニュー作成用HTML+CSS
-
html+css 実装 サイバーパンク風ボタン
おすすめ
-
ハートビート・エフェクトのためのHTML+CSS
-
HTML ホテル フォームによるフィルタリング
-
HTML+cssのボックスモデル例(円、半円など)「border-radius」使いやすい
-
HTMLテーブルのテーブル分割とマージ(colspan, rowspan)
-
ランダム・ネームドロッパーを実装するためのhtmlサンプルコード
-
Html階層型ボックスシャドウ効果サンプルコード
-
QQの一時的なダイアログボックスをポップアップし、友人を追加せずにオンラインで話す効果を達成する方法
-
sublime / vscodeショートカットHTMLコード生成の実装
-
HTMLページを縮小した後にスクロールバーを表示するサンプルコード
-
html のリストボックス、テキストフィールド、ファイルフィールドのコード例