SSHセッションが切れてもバックグラウンドで処理を継続する方法 | GPUSOROBAN
本記事では、GPUSOROBANのインスタンスに接続する際に、SSHセッションが切れた状態でもバックグラウンド処理を継続する方法を紹介します。
GPUSOROBANは高性能なGPUインスタンスが低コストで使えるクラウドサービスです。
サービスについて詳しく知りたい方は、GPUSOROBANの公式サイトを御覧ください。
長時間プログラムを実行した際に、途中でSSH接続が切断され処理が途中で終了してしまう場合があります。
そのような場合には「screen」コマンドを使用することで、SSH接続が切断された場合でもバッググラウンドでプログラムの処理が継続します。
今回は、screenコマンドを利用してバッググラウンドで処理を実行する手順を確認します。
目次[非表示]
- 1.アクセスサーバに接続
- 2.インスタンスへの接続
- 3.screenのインストール
- 4.仮想端末の起動
- 5.バックグラウンド実行
アクセスサーバに接続
ターミナル上で以下のコマンドを入力してアクセスサーバに接続します。
インスタンスへの接続
続いてインスタンスへの接続を行います。新規ターミナルを開き、下記コマンドにてインスタンスに接続してください。
screenのインストール
apt updateを実行し、パッケージ情報を更新します。
続いてscreenのインストールを実行してください。
仮想端末の起動
次のコマンドを実行し、仮想端末の一覧を確認します。
"No Sockets found in /run/screen/S-user." が返され、この時点では仮想端末がまだ作られていないことが示されます。
下記コマンドを実行して「sc1」という名前の仮想端末を作成します。下図のように、まっさらな画面が表示されたら成功です。
続いて「Ctrl」+「a」キー を入力した後に、「d」キーを入力し、仮想端末の画面を抜けてください(デタッチ)。
次のコマンドで仮想端末の一覧を表示します。
デタッチ後も仮想端末の起動が継続していることを確認できます。
ここまでがscreenコマンドの基本的な操作の確認になります。
続いて、この仮想端末「sc1」の中でサンプルプログラムを動作させてみます。
バックグラウンド実行
まずは実際に動かすプログラムの準備をします。今回の事例ではMNISTの画像認識プログラムを使用します。
プログラムを実行する前にPytorchのインストールが必要です。
Pytorchのインストール方法については、Pytorchのインストール(Ubuntu)の手順書 をご覧ください。
次に下記のコマンドを実行して、gitのインストールおよびプログラムコードを取得します。
続いて先ほど作成した仮想端末sc1にログイン(アタッチ)します。
アタッチ後、下記コマンドを実行してプログラムを実行します。
このまま放置するとプログラムが進行しますが、今回は仮想端末上のプログラムがバックグラウンドで動作し続けることを確認するために一度インスタンスとの接続を切断してみます。
先ほどと同様に「Ctrl」+「a」キー を入力した後に、「d」キーを入力し、仮想端末からデタッチします。
続いて、exitコマンドを実行し、インスタンスから切断します。
インスタンスからから切断した後、同一のターミナル上で下記コマンドを実行してインスタンスに接続し直します。
再度sc1にアタッチすると、プログラムが継続して動いていることが確認できます。
インスタンスとのSSH接続セッションの切断が合った場合でも、継続してプログラムの実行が可能です。
プログラムの動作完了後に仮想端末をシャットダウンする場合は、「Ctrl」+ 「d」キーにてシャットダウン可能です。
ここまでがScreenコマンドを使用したバックグラウンド処理の説明になります。
本環境には、GPUSOROBANのインスタンスを使用しました。
GPUSOROBANは高性能なGPUインスタンスが低コストで使えるクラウドサービスです。
サービスについて詳しく知りたい方は、GPUSOROBANの公式サイトを御覧ください。