NVIDIA DIGITS 6 RCをDockerで試してみた

Photo credit: RayMorris1 via VisualHunt.com / CC BY-NC-ND

Docker HubでNVIDIA DIGITS 6 RC(Release Candidate)のDockerイメージが公開されていましたので、NVIDIA Dockerで試してみました。

DIGITS 6 RCの新しい特徴として、TensorFlowがバックエンドに追加されました(従来のバックエンドはCaffeとTorch)。また、GAN(Generative Adversarial Network)のサンプルとサポートが追加されています(GANのサンプルを見てみると、TensorFlowによる実装でした・・・)。

スポンサーリンク

DIGITS 6 RC

Dockerイメージ

GitHubのDIGITS 6 RC(GitHubのタグは、v6.0.0-rc.1、https://github.com/NVIDIA/DIGITS/releases/tag/v6.0.0-rc.1)に対応するDockerイメージが、Docker Hubのnvidia/digits(https://hub.docker.com/r/nvidia/digits/)のタグ:6.0-rcです。

以下のコマンドで、DIGITS 6 RCのDockerイメージをpullします。

$ docker pull nvidia/digits:6.0-rc

Dockerコンテナ

DIGITS 6 RCの場合、DIGITSのport番号5000に加え、TensorFlowのTensorBoardを使用できるように、port番号6006を追加した以下のコマンドで、DockerイメージからDockerコンテナを起動します。なお、”/home/sora/digits-rc-jobs”と”/home/sora/data”の部分は、自分の環境に合わせて変更する必要があります。

$ nvidia-docker run --name digits6-rc -d \
 -p 5000:5000 \
 -p 6006:6006 \
 -v /home/sora/digits-rc-jobs:/jobs \
 -v /home/sora/data:/data \
 nvidia/digits:6.0-rc

Firefox等のブラウザを起動し、URLにlocalhost:5000を入力すると、DIGITS「Home」ページが表示されます。

GAN用の準備

GANのサンプルを実行するには、GitHubのREADME.md(https://github.com/NVIDIA/DIGITS/blob/v6.0.0-rc.1/examples/gan/README.md#preliminary-installation-steps)にも記載されているように、GAN用のプラグインをインストールする必要があります。

このため、Dockerコンテナから見えるホスト側のディレクトリ(ここでは、/home/sora/data/digits)に、GitHubのpluginsディレクトリを展開します。

以下のコマンドで、Dockerコンテナに横入りします。

$ docker exec -it digits6-rc bash

Dockerコンテナに入ったら、以下のコマンドでGAN用のプラグインをインストールします。

# pip install -e /data/digits/plugins/data/gan/
# pip install -e /data/digits/plugins/view/gan/

以下のようになっていれば、インストール成功です。

# pip list | grep digits
digits (6.0.0rc1)
digits-gan-data-plugin (0.0.1, /data/digits/plugins/data/gan)
digits-gan-view-plugin (0.0.1, /data/digits/plugins/view/gan)

ホスト側で、DIGITSコンテナを一旦終了して再起動するために以下のコマンドを実行すると、DIGITSコンテナでGAN用のプラグインを使用できます。

$ docker stop digits6-rc
$ nvidia-docker start digits6-rc

MNISTデータセットを用いるHandwritten-digitsのサンプルは、GitHubのREADME.mdの(https://github.com/NVIDIA/DIGITS/blob/v6.0.0-rc.1/examples/gan/README.md#handwritten-digits)通りに実施することができました。

ただし、DIGITS 6のRC版では、トレーニングの結果が、うまく記録できない事象が発生しています。

下の図では、実際には60エポックのトレーニングを行っているのですが、グラフは、30エポックを過ぎた辺りで途切れています。


GitHubのREADME.mdの画像(https://github.com/NVIDIA/DIGITS/blob/v6.0.0-rc.1/examples/gan/celeba-loss.png)でも、途中のデータが抜けているので、RC版では、同様の事象が発生する可能性があります。

まとめ

Docker HubでNVIDIA DIGITS 6 RCのDockerイメージが公開されていましたので、NVIDIA Docker上で新バックエンドTensorFlowと新機能GANの組み合わせを試してみました。