タイトルの通り、GCP上にPyTorchが入ったGPUインスタンスを立ち上げたので手順を残しておきます。
GPUの上限を増やす
GCPはいきなりGPUインスタンスの作成はできず、GoogleさんにGPUの上限を増やす必要があります。
メニュー「IAMと管理」>「割り当て」を辿り、以下の2つの上限を増やす申請をします。
- Compute Engine API > GPUs (all regions) > グローバル
- Compute Engine API > NVIDIA T4 GPUs > リージョン
ネット上には申請が通らない方も多いようですが、1回目で申請が通らなかったとしても2回目で通ったケースもありますし、申請するGPUの上限を少なくすると通ったケースもあるようです。
早ければ1時間ほどで上限が増えます。
インスタンス作成
インスタンス作成にはTerraformを使います。そしてこちらのリポジトリを使います。
まずはCloud Shellを起動します。
Cloud ShellにはTerraformが既にインストールされており、助かります。
Cloud Shellが起動したら、以下のコマンドを実行します。
$ git clone https://github.com/bassbone/gcp-instance-gpu.git
$ cd gcp-instance-gpu
variables.tfで以下の項目が調整できるので、必要に応じて修正してください。
- name:インスタンスの名前
- cpu:CPUのコア数
- memory:メモリ(MB)
- zone:ゾーン(GPUが使えるゾーンにしないといけない)
- disk_size:ディスクサイズ(GB)
- disk_image:ディスクイメージ(デフォルトはPyTorchが含まれているイメージを指定)
- preemptible:プリエンプティブルモードかどうかを指定。trueの場合はGCP側の判断でインスタンスが停止する可能性がある。
variables.tfの調整が終わったら、さらに以下のコマンドを実行します。
$ terraform init
$ terraform plan
$ terraform apply
最後のapplyコマンドが終わっても、諸々の処理があるため数分程度待つ必要があります。
数分待って、sshログインできればインスタンス作成完了です。
インスタンス接続
GCP提供のGPU対応イメージにはJupyterLabというツールがインストールされています。
接続方法については、こちらの公式マニュアルに記載されているが、gcloudコマンドが使える環境で、以下コマンドを実行します。
$ gcloud compute ssh --project [プロジェクトID] --zone [ゾーン] [インスタンス名] -- -L 8080:localhost:8080
その後、http://localhost:8080に接続すると、JupyterLabにアクセスできます。
まとめ
GCP提供のイメージを使っているので自分好みの環境ではないが、とにかくGCPでGPUインスタンスを立ち上げたい場合には使える手順ではないかと思います!
1点だけ注意点としては、GPUインスタンスは割高なので使うタイミングだけ起動させることをお奨めします。