ゼロから作るDeep Learningの学習環境をDockerで作った
会社で「ゼロから作るDeep Learning」を使ってDeep Learningを学ぶ勉強会をしようということになったので、環境を作ってみた。
使用する書籍はこちら↓
なぜDockerなのか
- Pythonや各ライブラリのバージョン差異によるメンバー間の挙動の違いが発生しないようにしたい。
- そもそも環境の構築が面倒なのでサクッと作れるようにしたい。
といった感じ。
というわけで、Docker for Macを使って学習環境を作った。
環境・バージョンなど
Mac
Docker
- Python 3.5.2 :: Anaconda 4.2.0 (64-bit)
- Jupyter 4.2.0
Docker for Macのインストール
まだインストールしていなければこちらからDocker for Macをダウンロードしてインストールする。
詰まるところは無いと思うのでインストール方法は省略。
公式のGit HubをForkしてClone
こちらがオライリーが公式に公開している、「ゼロから作るDeep Learning」用のGitHubリポジトリ。
色々コードを触りたいので、自分のGitHubアカウントにForkして、Cloneする。
今回は/Users/{USER_NAME}/github/deep-learning-from-scratch
にcloneした。
$ cd ~ $ mkdir github $ cd github $ git clone https://github.com/{GITHUB_ACCOUNT}/deep-learning-from-scratch.git
Jupyter notebookを使うことになるので、.gitignoreに以下の行を追加しておくといい。
.ipynb_checkpoints/
Docker Imageの作成
※Docker for Macは起動させておく。
Docker Imageはこちらのannaconda用イメージを利用した。
docker-images/anaconda3 at master · ContinuumIO/docker-images · GitHub
# docker imageをpullする $ docker pull continuumio/anaconda3 # docker imageを作成(ざっくり以下の設定を行っている) # cloneしておいたGitHub用のリポジトリを、/opt/notebooks/deep-learning-from-scratchにマッピング # 8888番ポートをフォワード $ docker run -i -t -v /Users/{USER_NAME}/github/deep-learning-from-scratch:/opt/notebooks/deep-learning-from-scratch -p 8888:8888 continuumio/anaconda3 /bin/bash
docker runするとプロンプトがdocker内に移動するので、以下のコマンドでJupyter notebookをインストールする。
# /opt/notebooksをJupyterのルートディレクトリにし、8888番ポートを利用する $ /opt/conda/bin/conda install jupyter -y --quiet && /opt/conda/bin/jupyter notebook --notebook-dir=/opt/notebooks --ip='*' --port=8888 --no-browser
Jupyterが起動するので一度Ctrl + C
で終了し、exitで抜けておく。
以上でDockerの環境ができた。
Docker環境完成後
2回目以降は以下の手順でDocker Imageを立ち上げることができる。
# dockerのプロセスを探す $ docker ps -a CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES a5f0b5dbc6db continuumio/anaconda3 "/usr/bin/tini -- /bi" 12 hours ago Exited (0) 10 hours ago serene_curran # ↑で探したコンテナID(今回の場合:a5f0b5dbc6db)を指定してdockerを起動する $ docker start -i a5f0b5dbc6db
dockerのプロンプトに移動するのでJupyterを起動する
$ /opt/conda/bin/jupyter notebook --notebook-dir=/opt/notebooks --ip='*' --port=8888 --no-browser
Jupyter起動中は、ブラウザでhttp://localhost:8888/
にアクセスすることでJupyterを使う事ができる。
また、Mac側の指定したディレクトリとシンクされているので、deep-learning-from-scratch
というディレクトリが既に存在する。
deep-learning-from-scratch
以下には各チャプターごとの参考コードが載っているし、notebookを作成し、notebookから該当のコードを呼び出すことができる。
呼び出し方は書籍内に出て来るのでそちらを参照。
Mac側とディレクトリを共有しているので、当然finderで中身を見ることもできるし、ブラウザ上のJupyter notebookで編集したnotebookを、自分のGitHubリポジトリにpushすることもできる。
これで色々捗りそうなので、Deep Learningについても学んでいきたい。