Jupyter Notebookの使い方

Jupyter Notebook

WebブラウザからPythonコマンドの実行などが行えるJupyter Notebookがインストールされています。
Jupyter Notebookはログインノードでも計算ノードでも利用可能ですが、
利用できる計算コアやメモリの制限はjupyterコマンドを実行する状況に依存するため、
必要な資源にあわせて適切に利用してください。

(多くの計算コアやメモリを必要とする処理を行う場合は、ログインノードではなく計算ノードを使用してください。)


Jupyter Notebookの基本的な利用手順

jupyter_notebook/7.2.1 モジュールをloadし、jupyterコマンドでプロセスを立ち上げ、
Webブラウザでアクセスすることで利用できます。

[ku40000105@genkai0002 ~]$ module load jupyter_notebook/7.2.1
[ku40000105@genkai0002 ~]$ jupyter notebook --no-browser --ip=0.0.0.0
中略
    To access the server, open this file in a browser:
        file:///home/pj24001603/ku40000105/.local/share/jupyter/runtime/jpserver-801304-open.html
    Or copy and paste one of these URLs:
        http://genkai0002:8888/tree?token=927512b3ef9387a2ea5c70811e842be0ca3f861ef470eab0
        http://127.0.0.1:8888/tree?token=927512b3ef9387a2ea5c70811e842be0ca3f861ef470eab0

http:// で始まる行がWebブラウザでアクセスするべきアドレスです。
しかしこれらのアドレスは外部から直接接続できるアドレスではありません。
SSHポート転送を行うか、玄界上でWebブラウザを起動してアクセスしてください。

玄界のログインノード上では firefox コマンドでfirefoxが起動可能なため、
起動後にURL入力欄に上記アドレス(上記の例ではhttp://genkai0002:8888/tree?token=82132e56f7bef97717ff1ed7a3f50ac46873ccfb3faa2f2a
を入力すればJupyter Notebookが利用できます。
この方法を使う場合はMobaXtermなどX転送が利用可能な接続方法を使用してください。

X転送は対応する接続ソフトウェアであれば容易に利用できますが、動作速度はいまひとつ(反応が遅い)ことも多いです。
SSHポート転送を使った方が快適に利用できることが多いです。

以下にSSHポート転送でJupyter Notebookを利用する方法を示します。

SSHコマンドでSSH接続する場合は、-Lオプションで転送するポートと転送先の情報を指定します。
例えば上記の起動例に対しては以下のように接続します。
ssh -i 秘密鍵 -L 転送元ポート番号:genkai0002:8888 スーパーコンピュータアカウント@genkai.hpc.kyushu-u.ac.jp
この状態で手元のPCのWebブラウザを起動し、
http://127.0.0.1:転送元ポート番号/tree?token=927512b3ef9387a2ea5c70811e842be0ca3f861ef470eab0
を開けばJupyter Notebookが利用できます。

MoboXtermで接続する場合も、Packages(MobApt)でopensshをインストールしてあれば
Local Terminalから上記SSHコマンドによる接続を行うことができます。
また、ToolsメニューもしくはTunnelingアイコンからMobaSSHTunnelを起動し、
New SSH tunnelボタンからポート転送設定画面を起動し、
以下の画像のように転送設定を行い、
Start/stop部分の再生ボタンを選択すれば、ポート転送が開始されます。
この状態で手元のPCのWebブラウザを起動し、
http://127.0.0.1:転送元ポート番号/tree?token=927512b3ef9387a2ea5c70811e842be0ca3f861ef470eab0
を開けばJupyter Notebookが利用できます。

MobaXtermによるポート転送

Jupyter Notebookを終了させる際は、以下のいずれかの操作をしてください。

  1. Webブラウザ上でFile-Shut Downを選択する
  2. jupyter notebookを実行したターミナル上でCtrl+cを実行し、Shut down this Jupyter server (y/[n])?に対してyを入力してからEnterを入力する
[I 2024-07-02 16:37:09.353 ServerApp] interrupted
[I 2024-07-02 16:37:09.354 ServerApp] Serving notebooks from local directory: /home/pj24001603/ku40000105
    0 active kernels
    Jupyter Server 2.14.1 is running at:
(接続情報)
Shut down this Jupyter server (y/[n])? y
[C 2024-07-02 16:37:11.385 ServerApp] Shutdown confirmed
[I 2024-07-02 16:37:11.386 ServerApp] Shutting down 5 extensions
[ku40000105@genkai0001 ~]$ 

ログインノードで利用する例

ログインノード上でmoduleをloadし、jupyterコマンドを実行すると接続情報が表示されます。

[ku40000105@genkai0001 ~]$ module load jupyter_notebook/7.2.1
[ku40000105@genkai0001 ~]$ jupyter notebook --no-browser --ip=0.0.0.0
[I 2024-07-02 16:21:07.119 ServerApp] jupyter_lsp | extension was successfully linked.
[I 2024-07-02 16:21:07.123 ServerApp] jupyter_server_terminals | extension was successfully linked.
[I 2024-07-02 16:21:07.127 ServerApp] jupyterlab | extension was successfully linked.
[I 2024-07-02 16:21:07.131 ServerApp] notebook | extension was successfully linked.
[I 2024-07-02 16:21:07.741 ServerApp] notebook_shim | extension was successfully linked.
[I 2024-07-02 16:21:07.808 ServerApp] notebook_shim | extension was successfully loaded.
[I 2024-07-02 16:21:07.810 ServerApp] jupyter_lsp | extension was successfully loaded.
[I 2024-07-02 16:21:07.811 ServerApp] jupyter_server_terminals | extension was successfully loaded.
[I 2024-07-02 16:21:07.820 LabApp] JupyterLab extension loaded from /home/app/jupyter_notebook/7.2.1/lib/python3.11/site-packages/jupyterlab
[I 2024-07-02 16:21:07.820 LabApp] JupyterLab application directory is /home/app/jupyter_notebook/7.2.1/share/jupyter/lab
[I 2024-07-02 16:21:07.821 LabApp] Extension Manager is 'pypi'.
[I 2024-07-02 16:21:07.830 ServerApp] jupyterlab | extension was successfully loaded.
[I 2024-07-02 16:21:07.836 ServerApp] notebook | extension was successfully loaded.
[I 2024-07-02 16:21:07.836 ServerApp] Serving notebooks from local directory: /home/pj24001603/ku40000105
[I 2024-07-02 16:21:07.836 ServerApp] Jupyter Server 2.14.1 is running at:
[I 2024-07-02 16:21:07.836 ServerApp] http://genkai0001:8888/tree?token=2b9c7f0b6810fb6a8944e32f35afeaaecb3277490af9b4d9
[I 2024-07-02 16:21:07.836 ServerApp]     http://127.0.0.1:8888/tree?token=2b9c7f0b6810fb6a8944e32f35afeaaecb3277490af9b4d9
[I 2024-07-02 16:21:07.836 ServerApp] Use Control-C to stop this server and shut down all kernels (twice to skip confirmation).
[C 2024-07-02 16:21:07.842 ServerApp]

    To access the server, open this file in a browser:
        file:///home/pj24001603/ku40000105/.local/share/jupyter/runtime/jpserver-1694794-open.html
    Or copy and paste one of these URLs:
        http://genkai0001:8888/tree?token=2b9c7f0b6810fb6a8944e32f35afeaaecb3277490af9b4d9
        http://127.0.0.1:8888/tree?token=2b9c7f0b6810fb6a8944e32f35afeaaecb3277490af9b4d9
[I 2024-07-02 16:21:08.173 ServerApp] Skipped non-installed server(s): bash-language-server, dockerfile-language-server-nodejs, javascript-typescript-langserver, jedi-language-server, julia-language-server, pyright, python-language-server, python-lsp-server, r-languageserver, sql-language-server, texlab, typescript-language-server, unified-language-server, vscode-css-languageserver-bin, vscode-html-languageserver-bin, vscode-json-languageserver-bin, yaml-language-server

この状態でSSHポート転送をしてWebブラウザから接続すればJupyter Notebookが利用できます。

SSHポート転送の例:

$ ssh -i 秘密鍵 -L 8888:genkai0001:8888 スーパーコンピュータアカウント@genkai.hpc.kyushu-u.ac.jp
[ku40000105@genkai0002 ~]$(玄界にログインした状態)

Webブラウザで http://127.0.0.1:8888/tree?token=2b9c7f0b6810fb6a8944e32f35afeaaecb3277490af9b4d9 に接続するとJupyter Notebookの画面が表示されます。


計算ノードで利用する例

以下にインタラクティブジョブで接続する例を示します。バッチジョブでも同様に接続が可能です。

インタラクティブジョブを起動し、
moduleのloadとjupyterコマンドを実行すると接続情報が表示されます。

[ku40000105@genkai0001 ~]$ pjsub --interact -L rscgrp=b-inter,elapse=10:00,gpu=1
[INFO] PJM 0000 pjsub Job 82900 submitted.
[INFO] PJM 0081 .connected.
[INFO] PJM 0082 pjsub Interactive job 82900 started.
[ku40000105@b0031 ~]$ module load jupyter_notebook/7.2.1
[ku40000105@b0031 ~]$ jupyter notebook --no-browser --ip=0.0.0.0
[I 2024-07-02 16:31:27.878 ServerApp] jupyter_lsp | extension was successfully linked.
[I 2024-07-02 16:31:27.882 ServerApp] jupyter_server_terminals | extension was successfully linked.
[I 2024-07-02 16:31:27.886 ServerApp] jupyterlab | extension was successfully linked.
[I 2024-07-02 16:31:27.890 ServerApp] notebook | extension was successfully linked.
[I 2024-07-02 16:31:28.516 ServerApp] notebook_shim | extension was successfully linked.
[I 2024-07-02 16:31:28.586 ServerApp] notebook_shim | extension was successfully loaded.
[I 2024-07-02 16:31:28.588 ServerApp] jupyter_lsp | extension was successfully loaded.
[I 2024-07-02 16:31:28.589 ServerApp] jupyter_server_terminals | extension was successfully loaded.
[I 2024-07-02 16:31:28.597 LabApp] JupyterLab extension loaded from /home/app/jupyter_notebook/7.2.1/lib/python3.11/site-packages/jupyterlab
[I 2024-07-02 16:31:28.597 LabApp] JupyterLab application directory is /home/app/jupyter_notebook/7.2.1/share/jupyter/lab
[I 2024-07-02 16:31:28.598 LabApp] Extension Manager is 'pypi'.
[I 2024-07-02 16:31:28.608 ServerApp] jupyterlab | extension was successfully loaded.
[I 2024-07-02 16:31:28.613 ServerApp] notebook | extension was successfully loaded.
[I 2024-07-02 16:31:28.614 ServerApp] Serving notebooks from local directory: /home/pj24001603/ku40000105
[I 2024-07-02 16:31:28.614 ServerApp] Jupyter Server 2.14.1 is running at:
[I 2024-07-02 16:31:28.614 ServerApp] http://b0031:8888/tree?token=6394023d0b3ebadd9a9bb565b0d7bd77dc28c385b0db63e1
[I 2024-07-02 16:31:28.614 ServerApp]     http://127.0.0.1:8888/tree?token=6394023d0b3ebadd9a9bb565b0d7bd77dc28c385b0db63e1
[I 2024-07-02 16:31:28.614 ServerApp] Use Control-C to stop this server and shut down all kernels (twice to skip confirmation).
[C 2024-07-02 16:31:28.619 ServerApp]

    To access the server, open this file in a browser:
        file:///home/pj24001603/ku40000105/.local/share/jupyter/runtime/jpserver-143-open.html
    Or copy and paste one of these URLs:
        http://b0031:8888/tree?token=6394023d0b3ebadd9a9bb565b0d7bd77dc28c385b0db63e1
        http://127.0.0.1:8888/tree?token=6394023d0b3ebadd9a9bb565b0d7bd77dc28c385b0db63e1
[I 2024-07-02 16:31:30.846 ServerApp] Skipped non-installed server(s): bash-language-server, dockerfile-language-server-nodejs, javascript-typescript-langserver, jedi-language-server, julia-language-server, pyright, python-language-server, python-lsp-server, r-languageserver, sql-language-server, texlab, typescript-language-server, unified-language-server, vscode-css-languageserver-bin, vscode-html-languageserver-bin, vscode-json-languageserver-bin, yaml-language-server

この状態でSSHポート転送をしてWebブラウザから接続すればJupyter Notebookが利用できます。

SSHポート転送の例:

$ ssh -i 秘密鍵 -L 8888:b0031:8888 スーパーコンピュータアカウント@genkai.hpc.kyushu-u.ac.jp
[ku40000105@genkai0002 ~]$(玄界にログインした状態)

Webブラウザで http://127.0.0.1:8888/tree?token=6394023d0b3ebadd9a9bb565b0d7bd77dc28c385b0db63e1 に接続するとJupyter Notebookの画面が表示されます。
今回はノードグループBを使っているため、GPUも使用可能です。
NewからTerminalでターミナル(シェル)を起動し、GPUの確認を行うコマンドを実行すると確かにGPUが見えています。

sh-4.4$ nvidia-smi
Tue Jul  2 16:32:08 2024       
+---------------------------------------------------------------------------------------+
| NVIDIA-SMI 535.154.05             Driver Version: 535.154.05   CUDA Version: 12.2     |
|-----------------------------------------+----------------------+----------------------+
| GPU  Name                 Persistence-M | Bus-Id        Disp.A | Volatile Uncorr. ECC |
| Fan  Temp   Perf          Pwr:Usage/Cap |         Memory-Usage | GPU-Util  Compute M. |
|                                         |                      |               MIG M. |
|=========================================+======================+======================|
|   0  NVIDIA H100                    On  | 00000000:1C:00.0 Off |                    0 |
| N/A   20C    P0              67W / 700W |      0MiB / 95830MiB |      0%      Default |
|                                         |                      |             Disabled |
+-----------------------------------------+----------------------+----------------------+
                                                                                         
+---------------------------------------------------------------------------------------+
| Processes:                                                                            |
|  GPU   GI   CI        PID   Type   Process name                            GPU Memory |
|        ID   ID                                                             Usage      |
|=======================================================================================|
|  No running processes found                                                           |
+---------------------------------------------------------------------------------------+
sh-4.4$ nvidia-smi -L
GPU 0: NVIDIA H100 (UUID: GPU-03fb7359-eec6-36a3-9746-0bc092721223)
sh-4.4$