highlight

2019年10月8日火曜日

Tensorflow-gpu 2.0 に移行した

Tensorflow 2.0 がリリースされたようだ。Tutorial なんかもすっかり 2.0 用に差し替わっていたので、さっさと移行したほうが良さそうだ。仕事で使っている人はそうは行かないだろうけど。

どうにか移行できた(2.0 向けのTutorial が実行できたという確認ができただけだが)様なので、最低限の注意事項等を書いておくことにする。conda なら、cuda に通した環境変数 PATH を activate フックで切り替えられれば、古い tensorflow 環境を残して切替可能にできるだろうと思ったが、私は古い環境は別に要らなかったので、それについては今回特に考えなかった。

私は tensorflow-gpu を windows 版 anaconda 環境で使っている。tensorflow-gpu は anaconda 環境でも pip を使って install していた事をすっかり忘れていたので、うっかり conda で tensorflow-gpu をインストールしたものの、2.0 はインストールされず、1.14(うろ覚え。1.13 だったかもと思うがどうでもいい)がインストールされた。そのパッケージを使ってみても、import tensorflow したあたりで abort してしまった。この辺りで pip でインストールしないといけない事を思い出したので、conda で tensorflow-gpu, keras, protobuf を uninstall し、pip でも tensorflow-gpu, keras を uninstall した(コマンドは簡単なので割愛)。pip は勝手に古いのを uninstall してくれる様だが、まあ一応やっといた。

さて改めて、pip で install する。が、その前に cuda と cudnn のバージョン確認をしておく。tensorflow-gpu 2.0 は、1.14 を使ってた状態ならそのままで良さそう。因みにこの時点でバージョンは、cuda 10.0、cudnn 7.6.4 が入った状態だった。この状態で、pip install tensorflow-gpu すると、2.0 がインストールされた(2019/10/08 現在)。しかし、tensorflow-tensorboard は、最近パッケージ名が tensorboard に変更されたらしく、古いまま残ってしまい整合性がとれなくなって import tensorflow するとエラーになった。なのでこれは予め uninstall しておいたほうが余計な時間を使わずに済む。で、改めて tensorboard を pip で install しておくと良い。

Tutorial を実行すると、GPU が使われている事も確認できた。

2019-10-08 00:13:31.011810: I tensorflow/core/common_runtime/gpu/gpu_device.cc:1304] Created TensorFlow device (/job:localhost/replica:0/task:0/device:GPU:0 with 6281 MB memory) -> physical GPU (device: 0, name: GeForce GTX 1080, 
pci bus id: 0000:01:00.0, compute capability: 6.1)
2019-10-08 00:13:31.022787: I tensorflow/core/common_runtime/gpu/gpu_device.cc:1304] Created TensorFlow device (/job:localhost/replica:0/task:0/device:GPU:1 with 6281 MB memory) -> physical GPU (device: 1, name: GeForce GTX 1080, 
pci bus id: 0000:02:00.0, compute capability: 6.1)
Train on 60000 samples

余談

VsCode では python の実行コンソールとして powershell が使われるのだが、「conda は~(略)~認識されません。」というエラーがでる。PATH は通ってるのに。これは anaconda の起動スクリプトのようなものがデフォルトで cmd.exe 用になっているかららしく、

conda init powershell

を powershell 上で実行すれば、このエラーに遭遇することはなくなるようだ。Powershell の利用自体がその端末で初だったりすると、さらに ExecutionPolicy あたりのエラーが出るかもしれないが、それについては ExecutionPolicy で ggrks。

0 件のコメント:

コメントを投稿

スパムフィルタが機能しないようなので、コメント不可にしました。

注: コメントを投稿できるのは、このブログのメンバーだけです。