SSHセッションが切れてもバックグラウンドで処理を継続する方法 | GPUSOROBAN

本記事では、GPUSOROBANのインスタンスに接続する際に、SSHセッションが切れた状態でもバックグラウンド処理を継続する方法を紹介します。


GPUSOROBANは高性能なGPUインスタンスが低コストで使えるクラウドサービスです。
サービスについて詳しく知りたい方は、GPUSOROBANの公式サイトを御覧ください。


長時間プログラムを実行した際に、途中でSSH接続が切断され処理が途中で終了してしまう場合があります。
そのような場合には「screen」コマンドを使用することで、SSH接続が切断された場合でもバッググラウンドでプログラムの処理が継続します。 


今回は、screenコマンドを利用してバッググラウンドで処理を実行する手順を確認します。


目次[非表示]

  1. 1.アクセスサーバに接続
  2. 2.インスタンスへの接続
  3. 3.screenのインストール
  4. 4.仮想端末の起動
  5. 5.バックグラウンド実行


アクセスサーバに接続


ターミナル上で以下のコマンドを入力してアクセスサーバに接続します。


ssh -L 20122:<インスタンスIPアドレス>:22 -l user as-highreso.com -p 30022 -i .ssh/ackey.txt


アクセスサーバーへ接続


インスタンスへの接続


続いてインスタンスへの接続を行います。新規ターミナルを開き、下記コマンドにてインスタンスに接続してください。


ssh user@localhost -p 20022 -i .ssh\mykey.txt


インスタンスへ接続


screenのインストール


apt updateを実行し、パッケージ情報を更新します。


sudo apt -y update


続いてscreenのインストールを実行してください。


sudo apt -y install screen


仮想端末の起動

次のコマンドを実行し、仮想端末の一覧を確認します。
 "No Sockets found in /run/screen/S-user." が返され、この時点では仮想端末がまだ作られていないことが示されます。


screen -ls


screen -ls


下記コマンドを実行して「sc1」という名前の仮想端末を作成します。下図のように、まっさらな画面が表示されたら成功です。


screen -S sc1


続いて「Ctrl」+「a」キー を入力した後に、「d」キーを入力し、仮想端末の画面を抜けてください(デタッチ)。


screen -S sc1


次のコマンドで仮想端末の一覧を表示します。

デタッチ後も仮想端末の起動が継続していることを確認できます。


screen -ls


screen -ls


ここまでがscreenコマンドの基本的な操作の確認になります。
続いて、この仮想端末「sc1」の中でサンプルプログラムを動作させてみます。


バックグラウンド実行


まずは実際に動かすプログラムの準備をします。今回の事例ではMNISTの画像認識プログラムを使用します。
プログラムを実行する前にPytorchのインストールが必要です。
Pytorchのインストール方法については、Pytorchのインストール(Ubuntu)の手順書 をご覧ください。
次に下記のコマンドを実行して、gitのインストールおよびプログラムコードを取得します。


sudo apt -y install git
git clone https://github.com/highreso/Lrning_DeepLearning_in3days.git


gitインストール


続いて先ほど作成した仮想端末sc1にログイン(アタッチ)します。


screen -r sc1


仮想端末sc1にログイン


アタッチ後、下記コマンドを実行してプログラムを実行します。


cd Lrning_DeepLearning_in3days
python train.py


仮想端末アタッチ後プログラムを実行


このまま放置するとプログラムが進行しますが、今回は仮想端末上のプログラムがバックグラウンドで動作し続けることを確認するために一度インスタンスとの接続を切断してみます。
先ほどと同様に「Ctrl」+「a」キー を入力した後に、「d」キーを入力し、仮想端末からデタッチします。
続いて、exitコマンドを実行し、インスタンスから切断します。

インスタンス切断


インスタンスからから切断した後、同一のターミナル上で下記コマンドを実行してインスタンスに接続し直します。


ssh user@localhost -p 20022 -i .ssh\mykey.txt


インスタンス切断後再ログイン


再度sc1にアタッチすると、プログラムが継続して動いていることが確認できます。
インスタンスとのSSH接続セッションの切断が合った場合でも、継続してプログラムの実行が可能です。


screen -r sc1


screen -r sc1


プログラムの動作完了後に仮想端末をシャットダウンする場合は、「Ctrl」+ 「d」キーにてシャットダウン可能です。


ここまでがScreenコマンドを使用したバックグラウンド処理の説明になります。


本環境には、GPUSOROBANのインスタンスを使用しました。
GPUSOROBANは高性能なGPUインスタンスが低コストで使えるクラウドサービスです。
サービスについて詳しく知りたい方は、GPUSOROBANの公式サイトを御覧ください。

MORE INFORMATION

GPUでお困りの方はGPUSOROBANで解決!
お気軽にご相談ください

10日間無料トライアル
詳しい資料はこちら
質問・相談はこちら