Tensorflow: SSE4.1、SSE4.2、およびAVXを使用してテンソルフローをコンパイルする方法。

作成日 2017年03月03日  ·  44コメント  ·  ソース: tensorflow/tensorflow

テンソルフローを実行しました。 現在、このエラーが発生しています。

現在MacYosemiteを使用しており、Python 3.5を使用して、anacondaを介してpip3を使用してtensorflowをダウンロードしました。

W tensorflow/core/platform/cpu_feature_guard.cc:45] The TensorFlow library wasn't compiled to use SSE4.1 instructions, but these are available on your machine and could speed up CPU computations.

W tensorflow/core/platform/cpu_feature_guard.cc:45] The TensorFlow library wasn't compiled to use SSE4.2 instructions, but these are available on your machine and could speed up CPU computations.

W tensorflow/core/platform/cpu_feature_guard.cc:45] The TensorFlow library wasn't compiled to use AVX instructions, but these are available on your machine and could speed up CPU computations.

anacondaには特別なコマンドセットがあるので、anacondaコマンドシステムを介してSSE4.1、SSE4.2、およびAVXでテンソルフローを実行するにはどうすればよいですか? 私はこれについてどうやって行くのか本当に混乱しています。

最も参考になるコメント

これはエラーではありません。ソースからTensorFlowをビルドすると、マシン上で高速になる可能性があるという警告だけです。

これについての質問: http
ソースからビルドするためのTensorFlowガイド: https ://www.tensorflow.org/install/install_sources

全てのコメント44件

これはエラーではありません。ソースからTensorFlowをビルドすると、マシン上で高速になる可能性があるという警告だけです。

これについての質問: http
ソースからビルドするためのTensorFlowガイド: https ://www.tensorflow.org/install/install_sources

@Carmezimが述べたように、これらは単なる警告メッセージです。
プログラムごとに、一度だけ表示されます。
また、警告にあるように、TFを高速化する必要がある場合にのみ、これらのフラグを使用してTFをコンパイルする必要があります。

ガイドに従って、ソースからTensorFlowをインストールし、SIMD命令セットをサポートするTFをコンパイルできます。

わかりました、ありがとう。 わかった。

これを沈黙させる方法はありますか?

これらの警告メッセージを消音する唯一の方法は、 --config optオプションを使用してソースからビルドすることです。

Unix / Linux / OSXでメッセージをリダイレクトする一種の「回避策」(不完全ではありますが):
python myscript.py 2> / dev / null

@CGTheLegend @ocampesato TF環境変数TF_CPP_MIN_LOG_LEVELを使用でき、次のように機能します。

  • デフォルトは0で、すべてのログが表示されます
  • INFOログを除外するには、 1に設定します
  • WARNINGSさらに、 2
  • さらにERRORログを除外するには、 3に設定します

したがって、警告を消すために次のことを行うことができます。

import os
os.environ['TF_CPP_MIN_LOG_LEVEL']='2'
import tensorflow as tf

@gunan @mrry警告を消音することに興味を持っている多くの人々を見てきましたが、この種の情報をドキュメントに追加することに興味がありますか?

tensorflowインストールガイドからインストールしましたが、この警告も表示されました。

pip3 install --upgrade tensorflow

@jadeydiソースからコンパイルする代わりに、「pip」はバイナリもインストールするだけなので、これらの警告が表示されます。

SSE4.1 SSE4.2 AVXAVX2とFMAをサポートするテンソルフローをコンパイルしました。 ビルドはここから入手できます: https

こんにちは@lakshayg 、共有してくれてありがとう。 https://github.com/yaroslavvb/tensorflow-community-wheelsを確認することをお勧めし

Ubuntuの標準のpip install tensorflow-gpuと比較して、ビルドは約はるかに高速ですか? CPU計算の方が速いだけですか、それともGPU計算にメリットがありますか?

http://www.anandtech.com/show/2362/5

これはグーグルで出てきて、いくつかのまともな技術的な詳細があります。

テストは、VirtualDub1.7.6およびDivX6.7を使用したDivXエンコードです。 SSE4は、モーション推定の新しい完全検索アルゴリズムを有効にすることを選択した場合に使用されます。これは、 MPSADBWPHMINPOSUW 2つのSSE4命令によって高速化されます。 モーション推定(ビデオの後続のフレームで何が起こるかを把握する)には、絶対差の合計の多くの計算と、それらの計算結果の最小値を見つける必要があるという考え方です。 SSE2命令PSADBWは、16Bの符号なし整数のペアから2つの差の合計を計算できます。 SSE4命令MPSADBWは8つを実行できます。

..。

QX9650では、SSE4を有効にした場合の完全検索は、SSE2のみを使用した場合よりも約45%高速に実行されます。

ここで、tensorflowが使用している関数を確認しますが、努力する価値があるかもしれません。

申し訳ありませんが、これはデフォルトですべてのTFスクリプトに出力されるというばかげたことです。 ほとんどの人はおそらくソースからTFをコンパイルしておらず、コンパイルしたくないでしょう。

@ TomAshley303 、これは取得するのにかなり素晴らしい情報です! ソースから再コンパイルする予定はありません。 したくない。 しかし、この情報は、モデルが大きくなり、遅くなり、パフォーマンスの向上が必要になった場合の対処方法を教えてくれます。 通常、拡張機能を使用して再コンパイルする方が、新しいハードウェアを購入するよりも安価です。優れたウォークスルー(私たちが持っている)を使用すると、再コンパイルの人件費が最小限に抑えられます(CPU時間は関係なく、一晩で実行できます)。

私はプロセスを経ました...簡単で、まったく時間がかかりませんでした。 いつものcmakeC ++はちょっと悪夢ではありません。

MacOS / LinuxでTFをコンパイルするための小さなbashスクリプトがあります。 CPU機能を動的に計算し、それらをビルドパラメーターとして配置します。 PRを作成しようと考えていましたが、ローカルビルド用のスクリプト(ヘルパー)を含むフォルダーが見つかりませんでした。ci_buildのみが見つかりました。 それが理にかなっているなら、私はそれをします

要旨
https://gist.github.com/venik/9ba962c8b301b0e21f99884cbd35082f

@gunanへのメモ

TensorFlowを初めてインストールしたときに、この問題が発生しました。 新しいマシンにTensorFlowをインストールしているので、今度はそれを再度解決する方法を理解する必要があります。 それは首の痛みであり、あなたが提供した文書はまったく明確ではありません。

私が自分の側でそれをしなければならないという事実はばかげて腹立たしいです。 それが一日中あなたに警告を投げるだけなら、pip / pip3から何かを利用できるようにするのは良くありません。

少なくとも、 https://www.tensorflow.org/install/install_sourcesを編集して、SSE / AVXでコンパイルする方法を明示的に説明する必要があります

私のために働いた解決策:構成プロセス中にプロンプ​​トが表示されたら(./configureを実行するとき)「-mavx-msse4.1-msse4.2」と入力します。

これをインストール手順に追加するのは難しいですか?

ありがとう、 @ Carmezimの回答によると、avxとsseに基づいたCPUスピードアップバージョンを入手しました。 Intelでより高速にテストしました-rcnn(resnet-101)。 コスト時間は約30%スピードアップし、本当に便利です。

警告を消音することができます。
これらのコードを上部に追加するだけです。
OSのインポート
os.environ ['TF_CPP_MIN_LOG_LEVEL'] = '2'
tensorflowをtfとしてインポートします
ここで述べたように: https

システム環境変数にユーザー変数を簡単に追加できます。
TF_CPP_MIN_LOG_LEVEL、値= 2。次に、IDEを再起動します。

これらの命令セットはCPUのみであり、ベクトル化された操作が可能であるため、GPU計算の@mikalyoungの改善は期待できません。
したがって、GPUで(理想的には)100%実行されている2つのコードを比較すると(1つはSIMDサポート付きでコンパイルされたTensorflowインスタンスで、もう1つはなしで)、速度に関して(できれば数値的にも)同じ結果が得られるはずです。

IC:\ tf_jenkinshome \ workspace \ rel-win \ M \ windows \ PY \ 36 \ tensorflow \ core \ platform \ cpu_feature_guard.cc:137] CPUは、このTensorFlowバイナリが使用するようにコンパイルされていない命令をサポートしています:AVX AVX2

ご覧のとおり、警告は私のシステムにもありますが、その場合、警告の開始時に「私」を理解できないため、誰かがその場合に私を助けることができます

「私」は「INFO」の省略形です。 あなたが見ることができる他の文字は、エラーの場合はE、致命的な場合はFです。

そこで、condaを使用してインストールしました。 スピードブーストを利用する代わりにソースからコンパイルしたい場合、tensorflowのcondaインストールを削除するために何かする必要がありますか? それとも、それはそれ自体の小さなコンテナにあり、ソースから個別にコンパイルできますか?

DeepSpeechとDeepSpeechサーバーもインストールしました。 サーバーを起動しようとすると、エラーメッセージが表示されます-"2018-01-17 08:21:49.120154:F tensorflow / core / platform / cpu_feature_guard.cc:35] TensorFlowライブラリはAVX2命令を使用するようにコンパイルされましたが、これらはそうではありません。お使いのマシンで利用できます。
中止(コアダンプ)」

どうやら私は同じコンピューター上でTensorFlowをコンパイルする必要があります。 Kubuntu17.10.1とHPProbook 4330Sに一致するリストはどこかにありますか?

Windowsコンパイルがないのはなぜですか? 同じ問題が発生していますが、GPUを使用したいという警告をミュートする代わりに、Nvidiaではなくグラフィックカードも持っています。どうすればよいですか?

* Nvidiaグラフィックカードを持っていません。何をしますか?

* AMDグラフィックカード..オートコレクト

これらは、テストボックスのプロセスを強制終了するため、単なる警告ではありません。 AMD GPUも使用しているので、これを実行するためにDigital Oceanテンソルフローボックスをスピンアップしましたが、GPUもサポートされていないようで、惨めに失敗しています。

`#ジョブID 0

/ home / science / tf-demo / models / nmt-chatbot / model / hparamsからhparamsを読み込んでいます

hparamsを/ home / science / tf-demo / models / nmt-chatbot / model / hparamsに保存します
hparamsを/ home / science / tf-demo / models / nmt-chatbot / model / best_bleu / hparamsに保存します
注意= scaled_luong
注意_アーキテクチャ=標準
batch_size = 128
ビーム幅= 10
best_bleu = 0
best_bleu_dir = / home / science / tf-demo / models / nmt-chatbot / model / best_bleu
check_special_token = True
colocate_gradients_with_ops = True
Decay_factor = 1.0
Decay_steps = 10000
dev_prefix = / home / science / tf-demo / models / nmt-chatbot / data / tst2012
ドロップアウト= 0.2
エンコーダータイプ= bi
eos =
epoch_step = 0
forget_bias = 1.0
infer_batch_size = 32
init_op =ユニフォーム
init_weight = 0.1
Learning_rate = 0.001
Learning_rate_decay_scheme =
length_penalty_weight = 1.0
log_device_placement = False
max_gradient_norm = 5.0
max_train = 0
メトリック= ['bleu']
num_buckets = 5
num_embeddings_partitions = 0
num_gpus = 1
num_layers = 2
num_residual_layers = 0
num_train_steps = 500000
num_translations_per_input = 10
num_units = 512
オプティマイザー=アダム
out_dir = / home / science / tf-demo / models / nmt-chatbot / model
output_attention = True
override_loaded_hparams = True
pass_hidden_​​state = True
random_seed =なし
残差=偽
share_vocab = False
sos =
source_reverse = False
src = from
src_max_len = 50
src_max_len_infer =なし
src_vocab_file = / home / science / tf-demo / models / nmt-chatbot / data / vocab.from
src_vocab_size = 15003
start_decay_step = 0
Steps_per_external_eval =なし
Steps_per_stats = 100
subword_option =
test_prefix = / home / science / tf-demo / models / nmt-chatbot / data / tst2013
tgt = to
tgt_max_len = 50
tgt_max_len_infer =なし
tgt_vocab_file = / home / science / tf-demo / models / nmt-chatbot / data / vocab.to
tgt_vocab_size = 15003
time_major = True
train_prefix = / home / science / tf-demo / models / nmt-chatbot / data / train
unit_type = lstm
vocab_prefix = / home / science / tf-demo / models / nmt-chatbot / data / vocab
warmup_scheme = t2t
warmup_steps = 0

列車グラフの作成..。

num_bi_layers = 1、num_bi_residual_layers = 0
セル0LSTM、forget_bias = 1 DropoutWrapper、dropout = 0.2 DeviceWrapper、device = / gpu:0
セル0LSTM、forget_bias = 1 DropoutWrapper、dropout = 0.2 DeviceWrapper、device = / gpu:0
セル0LSTM、forget_bias = 1 DropoutWrapper、dropout = 0.2 DeviceWrapper、device = / gpu:0
セル1LSTM、forget_bias = 1 DropoutWrapper、dropout = 0.2 DeviceWrapper、device = / gpu:0
Learning_rate = 0.001、warmup_steps = 0、warmup_scheme = t2t
Decay_scheme =、start_decay_step = 0、decay_steps 10000、decay_factor 1

トレーニング可能な変数

埋め込み/エンコーダー/埋め込み_エンコーダー:0 、(15003、512)、
埋め込み/デコーダー/埋め込み_デコーダー:0 、(15003、512)、
dynamic_seq2seq / encoding / bidirection_rnn / fw / basic_lstm_cell / kernel:0 、(1024、2048)、/ device:GPU :0
dynamic_seq2seq /エンコーダー/双方向_rnn / fw / basic_lstm_cell /バイアス:0 、(2048、)、/デバイス:GPU :0
dynamic_seq2seq /エンコーダー/双方向_rnn / bw / basic_lstm_cell / kernel:0 、(1024、2048)、/デバイス:GPU :0
dynamic_seq2seq /エンコーダー/双方向_rnn / bw / basic_lstm_cell /バイアス:0 、(2048、)、/デバイス:GPU :0
dynamic_seq2seq / decode / memory_layer / kernel:0 、(1024、512)、
dynamic_seq2seq / decode / attention / multi_rnn_cell / cell_0 / basic_lstm_cell / kernel:0 、(1536、2048)、/ device:GPU :0
dynamic_seq2seq /デコーダー/注意/ multi_rnn_cell / cell_0 / basic_lstm_cell /バイアス:0 、(2048、)、/デバイス:GPU :0
dynamic_seq2seq / decode / attention / multi_rnn_cell / cell_1 / basic_lstm_cell / kernel:0 、(1024、2048)、/ device:GPU :0
dynamic_seq2seq / decode / attention / multi_rnn_cell / cell_1 / basic_lstm_cell / bias:0 、(2048、)、/ device:GPU :0
dynamic_seq2seq / decode / attention / luong_attention / attention_g:0、()、/ device:GPU :0
dynamic_seq2seq /デコーダー/アテンション/アテンションレイヤー/カーネル:0 、(1536、512)、/デバイス:GPU :0
dynamic_seq2seq / decode / output_projection / kernel:0 、(512、15003)、/ device:GPU :0

評価グラフの作成..。

num_bi_layers = 1、num_bi_residual_layers = 0
セル0LSTM、forget_bias = 1 DeviceWrapper、device = / gpu:0
セル0LSTM、forget_bias = 1 DeviceWrapper、device = / gpu:0
セル0LSTM、forget_bias = 1 DeviceWrapper、device = / gpu:0
セル1LSTM、forget_bias = 1 DeviceWrapper、device = / gpu:0

トレーニング可能な変数

埋め込み/エンコーダー/埋め込み_エンコーダー:0 、(15003、512)、
埋め込み/デコーダー/埋め込み_デコーダー:0 、(15003、512)、
dynamic_seq2seq / encoding / bidirection_rnn / fw / basic_lstm_cell / kernel:0 、(1024、2048)、/ device:GPU :0
dynamic_seq2seq /エンコーダー/双方向_rnn / fw / basic_lstm_cell /バイアス:0 、(2048、)、/デバイス:GPU :0
dynamic_seq2seq /エンコーダー/双方向_rnn / bw / basic_lstm_cell / kernel:0 、(1024、2048)、/デバイス:GPU :0
dynamic_seq2seq /エンコーダー/双方向_rnn / bw / basic_lstm_cell /バイアス:0 、(2048、)、/デバイス:GPU :0
dynamic_seq2seq / decode / memory_layer / kernel:0 、(1024、512)、
dynamic_seq2seq / decode / attention / multi_rnn_cell / cell_0 / basic_lstm_cell / kernel:0 、(1536、2048)、/ device:GPU :0
dynamic_seq2seq /デコーダー/注意/ multi_rnn_cell / cell_0 / basic_lstm_cell /バイアス:0 、(2048、)、/デバイス:GPU :0
dynamic_seq2seq / decode / attention / multi_rnn_cell / cell_1 / basic_lstm_cell / kernel:0 、(1024、2048)、/ device:GPU :0
dynamic_seq2seq / decode / attention / multi_rnn_cell / cell_1 / basic_lstm_cell / bias:0 、(2048、)、/ device:GPU :0
dynamic_seq2seq / decode / attention / luong_attention / attention_g:0、()、/ device:GPU :0
dynamic_seq2seq /デコーダー/アテンション/アテンションレイヤー/カーネル:0 、(1536、512)、/デバイス:GPU :0
dynamic_seq2seq / decode / output_projection / kernel:0 、(512、15003)、/ device:GPU :0

推論グラフの作成..。

num_bi_layers = 1、num_bi_residual_layers = 0
セル0LSTM、forget_bias = 1 DeviceWrapper、device = / gpu:0
セル0LSTM、forget_bias = 1 DeviceWrapper、device = / gpu:0
セル0LSTM、forget_bias = 1 DeviceWrapper、device = / gpu:0
セル1LSTM、forget_bias = 1 DeviceWrapper、device = / gpu:0

トレーニング可能な変数

埋め込み/エンコーダー/埋め込み_エンコーダー:0 、(15003、512)、
埋め込み/デコーダー/埋め込み_デコーダー:0 、(15003、512)、
dynamic_seq2seq / encoding / bidirection_rnn / fw / basic_lstm_cell / kernel:0 、(1024、2048)、/ device:GPU :0
dynamic_seq2seq /エンコーダー/双方向_rnn / fw / basic_lstm_cell /バイアス:0 、(2048、)、/デバイス:GPU :0
dynamic_seq2seq /エンコーダー/双方向_rnn / bw / basic_lstm_cell / kernel:0 、(1024、2048)、/デバイス:GPU :0
dynamic_seq2seq /エンコーダー/双方向_rnn / bw / basic_lstm_cell /バイアス:0 、(2048、)、/デバイス:GPU :0
dynamic_seq2seq / decode / memory_layer / kernel:0 、(1024、512)、
dynamic_seq2seq / decode / attention / multi_rnn_cell / cell_0 / basic_lstm_cell / kernel:0 、(1536、2048)、/ device:GPU :0
dynamic_seq2seq /デコーダー/注意/ multi_rnn_cell / cell_0 / basic_lstm_cell /バイアス:0 、(2048、)、/デバイス:GPU :0
dynamic_seq2seq / decode / attention / multi_rnn_cell / cell_1 / basic_lstm_cell / kernel:0 、(1024、2048)、/ device:GPU :0
dynamic_seq2seq / decode / attention / multi_rnn_cell / cell_1 / basic_lstm_cell / bias:0 、(2048、)、/ device:GPU :0
dynamic_seq2seq / decode / attention / luong_attention / attention_g:0、()、/ device:GPU :0
dynamic_seq2seq /デコーダー/アテンション/アテンションレイヤー/カーネル:0 、(1536、512)、/デバイス:GPU :0
dynamic_seq2seq / decode / output_projection / kernel:0 、(512、15003)、

log_file = / home / science / tf-demo / models / nmt-chatbot / model / log_1519669184

2018-02-26 18:19:44.862736:I tensorflow / core / platform / cpu_feature_guard.cc:137] CPUは、このTensorFlowバイナリが使用するようにコンパイルされていない命令をサポートしています:SSE4.1 SSE4.2 AVX AVX2 FMA
殺された `

どのコマンドを実行する必要があり、これらのコマンドをどこで実行するか、そしてどのように教えてください。 私は必死に助けが必要です。

しかし、それはシステムがプロセスにGPUを使用していないことを意味しますか?

KerasClassifierでk-foldを使用するなど、アクセラレーション環境でテンソルフローを構築している場合は、これを解決する必要があります。
これを解決するには、誰もが推奨するように、ソースからテンソルフローを構築する必要があります。
ソースからテンソルフローを構築するには、次のツールが必要になります

  1. まだダウンしていない場合は、マシンにgitをインストールします-ubuntuマシンでは、「sudo apt-getinstallgit」と入力するだけです。
  2. bazelをインストールする必要があります。 カスタムAPTリポジトリを使用することを強くお勧めします。 このリンクの指示に従って、bazelhttps //docs.bazel.build/versions/master/install-ubuntu.htmlをインストールし
  3. 次のPython依存関係が必要です...以下のコマンドを使用して
    numpy、dev、wheel
    sudo apt-get install python-numpy python-dev python-pippython-wheel
    4.すべての依存関係をインストールしたら、tensorflowgithubをローカルドライブに複製します
    git clone https://github.com/tensorflow/tensorflow
  4. tensorflowのクローンを作成する場所に移動し、tensorflowファイルにcdして、構成ファイルを実行します
    cdテンソル
    。/構成、設定

画面の指示に従って、テンソルフローのインストールを完了します。
tensorflowがインストールされたら、マシンを更新することを強くお勧めします
sudo apt-get update

頑張って楽しんでください...

このスレッドで、これらの警告を黙らせるだけではいけないことを伝えてください。ソースからビルドすることで、トレーニング時間が約43%速くなっています。努力する価値があると思います。

このファイルを使用してtensorflowをインストールする方法 "tensorflow-1.6.0-cp36-cp36m-win_amd64.whl"

@anozele pip3 install --upgrade *path to wheel file*

@gunan --config = optだけでは不十分です。ソースからTensorFlowをビルドする場合は、たとえば--copt = "-msse4.2"も追加する必要があります。

Intelによると、 https: //software.intel.com/en-us/articles/intel-optimization-for-tensorflow-installation-guide、Intelで構築されたTensorflowを使用する場合、使用可能なすべての命令セットがバックエンドMKLによって使用されます。 Tensorflowの誰かがこれを確認できますか?

これはエラーではありません。ソースからTensorFlowをビルドすると、マシン上で高速になる可能性があるという警告だけです。

これについての質問: http
ソースからビルドするためのTensorFlowガイド: https ://www.tensorflow.org/install/install_sources

ただし、-FMA -AVX -SSEhttps //stackoverflow.com/questions/57197854/fma-avx-sse-flags-did-not-bring-me-good-performanceを使用しないよりも速くはありません

やあ。 死んだ馬を殴っていたらごめんなさい。 なぜデフォルトのピップホイールが事前の指示でコンパイルされたバイナリではないのか疑問に思っていますか?

やあ。 死んだ馬を殴っていたらごめんなさい。 なぜデフォルトのピップホイールが事前の指示でコンパイルされたバイナリではないのか疑問に思っていますか?

これは、古いCPUアーキテクチャが高度な命令セットをサポートしていないためです。 AVX、AVX2、またはAVX512をサポートするCPUの詳細なリストについては、 wikiを参照してください。 デフォルトのpipバイナリがこれらの命令セットでコンパイルされている場合、tensorflowは古いCPUでは機能しません。

しかし、それはシステムがプロセスにGPUを使用していないことを意味しますか?

いいえ、GPUを使用している場合でも表示されます。メッセージを消音していない場合は、コマンドプロンプトでTensorflorがGPUデバイスをロードしていることも確認できます。

このリポジトリで確認する場合:
以下のコードを確認してください。

https://github.com/fo40225/tensorflow-windows-wheel

彼はSSEとAVXを使用してTFのほぼすべてのバージョンをコンパイルしました
彼はほぼすべてのTFバージョンをコンパイルしました!

この記事は、フラグを含むソースからビルドする方法に関する優れたチュートリアルでした
https://medium.com/@pierreontech/setup -a-high-performance-conda-tensorflow-environment-976995158cb1

--copt=-mavx --copt=-msse4.1 --copt=-msse4.2などの追加のベーゼルオプションを使用して、適切な拡張機能を強制的に含めるようにしてください

このページは役に立ちましたか?
0 / 5 - 0 評価