永続リソースを作成する

永続リソースを作成すると、トレーニング サービスは、まず指定された仕様に基づいて 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 コンソールを使用して永続リソースを作成する手順は、次のとおりです。

  1. Google Cloud コンソールで、[永続リソース] ページに移動します。

    永続リソースに移動

  2. [クラスタを作成] をクリックします。

  3. 次のようにクラスタを構成します。

    • 名前: クラスタの名前を入力します。
    • 説明:(省略可)クラスタの説明を入力します。
    • リージョン: クラスタを作成するリージョンを選択します。
  4. [続行] をクリックします。

  5. クラスタのコンピューティング リソースを次のように構成します。

    1. [Worker pool 1] をクリックします。
    2. 使用するマシン ファミリーのタブを選択し、次のようにワーカープールを構成します。

      汎用

      汎用 VM は、さまざまなワークロードで最も優れたコスト パフォーマンスを発揮します。

      • シリーズ: マシンシリーズを選択します。
      • マシンタイプ: マシンタイプを選択します。
      • ディスクタイプ: [Standard disk] または [SSD disk] を選択します。
      • ディスクサイズ: 必要なディスクサイズを入力します。
      • 最小レプリカ数: ワーカープールに含めるレプリカの最小数を入力します。
      • 最大レプリカ数:(省略可)ワーカープールで許容するレプリカの最大数を入力します。指定した場合、ワーカープールは、構成された最大レプリカ数まで必要に応じてレプリカ数を自動的にスケーリングします。

      コンピューティング最適化

      コンピューティング最適化 VM は、コアあたりのパフォーマンスが最も高く、コンピューティング負荷の高いワークロードに最適です。

      • シリーズ: マシンシリーズを選択します。
      • マシンタイプ: マシンタイプを選択します。
      • ディスクタイプ: [Standard disk] または [SSD disk] を選択します。
      • ディスクサイズ: 必要なディスクサイズを入力します。
      • 最小レプリカ数: ワーカープールに含めるレプリカの最小数を入力します。
      • 最大レプリカ数:(省略可)ワーカープールで許容するレプリカの最大数を入力します。指定した場合、ワーカープールは、構成された最大レプリカ数まで必要に応じてレプリカ数を自動的にスケーリングします。

      メモリ最適化

      メモリ最適化 VM は、メモリ使用量の多いワークロードに最適です。他のマシン ファミリーよりもコアあたりのメモリ容量が多く、最大で 12 TB のメモリを搭載しています。

      • シリーズ: マシンシリーズを選択します。
      • マシンタイプ: マシンタイプを選択します。
      • ディスクタイプ: [Standard disk] または [SSD disk] を選択します。
      • ディスクサイズ: 必要なディスクサイズを入力します。
      • 最小レプリカ数: ワーカープールに含めるレプリカの最小数を入力します。
      • 最大レプリカ数:(省略可)ワーカープールで許容するレプリカの最大数を入力します。指定した場合、ワーカープールは、構成された最大レプリカ数まで必要に応じてレプリカ数を自動的にスケーリングします。

      GPU

      アクセラレータ最適化 VM は、ML や HPC などの超並列 CUDA コンピューティング ワークロードに最適です。このファミリーは、GPU を必要とするワークロードに最適です。

      • GPU のタイプ: 使用する GPU のタイプを選択します。
      • GPU の数: 使用する GPU の数を入力します。
      • シリーズ: マシンシリーズを選択します。
      • マシンタイプ: マシンタイプを選択します。
      • ディスクタイプ: [Standard disk] または [SSD disk] を選択します。
      • ディスクサイズ: 必要なディスクサイズを入力します。
      • 最小レプリカ数: ワーカープールに含めるレプリカの最小数を入力します。
      • 最大レプリカ数:(省略可)ワーカープールで許容するレプリカの最大数を入力します。指定した場合、ワーカープールは、構成された最大レプリカ数まで必要に応じてレプリカ数を自動的にスケーリングします。
    3. [完了] をクリックします。

    4. (省略可)ワーカープールを追加するには、[ワーカープールを追加] をクリックします。

  6. [作成] をクリックします。

gcloud

永続リソースには一つ以上のリソースプールを設定できます。永続リソースに複数のリソースプールを作成するには、複数の --resource-pool-spec フラグを指定します。

各リソースプールでは、自動スケーリングを有効または無効にできます。自動スケーリングを有効にするには、min_replica_countmax_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_COUNTMAX_REPLICA_COUNT を指定しない場合、このフィールドは必須です。
  • MIN_REPLICA_COUNT:(省略可)対象のリソースプールに対して自動スケーリングがスケールダウンできるレプリカの最小数。対象のリソースプールで自動スケーリングを有効にするには、MIN_REPLICA_COUNTMAX_REPLICA_COUNT の両方が必要です。
  • MAX_REPLICA_COUNT:(省略可)対象のリソースプールに対して自動スケーリングでスケールアップできるレプリカの最大数。対象のリソースプールで自動スケーリングを有効にするには、MIN_REPLICA_COUNTMAX_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

Python

このサンプルを試す前に、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()

REST

永続リソースには 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_COUNTMAX_REPLICA_COUNT を指定しない場合、このフィールドは必須です。
  • MIN_REPLICA_COUNT:(省略可)対象のリソースプールに対して自動スケーリングがスケールダウンできるレプリカの最小数。対象のリソースプールで自動スケーリングを有効にするには、MIN_REPLICA_COUNTMAX_REPLICA_COUNT の両方が必要です。
  • MAX_REPLICA_COUNT:(省略可)対象のリソースプールに対して自動スケーリングでスケールアップできるレプリカの最大数。対象のリソースプールで自動スケーリングを有効にするには、MIN_REPLICA_COUNTMAX_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
      }
    }
  ]
}

リクエストを送信するには、次のいずれかのオプションを開きます。

次のような 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 などの限られたリソースが在庫切れになり、指定したリージョンに使用可能なリソースがない場合、永続的なリソース作成が失敗する可能性があります。この場合は、レプリカ数を減らすか、別のアクセラレータ タイプに変更するか、ピーク以外の時間帯にもう一度お試しいただくか、別のリージョンをお試しください。

次のステップ