LoginSignup
17
20

SSH接続+VSCodeでのJupyterカーネルのバックグラウンド実行 for Kaggler

Last updated at Posted at 2023-06-11

はじめに

ノートPCからデスクトップPCにSSH接続を行う際、VSCodeを終了するとJupyterのカーネルも同時に終了してしまいます。ノートPCの電源を切ったり、SSH接続が切れてもカーネルは終了させずにバックグラウンドで実行を続けることが、本記事の目的です。

どんな時に使えるの?

私は趣味でKaggleに参加しており、MacBookから自宅の自作PCにSSH接続するという形で運用しています。この方法により、使い慣れたMacBook(のVSCode)でコーディングを行いつつ、自作PCの計算資源を活用できます。しかし、深層学習モデルの学習といった実行時間が長い処理を行う場合、MacBookがスリープしたり回線が切断されると、その学習も途中で停止してしまいます。このような場合は本記事の方法によりVSCodeのJupyterをバックグラウンド実行させておくことで、学習を止めずに回し続けることができます。

開始時

1. VSCodeサーバーを立ち上げる

  • デスクトップ側のターミナルで以下のコマンドを実行し、Jupyterサーバーを立ち上げる。
nohup jupyter notebook &
  • カレントディレクトリにnohup.outファイルが生成されるので、中に記載されているJupyterのリンクをコピーする。
    • リンクの例: http://localhost:8890/?token=be27f057c61ef5a258fc9f1cc989905b9085450e34305f44
    • なお、上記のリンクはGitHubのissueから取ってきたものです。
    • 注) リンクが見つからない場合は、rootユーザーとして実行するとリンクが出力される可能性があります。nohup jupyter notebook --allow-root &

2. VSCodeでURLを指定する

  • VSCodeのJupyterファイルを開き(今回はexp001.ipynb)、右上にあるカーネルの選択をクリック
  • 別のカーネルを選択既存の Jupyter サーバー → 先ほどコピーしたリンクをペースト
    イメージ.jpg
    イメージ1.jpg
    スクリーンショット 2023-06-11 1.56.30.png

これでVSCodeを落としたりSSH接続を切ってもカーネルが切れなくなりました。

終了時

  • デスクトップ側のターミナルで以下のコマンドを実行することで、起動中のサーバーのポート番号を調べる。
jupyter notebook list
  • サーバーを落とす(今回はポート番号が8890でした)。
jupyter notebook stop 8890

以上です。簡単ですね!

備考

  • GitHubのissueによると、上記の作業は各notebookごとに行う必要があります。

Is this tedious to do for every individual notebook one wishes to persist? Yes, absolutely. Is it less tedious than having to rerun remote notebooks anytime your computer snoozes/sleeps? ¯(ツ)/¯

参考文献

GitHubのissue
裏で動いているJupyter Notebookのサーバーを落とすコマンド

17
20
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
17
20