機械学習用LinuxサーバのJupyter Notebookに接続する

公開:2023/01/18 最終更新:2024/07/12 大山

研究室では,GPUが搭載されている機械学習用サーバを複数所有している.標準的な機械学習/深層学習開発環境を Jupyter 環境で提供しているので,学生は Web ブラウザ等でサーバにアクセスして Python による機械学習プログラミングを行える.

ここでは研究室の機械学習用サーバの Jupyter Notebook にアクセスする方法を解説する.卒業研究が本格的に動き出す前に Jupyter 環境で機械学習プログラミングに慣れておくこと勧める.

研究室のWi-Fiに接続する

セキュリティのため,研究室の機械学習サーバーには研究室LANからしかアクセスできない設定になっている.研究室で作業する時は,研究室のWi-Fiに接続すれば直接サーバアクセスできる.研究室Wi-Fiの接続情報は以下の通りである.

SSID: PatLab_5G または PatLab_2G
接続パスワード: GQJ2sGYihphW

利用可能な計算サーバ

ratchet:HPC tech 社製:2020年購入

ironhide:HPC tech 社製:2023年購入

sandstorm:HPC tech 社製:2024年購入

機械学習用サーバのJupyter Notebookに接続する

各機械学習用サーバのアドレスは以下の通り.トークンによる認証を導入しているので,以下の認証用Tokenを入力する.

jupyter notebook login

それぞれのサーバで作業用フォルダは共有されているので, いずれかのサーバのjupyter-notebookでファイルを作成・更新すると,全てのサーバで利用できる. 現在は単一ユーザによる運用となっているので,フォルダやファイル名で誰のファイルなのかわかるようにしておくこと.近日中にユーザ認証を導入する予定である.

Jupyter Notebookの使い方は各自勉強すること.

研究室外からアクセスする方法

大学のLAN(大学内無線LAN接続など)からは SSH port forwarding を併用することで,研究室の jupyter notebook にアクセス可能である.自宅など学外からは大学が提供するVPNサービスを利用して学内LANに接続すればアクセスできる.

準備

事前に以下の準備を完了させる

ローカルPCのssh設定ファイルに,以下の設定記述を追加する.

    # 研究室の計算サーバ(研究室外からのアクセス用)
    Host ratchet_VPN
        HostName 133.20.58.97
        User *自分のアカウント名*

*自分のアカウント名*には別途指定されたアカウント名を入力する.

SSH port forwarding で機械学習サーバの Jupyter Notebook に接続する

SSH port forwarding を利用してローカルPCの8989番ポートをサーバの8989番ポートに転送する.

ローカルPC上のいずれかのターミナル(VS-codeの「ターミナル」や Windows Power Shell,コマンドプロンプトなど)で以下の ssh コマンドを実行し,サーバにリモートログインする.

# ratchet に接続する場合
ssh -L localhost:8989:192.168.11.10:8989 ratchet_VPN
# ironhide #1 に接続する場合
ssh -L localhost:8989:192.168.11.11:8989 ratchet_VPN
# ironhide #2 に接続する場合
ssh -L localhost:8989:192.168.11.11:8990 ratchet_VPN
# sandstorm #1 に接続する場合
ssh -L localhost:8989:192.168.11.12:8989 ratchet_VPN
# sandstorm #2 に接続する場合
ssh -L localhost:8989:192.168.11.12:8990 ratchet_VPN
#上記のとおりSSH設定ファイルを記述した場合
または

ssh -L localhost:8989:192.168.11.10:8989 <自分のログイン名>@133.20.58.97
# SSH設定ファイル記述を省略した場合

リモートログインを保持したまま,Webブラウザで localhost:8989(ローカルPCの8989番ポート)にアクセスすると,SSH port forwarding によりパケットが転送され,サーバの Jupyter Notebook にアクセスできる.

(注意)Jupyter Notebook の接続を終了するまでリモートログインは保持し続ける必要がある.

Jupyter Notebook 使用後の注意

Notebookでの作業が終了した時は,メニューから「File」→「Close and Halt」を選択してNotebookを閉じてからWebブラウザのウィンドウを閉じる. 直接Webブラウザのウィンドウを閉じると,Jupyter Kernel(Pythonコードを実行するプログラム)が閉じられず,サーバのメモリ資源(GPUメモリ等)を保持し続けてしまい, 他の人がコードを実行できなくなってしまう場合がある.

jupyter notebook Close and Halt

もし「Close and Halt」をせずにウィンドウを閉じてしまった場合は, Jupyterのファイルメニュー画面から再度同じNotebookを開くか, 「Running」タブに列挙されているNotebookから該当するNotebookを開いて「Close and Halt」する. もしくは右側に表示される【Shutdown】ボタンから強制終了させることもできる. くれぐれも他の人のNotebookを閉じてしまわないように注意すること.

jupyter notebook Shutdown

管理者メモ

jupyterサーバの立ち上げ方

  1. 各サーバにユーザ名 jupyter でログインする.パスワードは 'P@t_Lab0'
  2. cd nvidia_jupyter_docker/users_folder/
  3. ratchet: ../run_jupyter_docker.sh を実行
    ironhide: ./run_jupyter_docker_GPU1.shまたは_GPU2.shを実行
  4. Ctrl-p, Ctrl-qでdockerコンテナからdetachする.

jupyterサーバの再起動

jupyter サーバの調子が悪くなった場合など,jupyterサーバを再起動すれば解決する可能性がある.

  1. サーバにユーザ名 jupyter でログインする.
  2. docker ps コマンドを実行し,起動中コンテナの名前(NAMES:各行末尾)を確認する.
  3. docker attach [コンテナ名]
  4. Ctrl-c で jupyter サーバを停止させる.
  5. 自動的に再起動される.

Docker コンテナ自動再起動の停止

jupyter用コンテナは自動的に再起動されるよう設定されているので, 停止するためには docker update --restart=no [コンテナ名] で再起動設定を一時的に無効化する必要がある.


[目次へ]


Pattern and Media Informatics Labo. TDU