永続リソースで実行されるパイプラインを構成する

Vertex AI 永続リソースは、カスタム トレーニング ジョブとパイプライン実行の実行に使用できる長時間実行クラスタです。パイプラインの実行に永続リソースを使用すると、コンピューティング リソースの可用性を確保し、パイプライン タスクの起動時間を短縮できます。永続リソースでは、カスタム トレーニング ジョブでサポートされているすべての VM と GPU がサポートされます。永続リソースの詳細を確認する

このページでは、次の方法について説明します。

始める前に

永続リソースを使用してパイプライン実行を作成する前に、まず次の前提条件を満たす必要があります。

パイプラインを定義してコンパイルする

パイプラインを定義し、パイプライン定義を YAML ファイルにコンパイルします。パイプラインの定義とコンパイルの詳細については、パイプラインを構築するをご覧ください。

必要な IAM のロール

永続リソースの作成に必要な権限を取得するには、プロジェクトに対する Vertex AI 管理者roles/aiplatform.admin)IAM ロールを付与するように管理者に依頼します。ロールの付与については、プロジェクト、フォルダ、組織へのアクセス権の管理をご覧ください。

この事前定義ロールには、永続リソースを作成するために必要な aiplatform.persistentResources.create 権限が含まれています。

カスタムロールや他の事前定義ロールを使用して、この権限を取得することもできます。

永続リソースを作成する

次のサンプルを使用して、パイプライン実行に関連付けることができる永続リソースを作成します。永続リソースの作成の詳細については、永続リソースを作成するをご覧ください。

gcloud

パイプラインの実行に関連付けることができる永続リソースを作成するには、--enable-custom-service-account フラグとともに gcloud ai persistent-resources create コマンドを使用します。

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

すべてのリソースプール構成をコマンドラインの一部として指定できます。または、同構成を含む YAML ファイルへのパスを、--config フラグを使用して指定できます。

後述のコマンドデータを使用する前に、次のように置き換えます。

  • PROJECT_ID: 永続リソースを作成する Google Cloud プロジェクトのプロジェクト ID。
  • LOCATION: 永続リソースを作成するリージョン。サポートされているリージョンの一覧については、利用できる機能をご覧ください。
  • PERSISTENT_RESOURCE_ID: 永続リソースの ID。
  • DISPLAY_NAME: 省略可。永続リソースの表示名。
  • MACHINE_TYPE: 使用する仮想マシン(VM)のタイプ。サポートされている VM の一覧については、マシンタイプをご覧ください。このフィールドは、ResourcePool API メッセージの machineSpec.machineType フィールドに対応しています。
  • REPLICA_COUNT: 省略可。自動スケーリングを使用しない場合に、リソースプールに作成するレプリカの数。このフィールドは、ResourcePool API メッセージの replicaCount フィールドに対応しています。MIN_REPLICA_COUNT フィールドと MAX_REPLICA_COUNT フィールドを指定しない場合、レプリカ数を指定する必要があります。
  • MIN_REPLICA_COUNT: 省略可。リソースプールで自動スケーリングを使用している場合のレプリカの最小数。自動スケーリングを使用するには、MIN_REPLICA_COUNTMAX_REPLICA_COUNT の両方を指定する必要があります。
  • MAX_REPLICA_COUNT: 省略可。リソースプールで自動スケーリングを使用している場合のレプリカの最大数。自動スケーリングを使用するには、MIN_REPLICA_COUNTMAX_REPLICA_COUNT の両方を指定する必要があります。
  • CONFIG: ResourcePool 仕様のリストを含む永続リソースの YAML 構成ファイルへのパス。オプションが構成ファイルとコマンドライン引数の両方で指定されている場合、構成ファイルはコマンドライン引数によってオーバーライドされます。アンダースコア付きのキーは無効とみなされます。

    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,machine-type=MACHINE_TYPE,min-replica-count=MIN_REPLICA_COUNT,max-replica-count=MAX_REPLICA_COUNT" \
    --enable-custom-service-account

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,machine-type=MACHINE_TYPE,min-replica-count=MIN_REPLICA_COUNT,max-replica-count=MAX_REPLICA_COUNT" `
    --enable-custom-service-account

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,machine-type=MACHINE_TYPE,min-replica-count=MIN_REPLICA_COUNT,max-replica-count=MAX_REPLICA_COUNT" ^
    --enable-custom-service-account

次のようなレスポンスが返されます。

Using endpoint [https://us-central1-aiplatform.googleapis.com/]
Operation to create PersistentResource [projects/PROJECT_NUMBER/locations/us-central1/persistentResources/mypersistentresource/operations/OPERATION_ID] is submitted successfully.

You can view the status of your PersistentResource create operation with the command

  $ gcloud ai operations describe projects/sample-project/locations/us-central1/operations/OPERATION_ID

gcloud コマンドの例:

gcloud ai persistent-resources create \
    --persistent-resource-id=my-persistent-resource \
    --region=us-central1 \
    --resource-pool-spec="replica-count=4,machine-type=n1-standard-4"
    --enable-custom-service-account

高度な gcloud 構成

上の例では使用できない構成オプションを指定する場合は、--config フラグを使用して、persistentResources のフィールドを含むローカル環境で config.yaml ファイルへのパスを指定します。次に例を示します。

gcloud ai persistent-resources create \
    --persistent-resource-id=PERSISTENT_RESOURCE_ID \
    --project=PROJECT_ID \
    --region=LOCATION \
    --config=CONFIG
    --enable-custom-service-account

Python

このサンプルを試す前に、Vertex AI クイックスタート: クライアント ライブラリの使用にある Python の設定手順を完了してください。詳細については、Vertex AI Python API のリファレンス ドキュメントをご覧ください。

Vertex AI に対する認証を行うには、アプリケーションのデフォルト認証情報を設定します。詳細については、ローカル開発環境の認証を設定するをご覧ください。

パイプラインの実行で使用できる永続リソースを作成するには、永続リソースを作成するときに、ResourceRuntimeSpec オブジェクトの enable_custom_service_account パラメータを True に設定します。

my_example_resource = persistent_resource.PersistentResource.create(
    persistent_resource_id=PERSISTENT_RESOURCE_ID,
    display_name=DISPLAY_NAME,
    resource_pools=[
        resource_pool.ResourcePool(
            machine_spec=machine_spec.MachineSpec(
                machine_type=MACHINE_TYPE,
            ),
            replica_count=REPLICA_COUNT,
        )
    ],
    resource_runtime_spec=resource_runtime_spec.ResourceRuntimeSpec(
        enable_custom_service_account=True,
    ),
)

次のように置き換えます。

  • PERSISTENT_RESOURCE_ID: 永続リソースの ID。
  • DISPLAY_NAME: 省略可。永続リソースの表示名。
  • MACHINE_TYPE: 使用する仮想マシン(VM)のタイプ。サポートされている VM の一覧については、マシンタイプをご覧ください。このフィールドは、ResourcePool API メッセージの machineSpec.machineType フィールドに対応しています。
  • REPLICA_COUNT: 対象のリソースプール作成時に作成するレプリカの数。

REST

パイプライン実行に関連付けることができる PersistentResource リソースを作成するには、persistentResources/create メソッドを使用して POST リクエストを送信し、リクエスト本文で enable_custom_service_account パラメータを true に設定します。

永続リソースには一つ以上のリソースプールを設定できます。各リソースプールを構成して、固定数のレプリカまたは自動スケーリングを使用できます。

リクエストのデータを使用する前に、次のように置き換えます。

  • PROJECT_ID: 永続リソースを作成する Google Cloud プロジェクトのプロジェクト ID。
  • LOCATION: 永続リソースを作成するリージョン。サポートされているリージョンの一覧については、利用できる機能をご覧ください。
  • PERSISTENT_RESOURCE_ID: 永続リソースの ID。
  • DISPLAY_NAME: 省略可。永続リソースの表示名。
  • MACHINE_TYPE: 使用する仮想マシン(VM)のタイプ。サポートされている VM の一覧については、マシンタイプをご覧ください。このフィールドは、ResourcePool API メッセージの machineSpec.machineType フィールドに対応しています。
  • REPLICA_COUNT: 省略可。自動スケーリングを使用しない場合に、リソースプールに作成するレプリカの数。このフィールドは、ResourcePool API メッセージの replicaCount フィールドに対応しています。MIN_REPLICA_COUNT フィールドと MAX_REPLICA_COUNT フィールドを指定しない場合、レプリカ数を指定する必要があります。
  • MIN_REPLICA_COUNT: 省略可。リソースプールで自動スケーリングを使用している場合のレプリカの最小数。自動スケーリングを使用するには、MIN_REPLICA_COUNTMAX_REPLICA_COUNT の両方を指定する必要があります。
  • MAX_REPLICA_COUNT: 省略可。リソースプールで自動スケーリングを使用している場合のレプリカの最大数。自動スケーリングを使用するには、MIN_REPLICA_COUNTMAX_REPLICA_COUNT の両方を指定する必要があります。

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"
      },
      "replica_count": REPLICA_COUNT,
      "autoscaling_spec": {
        "min_replica_count": MIN_REPLICA_COUNT,
        "max_replica_count": MAX_REPLICA_COUNT
      }
    }
  ],
  "resource_runtime_spec": {
    "enable_custom_service_account: true
  }
}

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

次のような JSON レスポンスが返されます。

{
  "name": "projects/PROJECT_NUMBER/locations/LOCATION/persistentResources/mypersistentresource/operations/OPERATION_ID",
  "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"
    }
  }
}

永続リソースを使用してパイプライン実行を作成する

次のコードサンプルを使用して、永続リソースを使用するパイプライン実行を作成します。

  job = aiplatform.PipelineJob(display_name = 'DISPLAY_NAME',
  template_path = 'COMPILED_PIPELINE_PATH',
  pipeline_root = 'PIPELINE_ROOT',
  project = 'PROJECT_ID',
  location = 'LOCATION',
  default_runtime = {
    "persistentResourceRuntimeDetail": {
    "persistentResourceName": "PERSISTENT_RESOURCE_ID",
    "taskResourceUnavailableWaitTimeMs": WAIT_TIME,
    "taskResourceUnavailableTimeoutBehavior": TIMEOUT_BEHAVIOR,
    }
  }

次のように置き換えます。

  • DISPLAY_NAME: パイプラインの名前。これは Google Cloud コンソールに表示されます。

  • COMPILED_PIPELINE_PATH: コンパイルされたパイプライン YAML ファイルのパス。ローカルパスまたは Cloud Storage URI を指定できます。

  • PIPELINE_ROOT: パイプライン実行のアーティファクトを保存する Cloud Storage URI を指定します。

  • PROJECT_ID: このパイプラインが実行されるプロジェクト。 Google Cloud

  • LOCATION: パイプライン実行が実行されるリージョン。Vertex AI Pipelines を利用できるリージョンの詳細については、Vertex AI ロケーション ガイドをご覧ください。このパラメータを設定しないと、Vertex AI Pipelines は aiplatform.init で設定されたデフォルトのロケーションを使用します。

  • PERSISTENT_RESOURCE_ID: 作成した永続リソースの ID。

  • WAIT_TIME: 永続リソースが使用できない場合に待機する時間(ミリ秒単位)。

  • TIMEOUT_BEHAVIOR: WAIT_TIME を超えた場合のパイプライン タスクのフォールバック動作を指定します。有効な値は次のとおりです。

    • FAIL 待機時間が経過すると、パイプライン タスクが失敗します。

    • FALL_BACK_TO_ON_DEMANDパイプライン タスクは、永続リソースを使用せずに、デフォルトの Vertex AI トレーニング リソースを使用して実行を続けます。

次のステップ