【解決法】TensorFlowの警告「Your CPU supports instructions that this TensorFlow binary was not compiled to use: AVX2」の原因と対処方法
AVX(Advanced Vector Extensions)とは
Advanced Vector Extensions(AVX、別名Sandy Bridge New Extensions)は、Intelが2008年3月に提唱した、IntelおよびAMD製マイクロプロセッサ向けx86命令セットアーキテクチャの拡張仕様です。Intelでは2011年第1四半期に出荷されたSandy Bridgeプロセッサで初めてサポートされ、その後AMDでも2011年第3四半期に出荷されたBulldozerプロセッサで採用されました。AVXは新機能・新命令・新しいコーディング方式を提供し、ベクトル演算の処理性能を大幅に向上させます。
この警告メッセージは、TensorFlowの共有ライブラリが出力しているものです。メッセージの内容が示すように、共有ライブラリにはお使いのCPUが実際に利用可能な命令セットが含まれていません。
この警告が発生する原因は?
TensorFlow 1.6以降、公式バイナリはAVX命令を使用するようにビルドされているため、古いCPUでは動作しなくなりました。つまり、旧世代のCPUではAVX命令を実行できず、比較的新しいCPUをお使いの場合でも、自分のCPUに合わせた最適化を行うにはTensorFlowをソースからビルドし直す必要があります。本記事では、この警告に関する基礎知識と、今後この警告を取り除くための具体的な方法を解説します。
AVXは何をしてくれるのか?
AVXの大きな特徴のひとつが、FMA(Fused Multiply-Add:融合積和演算)の導入です。これは浮動小数点の乗算と加算をひとつのステップで実行できる命令であり、多くの演算処理を問題なく高速化します。これにより、代数計算がより速く簡潔になり、内積(ドット積)、行列の掛け算、畳み込み演算なども効率化されます。これらはいずれも機械学習のモデル学習において最も頻繁に使われる基本演算です。AVXとFMAに対応したCPUは、非対応の旧世代CPUと比べて格段に高速に動作します。そして今回の警告は「お使いのCPUはAVXをサポートしている」ということを示しているため、むしろ好都合な状況だと言えます。
なぜデフォルトでは有効化されていないのか?
その理由は、TensorFlowの公式配布版(デフォルトディストリビューション)が、CPU拡張機能を有効にせずにビルドされているためです。ここでいうCPU拡張機能とは、AVX、AVX2、FMAなどのことを指します。この警告の原因となる命令は、標準ビルドでは意図的に無効化されています。これは、できるだけ多くの種類のCPUとの互換性を確保するためです。また、仮にこれらの拡張機能を有効にしても、CPU単体の性能はGPUには遠く及びません。小規模な機械学習であればCPUでも十分ですが、中規模〜大規模な学習を行う場合はGPUの使用が前提となります。
警告を解消する方法
まず理解しておきたいのは、この警告はあくまで「情報提供のためのメッセージ」であり、エラーではないという点です。TensorFlowをソースからビルドすれば、お使いのマシン上でより高速に動作させられる、ということを知らせてくれているだけです。
もしマシンにGPUが搭載されているなら、AVX関連の警告は無視して問題ありません。重い処理の多くはGPU側にディスパッチされるためです。それでもこのメッセージを表示したくない場合は、以下のコードを追加するだけで非表示にできます。
メインプログラムのコード内でOSモジュールをインポートし、環境変数のマッピングオブジェクトを設定します。
# 警告を無効化する
import os
os.environ['TF_CPP_MIN_LOG_LEVEL'] = '2'
Unix系OS(LinuxやmacOS)をご利用の場合は、bashシェルでexportコマンドを使って設定することもできます。
export TF_CPP_MIN_LOG_LEVEL=2
一方、GPUをお持ちでなく、CPUの性能を最大限に引き出したい場合は、AVX・AVX2・FMAを有効化した状態で、お使いのCPU向けに最適化されたTensorFlowをソースからビルドすることをおすすめします。そうすることで、警告が消えるだけでなく、学習速度の大幅な向上も期待できます。
-
Windows 10で「Java(TM) Platform SE Binaryが応答していません」エラーを解決する11の方法
MinecraftなどのJavaベースのアプリケーションを起動しようとした際、アプリが応答しなくなり、強制終了するしかない経験はありませんか?その際、以下のようなエラーメッセージが表示されることがあります。「Java(TM) Platform SE binaryは動作を停止しました。問題が発生したため、プログラムが正しく動作しなくなりました。プログラムを終了し、解決策が利用可能な場合は後ほど通知いたします」本記事では、Minecraftを開いたときに発生するこのエラーをはじめ、Javaベースのアプリが動作しなくなる問題の原因と、確実な解決策を順番にご紹介します。Windows 10でJava(
-
【Windows 10】「入力された環境オプションが見つかりません」エラーの解決方法
「入力された環境オプションが見つかりません」というエラーは、Windows 10ユーザーがときどき遭遇するシステムエラーです。この問題は、WindowsアップデートやWindowsファイルの破損によって引き起こされます。Windows 10の詳細なシステム設定が適切に行われていない場合、環境変数に予期しない変更が生じ、コンピューターにさまざまなトラブルを引き起こす可能性があります。 本記事では、環境変数の正しい設定方法と、このエラーが発生する主な原因について詳しく解説します。 Windows 10で「入力された環境オプションが見つかりません」エラーを修正する方法 このエラーにはさまざまな原因