東大松尾研が無料で公開しているディープラーニングの実践的教育プログラム「DL4US」の学習環境をDockerを使ってコマンド一発で構築する方法

### 東京大学　松尾研究室公開の無料ディープラーニング教材「DL4US」
　東大の松尾研が「[DL4US](https://weblab.t.u-tokyo.ac.jp/dl4us/)」という素晴らしい教材を公開されていますね。松尾研究室は、以前にも「[Deep Learning基礎講座演習コンテンツ](https://weblab.t.u-tokyo.ac.jp/deep-learning基礎講座演習コンテンツ-公開ページ/)」を無料で公開していましたが、今回はそのバージョンアップ版という印象です。

　実態は、Jupyter Notebook形式の実践的なチュートリアルとなっており、Deep Learning基礎講座演習コースのときは、[ブログにPyenv・Anacondaを使って学習環境を構築する記事](https://karaage.hatenadiary.jp/entry/2018/01/31/073000)を書きましたが、私の方もバージョンアップ版ということで、今度は[Dockerを使ってコマンド1行で学習環境を構築する記事](https://karaage.hatenadiary.jp/entry/2019/05/17/073000)を書きました。

　ただ、上記の記事はDockerの基本的な使い方など、松尾研の教材には無関係な箇所も多いのでこの記事では「DL4US」の学習環境を最短で構築する方法にフォーカスして紹介したいと思います。

### Dockerで「DL4US」の学習環境を構築する方法
　Dockerはインストールされている前提です。Dockerって何？Dockerのインストールの仕方がわからないという人は、以下記事のDockerのインストールだけ読んでDockerのインストールをお願いいたします。

[Docker入門して機械学習環境構築](https://karaage.hatenadiary.jp/entry/2019/05/17/073000)

　ちなみにMacとLinuxの想定です。WindowsもWindows for Dockerがあるみたいですが、そちらでの確認はできていませんすみません（誰か手順書いてリンク教えてくれたら嬉しいです）。

　Dockerインストールしたら、ターミナルで以下コマンドを実行するだけです。これだけで環境構築されちゃいます。

```sh
$ docker run -p 8888:8888 -it --rm --name dl4us karaage0703/dl4us
```

　このとき、画面上の文字列に

```
token=xxxxxxxxxxxxxx
```

 といったtokenの表示があるので、「token=」以降の文字列をコピーしておいて下さい。

### 「DL4US」の教材ダウンロードと学習
　教材のダウンロードは、別のウィンドウを立ち上げて、先ほどのDockerコンテナにログインして

```sh
$ docker exec -it dl4us bash
```

　以下コマンド実行するだけでOKです。

```
# cd work && git clone https://github.com/matsuolab-edu/dl4us
```

　あとは、ブラウザで以下のアドレスにアクセスします。

```
http://localhost:8888
```

　すると、token入力画面が出てくるので、先ほどコピーしたtokenを入力してログインして下さい。

　あとは、以下のようにJupyter Notebookの教材を実践しながら実行できます。
![20190517002039.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/81919/37e087bc-eb02-52c0-92e6-eca56e069df8.png)


### 注意点

#### Lesson3 系列データで分類・予測させてみよう（RNN, LSTM）Section 2
　以下でデータセットのダウンロードをする必要があります。データセットのファイル名が変わっているので、修正が必要です（ECG5000_TEST.arff -> ECG5000.arff)

```sh
$ cd ~/work/dl4us/lesson3/data/
$ wget http://timeseriesclassification.com/Downloads/ECG5000.zip
$ unzip ECG5000.zip
$ mv ECG5000_TEST.arff ECG5000.arff
```

### 現状の問題点
　まだ全部を試せていません。1章2章あたりは問題ないですが、7章などでエラーが出ることを確認しています。

　気が向いたら修正していきますが、もしよければ[GitHubで公開しているDockerfile](https://github.com/karaage0703/Dockerfiles/tree/master/dl4us)にPullRequestをいただければ嬉しいです。　

### Google Colaboratory(Google Colab)でも学習できます
　[GitHubのREADMEにも書いてあります](https://github.com/matsuolab-edu/dl4us)が、Googleの提供する環境構築不要でPython環境が使えるクラウドサービス「Google Colab」で学習することも可能です。

　ただ、READMEにも書いてある通り、Google Colabの容量制限や、時間制限の関係でうまくいかないケースもあるようです。最初の方のチュートリアルは手軽に試せると思いますので、Dockerがうまくいかない・ハードルが高いと感じた方はそちらを試してみるのもオススメです。

　なんと@tomo_makes さんが、Google ColabでDL4USの全チャプターで動作確認して、実行方法やハマりどころを解説している記事があります。Google Colabで試そうと考えている方は、下記@tomo_makes さんの記事を参考にするのがオススメです。

[【環境構築不要・スマホ/タブレットOK】東大松尾研のDeep Learningエンジニア育成講座『DL4US』を自習する](https://qiita.com/tomo_makes/items/f4d69f2aa3c407891d64#_reference-8ee45bb0ee53e118a9d6)

　その他、私もブログにGoogle Colabを便利に使うためのTIPSをまとめていますので、よろしければそちらも合わせて参考にしてみて下さい。

[Google Colaboratoryを便利に使うためのTIPSまとめ](https://karaage.hatenadiary.jp/entry/2018/12/17/073000)


### まとめ
　東大松尾研が無料で公開しているディープラーニングの実践的教育プログラム「DL4US」の紹介と、Dockerを使った環境構築方法に関してまとめました。

　私も「DL4US」をざっと試してみましたが、とても良い教材と思います。[DL4US第1期修了生の受講感想のブログ記事](https://omuriceman.hatenablog.com/entry/dl4us)も読んだのですが、実際の講義もとても良い内容だったみたいですね。こういう教材をさらに無料で公開してくれるというのは、非常によい取り組みだなと改めて感じました。今後、時間をみつけじっくり取り組んでいきたいと思います。

　東大の「DL4US」以外の、実践的なディープラーニング・機械学習に関する教材については、以前ブログでまとめましたのでよろしければ参考にしてみて下さい。

[手を動かしながら学べるディープラーニングの優良なチュートリアル](https://karaage.hatenadiary.jp/entry/2018/10/29/073000)