TensorFlowは初めてです。私は最近それをインストールしました(Windows CPUバージョン)そして以下のメッセージを受け取りました:
Tensorflow-1.4.0が正常にインストールされました。tensorflow-tensorboard-0.4.0rc2
それから私が走ろうとしたとき
import tensorflow as tf
hello = tf.constant('Hello, TensorFlow!')
sess = tf.Session()
sess.run(hello)
'Hello, TensorFlow!'
a = tf.constant(10)
b = tf.constant(32)
sess.run(a + b)
42
sess.close()
(私は https://github.com/tensorflow/tensorflow を通して見つけました)
私は次のメッセージを受け取りました:
2017-11-02 01:56:21.698935:IC:\ tf_jenkins\home\workspace\rel-win\M\windows\PY\36\tensorflow\core\platform\cpu_feature_guard.cc:137]これをサポートしているTensorFlowバイナリが使用するようにコンパイルされていません:AVX AVX2
しかし私が走ったとき
import tensorflow as tf
hello = tf.constant('Hello, TensorFlow!')
sess = tf.Session()
print(sess.run(hello))
Hello, TensorFlow!
を出力しました。これは、インストールは実際に成功したことを示していますが、他に問題があることを示しています。
問題が何か、そしてそれをどのように修正するのか知っていますか?ありがとう。
最近のCPUは、拡張機能として知られている通常の算術演算とロジックに加えて、多くの低レベルの命令を提供します。 SSE2、SSE4、AVXなど。 Wikipedia から:
Advanced Vector Extensions(AVX)はx86命令の拡張です2008年3月にIntelが提案し、2011年第1四半期に出荷されたSandy Bridgeプロセッサを搭載したIntelおよび2011年第3四半期に出荷されたBulldozerプロセッサを搭載したAMDが最初にサポートしたIntelおよびAMDのマイクロプロセッサのアーキテクチャを設定します。AVXは、新機能、新しい命令、新しいコーディングスキーム。
特に、AVXは fused Multiply-Accumulate (FMA)演算を導入し、線形代数計算、つまりドット積、行列乗算、畳み込みなどを高速化します。ほとんどすべての機械学習トレーニングには多大な時間がかかりますこれらの操作のうち、AVXおよびFMAをサポートするCPU(最大300%)でより高速になります。警告は、CPUがAVXをサポートしていることを示しています(やっと!)。
ここで強調したいのは、CPUのみに関することです。
テンソルフローのデフォルトのディストリビューションは、SSE4.1、SSE4.2、AVX、AVX2、FMAなど、= CPU拡張なし で構築されているためです。デフォルトのビルド(pip install tensorflow
からの1つ)は、できるだけ多くのCPUと互換性がある。もう1つの議論は、これらの拡張機能を使用してもCPUはGPUよりもはるかに低速であり、GPUで中規模および大規模の機械学習トレーニングを実行することが期待されるということです。
GPUがある場合、AVXサポートを気にする必要はありません。ほとんどの高価なopはGPUデバイスにディスパッチされるからです(明示的に)。この場合、この警告を単に無視することができます
# Just disables the warning, doesn't enable AVX/FMA
import os
os.environ['TF_CPP_MIN_LOG_LEVEL'] = '2'
...またはUnixを使用している場合はexport TF_CPP_MIN_LOG_LEVEL=2
を設定します。とにかくTensorflowは正常に動作していますが、これらの迷惑な警告は表示されません。
GPUがない場合、可能な限りCPUを利用したい場合、からテンソルフローを構築する必要がありますCPUがサポートしている場合、AVX、AVX2、およびFMAを有効にしてyourCPUに最適化されたソース この質問 および このGitHubの問題 で説明されています。 Tensorflowは bazel と呼ばれるアドホックビルドシステムを使用し、それをビルドすることはそれほど簡単ではありませんが、確かに実行可能です。この後、警告が消えるだけでなく、テンソルフローのパフォーマンスも向上するはずです。
このコマンドを使ってあなたのCPUとOS用のテンソルフローバイナリを更新します。
pip install --ignore-installed --upgrade "Download URL"
WhlファイルのダウンロードURLはここにあります。
たとえあなたがGPUを持っていて、それをトレーニングや推論のために使っていても、TensorFlowをソースからインストールすることによってあなたが得ることができるパフォーマンス向上があります。その理由は、いくつかのTF操作はCPU実装のみを持ち、あなたのGPUでは実行できないことです。
また、あなたのCPUをうまく利用するいくつかの性能強化のヒントがあります。 TensorFlowのパフォーマンスガイド 以下をお勧めします:
入力パイプライン操作をCPUに実行すると、パフォーマンスが大幅に向上します。入力パイプラインにCPUを使用すると、GPUはトレーニングに集中できます。
最高のパフォーマンスを得るには、CPUとGPUを組み合わせて使用するようにコードを作成し、GPUがある場合はそれをすべてGPUにダンプしないでください。あなたのTensorFlowバイナリをあなたのCPU用に最適化することで、何時間もの実行時間を節約することができ、そしてあなたはそれを一度しなければなりません。
Windowsの場合は、AVX2でコンパイルされた TensorFlow用の公式インテルMKL最適化 ホイールを確認できます。この解決法は私の推論〜x3をスピードアップします。
conda install tensorflow-mkl
Windowsの場合(所有者f040225に感謝)、こちらにアクセスしてください: https://github.com/fo40225/tensorflow-windows-wheel "tf + python +の組み合わせに基づいてあなたの環境のURLを取得する" cpu_instruction_extension "#:。その後、このcmdを使ってインストールします。
pip install --ignore-installed --upgrade "URL"
「ファイルはZipファイルではありません」というエラーが発生した場合は、.whlファイルをローカルコンピュータにダウンロードし、このcmdを使用してインストールしてください。
pip install --ignore-installed --upgrade /path/target.whl
pip バージョンのtensorflowを使用する場合、それはすでにコンパイルされていて、インストールしているだけであることを意味します。基本的にあなたはtensorflow-gpuをインストールします、しかし、あなたがそれをリポジトリからダウンロードして、構築しようとするとき、あなたはそれをCPU AVXサポートで構築するべきです。あなたがそれを無視するならば、あなたがあなたがcpuで走るたびに警告を受けるでしょう。