アラカン"BOKU"のITな日常

文系システムエンジニアの”BOKU”が勉強したこと、経験したこと、日々思うことを書いてます。

Tensorflowのバージョンを1.6以上にすると、CPUによっては実行できなくなるので要注意

Tendorflowのバージョンを、1.6以上にあげるのはリスクがあります。

 

1.5.0までは問題なくtensorflowを実行できていたPCで、突然、実行不可能になる場合があるみたいです。

 

自分は1.5.0から1.8.0にあげた後、突然「ImportError: DLL load failed: ダイナミック リンク ライブラリ (DLL) 初期化ルーチンの実行に失敗しました。」というエラーがでるようになって、tensorflowを動かすことができなくなりました。

Traceback (most recent call last):
File "C:\anaconda3\envs\tensorflow\lib\site-packages\tensorflow\python\pywrap_tensorflow_internal.py", line 14, in swig_import_helper
return importlib.import_module(mname)
File "C:\anaconda3\envs\tensorflow\lib\importlib\__init__.py", line 126, in import_module
return _bootstrap._gcd_import(name[level:], package, level)
File "<frozen importlib._bootstrap>", line 986, in _gcd_import
File "<frozen importlib._bootstrap>", line 969, in _find_and_load
File "<frozen importlib._bootstrap>", line 958, in _find_and_load_unlocked
File "<frozen importlib._bootstrap>", line 666, in _load_unlocked
File "<frozen importlib._bootstrap>", line 577, in module_from_spec
File "<frozen importlib._bootstrap_external>", line 914, in create_module
File "<frozen importlib._bootstrap>", line 222, in _call_with_frames_removed
ImportError: DLL load failed: ダイナミック リンク ライブラリ (DLL) 初期化ルーチンの実行に失敗しました。

 

どうも、tensorflowはバージョン1.6から、AVX(Advanced Vector Extensions)をサポートしていないCPUでは実行できなくなったっぽいのです。

github.com

e-words.jp

 

CPUの非互換なので、どうしようもないみたいですね。

 

上記のエラーがでたときは、そのPCではTensorflowは1.5.0にダウングレードするしかないようです。

 

tensorflowのダウングレード

 

このCPUの非互換の問題、自分もはまりました。

 

バージョン1.8.0にアップグレードしたら、上記エラーがでてTensorflowを動かせないPCがあったのですね。

 

そのPCについては、1.5.0に戻さないといけません。

 

ダウングレードです。

 

といっても。

 

一度バージョン1.8.0にしたものを、なかったことにして、1.5.0を入れ直すというのはなかなかうまくいきません。

 

バージョンを指定してインストールすれば、自動的にpipが処理してくれて、ダウングレードできるような記事もあるので、やってみたところ、処理は正常終了して、上記のエラーもでなくはなったのですが、「pip list」で確認すると、tensorflowのバージョンは 1.8.0のままになってたりしてます。

 

どういう状態になっているのか?

 

どうにも気持が悪いです。

 

なので、違う方法をとることにします。

 

幸い、自分の環境は「anaconda」です。

 

conda create で新しい仮想環境を作って、そこに1.5.0をインストールし直すのが一番てっとり速いです。

 

まず、仮想環境を作ります。

 

pythonのバージョンは絶対3.5でないとだめです。

 

python=3.6にすると、後の工程で「pip install・・」の時にエラーになります。

 

conda create -n tensorflow1.5 python=3.5

 

作成した仮想環境をアクティブにします。

 

activate tensorflow1.5

 

バージョン1.5を指定してインストールします。

 

pip install --ignore-installed --upgrade https://storage.googleapis.com/tensorflow/windows/cpu/tensorflow-1.5.0-cp35-cp35m-win_amd64.whl

 

さていけたかな。

pip list | find "tensor"

 

OKみたいです。

f:id:arakan_no_boku:20180620205735j:plain

 

ためしに、IDLEを起動して、いくつか実行してみましたが、正常に処理されました。

 

やれやれ。

 

それにしても、tensorflowはシビアですね。

 

古いCPUなんかバシバシ切り捨てられます。

 

まあ、技術が進歩するときって、こんなものなんでしょうけど。

 

f:id:arakan_no_boku:20180621000704j:plain