永続リソースを作成すると、トレーニング サービスは、まず指定された仕様に基づいて Compute Engine リソースプールからリソースを検索し、次に実行時間の長いクラスタをプロビジョニングします。このページでは、Google Cloud コンソール、Google Cloud CLI、Vertex AI SDK for Python、REST API を使用して、カスタム トレーニング ジョブを実行するための永続リソースを削除する方法について説明します。
必要なロール
永続リソースの作成に必要な権限を取得するには、プロジェクトに対する Vertex AI 管理者(roles/aiplatform.admin
)IAM ロールを付与するように管理者に依頼します。ロールの付与については、プロジェクト、フォルダ、組織へのアクセス権の管理をご覧ください。
この事前定義ロールには、永続リソースを作成するために必要な aiplatform.persistentResources.create
権限が含まれています。
カスタムロールや他の事前定義ロールを使用して、この権限を取得することもできます。
永続リソースを作成する
永続リソースの作成手順については、次のいずれかのタブを選択してください。
Google Cloud コンソールを使用して永続リソースを作成する手順は、次のとおりです。
Google Cloud コンソールで、[永続リソース] ページに移動します。
[クラスタを作成] をクリックします。
次のようにクラスタを構成します。
- 名前: クラスタの名前を入力します。
- 説明:(省略可)クラスタの説明を入力します。
- リージョン: クラスタを作成するリージョンを選択します。
[続行] をクリックします。
クラスタのコンピューティング リソースを次のように構成します。
- [Worker pool 1] をクリックします。
使用するマシン ファミリーのタブを選択し、次のようにワーカープールを構成します。
汎用 VM は、さまざまなワークロードで最も優れたコスト パフォーマンスを発揮します。
- シリーズ: マシンシリーズを選択します。
- マシンタイプ: マシンタイプを選択します。
- ディスクタイプ: [Standard disk] または [SSD disk] を選択します。
- ディスクサイズ: 必要なディスクサイズを入力します。
- 最小レプリカ数: ワーカープールに含めるレプリカの最小数を入力します。
- 最大レプリカ数:(省略可)ワーカープールで許容するレプリカの最大数を入力します。指定した場合、ワーカープールは、構成された最大レプリカ数まで必要に応じてレプリカ数を自動的にスケーリングします。
コンピューティング最適化 VM は、コアあたりのパフォーマンスが最も高く、コンピューティング負荷の高いワークロードに最適です。
- シリーズ: マシンシリーズを選択します。
- マシンタイプ: マシンタイプを選択します。
- ディスクタイプ: [Standard disk] または [SSD disk] を選択します。
- ディスクサイズ: 必要なディスクサイズを入力します。
- 最小レプリカ数: ワーカープールに含めるレプリカの最小数を入力します。
- 最大レプリカ数:(省略可)ワーカープールで許容するレプリカの最大数を入力します。指定した場合、ワーカープールは、構成された最大レプリカ数まで必要に応じてレプリカ数を自動的にスケーリングします。
メモリ最適化 VM は、メモリ使用量の多いワークロードに最適です。他のマシン ファミリーよりもコアあたりのメモリ容量が多く、最大で 12 TB のメモリを搭載しています。
- シリーズ: マシンシリーズを選択します。
- マシンタイプ: マシンタイプを選択します。
- ディスクタイプ: [Standard disk] または [SSD disk] を選択します。
- ディスクサイズ: 必要なディスクサイズを入力します。
- 最小レプリカ数: ワーカープールに含めるレプリカの最小数を入力します。
- 最大レプリカ数:(省略可)ワーカープールで許容するレプリカの最大数を入力します。指定した場合、ワーカープールは、構成された最大レプリカ数まで必要に応じてレプリカ数を自動的にスケーリングします。
アクセラレータ最適化 VM は、ML や HPC などの超並列 CUDA コンピューティング ワークロードに最適です。このファミリーは、GPU を必要とするワークロードに最適です。
- GPU のタイプ: 使用する GPU のタイプを選択します。
- GPU の数: 使用する GPU の数を入力します。
- シリーズ: マシンシリーズを選択します。
- マシンタイプ: マシンタイプを選択します。
- ディスクタイプ: [Standard disk] または [SSD disk] を選択します。
- ディスクサイズ: 必要なディスクサイズを入力します。
- 最小レプリカ数: ワーカープールに含めるレプリカの最小数を入力します。
- 最大レプリカ数:(省略可)ワーカープールで許容するレプリカの最大数を入力します。指定した場合、ワーカープールは、構成された最大レプリカ数まで必要に応じてレプリカ数を自動的にスケーリングします。
[完了] をクリックします。
(省略可)ワーカープールを追加するには、[ワーカープールを追加] をクリックします。
[作成] をクリックします。
永続リソースには一つ以上のリソースプールを設定できます。永続リソースに複数のリソースプールを作成するには、複数の --resource-pool-spec
フラグを指定します。
各リソースプールでは、自動スケーリングを有効または無効にできます。自動スケーリングを有効にするには、min_replica_count
と max_replica_count
を指定します。
すべてのリソースプール構成をコマンドラインの一部として指定できます。または、同構成を含む YAML ファイルへのパスを、--config
フラグを使用して指定できます。
後述のコマンドデータを使用する前に、次のように置き換えます。
PROJECT_ID : 永続リソースを作成する Google Cloud プロジェクトのプロジェクト ID。LOCATION : 永続リソースを作成するリージョン。サポートされているリージョンの一覧については、利用できる機能をご覧ください。PERSISTENT_RESOURCE_ID : 永続リソースの ID。DISPLAY_NAME :(省略可)永続リソースの表示名。MACHINE_TYPE : 使用する VM のタイプ。サポートされている VM の一覧については、マシンタイプをご覧ください。このフィールドは、ResourcePool
API メッセージのmachineSpec.machineType
フィールドに対応しています。ACCELERATOR_TYPE :(省略可)リソースプール内の各 VM にアタッチする GPU のタイプ。サポートされている GPU の一覧については、GPU をご覧ください。このフィールドは、ResourcePool
API メッセージのmachineSpec.acceleratorType
フィールドに対応しています。ACCELERATOR_COUNT :(省略可)リソースプール内の各 VM にアタッチする GPU の数。デフォルト値は1
です。このフィールドは、ResourcePool
API メッセージのmachineSpec.acceleratorCount
フィールドに対応しています。REPLICA_COUNT : 対象のリソースプール作成時に作成するレプリカの数。このフィールドは、ResourcePool
API メッセージのreplicaCount
フィールドに対応しています。MIN_REPLICA_COUNT と MAX_REPLICA_COUNT を指定しない場合、このフィールドは必須です。MIN_REPLICA_COUNT :(省略可)対象のリソースプールに対して自動スケーリングがスケールダウンできるレプリカの最小数。対象のリソースプールで自動スケーリングを有効にするには、MIN_REPLICA_COUNT と MAX_REPLICA_COUNT の両方が必要です。MAX_REPLICA_COUNT :(省略可)対象のリソースプールに対して自動スケーリングでスケールアップできるレプリカの最大数。対象のリソースプールで自動スケーリングを有効にするには、MIN_REPLICA_COUNT と MAX_REPLICA_COUNT の両方が必要です。BOOT_DISK_TYPE :(省略可)リソースプール内に存在する各 VM のブートディスクとして使用するディスクタイプ。このフィールドは、ResourcePool
API メッセージのdiskSpec.bootDiskType
フィールドに対応しています。指定できる値は次のとおりです。pd-standard
(デフォルト)pd-ssd
BOOT_DISK_SIZE_GB :(省略可)リソースプール内に存在する各 VM のブートディスクのディスクサイズ(GiB 単位)。指定できる値は100
(デフォルト)~64000
です。このフィールドは、ResourcePool
API メッセージのdiskSpec.bootDiskSizeGb
フィールドに対応しています。CONFIG : 永続リソースの YAML 構成ファイルへのパス。このファイルには、ResourcePool のリストが含まれている必要があります。オプションが構成ファイルとコマンドライン引数の両方で指定されている場合、構成ファイルはコマンドライン引数によってオーバーライドされます。アンダースコア付きのキーは無効です。YAML 構成ファイルの例:
resourcePoolSpecs: machineSpec: machineType: n1-standard-4 replicaCount: 1
次のコマンドを実行します。
Linux、macOS、Cloud Shell
gcloud ai persistent-resources create \ --persistent-resource-id=PERSISTENT_RESOURCE_ID \ --display-name=DISPLAY_NAME \ --project=PROJECT_ID \ --region=LOCATION \ --resource-pool-spec="replica-count=REPLICA_COUNT ,min-replica-count=MIN_REPLICA_COUNT ,max-replica-count=MAX_REPLICA_COUNT ,machine-type=MACHINE_TYPE ,accelerator-type=ACCELERATOR_TYPE ,accelerator-count=ACCELERATOR_COUNT ,disk-type=BOOT_DISK_TYPE ,disk-size=BOOT_DISK_SIZE_GB "
Windows(PowerShell)
gcloud ai persistent-resources create ` --persistent-resource-id=PERSISTENT_RESOURCE_ID ` --display-name=DISPLAY_NAME ` --project=PROJECT_ID ` --region=LOCATION ` --resource-pool-spec="replica-count=REPLICA_COUNT ,min-replica-count=MIN_REPLICA_COUNT ,max-replica-count=MAX_REPLICA_COUNT ,machine-type=MACHINE_TYPE ,accelerator-type=ACCELERATOR_TYPE ,accelerator-count=ACCELERATOR_COUNT ,disk-type=BOOT_DISK_TYPE ,disk-size=BOOT_DISK_SIZE_GB "
Windows(cmd.exe)
gcloud ai persistent-resources create ^ --persistent-resource-id=PERSISTENT_RESOURCE_ID ^ --display-name=DISPLAY_NAME ^ --project=PROJECT_ID ^ --region=LOCATION ^ --resource-pool-spec="replica-count=REPLICA_COUNT ,min-replica-count=MIN_REPLICA_COUNT ,max-replica-count=MAX_REPLICA_COUNT ,machine-type=MACHINE_TYPE ,accelerator-type=ACCELERATOR_TYPE ,accelerator-count=ACCELERATOR_COUNT ,disk-type=BOOT_DISK_TYPE ,disk-size=BOOT_DISK_SIZE_GB "
次のようなレスポンスが返されます。
Using endpoint [https://us-central1-aiplatform.googleapis.com/] Operation to create PersistentResource [projects/123456789012/locations/us-central1/persistentResources/mypersistentresource/operations/1234567890123456789] is submitted successfully. You may view the status of your PersistentResource create operation with the command $ gcloud ai operations describe projects/sample-project/locations/us-central1/operations/1234567890123456789
gcloud
コマンドの例:
gcloud ai persistent-resources create \ --persistent-resource-id=my-persistent-resource \ --region=us-central1 \ --resource-pool-spec="min-replica-count=4,max-replica-count=12,machine-type=n1-highmem-2,accelerator-type=NVIDIA_TESLA_T4,accelerator-count=1,disk-type=pd-standard,disk-size=200" \ --resource-pool-spec="replica-count=4,machine-type=n1-standard-4"
高度な gcloud
構成
上の例では使用できない構成オプションを指定する場合は、--config
フラグを使用して、persistentResources
のフィールドを含むローカル環境で config.yaml
ファイルへのパスを指定します。次に例を示します。
gcloud ai persistent-resources create \ --persistent-resource-id=PERSISTENT_RESOURCE_ID \ --project=PROJECT_ID \ --region=LOCATION \ --config=CONFIG
このサンプルを試す前に、Vertex AI クイックスタート: クライアント ライブラリの使用にある Python の設定手順を完了してください。詳細については、Vertex AI Python API のリファレンス ドキュメントをご覧ください。
Vertex AI に対する認証を行うには、アプリケーションのデフォルト認証情報を設定します。詳細については、ローカル開発環境の認証を設定するをご覧ください。
# Create the persistent resource. This method returns the created resource. # Setting `sync` to `FALSE` makes the method is non-blocking and the resource # object returned syncs when the method completes. my_example_resource = persistent_resource.PersistentResource.create( persistent_resource_id=EXAMPLE_PERSISTENT_RESOURCE_ID, display_name=EXAMPLE_PERSISTENT_RESOURCE_NAME, resource_pools=[ EXAMPLE_RESOURCE_POOL # EXAMPLE_AUTOSCALED_RESOURCE_POOL ], labels=EXAMPLE_LABELS, sync=SYNC, ) if not SYNC: my_example_resource.wait()
永続リソースには 1 つ以上のリソースプール(machine_spec
)を設定できます。各リソースプールでは自動スケーリングを有効または無効にできます。
リクエストのデータを使用する前に、次のように置き換えます。
PROJECT_ID : 永続リソースを作成する Google Cloud プロジェクトのプロジェクト ID。LOCATION : 永続リソースを作成するリージョン。サポートされているリージョンの一覧については、利用できる機能をご覧ください。PERSISTENT_RESOURCE_ID : 永続リソースの ID。DISPLAY_NAME :(省略可)永続リソースの表示名。MACHINE_TYPE : 使用する VM のタイプ。サポートされている VM の一覧については、マシンタイプをご覧ください。このフィールドは、ResourcePool
API メッセージのmachineSpec.machineType
フィールドに対応しています。ACCELERATOR_TYPE :(省略可)リソースプール内の各 VM にアタッチする GPU のタイプ。サポートされている GPU の一覧については、GPU をご覧ください。このフィールドは、ResourcePool
API メッセージのmachineSpec.acceleratorType
フィールドに対応しています。ACCELERATOR_COUNT :(省略可)リソースプール内の各 VM にアタッチする GPU の数。デフォルト値は1
です。このフィールドは、ResourcePool
API メッセージのmachineSpec.acceleratorCount
フィールドに対応しています。REPLICA_COUNT : 対象のリソースプール作成時に作成するレプリカの数。このフィールドは、ResourcePool
API メッセージのreplicaCount
フィールドに対応しています。MIN_REPLICA_COUNT と MAX_REPLICA_COUNT を指定しない場合、このフィールドは必須です。MIN_REPLICA_COUNT :(省略可)対象のリソースプールに対して自動スケーリングがスケールダウンできるレプリカの最小数。対象のリソースプールで自動スケーリングを有効にするには、MIN_REPLICA_COUNT と MAX_REPLICA_COUNT の両方が必要です。MAX_REPLICA_COUNT :(省略可)対象のリソースプールに対して自動スケーリングでスケールアップできるレプリカの最大数。対象のリソースプールで自動スケーリングを有効にするには、MIN_REPLICA_COUNT と MAX_REPLICA_COUNT の両方が必要です。BOOT_DISK_TYPE :(省略可)リソースプール内に存在する各 VM のブートディスクとして使用するディスクタイプ。このフィールドは、ResourcePool
API メッセージのdiskSpec.bootDiskType
フィールドに対応しています。指定できる値は次のとおりです。pd-standard
(デフォルト)pd-ssd
BOOT_DISK_SIZE_GB :(省略可)リソースプール内に存在する各 VM のブートディスクのディスクサイズ(GiB 単位)。指定できる値は100
(デフォルト)~64000
です。このフィールドは、ResourcePool
API メッセージのdiskSpec.bootDiskSizeGb
フィールドに対応しています。
HTTP メソッドと URL:
POST https://us-central1-aiplatform.googleapis.com/v1/projects/PROJECT_ID /locations/LOCATION /persistentResources?persistent_resource_id=PERSISTENT_RESOURCE_ID
リクエストの本文(JSON):
{ "display_name": "DISPLAY_NAME ", "resource_pools": [ { "machine_spec": { "machine_type": "MACHINE_TYPE ", "accelerator_type": "ACCELERATOR_TYPE ", "accelerator_count":ACCELERATOR_COUNT }, "replica_count":REPLICA_COUNT , "autoscaling_spec": { "min_replica_count":MIN_REPLICA_COUNT , "max_replica_count":MAX_REPLICA_COUNT }, "disk_spec": { "boot_disk_type": "BOOT_DISK_TYPE ", "boot_disk_size_gb":BOOT_DISK_SIZE_GB } } ] }
リクエストを送信するには、次のいずれかのオプションを開きます。
curl(Linux、macOS、Cloud Shell)
リクエスト本文を request.json
という名前のファイルに保存します。ターミナルで次のコマンドを実行して、このファイルを現在のディレクトリに作成または上書きします。
cat > request.json << 'EOF' { "display_name": "DISPLAY_NAME ", "resource_pools": [ { "machine_spec": { "machine_type": "MACHINE_TYPE ", "accelerator_type": "ACCELERATOR_TYPE ", "accelerator_count":ACCELERATOR_COUNT }, "replica_count":REPLICA_COUNT , "autoscaling_spec": { "min_replica_count":MIN_REPLICA_COUNT , "max_replica_count":MAX_REPLICA_COUNT }, "disk_spec": { "boot_disk_type": "BOOT_DISK_TYPE ", "boot_disk_size_gb":BOOT_DISK_SIZE_GB } } ] } EOF
その後、次のコマンドを実行して REST リクエストを送信します。
curl -X POST \
-H "Authorization: Bearer $(gcloud auth print-access-token)" \
-H "Content-Type: application/json; charset=utf-8" \
-d @request.json \
"https://us-central1-aiplatform.googleapis.com/v1/projects/PROJECT_ID /locations/LOCATION /persistentResources?persistent_resource_id=PERSISTENT_RESOURCE_ID "
PowerShell(Windows)
リクエスト本文を request.json
という名前のファイルに保存します。ターミナルで次のコマンドを実行して、このファイルを現在のディレクトリに作成または上書きします。
@' { "display_name": "DISPLAY_NAME ", "resource_pools": [ { "machine_spec": { "machine_type": "MACHINE_TYPE ", "accelerator_type": "ACCELERATOR_TYPE ", "accelerator_count":ACCELERATOR_COUNT }, "replica_count":REPLICA_COUNT , "autoscaling_spec": { "min_replica_count":MIN_REPLICA_COUNT , "max_replica_count":MAX_REPLICA_COUNT }, "disk_spec": { "boot_disk_type": "BOOT_DISK_TYPE ", "boot_disk_size_gb":BOOT_DISK_SIZE_GB } } ] } '@ | Out-File -FilePath request.json -Encoding utf8
その後、次のコマンドを実行して REST リクエストを送信します。
$cred = gcloud auth print-access-token
$headers = @{ "Authorization" = "Bearer $cred" }
Invoke-WebRequest `
-Method POST `
-Headers $headers `
-ContentType: "application/json; charset=utf-8" `
-InFile request.json `
-Uri "https://us-central1-aiplatform.googleapis.com/v1/projects/PROJECT_ID /locations/LOCATION /persistentResources?persistent_resource_id=PERSISTENT_RESOURCE_ID " | Select-Object -Expand Content
次のような JSON レスポンスが返されます。
{ "name": "projects/123456789012/locations/us-central1/persistentResources/mypersistentresource/operations/1234567890123456789", "metadata": { "@type": "type.googleapis.com/google.cloud.aiplatform.v1.CreatePersistentResourceOperationMetadata", "genericMetadata": { "createTime": "2023-02-08T21:17:15.009668Z", "updateTime": "2023-02-08T21:17:15.009668Z" } } }
リソースの在庫切れ
A100 GPU などの限られたリソースが在庫切れになり、指定したリージョンに使用可能なリソースがない場合、永続的なリソース作成が失敗する可能性があります。この場合は、レプリカ数を減らすか、別のアクセラレータ タイプに変更するか、ピーク以外の時間帯にもう一度お試しいただくか、別のリージョンをお試しください。