だれかの備忘録

主に自分用。

pipインストールのTensorFlowが1.10.0以前なら最新にすると爆速に

とあるきっかけでTensorFlowを1.10.0から最新の1.12.0にバージョンアップしてみたらCNNの処理速度が13倍も速くなりました。
そこで、どのバージョンから速くなったのか、パッケージのインストールにpipとcondaどちらを使うかで違いはあるのか、確認してみました。

結果、pipインストールでは、TensorFlow 1.10.0までの処理速度は遅く、1.11.0以降で高速になりました。
condaインストールではTensorFlowはどのバージョンでも高速でした。

環境

OS: Windows 10 Pro

CPU: Core i5-8400 (Intel)
MotherBoard: ROG STRIX H370-I GAMING (ASUS)
Momory: 8GB

準備

Anacondaでpip用とconda用の環境を作ります。
それぞれのバージョン変更は、

pip install tensorflow==1.12.0
conda install tensorflow=1.12.0

のようにTensorFlowのバージョンを指定してインストール。バージョンアップもダウンも可。

速度比較には最近読んでいる本『TensorFlowではじめるDeepLearning実装入門』にあった以下のサンプルコードを使いました。
TensorFlowDL-samples/mnist.py at master · thinkitcojp/TensorFlowDL-samples · GitHub

速度比較

Pythonの処理時間を計測しました。
f:id:positive_bedridden:20181118105416p:plain
pipでは1.10.0までは30分近くかかっていたのが1.11.0以降は2分ちょっとにまで速くなっています。
condaではどれも2分ちょっとです。

1.11.0以降でpipの方がcondaよりも10秒ちょっと速いのは、tensorflowをAVX対応でコンパイルしているかどうかの違いが少なからずあるのではと思います。ワーニングを比較すると以下の通り。
pip

2018-11-17 13:53:31.773051: I tensorflow/core/platform/cpu_feature_guard.cc:141] Your CPU supports instructions that this TensorFlow binary was not compiled to use: AVX2

conda

2018-11-17 13:45:41.330127: I tensorflow/core/platform/cpu_feature_guard.cc:141] Your CPU supports instructions that this TensorFlow binary was not compiled to use: AVX AVX2

pipとcondaの共存には注意

今回はpipとconda別々の環境で試しましたが、同じ環境でむやみにpipとconda両方を使うと依存関係がぐちゃぐちゃになって訳が分からなくなるかもしれないです。
condaとpip:混ぜるな危険 - onoz000’s blog

実際、pipとcondaの違いが判らなかったころに両方使っていたら私の環境でも変なエラーが出て、Anacondaを再インストールする羽目になりました。

おわりに

pipでtensorflowをインストールしていてバージョンが1.10.0以前だったら1.11.0以降にバージョンアップすることをお勧めします。
ただ、pipとcondaの共存で依存関係に問題が出るかもしれないので、condaに統一するのもいいと思います。