はじめに

ノート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を指定する

スクリーンショット 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のサーバーを落とすコマンド

广告
将在 10 秒后关闭
bannerAds