Deep Learning実践開発講座「DL4US」のDockerイメージを作成しました。

東京大学の松尾研究室がDeep Learning実践開発講座 (DL4US)が公開されたので、Dockerイメージを作成しました。

myanote/dl4us – Docker Hub です。非公式なので、各自責任を持ってお使いください。

もし講座で学ばれる際は、利用してみてください。フィードバックはTwitterかGithubにでもお願いします。

ここでは、Dockerイメージについてと、イメージ作成で手こずったことについて書きたいと思います。

前提

このDockerイメージの前提条件について記載します。

松尾研究室のDL4USの講座ではGPUを使用しているみたいなので、このDockerイメージでもGPUを使用するために、nvidia-dockerを元にし、cudaを動かしています。そのため、nvidia-dockerを動かせる必要があります。nvidia-dockerのセットアップ手順については以下の公式情報を元に作業してください。

使い方

以下の要領で作業します。

  1. githubからdl4usをダウンロードする
  2. dockerを実行する
  3. docker上でjupyterを実行する
  4. ブラウザからjupyterのURLを開く

dockerとjuypterの実行方法は以下の通りです。

$ docker run -it -v $(【ダウンロードしたdl4usのPATH】):/jupyter -p 8888:8888 --runtime=nvidia myanote/dl4us /bin/bash
$ jupyter notebook --port 8888 --ip=0.0.0.0 --allow-root

docker上でjupyterを実行すると次のように表示されると思いますので、指示に従ってURLをブラウザで開きます。

[C 02:20:57.283 NotebookApp]
To access the notebook, open this file in a browser:
file:///root/.local/share/jupyter/runtime/nbserver-2113-open.html
Or copy and paste one of these URLs:
http://(aa884dece7ca or 127.0.0.1):8888/?token=5e83dc5d3fd5cdbb10a0eee12559e25eb5b7a99d54753b28

上の例でいうと、「
http://127.0.0.18888/?token=5e83dc5d3fd5cdbb10a0eee12559e25eb5b7a99d54753b28 」になります。

検証した環境

検証した環境情報は以下のとおりです。

  • DELL G3CPU: Intel CORE i5 8th Gen
  • GPU: GeForce GTX 1050
  • OS: Ubuntu 16.04

イメージ作成にあたって

イメージ作成にあたって困ったことなどを紹介していきます。

lesson 1 でのエラー

lesson1のSection1で以下のエラーが発生しました。

ImportError: Failed to import pydot. You must install pydot and graphviz for `pydotprint` to work

kerasのplot\_modelでハマった話 \- Qiita 」を参考に以下のライブラリをインストールしたら、解決しました。ありがとうございます。

pip3 install pydotplus
apt install graphviz

lesson 3 のDataset名が違う?!

lesson 3 の Section 2 のDatasetをダウンロードして、実行したら「そんなDatasetは無いよ」と怒られました。たしかに、対象ファイル「
data/ECG5000.arff 」は見当たらないです。代わりに、「data/ECG5000_TRAIN.arff 」ならあったので、コードを以下のように変更して実行したら、上手く動作しました。

# 変更前
dataset, meta = arff.loadarff('data/ECG5000.arff')
# 変更後
dataset, meta = arff.loadarff('data/ECG5000_TRAIN.arff')

lesson 3 のDatasetがない?!

なぜか、lesson 3 の section 4 のDatasetのwebページが開けませんでした。なので、Dockerイメージでは、Lesson3のSection4は未確認です。

lesson 5 のMSCOCOが大きすぎ!?

lesson 5 ではMSCOCOのDatasetを使用するのですが、大きすぎてダウンロードにめっちゃ時間がかかります。また、ダウロードしたあとの処理でもメモリ不足で処理が勝手にkillされてしまします。なので、Dockerイメージ上でlesson 5 は未検証です。

lesson 7 で実行しても結果が表示されない?!

lesson 7 の Section 2などを実行しても結果が表示されないケースがありました。これは、dockerに表示するディスプレイが存在しないためっぽかったので、

Google Colaboratoryの場合は以下を実行してください。

dl4us

の指示通り、実行したら上手くいきました。

GPUのメモリ不足?!

lessonを実行していると、GPUのメモリ不足によるエラーとなることが頻発します。よく見ると、AI処理に使えるGPUのメモリが極端に数百MBと少なくなっていました。これは、JupyterのカーネルがGPUを保持しているために起こるっぽいので、Section毎にカーネルをシャットダウンするようにしたら、問題が解決しました。ただ、Section毎にシャットダウンするのが面倒くさいです。

python 2だとNG?!

dl4usのサイトにはPythonのバージョン情報が載ってなかったので、2か3かどっちだろうと思って、両方で試しました。結果でいうと3でした。2でpythonのライブラリをインストールしようとするとエラーとなってしまいます。