😀
GCPのDeep Learning VMをPreemptibleインスタンスで使う方法
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
Discussion