はじめに
- ポチポチKeras動かすのにどのような環境がいいのか考えてみました
- Keras + Docker + Jupyter Notebook + GPUの環境構築作業ログを紹介します
Keras
- わかりやすいインターフェースがかなり好き
Docker
- TensorFlowで学ぶディープラーニング入門~畳み込みニューラルネットワーク徹底解説 を参考にしました
- この本ではDockerを使用してます
- 当初はvirtualenv使用して環境作る予定だったので、勉強になりました
- 環境の移植性いいね
- GPU使用できるのいいね
Jupyter Notebook
- 言わずもがな
GPU
- 速いは正義
所感
Keras + Docker + Jupyter Notebook + GPUの環境構築
前提
GPUでTensorFlowを動かす - もょもとの技術ノート
NVIDIAドライバ入れ直す
上記ではNVIDIAドライバを手動でインストールしましたが、バージョンの相性もあり(またこれか)、apt-getでインストールし直しました。ところがNVIDIAドライバをインストールし直すとOSが起動しなくなったので、結局OSから再インストールしました。
$ sudo add-apt-repository ppa:graphics-drivers/ppa $ sudo apt-cache search nvidia-\d+ nvidia-352 - Transitional package for nvidia-361 mate-sensors-applet-nvidia-dbg - Display readings from hardware sensors in your MATE panel (NVIDIA, dbg package) nvidia-304 - NVIDIA legacy binary driver - version 304.132 nvidia-304-updates - Transitional package for nvidia-304 nvidia-340 - NVIDIA binary driver - version 340.98 nvidia-355 - NVIDIA binary driver - version 355.11 nvidia-358 - NVIDIA binary driver - version 358.16 nvidia-361 - NVIDIA binary driver - version 361.45.18 nvidia-364 - NVIDIA binary driver - version 364.19 nvidia-367 - NVIDIA binary driver - version 367.44 nvidia-370 - NVIDIA binary driver - version 370.28 $ sudo apt-get install nvidia-370
Docker
- 公式サイト通りに実施
- 全く躓かなかった
- Ubuntu 16.04 (LTS)を使用
nvidia-docker
- DockerからGPU操作できるようにこれも導入
$ wget -P /tmp https://github.com/NVIDIA/nvidia-docker/releases/download/v1.0.0-rc.3/nvidia-docker_1.0.0.rc.3-1_amd64.deb $ sudo dpkg -i /tmp/nvidia-docker*.deb && rm /tmp/nvidia-docker*.deb # Test nvidia-smi $ sudo nvidia-docker run --rm nvidia/cuda nvidia-smi
注意
- 今回はDockerグループ作成しなかったので、docker, nvidia-dockerコマンドのまえにすべてsudoつけました
ファイアウォール開放
$ sudo ufw enable $ sudo ufw allow 8888 $ sudo ufw status $ sudo ufw status 状態: アクティブ To Action From -- ------ ---- 8888 ALLOW Anywhere 8888 (v6) ALLOW Anywhere (v6)
Docker起動
$ sudo nvidia-docker run -m 10g -it -p 8888:8888 gcr.io/tensorflow/tensorflow:0.10.0-gpu
- 0.11はKerasとの相性が悪かったため、0.10を使用
- out of memoryエラー出るので、 -m で多めにメモリ確保
- 2GBあれば十分かな
$ sudo docker stats CONTAINER CPU % MEM USAGE / LIMIT MEM % NET I/O BLOCK I/O PIDS 8661fc7f4cea 1.42% 1.345 GiB / 10 GiB 13.45% 11.97 MB / 599.6 kB 0 B / 26.95 MB 44
MNISTサンプルコード動かす
- Jupyter Notebook起動
- Jupyter上からterminalを起動し、pip install kerasを実行
- Jupyter上からこんなことできるのですね
- サンプルコードを動かす keras/mnist_cnn.py at master · fchollet/keras · GitHub
CPU使用時
- 10分ちょっと
GPU使用時
- 1分弱
- いいかんじ!
お世話になったサイト
ubuntu14.04にnvidia-dockerをインストールする - Qiita
今回やってないこと
- Dockerイメージの作成
- Docker再起動するとKeras消えちゃうよ
- データボリュームを接続
- Docker再起動すると書いたコード消えちゃうよ
- -vオプションつければOK