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

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

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

概要

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

Vertex AI Private Service Connect から他のネットワークへの下り(外向き)接続

Vertex AI には、Private Service Connect でサポートされている下り(外向き)ネットワーク接続が統合されています(他のネットワーク内のワークロードに接続するをご覧ください)。ただし、次の例外があります。

  • お客様の限定公開の Google アクセスへの下り(外向き)はサポートされていません。代わりに、限定公開の Google アクセスでは Private Service Connect 下り(外向き)がローカルで解決されます。

  • Cloud NAT への下り(外向き)トラフィックは、VPC Service Control が有効になっている場合にのみサポートされます。

制限事項

  • Private Service Connect インターフェースは外部 IP アドレスをサポートしていません。

料金

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

始める前に

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

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

Private Service Connect インターフェースを使用してカスタム トレーニング ジョブを作成するには、Vertex AI SDK for Python または REST API を使用します。

Python

Vertex AI SDK for Python を使用して PSC-I でカスタム トレーニング ジョブを作成するには、aiplatform_v1beta1/services/job_service 定義を使用してジョブを構成します。

Python

from google.cloud import aiplatform
from google.cloud import aiplatform_v1beta1


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_name: str,
):
    """Custom training job sample with PSC-I through aiplatform_v1beta1."""
    aiplatform.init(project=project, location=location, staging_bucket=bucket)

    client_options = {"api_endpoint": f"{location}-aiplatform.googleapis.com"}

    client = aiplatform_v1beta1.JobServiceClient(client_options=client_options)

    request = aiplatform_v1beta1.CreateCustomJobRequest(
        parent=f"projects/{project}/locations/{location}",
        custom_job=aiplatform_v1beta1.CustomJob(
            display_name=display_name,
            job_spec=aiplatform_v1beta1.CustomJobSpec(
                worker_pool_specs=[
                    aiplatform_v1beta1.WorkerPoolSpec(
                        machine_spec=aiplatform_v1beta1.MachineSpec(
                            machine_type=machine_type,
                        ),
                        replica_count=replica_count,
                        container_spec=aiplatform_v1beta1.ContainerSpec(
                            image_uri=image_uri,
                        ),
                    )
                ],
                psc_interface_config=aiplatform_v1beta1.PscInterfaceConfig(
                    network_attachment=network_attachment_name,
                ),
            ),
        ),
    )

    response = client.create_custom_job(request=request)

    return response

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

REST

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

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

HTTP メソッドと URL:

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

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

"display_name": JOB_NAME,
"job_spec": {
    "worker_pool_specs": [
      {
        "machine_spec": {
          "machine_type": "n1-standard-4",
        },
        "replica_count": REPLICA_COUNT,
        "container_spec": {
          "image_uri": IMAGE_URI,
        },
      },
    ],
    "psc_interface_config": {
      "network_attachment": NETWORK_ATTACHMENT_NAME
    },
    "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/v1beta1/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/v1beta1/projects/PROJECT_ID/locations/LOCATION/customJobs" | Select-Object -Expand Content

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