初めに
kaggleの画像コンペで、GPU環境を使うためにGCPを使いました。環境構築方法をまとめようと思います。
GCPを使う理由やインスタンスの作成に関しては以下の記事がとても参考になります。
https://qiita.com/lain21/items/a33a39d465cd08b662f1
GCEインスタンスの作成
私は以下のような環境を作りました。
- リージョン: us-west1-b
- マシンタイプ: n1-highmem-8(vCPU x 8、メモリ 52 GB)
- GPU: 1 x NVIDIA Tesla P100
インスタンスが作成できたら、実際に環境に入ってみます。
gcloudの使い方
macで使う場合は、SDKをインストールします
curl https://sdk.cloud.google.com | bash
その後.zshrc(bashrc)
に以下を追記します。
source '/Users/ユーザー名/google-cloud-sdk/path.zsh.inc'
source '/Users/ユーザー名/google-cloud-sdk/completion.zsh.inc'
よく使うコマンドは以下になります。
# インスタンスの一覧を確認
gcloud compute instances list
# インスタンスを起動
gcloud compute instances start <your-instance-name>
# インスタンスを停止
gcloud compute instances stop <your-instance-name>
※インスタンスが起動している限りは料金が発生してしまうので、使わなくなっったらすぐ停止しましょう!!!
GPU環境への接続は、VMインスタンス管理画面上の、以下のgcloudコマンドを表示するに記載されているコマンドを打てばできます。
以下のようなコマンドです。
gcloud beta compute ssh --zone <リージョン名> <インスタンス名> --project <プロジェクト名>
ただ、毎回このコマンドを打つのも面倒なので、.ssh/config
に記載して簡単に接続できるようにします。
生成済みのSSH keyを使用する方法もありますが、今回はgcloud用に新しく生成します。ただ、キーの生成もconfigへの記載も以下のコマンドを打つだけなのでとても便利です。
gcloud compute config-ssh
You should now be able to use ssh/scp with your instances.
For example, try running:
$ ssh hogehoge
これで簡単にssh接続で環境に入れるようになります。
ここでssh接続を簡略化したことによって、VScodeの接続が可能になります。
VScodeでssh接続する
これに関しては以下の記事が参考になります。
https://qiita.com/nlog2n2/items/1d1358f6913249f3e186
まず、VScodeにRemote-sshのプラグインを導入します。
そうしたら左下に緑色のボタンができるので、そこを押すと以下の画面が表示されます(コマンドパレットからも操作できます)。
ここで、Remote-SSH: Connect to Host
を選択するとGCPの環境名が表示されるので、それをクリックすれば完了です。
画像コンペのためのデータセットを配置する
データセットはインスタンスに配置しました。
(注)画像(コンペで配布されるzipファイルやそれを解凍したjpgファイル等)をストレージに置いてしまうと、解凍さえできないくらい遅いです。
画像は、インスタンス側におくか、pickleなどに固めてストレージにおくなどします
以下のカレーちゃんさんの記事を参考にしました。
https://currypurin.qrunch.io/entries/T9iGWHdsiI6o2wke
localからのファイルのコピーは以下のコマンドで実行できます。
# ファイルをコピー
gcloud compute copy-files <local-path> <your-instance-name>:~
tmuxの設定
画像系の学習にはかなりの時間を必要とする場合が多いです。その時にssh接続が切れてしまっても学習を継続できるように、学習時にはtmuxを使いましょう。
# 以下でセッションを開始
tmux new -s <セッション名>
# 再接続する時は以下
tmux a -t <セッション名>
コマンドは以下の記事にわかりやすくまとまっています。
https://qiita.com/nmrmsys/items/03f97f5eabec18a3a18b
終わりに
ここまでできたらあとは思い思いに学習を回すだけ...
GCPを使うからには、自分も良い結果を残せるように頑張ろうと思います。
何かアドバイスや間違いがありましたら是非コメントをください!!