コンテンツにスキップ

Jupyter Notebookの利用

Jupyter Notebookを使ったlxgpu資源の利用

lxgpu01,lxgpu02ではJupyter Notebookのインスタンスを立ち上げリソースを利用することが可能です。以下の文書はlxgpu01を例に 書かれていますが、lxgpu02でも同様の手順でjupyter notebookが利用できます。

手順

Jupyterのインストール

  • LCGEnv環境では既にjupyterがインストールされているので、すぐに使うことができます。venv+pipで仮想環境を作成した場合はjupyterをpip installすることでjupyterが使用できるようになります。

jupyter_notebook_config.py の設定

  • パスワードのハッシュ化(パスワードを入力し出力されたハッシュをメモしておく)

    [user@lxgpu01 ~]$ ipython
    In [1]: from jupyter_server.auth import passwd
    In [2]: passwd()
    Enter passwd:
    Verify passwd:
    Out[2]: 'argon2:xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx'
    
    (Jupyter Notebook 6以前を使用している場合はfrom notebook.auth import passwdとしてください。)

  • 設定ファイルの作成

    [user@lxgpu01 ~]$ jupyter-notebook --generate-config
    # ~/.jupyter/jupyter_notebook_config.py が生成されます。
    [user@lxgpu01 ~]$ mkdir -p ~/.jupyter/my_notebook/
    
  • 設定ファイル(~/.jupyter/jupyter_notebook_config.py)に以下の様な設定を追加

    c.NotebookApp.ip = '*'
    c.NotebookApp.open_browser = False
    c.NotebookApp.notebook_dir = '/home/user/.jupyter/my_notebook'
    c.NotebookApp.port = 18123
    c.NotebookApp.port_retries = 50
    c.NotebookApp.password = u'argon2:xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx'
    
    • notebook_dirには上記で作ったノート用ディレクトリを設定(jupyter-notebookを立ち上げるディレクトリからの相対パス、または/...で初める絶対パスを指定。)
    • portは18000番台の適当な番号を設定(他の人がすでに使っているとエラーになるので、その場合は他のポートを利用してください。)
    • passwordは上記で取得したハッシュ値を記入

Jupyter Notebookの起動

  • インスタンスの立ち上げ:

    [user@lxgpu01 ~]$ jupyter-notebook
    [W 18:19:12.111 NotebookApp] WARNING: The notebook server is listening on all IP addresses and not using encryption. This is not recommended.
    [I 18:19:12.116 NotebookApp] Serving notebooks from local directory: /home/user/.jupyter/my_notebook
    [I 18:19:12.116 NotebookApp] Jupyter Notebook 6.4.0 is running at:
    [I 18:19:12.116 NotebookApp] http://lxgpu01.icepp.jp:18123/
    [I 18:19:12.116 NotebookApp] Use Control-C to stop this server and shut down all kernels (twice to skip confirmation).
    
    • 起動時に指定したポートがすでに使われている場合、port_retriesで指定した数だけ別のポートを試します。(指定しない場合はデフォルトで50回まで)。毎回起動時にメッセージを確認して、どの実際にどのポートを使っているか確かめてください。
    • コマンドラインから直接ポートを指定することも出来ます。(毎回ポートを確認するのが面倒で、使われてるときだけ別のを指定して使いたい、という場合はc.NotebookApp.port_retries=0を設定しておいて、以下のコマンドで明示的にポートを指定する方が便利な場合もあるかと思います。)
    [user@lxgpu01 ~]$ jupyter-notebook --port 18124
    

ポートフォワーディングで手元の端末からアクセス

  • 立ち上がったら手元の端末のターミナルからlogin.icepp.jp経由でsshを使ったポートフォワードを行う(lxgpu01.icepp.jpは外部から直接アクセスできないためlogin.icepp.jpを経由したポートフォワードが必要。また、管理上ポートフォワードが出来るIPに制限をかけている関係上lxgpu01.icepp.jpのIPアドレス(157.82.112.221)を直接使う必要があります。)

    [user@localhost ~]$ $ ssh -L 127.0.0.1:12345:lxgpu01.icepp.jp:18123 login.icepp.jp
    
  • もしくは~/.ssh/configに以下のように記述しておくことで$ ssh jupyterとするだけで同じことが可能になります。

    Host jupyter
        HostName login.icepp.jp
        User
        localForward 127.0.0.1:12345 lxgpu01.icepp.jp:18123
    
  • 端末のブラウザで http://127.0.0.1:12345 を開く

    • パスワードを聞かれたら最初にしたパスワードを入力してログイン
    • 成功したらNotebookの下にあるPython3アイコンをクリックしノートを作成
    • 以下のテストコードを実行してみる。ホストがlxgpu01.icepp.jp、デバイスとしてGPUなどが確認出来たらOK。
      In  [1]: !hostname
      
      Out [1]: lxgpu01.icepp.jp
      
      In  [2]: import tensorflow as tf
               tf.config.list_physical_devices('GPU')
      
      Out [2]: [PhysicalDevice(name='/physical_device:GPU:0', device_type='GPU'),
                  PhysicalDevice(name='/physical_device:GPU:1', device_type='GPU')]
      

© 2024 ICEPP, the University of Tokyo.
Reproduction of the article, figures and tables on this page is allowed as specified in the CC-BY-4.0 license.