Vertex AI Training に Private Service Connect インターフェースを使用する

Private Service Connect インターフェースは、IP の枯渇の可能性を減らし、推移的なピアリングを可能にするため、プライベート接続に推奨されます。

Private Service Connect インターフェースは、Agent Platform カスタムジョブと永続リソースでサポートされています。

概要

Private Service Connect インターフェースは、Vertex AI Training カスタムジョブと永続リソースでサポートされています。Private Service Connect インターフェースを使用するには、ユーザー プロジェクトに VPC ネットワーク、サブネットワーク、ネットワーク アタッチメントを設定する必要があります。Private Service Connect インターフェースを設定するをご覧ください。Private Service Connect インターフェースを有効にするには、カスタムジョブまたは永続リソースを作成するリクエストにネットワーク アタッチメント名を含める必要があります。

Gemini Enterprise Agent Platform Private Service Connect から他のネットワークへの下り(外向き)接続

Gemini Enterprise Agent Platform には、Private Service Connect でサポートされている下り(外向き)ネットワーク接続が統合されています(他のネットワーク内のワークロードへの接続をご覧ください)。ただし、次のアーキテクチャ上の動作があります。

Google API と内部専用サービスへのアクセス

Gemini Enterprise Agent Platform が Google API にトラフィックを送信すると、プロデューサー環境内でローカルに解決され、コンシューマー VPC ネットワークのプライベート Google アクセス設定やルーティングは使用されません。

注:

  • VPC ID の要件: ローカル解決ではコンシューマー VPC ネットワーク パスがバイパスされるため、トラフィックに VPC ネットワークの ID は含まれません。これにより、内部上り(内向き)で構成された Cloud Run サービスなど、内部専用の Google サービスへのリクエストが 404 または 403 エラーで失敗します。
  • Private Service Connect エンドポイント ソリューション: これらの内部サービスに非公開でアクセスするには、VPC ネットワークで Google API の Private Service Connect エンドポイントを構成する必要があります。
  • DNS 構成: トラフィックが完全にプライベート パスにとどまるように、サービス ドメイン(*.run.app など)が Private Service Connect エンドポイントの内部 IP アドレスに解決されるようにする必要があります。

インターネット下り(外向き)と Cloud NAT

デフォルトでは、Gemini Enterprise Agent Platform は、VPC ネットワークのルートではなく、Google マネージド インターネット ゲートウェイを下り(外向き)トラフィックに使用します。コンシューマーの Cloud NAT ゲートウェイを使用した下り(外向き)は、プロジェクトが VPC Service Controls の境界の一部である場合にのみ使用されます。

この境界はデフォルトのインターネット アクセスをブロックし、Private Service Connect インターフェースと VPC ネットワークのルーティング ルールを介してトラフィックを強制的に転送します。VPC Service Controls を使用していない場合、アウトバウンド インターネット トラフィックは VPC ネットワークと Cloud NAT ゲートウェイを完全にバイパスします。

制限事項

Private Service Connect インターフェースの機能と制限事項については、 Private Service Connect インターフェースを介した Gemini Enterprise Agent Platform サービスへのアクセスについてをご覧ください。

料金

Private Service Connect インターフェースの料金については、ネットワーキングのすべての料金体系ページの「プロデューサーまたはコンシューマ VPC ネットワークへのアクセスに Private Service Connect インターフェースを使用する」をご覧ください。

始める前に

ユーザー プロジェクトで Private Service Connect インターフェースのリソースを設定します。

Private Service Connect インターフェースを使用してサーバーレス トレーニング ジョブを作成する

Agent Platform SDK for Python または REST API を使用して、Private Service Connect インターフェースでサーバーレス トレーニング ジョブを作成できます。

Python

Agent Platform SDK for Python を使用して PSC-I でサーバーレス トレーニング ジョブを作成するには、構成 定義を使用してジョブをaiplatform_v1/services/job_service します。

Python

from google.cloud import aiplatform


def create_custom_job_psci_sample(
    project: str,
    location: str,
    bucket: str,
    display_name: str,
    machine_type: str,
    replica_count: int,
    image_uri: str,
    network_attachment: str,
    domain: str,
    target_project: str,
    target_network: str,
):
    """Custom training job sample with PSC Interface Config."""
    aiplatform.init(project=project, location=location, staging_bucket=bucket)

    worker_pool_specs = [{
        "machine_spec": {
            "machine_type": machine_type,
        },
        "replica_count": replica_count,
        "container_spec": {
            "image_uri": image_uri,
            "command": [],
            "args": [],
        },
    }]
    psc_interface_config = {
        "network_attachment": network_attachment,
        "dns_peering_configs": [
            {
                "domain": domain,
                "target_project": target_project,
                "target_network": target_network,
            },
        ],
    }
    job = aiplatform.CustomJob(
        display_name=display_name,
        worker_pool_specs=worker_pool_specs,
    )

    job.run(psc_interface_config=psc_interface_config)

  • project: 。これらの ID は、 Cloud de Confiance コンソールの [ようこそ] ページで確認できます。
  • location: 利用可能なロケーションの一覧をご覧ください。
  • bucket: bucket は、アクセスできるバケットの名前に置き換えます。
  • display_name: 永続リソースの表示名。
  • machine_type: コンピューティング リソースを指定します。
  • replica_count: 各トライアルで使用するワーカー レプリカの数。
  • service_attachment: サービス アタッチメント リソースの名前。Private Service Connect が有効になっている場合に入力されます。
  • image_uri: トレーニング コードを含む Docker コンテナ イメージの URI。カスタム コンテナ イメージの作成方法を確認してください。
  • network_attachment: Private Service Connect のリソースを設定するときに作成したネットワーク アタッチメントの名前またはフルパス。
  • domain: プライベート DNS ピアリングの設定時に作成したプライベート Cloud DNS ゾーンの DNS 名。
  • target_project: VPC ネットワークをホストするプロジェクト。
  • target_network: VPC ネットワーク名。

REST

サーバーレス トレーニング ジョブを作成するには、 customJobs.create メソッドを使用して POST リクエストを送信します。

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

  • LOCATION: コンテナまたは Python パッケージを実行するリージョン。
  • PROJECT_ID: プロジェクト ID。 。
  • JOB_NAME:CustomJob の表示名。
  • REPLICA_COUNT: 使用するワーカー レプリカの数。最初のワーカープールでは、ほとんどの場合、1 に設定します。
  • トレーニング アプリケーションがカスタム コンテナで実行される場合は、次のように指定します。
    • IMAGE_URI: トレーニング コードを含む Docker コンテナ イメージの URI。カスタム コンテナ イメージの作成方法を確認してください。
    • NETWORK_ATTACHMENT: Private Service Connect インターフェースを設定するときに作成したネットワーク アタッチメントの名前またはフルパス。
    • プライベート DNS ピアリングが必要な場合は、dns_peering_configs フィールドが必要です。このリストの各項目には、次の要素が含まれます。
      • DOMAIN_SUFFIX: プライベート DNS ピアリングの設定時に作成したプライベート Cloud DNS ゾーンの DNS 名。
      • TARGET_PROJECT: VPC ネットワークをホストするプロジェクト。
      • TARGET_NETWORK: VPC ネットワーク名。

HTTP メソッドと URL:

POST https://LOCATION-aiplatform.googleapis.com/v1/projects/PROJECT_ID/locations/LOCATION/customJobs

リクエストの本文(JSON):

"display_name": JOB_NAME,
"job_spec": {
    "worker_pool_specs": [
      {
        "machine_spec": {
          "machine_type": "n2-standard-4",
        },
        "replica_count": REPLICA_COUNT,
        "container_spec": {
          "image_uri": IMAGE_URI,
        },
      },
    ],
    "psc_interface_config": {
      "network_attachment": NETWORK_ATTACHMENT,
      "dns_peering_configs": [
         {
          "domain": DOMAIN_SUFFIX,
          "target_project": TARGET_PROJECT,
          "target_network": TARGET_NETWORK
         }
      ],
    },
    "enable_web_access": 1
}

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

curl

リクエスト本文を request.json という名前のファイルに保存して、次のコマンドを実行します。

curl -X POST \
-H "Authorization: Bearer $(gcloud auth print-access-token)" \
-H "Content-Type: application/json; charset=utf-8" \
-d @request.json \
"https://LOCATION-aiplatform.googleapis.com/v1/projects/PROJECT_ID/locations/LOCATION/customJobs"

PowerShell

リクエスト本文を request.json という名前のファイルに保存して、次のコマンドを実行します。

$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://LOCATION-aiplatform.googleapis.com/v1/projects/PROJECT_ID/locations/LOCATION/customJobs" | Select-Object -Expand Content

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