SQUIDのHPDAフロントエンドノードでは、Jupyter Notebook環境を提供しています。HPDAフロントエンドノードにログインしてjupyterコンテナを立ち上げることで、ブラウザ上で Python やその他のプログラミング言語のプログラムの編集や実行が可能です。本ページでは、jupyter コンテナの立ち上げ方およびWebブラウザでのアクセス方法について説明します。
※Jupyter Notebook環境で利用するPythonは、SQUIDでご利用いただけるPython環境とは別になります。パッケージのインストールはそれぞれで実施いただくことをお勧めします。
利用可能なJupyterコンテナについて
-
SQUIDでは以下の3種類のJupyterコンテナを用意しています。利用したい環境に合わせてコンテナを選択してください。
コンテナ名 | 利用可能なカーネル |
---|---|
jupyter | python 3 |
jupyter-julia | python 3 julia 1.6.1 |
jupyter-r | python 3 R 4.1.2 |
利用方法
1.HPDAフロントエンドへのログイン
Jupyter Notebookを利用する場合、HPDAフロントエンドへ接続する必要があります。HPCフロントエンドとは接続先が異なりますのでご注意ください。接続先は以下になります。
squidhpda.hpc.cmc.osaka-u.ac.jp
2.jupyterコンテナイメージの取得
ローカルレジストリから、jupyterコンテナイメージの取得を行います。jupyterコンテナイメージを取得するには、homeディレクトリで以下のコマンドを実行します。
$ singularity pull jupyter.sif oras://cntm:5000/master_image/【コンテナ名】:1.0
【コンテナ名】の部分は起動するコンテナに合わせて変更してください。コンテナ名はこちらをご覧ください。
例)jupyter-juliaコンテナの場合
$ singularity pull jupyter.sif oras://cntm:5000/master_image/jupyter-julia:1.0
コンテナイメージの取得に成功すると、homeディレクトリにjupyter.sifというファイルが作成されます。すでに同名のファイルが存在する場合は、予め削除してから上記のコマンドを実行してください。※コマンドの実行に失敗します。
3.jupyterコンテナの起動
ログインユーザのhomeディレクトリで、jupyterコンテナ起動用シェルスクリプトを実行し、jupyterコンテナを起動します。コンテナによって起動オプションが異なります。
コンテナ名 | 起動コマンド |
---|---|
jupyter | run_jupyter_container.sh |
jupyter-julia | run_jupyter_container.sh -k julia |
jupyter-r | run_jupyter_container.sh -k R |
jupyterコンテナの起動に成功すると、ターミナルに以下のように表示されます。
jupyter Notebook URL:https:// squidhpda1.hpc.cmc.osaka-u.ac.jp:10125
INFO: Converting SIF file to temporary sandbox...
INFO: instance started successfully
jupyter login token : 3c4b9f3fb424b9059d1076c559adff837f9fc9ee8ce81842
表示されている情報は以下のとおりです。次の手順「4.Webブラウザでのアクセス」で使用します。
jupyter Notebook URL
jypyter NotebookにWebブラウザでアクセスする際のURLです。ポート番号は、10000~11000の範囲内で、空いている番号が自動で割り当てられます。
jupyter login token
Webブラウザよりアクセスした際、jupyterの認証画面で入力するトークンです。
4.Webブラウザでのアクセス
Webブラウザを起動し、「3.jupyterコンテナの起動」で表示された"jupyter Notebook URL"にアクセスします。
ユーザ名とパスワードを求められるので、以下の値を入力してログインします。
①ユーザ名:SQUIDの利用者番号(HPDAフロントエンドへのログイン時に使用したユーザ名)
②パスワード:SQUIDのパスワード(HPDAフロントエンドへのログイン時に使用したパスワード)
パスワード認証に成功すると、jupyterトークンの入力を求められるので、「3.jupyterコンテナの起動」で表示された"jupyter login token"を入力して再度ログインします。
jupyterトークンによる認証にも成功すると、jupyter Notebookの初期画面が表示されます。これでjupyter notebookの準備は完了です。Webブラウザを通して、HPDAフロントエンド上でのプログラムの編集や実行が可能になります。
5.jupyterコンテナの停止
利用終了時はログインユーザのhomeディレクトリで、jupyterコンテナ停止用シェルスクリプトを実行し、jupyterコンテナを停止します。起動時と同じく、コンテナによって停止コマンドが異なります。
コンテナ名 | 起動コマンド |
---|---|
jupyter | stop_jupyter_container.sh |
jupyter-julia | stop_jupyter_container.sh -k julia |
jupyter-r | stop_jupyter_container.sh -k R |
[jupyterコンテナを停止できない場合]
SQUIDのHPCフロントエンドサーバ、HPDAフロントエンドサーバともに4台構成となっております。HPDAフロントエンドサーバの場合はsquidhpda1~squidhpda4が存在します。
停止処理は、起動時と同じフロントエンドサーバで実施する必要があります。4台のうち、任意のHPDAフロントエンドサーバにログインいただく場合はログイン後に、以下のコマンドを実行してください。この場合はsquidhpda2へログインします。
ssh squidhpda2
起動時のフロントエンドサーバが不明な場合は、~/.jupyter.infoファイルをご確認ください。もし停止できない場合は、お問い合わせフォームからご連絡ください。
jupyterコンテナのカスタマイズ
初期のjupyterコンテナは利用者自身の好みに合わせてカスタマイズできるよう、ライブラリ等のコンポーネントはインストールしていない状態で提供しています。必要に応じて、ご自身でライブラリ等をインストールして利用できます。本項ではjupyterコンテナに追加コンポーネントをインストールする方法について説明します。なお、カスタマイズした内容は立ち上げているjupyter環境に即時反映されますが、上記の「5.jupyterコンテナの停止」の操作を行うまで、カスタマイズした内容が保存されません。一度jupyterコンテナを停止することでカスタマイズがjupyter.sifに保存され、次回以降はカスタマイズされた環境を起動できるようになります。初期化を行う場合はjupyter.sifを削除してください。
以下では例として、numpy、matplotlibのインストール方法を紹介します。
numpyのインストール
1.端末の起動
「4.jupyterコンテナへのアクセス」で、jupyter Notebookの初期画面が表示された状態から作業を行います。初期画面右上の新規ボタンをクリックし、端末を選択します。
2.pipコマンドの実行
端末に以下のコマンドを入力し、Enterキーを押下します。
pip3 install numpy
3.インストールの確認
インストールが完了すると以下のメッセージが表示されます。
※"x.x.x"の部分には、インストールしたnumpyのバージョンが表示されます。
Successfully installed numpy-x.x.x
matplotlibのインストール
1.端末の起動
「4.jupyterコンテナへのアクセス」で、jupyter Notebookの初期画面が表示された状態から作業を行います。初期画面右上の新規ボタンをクリックし、端末を選択します。
2.pipコマンドの実行
端末に以下のコマンドを入力し、Enterキーを押下します。
pip3 install matplotlib
3.インストールの確認
インストールが完了すると以下のメッセージが表示されます。
※x.x.xの部分には、インストールされたmatplotlib、および依存パッケージのバージョンが表示されます。
Successfully installed cycler-x.x.x kiwisolver-x.x.x matplotlib-x.x.x pillow-x.x.x
work領域のマウント方法
jupyterコンテナを起動すると、homeディレクトリに「jupyter_notebook」という名前のディレクトリが生成されます。Jupyter Notebook上ではこのディレクトリの配下のみアクセス可能ですが、以下の手順で「jupyter_notebook」の配下にwork領域などその他のディレクトリをマウントすることでJupyter Notebook上でもアクセスすることが可能になります。
1.work領域マウント用ディレクトリの作成
homeのjupyter_notebookディレクトリ配下に、work領域マウント用のディレクトリを作成します。
mkdir ~/jupyter_notebook/user_work
2.起動スクリプトのコピー
jupyterの起動するクリプトを編集する必要があるため、自身のhomeディレクトリにコピーします。名前に指定はありませんが、以下の例ではrun_jupyter_container_custom.shという名前でコピーしています。
cp /system/tool/bin/run_jupyter_container.sh ~/run_jupyter_container_custom.sh
3.起動スクリプトの編集
viやemacs等のエディタでコピーした起動スクリプトの75~78行目に1行追記します。
[修正前]
1 2 3 4 |
singularity instance start -w -f \ --bind /etc/pki:/etc/pki/certs \ --net --network-args "portmap=$port:10443/tcp" \ ${SIFNAME} ${INSTNAME} |
[修正後]
1 2 3 4 5 |
singularity instance start -w -f \ --bind /etc/pki:/etc/pki/certs \ --bind 【マウント先のパス】:/root/jupyter_notebook/user_work \ --net --network-args "portmap=$port:10443/tcp" \ ${SIFNAME} ${INSTNAME} |
3行目を追記しています。【マウント先のパス】には、work領域のパスなどJupyter Notebook上からアクセスしたいディレクトリのパスを記述してください。以下はグループ名G12345、利用者番号a12345のユーザが、自身のwork領域をマウントする場合の例です。
--bind /sqfs/work/G12345/a12345:/root/jupyter_notebook/user_work \
4.jupyterコンテナを起動
編集した起動スクリプトを実行し、jupyterコンテナを起動します。起動時に-kオプションを指定することで、通常の場合と同じく起動するコンテナンを選択することができます。以下は編集したスクリプトのファイル名「run_jupyter_container_custom.sh」でJuliaカーネルのjupyterコンテナ(jupyter-julia)を起動するコマンドです。
./run_jupyter_container_custom.sh -k julia
以降の手順は通常の利用方法と同じです。こちらをご覧ください。