WindowsにKeras導入という愚行をしてみた

Keras

Tensorflowなどで使えるニューラルネットワークライブラリのこと。

Kerasは,Pythonで書かれた,TensorFlowまたはCNTK,Theano上で実行可能な高水準のニューラルネットワークライブラリです. Kerasは,迅速な実験を可能にすることに重点を置いて開発されました. アイデアから結果に到達するまでのリードタイムをできるだけ小さくすることが,良い研究をするための鍵になります

https://keras.io/ja/

普通はLinuxで環境を整えるのだが、Windowsで実行してみるという愚行を犯すことにした。

なお、繰り返しになるが一般的にはLinuxでやるものをWindowsでやろうという変態行為であることは承知の上で読み進めていただきたい。

環境構築にあたって

以下に必要なものをメモしておきます。

  • anaconda
    • 仮想環境をつくれる便利なやつ
  • cuda
    • gpgpuを使うのに必要なやつ
    • Windowsは9.0までしか対応していない
  • cuDNN
    • cudaの友達みたいなやつ
    • これがないと動かない

注意

conda create -y -n keras tensorflow-gpu keras

このコマンドで確かに一発でcudaとcuDNNはインストールできるが、cudaが10.0でcuDNNが7.6.0-10_0になってしまう。

そして、それではWindowsで動かないのである。

anaconda

ここからダウンロードする。

結構容量がある上に、インストールするのが結構遅い。

インストールできたらAnaconda Promptというものがあるはずなのでそれを起動しよう!

anaconda prompt

さて、今はbaseとなっており仮想環境に入っていない状態である。

まずは仮想環境を構築する。

$ conda create -n keras python=3.6
The following NEW packages will be INSTALLED:

  certifi            pkgs/main/win-64::certifi-2019.3.9-py36_0
  pip                pkgs/main/win-64::pip-19.1.1-py36_0
  python             pkgs/main/win-64::python-3.6.8-h9f7ef89_7
  setuptools         pkgs/main/win-64::setuptools-41.0.1-py36_0
  sqlite             pkgs/main/win-64::sqlite-3.28.0-he774522_0
  vc                 pkgs/main/win-64::vc-14.1-h0510ff6_4
  vs2015_runtime     pkgs/main/win-64::vs2015_runtime-14.15.26706-h3a45250_4
  wheel              pkgs/main/win-64::wheel-0.33.4-py36_0
  wincertstore       pkgs/main/win-64::wincertstore-0.2-py36h7fe50ca_0

バージョンは異なるかもしれないが、こんなものがインストールされる。

Windows版tensorflowはpython3.6までしか対応していないらしいので、3.6.8をインストールするのが無難だろう。

$ activate keras

さて、kerasという環境ができたのでそこに環境を移動する。

上のコマンドを打てば、今まで(base)と表示されていたところが(keras)に変わったはずだ。

あとはtensorflowとkerasをインストールしたら終わりなのだが、このままtensorflowをインストールするとやはりcudaが10.0になってしまって動かなくなる。

そこで、先にcudaを手動でインストールすることで10.0を入れられないようにしてしまう。

$ conda install cudatoolkit=9.0
$ conda install tensorflow-gpu keras

こうすることでcudaのバージョンを指定することができるのだ。

$ conda list

とすれば現在インストールしているcudatoolkitとcudnnのバージョンがわかるぞ。

これがGPGPUだ!!

環境が整ったら実際にGPGPUを動かしてみよう。

MLPではCPUと対して差が付かないので非常に重い計算であるCNNを動かしてみよう。

幸いなことにソースコードが公開されているのでこれをそのまま実行するだけでいい、なんて簡単!

CNNで学習してみたぞ!

CPUだと1ステップあたり1000usくらいかかるのですが、GPUを使えばなんと100usくらいで計算できてしまいます。

実にCPUの10倍以上の速度なわけです。

こりゃもうGPUを使うしかないですね!

ぼくが使っているのはGTX1060 6GBですが、それの後継機であるGTX1660やGTX1660Tiがコスパが良くてオススメです。

レイトレーシンクがしたい場合はRTX2060などでもいいかもしれませんね。