はじめに
AWSやAzureで(お金さえあれば)潤沢なGPU環境を簡単に利用できるようになりましたが、リモートマシンゆえにGUIの利用に制限がかかります。
XForwardingなどがうまく動けばよいですが、重くて使い物にならないことも多いかと思います。
そこで本記事では、リモートマシン上にあるコードをローカルのGUI系エディタ(VSCodeなど)でいじる方法を紹介します。
本番実行はリモートマシン上で行う想定ですが、ローカルでも簡単なデバッグは行いたいので、dockerを使ってリモートとローカルの環境を揃えます(オプションです)。
代替手段
・XForwading
重い
・Remote VSCode
余計なポートを開ける必要があり、会社で使えない(´・ω・`)
主な流れ
- ローカルとリモートの両方でdockerコンテナに入る
- ローカルでsshfsし、リモートマシンのディレクトリをマウント
- ローカルでコーディング
docker
ローカルとリモートの両方でdockerコンテナに入ります。
docker runする際に、--privilegedオプションをつけてください。
これが無いと後述のsshfsでエラーが出ます。
https://github.com/s3fs-fuse/s3fs-fuse/issues/647
なお、dockerコンテナ内でVSCodeを利用する方法については以下の記事を参考にしてください。
https://qiita.com/kanosawa/items/0c83f8d8eaaa4a72e1cd
sshfs
ローカルでsshfsし、リモートマシンのディレクトリ(src)をローカルマシンのディレクトリ(dst)にマウントします。
sshfs [-o IdentityFile=keypath] username@remote_ip:src dst
例)
sshfs -o IdentityFile=~/key.pem ubuntu@12.345.678.901:/home/ubuntu/work ~/work
鍵認証不要なら[]部は不要です。
おわりに
以上の手順で、リモートマシン上にあるコードをローカルのGUI系エディタでいじることができるようになります。
これでTesla V100 8台を気軽にぶん回すこともできますね(24.5ドル/hなり)