😀

GCPのDeep Learning VMをPreemptibleインスタンスで使う方法

2021/06/15に公開

GCPのMarketplaceからデプロイできるDeep Learning VMは、深層学習をGPUで行うために必要なドライバのインストールなどの面倒な環境構築を自動でやってくれるのでとても便利です。
ただ、GCP ConsoleからだとPreemptibleインスタンスが作成できないようなので、gcloudによる作成手順を記録しておきます。

Preemptibleインスタンスとは?


VMインスタンスの一種。特徴は以下のとおり。

  • Pros
    • 通常より低価格で使用できる(最大約80%オフ)
  • Cons
    • 他のタスクでリソースが必要となった場合、GCEによって停止される可能性がある
    • 他のタスクでリソースが必要とならなくても、24時間後に停止される
    • 通常のVMインスタンスにライブマイグレーションできない
    • 余剰リソースがない場合は使えない
    • SLA(サービスレベル契約)の対象外

作成手順


gcloud compute instances create コマンドを用いる。
通常のVMインスタンス起動時のオプションに加えて、以下のオプションを指定して実行すればよい。

  • --preemptible
    • プリエンプティブルインスタンスを指定
  • --image-project=deeplearning-platform-release
    • Deep Learning VMを指定
  • --accelerator="type=accelerator-type,count=accelerator-count"
    • accelerator-type: GPUの種類
    • accelerator-count: GPUの数
    • ゾーンによって使えるGPUが異なるため注意
    • 詳しくはこちら
  • --metadata="install-nvidia-driver=True"
    • NVIDIAのドライバを自動でインストールする​

実行例は以下。

export IMAGE_FAMILY="tf2-latest-gpu"
export ZONE="us-central1-b"
export INSTANCE_NAME="deap-learning-vm"
export BOOT_DISC_SIZE="100GB"
export MACHINE_TYPE="n1-highmem-2"

gcloud compute instances create $INSTANCE_NAME \
  --zone=$ZONE \
  --image-family=$IMAGE_FAMILY \
  --image-project=deeplearning-platform-release \
  --maintenance-policy=TERMINATE \
  --accelerator="type=nvidia-tesla-t4,count=1" \
  --metadata="install-nvidia-driver=True" \
  --boot-disk-type="pd-standard" \
  --boot-disk-size=$BOOT_DISC_SIZE \
  --machine-type=$MACHINE_TYPE \
  --preemptible

Notebookの使用方法


この手順でVMインスタンスを起動すると、Jupyter Labが自動で立ち上がる。
プロジェクトIDが your-project-id の場合、以下のコマンドをローカルマシンで実行すると、http://localhost:8080 にブラウザでアクセスすればJupyter Labが使える。

export PROJECT_ID="your-project-id"
export ZONE="us-central1-b"
export INSTANCE_NAME="deap-learning-vm"
gcloud compute ssh --project $PROJECT_ID --zone $ZONE \
  $INSTANCE_NAME -- -L 8080:localhost:8080

References​

  1. Quickstart: Creating a New Instance Using the Command Line
  2. Adding or removing GPUs
  3. gcloud compute instances create
  4. Connecting to JupyterLab
GitHubで編集を提案

Discussion