めもめも

このブログに記載の内容は個人の見解であり、必ずしも所属組織の立場、戦略、意見を代表するものではありません。

Jupyter演習環境の準備手順

この手順では、メモリが4GB以上、CPUが4コア以上の環境を前提としています。

macOSを使用する場合

  • macOS用のDockerが対応しているのは、Yosemite以降のバージョンです。ここで紹介する手順は、El Captitanで動作確認をしています。

はじめに、Dockerの公式Webサイトから、macOS用のDockerをダウンロードします。「Getting Started with Docker」のリンクからダウンロードページを開いて、「Download Docker for Mac」をクリックすると、インストーラーファイル Docker.dmgがダウンロードできます。インストーラーを開いて、DockerアイコンをApplicationsフォルダーにコピーした後、ApplicationsフォルダーからDockerを起動します。初回の起動時は、インストール処理のポップアップが表示されますので、指示にしたがって、インストールを完了させてください。

インストールが完了してDockerが起動すると、上部のメニューバーにクジラのアイコンが表示されます。ここからDockerの管理メニューを表示して、「Preferences」を選択した後、「Advanced」のタブから「Memory」を4GB以上に設定します。「CPUs」の指定は任意ですが、サンプルコードの実行時間が極端に長くならないよう、4以上に設定することをおすすめします。最後に「Apply advanced settings」を押して、設定変更を反映します。

macOSに付属のターミナルを開いて、下記のコマンドを実行すると、Docker Hubからイメージをダウンロードして、コンテナ上でJupyterが起動します。「\」はコマンドの途中で改行する際に、入力する記号です。

$ mkdir $HOME/data
$ docker run -itd --name jupyter -p 8888:8888 -p 6006:6006 \
    -v $HOME/data:/root/notebook -e PASSWORD=passw0rd \
    enakai00/jupyter_tensorflow:latest

「-e PASSWORD」オプションには、WebブラウザーからJupyterに接続する際の認証パスワードを指定します。この例では、「passw0rd」を指定しています。この手順でコンテナを起動した場合、Jupyterで作成したノートブックのファイルは、ユーザーのホームディレクトリー(/User/<ユーザー名>)の下にある「data」ディレクトリーに保存されます。

macOSでブラウザーを起動して、URL「http://localhost:8888」にアクセスすると、ログイン画面が表示されるので前述のパスワードを入力してログインします。この後は、最後のセクションにある、動作確認に進んでください。

※ macOSを再起動した場合は、ターミナルから下記のコマンドを実行して、コンテナを再度、起動してください。

$ docker start jupyter

パブリッククラウドの仮想マシンを使用する場合

パブリッククラウドの仮想マシン上でDockerを起動して、環境を用意することも可能です。CentOS7のVMインスタンスを起動してログインした後、rootユーザーから、次の手順でコンテナを起動します。

# yum -y install docker
# systemctl enable docker.service
# systemctl start docker.service
# mkdir $HOME/data
# chcon -Rt svirt_sandbox_file_t $HOME/data
# docker run -itd --name jupyter -p 8888:8888 -p 6006:6006 \
    -v $HOME/data:/root/notebook -e PASSWORD=hogehoge \
    enakai00/jupyter_tensorflow:latest

「-e PASSWORD=」には、Jupyterにアクセスする際のパスワードを任意に指定します。ただし、通信経路の暗号化は行われないため、インターネット経由で直接にアクセスするのは危険です。SSHのトンネル機能を用いて、通信経路の暗号化を行ってください。たとえば、Windowsクライアントの環境であれば、Tera TermなどのSSH端末から、次のように8888番ポートと6006番ポートの転送を指定して、SSH接続します。

macOS、もしくは、Linuxクライアントであれば、次のように、-Lオプションでポート転送を指定してSSH接続します。

$ ssh -L 6006:localhost:6006 -L 8888:localhost:8888 -i .ssh/gcp_enakai enakai@xxx.xxx.xxx.xxx

この後、ローカルのブラウザーから、「http://localhost:8888」にアクセスするとSSHトンネルを経由して、Jupyterに接続することができます。ログイン画面が表示されるので前述のパスワードを入力してログインします。この後は、次のセクションにある、動作確認に進んでください。

※ 仮想マシンを再起動した場合は、SSH接続した後に、rootユーザーで下記のコマンドを実行して、コンテナを再度、起動してください。

$ docker start jupyter

動作確認

Jupyterにログインすると「ノートブックファイル」の一覧画面が表示されますが、今はまだノートブックファイルはありません。

右上のプルダウンメニューから「New」→「Python 2」を選択すると新しいノートブックが開きます。

ノートブック上では、セルにプログラムコードを入力して、「▶」ボタン、もしくは [Ctrl] + [Enter] で実行すると結果が表示されます。マークダウン形式のセルには説明文を記載することができます。

ノートブック全体を最初から実行し直す場合は、メニューから「Kernel」→「Restart & Clear Output」を選択して、これまでの実行内容をクリアします。

空のセルで次のコマンドを実行すると、演習用のノートブックがダウンロードできます。

!git clone https://github.com/enakai00/jupyter_ml4se

ノートブックファイル一覧画面でフォルダー「jupyter_ml4se」を開くと、ノートブックファイルが入っています。

「02-square_error.ipynb」のチェックボックスにチェック入れて、画面上部の「Duplicate」を押すと、ノートブックファイルのコピー「02-square_error-Copy1.ipynb」ができます。これをクリックして、ノートブックを開きます。

メニューから「Kernel」→「Restart & Clear Output」を選択して、これまでの実行内容をクリアした後に、メニューから「Cell」→「Run All」を選択すると、すべてのセルが上から順に自動実行されます。すべてのセルが正しく実行されることを確認しておいてください。たとえば、最後の2つのセルでは、次のようなグラフが表示されます。