コンテンツにスキップ

Jupyter Notebookの利用

Jupyter Notebookは、コードの記述とその結果の取得を、ブラウザ上でドキュメントを作成しながら行える便利なツールです。ここでは、ABCI上でJupyter Notebookを起動し、手元のPCのブラウザから利用する手順について説明します。

pipインストールによる利用手順

ここでは、Jupyter Notebookをpipでインストールして利用する手順を説明します。

インストール

計算ノードを一台占有し、Python仮想環境を作成し、piptensorflowjupyterをインストールします。 この例では~/jupyter_envディレクトリの中にインストールしています。

[username@es1 ~]$ qrsh -g grpname -l rt_F=1 -l h_rt=1:00:00
[username@g0001 ~]$ module load gcc/9.3.0 python/3.10 cuda/11.2 cudnn/8.1
[username@g0001 ~]$ python3 -m venv ~/jupyter_env
[username@g0001 ~]$ source ~/jupyter_env/bin/activate
(jupyter_env) [username@g0001 ~]$ python3 -m pip install --upgrade pip
(jupyter_env) [username@g0001 ~]$ python3 -m pip install tensorflow jupyter numpy

次回以降は、以下のようにモジュールの読み込みと~/jupyter_envのアクティベートだけで済みます。

[username@es1 ~]$ qrsh -g grpname -l rt_F=1 -l h_rt=1:00:00
[username@g0001 ~]$ module load gcc/9.3.0 python/3.10 cuda/11.2 cudnn/8.1
[username@g0001 ~]$ source ~/jupyter_env/bin/activate

Note

CUDAやcuDNNの他に必要なモジュールがあれば、同様にJupyter Notebookの起動前にロードしておく必要があります。

Jupyter Notebookの起動

あとで必要となるため、計算ノードのホスト名を確認しておきます。

(jupyter_env) [username@g0001 ~]$ hostname
g0001.abci.local

続いて、以下のようにJupyter Notebookを起動します。

(jupyter_env) [username@g0001 ~]$ jupyter notebook --ip=`hostname` --port=8888 --no-browser
:
(snip)
:
[I 20:41:12.082 NotebookApp] Use Control-C to stop this server and shut down all kernels (twice to skip confirmation).
[C 20:41:12.090 NotebookApp]

    To access the notebook, open this file in a browser:
        file:///home/username/.local/share/jupyter/runtime/nbserver-xxxxxx-open.html
    Or copy and paste one of these URLs:
        http://g0001.abci.local:8888/?token=token_string
     or http://127.0.0.1:8888/?token=token_string

SSHトンネルの作成

ABCIシステム利用環境のSSHクライアントによるログイン::一般的なログイン方法の手順に従い、ローカルPCの10022番ポートがインタラクティブノード(es)に転送されているものとします。

次に、ローカルPCの8888番ポートを計算ノードの8888番ポートに転送するSSHトンネルを作成します。「g0001」は、Jupyter Notebookの起動の際に確認した計算ノードのホスト名を指定してください。

[yourpc ~]$ ssh -N -L 8888:g0001:8888 -l username -i /path/identity_file -p 10022 localhost

Jupyter Notebookへの接続

ブラウザで以下のURLを開きます。「token_string」は、Jupyter Notebookの起動の際に表示されたものを指定してください。

http://127.0.0.1:8888/?token=token_string

動作確認するには、ブラウザにJupyter Notebookのダッシュボード画面が表示されたら、Newボタンから新しいPython3 Notebookを作成し、以下のように実行します。

import tensorflow
print(tensorflow.__version__)
print(tensorflow.config.list_physical_devices('GPU'))

Jupyter Notebookの使い方は、Jupyter Notebook Documentationを参照してください。

Jupyter Notebookの終了

以下の手順で終了します。

  1. (ローカルPC) ダッシュボード画面のQuitボタンで終了する
  2. (ローカルPC) 8888番ポートを転送していたSSHトンネル接続をControl-Cで終了する
  3. (計算ノード) jupyterプログラムが終了していない場合は、Control-Cで終了する

Singularityを用いた利用手順

pipインストールの代わりに、Jupyter Notebookがインストールされたコンテナイメージを利用することもできます。例えば、NVIDIA NGCで提供されているTensorFlowのDockerイメージには、TensorFlowだけではなくJupyter Notebookもインストールされています。

コンテナイメージの生成

コンテナイメージを取得します。ここでは、NGCが提供しているDockerイメージ(nvcr.io/nvidia/tensorflow:19.07-py3)を利用します。

[username@es1 ~]$ module load singularitypro
[username@es1 ~]$ singularity pull docker://nvcr.io/nvidia/tensorflow:22.07-tf2-py3
INFO:    Converting OCI blobs to SIF format
INFO:    Starting build...
Getting image source signatures
Copying blob a1d578e9bd9d done
:
(snip)
:
INFO:    Creating SIF file...

Jupyter Notebookの起動

計算ノードを一台占有します。あとで必要となるため、計算ノードのホスト名を確認しておきます。

[username@es1 ~]$ qrsh -g grpname -l rt_F=1 -l h_rt=1:00:00
[username@g0001 ~]$ hostname
g0001.abci.local

続いて、以下のようにコンテナイメージの中のJupyter Notebookを起動します。

[username@g0001 ~]$ module load singularitypro
[username@g0001 ~]$ singularity run --nv ./tensorflow_22.07-tf2-py3.sif jupyter notebook --ip=`hostname` --port=8888 --no-browser

================
== TensorFlow ==
================

NVIDIA Release 22.07-tf2 (build 41650896)
TensorFlow Version 2.9.1

Container image Copyright (c) 2022, NVIDIA CORPORATION & AFFILIATES. All rights reserved.
Copyright 2017-2022 The TensorFlow Authors.  All rights reserved.

:
(snip)
:
[I 17:34:25.645 NotebookApp] Use Control-C to stop this server and shut down all kernels (twice to skip confirmation).
[C 17:34:25.654 NotebookApp]

    To access the notebook, open this file in a browser:
        file:///home/username/.local/share/jupyter/runtime/nbserver-xxxxxx-open.html
    Or copy and paste one of these URLs:
        http://hostname:8888/?token=token_string

以降の手順はpipインストールの場合と共通です。