概要
遺伝研スパコンのゲートウェイノードを踏み台にしたポートフォワーディングを使うことで、スパコン側で起動している Jupyter Notebook にローカル側から接続することができます。
産総研 ABCI システムの利用ガイドを参考にしました。遺伝研スパコンでも応用可能な情報が豊富です。
ここで紹介する方法に関しては遺伝研スパコンの利用法として問題がないことを管理者に確認をしておりますが、過剰なリソースの占有や他のユーザーに迷惑がかかるような計算処理を行わないように気をつけてください。
スパコン側の操作
-
スパコンゲートウェイノードにログインしたのち、
qlogin
をおこなってインタラクティブノードにログインします。複数 CPU を使った並列計算や大量のメモリを必要とする処理を行う場合には-l
オプションや-pe
オプションでリソースの指定をして qlogin を行ってください。 -
ログイン先のホスト名を確認します。qlogin 時に負荷の低いノードが自動的に選ばれるためログインごとにホスト名は変わります。
$ hostname
at029 # 例
```
-
netstat
コマンドで空いているポート番号を調べます。使用したいポート番号を grep して何も表示されなければ空いています。50000番台以降なら問題ないでしょう。$ netstat -an |grep 58888 # 何も表示されないことを確認
-
Jupyter Notebook を起動したいディレクトリに移動したら、次のようなオプションを指定して起動します。
$ jupyter notebook --ip=`hostname` --port=58888 --no-browser
このとき画面上に接続に必要なトークンが表示されますので確認しておきます。
```
$ jupyter notebook --ip=hostname
--port=58888 --no-browser
[I 21:09:48.392 NotebookApp] Writing notebook server cookie secret to /home/ユーザー名/.local/share/jupyter/runtime/notebook_cookie_secret
[I 21:10:03.057 NotebookApp] Serving notebooks from local directory: /home/ユーザー名/ディレクトリ名
[I 21:10:03.057 NotebookApp] The Jupyter Notebook is running at:
[I 21:10:03.057 NotebookApp] http://at029:58888/?token=e5dfb494845ca2f63284d8878be1899d86312d51d94c5968
[I 21:10:03.057 NotebookApp] or http://127.0.0.1:58888/?token=e5dfb494845ca2f63284d8878be1899d86312d51d94c5968
[I 21:10:03.057 NotebookApp] Use Control-C to stop this server and shut down all kernels (twice to skip confirmation).
[C 21:10:03.086 NotebookApp]
To access the notebook, open this file in a browser:
file:///home/ユーザー名/.local/share/jupyter/runtime/nbserver-37289-open.html
Or copy and paste one of these URLs:
http://at029:58888/?token=e5dfb494845ca2f63284d8878be1899d86312d51d94c5968 <== トークン
or http://127.0.0.1:58888/?token=e5dfb494845ca2f63284d8878be1899d86312d51d94c5968
```
追記)トークンの指定
--NotebookApp.token
オプションを指定して接続トークンを指定することができます。
jupyter notebook --ip=`hostname` --port=58888 --no-browser --NotebookApp.token='MyToken'
追記)singularityの利用
Singularity 内の Jupyter Notebook も次のように利用可能です。
$ singularity exec datascience-notebook_latest.sif jupyter notebook --ip=`hostname` --port=58888 --no-browser
(使用したイメージファイルはsingularity pull docker://jupyter/datascience-notebook
でビルドしたものです)
なお、Jupyter Notebook 内で "!" をつけてシェルコマンドが実行できるので追加パッケージをインストールすることもできます。
!pip install pysam
この場合、パッケージのインストールはコンテナ内ではなく、ホームディレクトリの .local 以下になるようです(~/.local/lib/python3.7/site-packages
)。コンテナ外からも .local を利用していた場合、なんらかのバッティングが生じる場合があるかもしれません。
ローカル側の操作
以下は Mac や Linux を使用した場合です。Windows でもポートフォワーディングを行えば接続できるはずです。
-
新たなターミナルを開き ssh コマンドを使って Jupyter Notebook が動いているノードに対しスパコンゲートウェイを経由したポートフォワーディングを行います。下記コマンドはローカルホストの 8888 番ポートへの通信をスパコン at029 ノードの 58888 番ポートへ転送するという意味です。
$ ssh -L 8888:at029:58888 ユーザー名@gw.ddbj.nig.ac.jp
```
ターミナルは開いたままにしておいてください。
2. ブラウザで http://localhost:8888 を開く
3. トークンを入力してログイン
以上です。