最近、機械学習にどっぷり浸かっていますが、Jupyter Notebookを使うと勉強が捗るので重宝しています。せっかくブラウザで利用できるので、ブラウザさえあればいつでもどこでも―自分のお気に入りノートPCが手元になくとも、自分の「ノート」を開けるような環境が欲しくて作ってみました。
概要
DigitalOcean上にDockerでJupyter Notebook環境を構築します。
DigitalOceanは格安のいわゆるIaaSです。時間単位の課金で、2015/11/21時点で0.86円/時($0.007/時)で利用できます。DigitalOceanのWebページ上でサーバの電源をOFFにしておけばお金がかからないので、勉強したい時だけ電源をONにするといった利用が可能です。
Dockerは言わずと知れたコンテナ型のアプリケーションデプロイツールです、ここではJupyter Notebook環境の構築を簡便化するために用います。コンテナとしてはscikit-learn等がプリインストールされたこちらのコンテナを利用します。
※ 作成する環境ではJupyter Notebookにパスワード認証でログインします。credentialな内容を本環境に配置する場合は、より強固な認証機構の導入を検討してください。
環境構築
Dropletの作成
DigitalOceanではDropletという単位でサーバを構築します。
前提として、DigitalOceanのアカウントを作成したら、こちらの記事に従って公開鍵を登録しておきます。
DigitalOceanにログインして、「Create Droplet」をクリックします
-
以下内容でDropletを作成します(
Choose an image
はDockerを選択します)- Droplet Hostname: notebooks ※任意
- Choose a sizze $5/mo ※任意
- Choose a datacenter region: New York ※任意
- Choose an image: Docker 1.9.1 on 14.04
- Select additional options:
- Add your SSH keys: <事前に登録してある公開鍵の名前>
Jupyterコンテナのデプロイ
-
Dropletの作成が完了すると作成されたDropletのIPアドレスが表示されます。手元のPCからsshでDropletにログインします。
$ ssh root@<IPアドレス>
-
作業スペースのディレクトリを作成します 1
$ mkdir /opt/notebooks # 場所は任意 $ chmod a+w -R /opt/notebooks
-
scikit-learn
等機械学習に必要なパッケージが含まれたJupyterコンテナを起動します$ docker run -d --restart always -p 8888:8888 -v /opt/notebooks:/home/jovyan/work -e PASSWORD=<任意のパスワード> jupyter/datascience-notebook
ブラウザで
http://<IPアドレス>:8888
にアクセスして確認します
後は、いつもの通りにJupyter Notebookを使用してみてください。一通り作業が終わったら、DigitalOceanのWeb上から「Power off」してみます。後で「Power on」すると、自動的にJupyter Notebookが立ち上がります。
昔、「Emacs
のorg
モードって文章を書くには適しているが、もっと気軽にプログラムコード実行できないものか、さらにその結果も反映できないものか」って思ってた頃がありましたが、Jupyter Notebookはこれを叶えてくれるツールだなと思います。そういう意味で今の学生さんは幸せだと思うし、学校でもJupyter Notebookを積極的に導入したら良いのではと思う今日このごろです
-
自分は
/opt/notebooks
をgitで管理してみています ↩