Qiita Teams that are logged in
You are not logged in to any team

Log in to Qiita Team
Community
OrganizationEventAdvent CalendarQiitadon (β)
Service
Qiita JobsQiita ZineQiita Blog
7
Help us understand the problem. What are the problem?

More than 1 year has passed since last update.

@nigyta

遺伝研スパコンで Jupyter Notebook を利用する方法

概要

遺伝研スパコンのゲートウェイノードを踏み台にしたポートフォワーディングを使うことで、スパコン側で起動している Jupyter Notebook にローカル側から接続することができます。

産総研 ABCI システムの利用ガイドを参考にしました。遺伝研スパコンでも応用可能な情報が豊富です。

ここで紹介する方法に関しては遺伝研スパコンの利用法として問題がないことを管理者に確認をしておりますが、過剰なリソースの占有や他のユーザーに迷惑がかかるような計算処理を行わないように気をつけてください。

スパコン側の操作

  1. スパコンゲートウェイノードにログインしたのち、qloginをおこなってインタラクティブノードにログインします。複数 CPU を使った並列計算や大量のメモリを必要とする処理を行う場合には-lオプションや-peオプションでリソースの指定をして qlogin を行ってください。

  2. ログイン先のホスト名を確認します。qlogin 時に負荷の低いノードが自動的に選ばれるためログインごとにホスト名は変わります。

    $ hostname
    at029  # 例
    
  3. netstatコマンドで空いているポート番号を調べます。使用したいポート番号を grep して何も表示されなければ空いています。50000番台以降なら問題ないでしょう。

    $ netstat -an |grep 58888  # 何も表示されないことを確認
    
  4. 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 でもポートフォワーディングを行えば接続できるはずです。

  1. 新たなターミナルを開き ssh コマンドを使って Jupyter Notebook が動いているノードに対しスパコンゲートウェイを経由したポートフォワーディングを行います。下記コマンドはローカルホストの 8888 番ポートへの通信をスパコン at029 ノードの 58888 番ポートへ転送するという意味です。

    $ ssh -L 8888:at029:58888 ユーザー名@gw.ddbj.nig.ac.jp
    

    ターミナルは開いたままにしておいてください。

  2. ブラウザで http://localhost:8888 を開く

  3. トークンを入力してログイン

以上です。

Why not register and get more from Qiita?
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away
7
Help us understand the problem. What are the problem?