Edited at

オンデマンドなJupyter Notebook環境でいつでもどこでも機械学習を学習する

More than 3 years have passed since last update.

最近、機械学習にどっぷり浸かっていますが、Jupyter Notebookを使うと勉強が捗るので重宝しています。せっかくブラウザで利用できるので、ブラウザさえあればいつでもどこでも―自分のお気に入りノートPCが手元になくとも、自分の「ノート」を開けるような環境が欲しくて作ってみました。



概要

DigitalOcean上にDockerJupyter 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のアカウントを作成したら、こちらの記事に従って公開鍵を登録しておきます。


  1. DigitalOceanにログインして、「Create Droplet」をクリックします



  2. 以下内容で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コンテナのデプロイ



  1. Dropletの作成が完了すると作成されたDropletのIPアドレスが表示されます。手元のPCからsshでDropletにログインします。

    $ ssh root@<IPアドレス>
    



  2. 作業スペースのディレクトリを作成します 1

    $ mkdir /opt/notebooks # 場所は任意
    
    $ chmod a+w -R /opt/notebooks



  3. scikit-learn等機械学習に必要なパッケージが含まれたJupyterコンテナを起動します

    $ docker run -d --restart always -p 8888:8888 -v /opt/notebooks:/home/jovyan/work -e PASSWORD=<任意のパスワード> jupyter/datascience-notebook
    


  4. ブラウザでhttp://<IPアドレス>:8888にアクセスして確認します



後は、いつもの通りにJupyter Notebookを使用してみてください。一通り作業が終わったら、DigitalOceanのWeb上から「Power off」してみます。後で「Power on」すると、自動的にJupyter Notebookが立ち上がります。

昔、「Emacsorgモードって文章を書くには適しているが、もっと気軽にプログラムコード実行できないものか、さらにその結果も反映できないものか」って思ってた頃がありましたが、Jupyter Notebookはこれを叶えてくれるツールだなと思います。そういう意味で今の学生さんは幸せだと思うし、学校でもJupyter Notebookを積極的に導入したら良いのではと思う今日このごろです





  1. 自分は/opt/notebooksをgitで管理してみています