パイプラインの Private Service Connect インターフェースを構成する

パイプラインの実行のプライベート接続は、Private Service Connect インターフェースを使用して構成できます。IP の枯渇の可能性を減らし、推移的なピアリングをサポートするため、プライベート接続には Vertex AI Private Service Connect を使用することをおすすめします。

Vertex AI Pipelines は、トレーニング用の基盤となる Private Service Connect インターフェース インフラストラクチャを使用して、接続の詳細をカスタム トレーニング ジョブに渡します。カスタム トレーニングで Private Service Connect インターフェースを使用する際の制限と料金の詳細については、Vertex AI Training で Private Service Connect インターフェースを使用するをご覧ください。

制限事項

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

料金

Private Service Connect インターフェースの料金については、ネットワーキングのすべての料金体系ページをご覧ください。

始める前に

Vertex AI Pipelines で Private Service Connect インターフェースを使用するには、まず Vertex AI リソースの Private Service Connect インターフェースを設定する必要があります。

Private Service Connect インターフェースを使用してパイプライン実行を作成する

パイプライン ジョブを作成するには、まずパイプライン仕様を作成する必要があります。パイプライン仕様は、コンパイルされたパイプライン定義を変換して作成するインメモリ オブジェクトです。

パイプライン仕様を作成する

次の手順に沿って、パイプライン実行の作成に使用できるインメモリ パイプライン仕様を作成します。

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

  2. 次のコードサンプルを使用して、コンパイルされたパイプライン YAML ファイルをインメモリ パイプライン仕様に変換します。

    import yaml
    with open("COMPILED_PIPELINE_PATH", "r") as stream:
      try:
        pipeline_spec = yaml.safe_load(stream)
        print(pipeline_spec)
      except yaml.YAMLError as exc:
        print(exc)
    

    COMPILED_PIPELINE_PATH は、コンパイルされたパイプライン YAML ファイルのローカルパスに置き換えます。

パイプライン実行を作成する

次のサンプルを使用して、Private Service Connect インターフェースを使用してパイプラインの実行を作成します。

Python

Vertex AI SDK for Python を使用して Private Service Connect インターフェースを使用してパイプライン実行を作成するには、aiplatform_v1beta1/services/pipeline_service 定義を使用して実行を構成します。

# Import aiplatform and the appropriate API version v1beta1
from google.cloud import aiplatform, aiplatform_v1beta1

# Initialize the Vertex SDK using PROJECT_ID and LOCATION
aiplatform.init(project="PROJECT_ID", location="LOCATION")

# Create the API endpoint
client_options = {
"api_endpoint": f"LOCATION-aiplatform.googleapis.com"
}

# Initialize the PipelineServiceClient
client = aiplatform_v1beta1.PipelineServiceClient(client_options=client_options)

# Construct the request
request = aiplatform_v1beta1.CreatePipelineJobRequest(
parent=f"projects/PROJECT_ID/locations/LOCATION",
pipeline_job=aiplatform_v1beta1.PipelineJob(
    display_name="DISPLAY_NAME",
    pipeline_spec=PIPELINE_SPEC,
    runtime_config=aiplatform_v1beta1.PipelineJob.RuntimeConfig(
        gcs_output_directory="OUTPUT_DIRECTORY",
    ),
    psc_interface_config=aiplatform_v1beta1.PscInterfaceConfig(
        network_attachment="NETWORK_ATTACHMENT_NAME"
    ),
)

# Make the API call
response = client.create_pipeline_job(request=request)

# Print the response
print(response)

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

  • PROJECT_ID: パイプライン実行を作成するプロジェクトのプロジェクト ID。
  • LOCATION: パイプライン実行を作成するリージョン。
  • DISPLAY_NAME: パイプライン ジョブの名前。表示名の最大長は 128 UTF-8 文字です。
  • PIPELINE_SPEC: パイプライン仕様の作成で作成したパイプライン仕様。
  • OUTPUT_DIRECTORY: 出力アーティファクトを保存する Cloud Storage バケットの URI。このパスはパイプラインのルート出力ディレクトリであり、出力アーティファクトのパスの生成に使用されます。
  • NETWORK_ATTACHMENT_NAME: PipelineJob リソースに接続する Compute Engine ネットワーク アタッチメントの名前。ネットワーク アタッチメントを取得するには、始める前にの手順を完了している必要があります。ネットワーク アタッチメントの詳細については、VPC ネットワーク、サブネット、ネットワーク アタッチメントを設定するをご覧ください。

REST

パイプライン実行を作成するには、pipelineJobs.create メソッドを使用して POST リクエストを送信します。

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

  • PROJECT_ID: パイプライン実行を作成するプロジェクトのプロジェクト ID。
  • LOCATION: パイプライン実行を作成するリージョン。
  • DISPLAY_NAME: パイプライン ジョブの名前。表示名の最大長は 128 UTF-8 文字です。
  • PIPELINE_SPEC: パイプライン仕様の作成で作成したパイプライン仕様。
  • OUTPUT_DIRECTORY: 出力アーティファクトを保存する Cloud Storage バケットの URI。このパスはパイプラインのルート出力ディレクトリであり、出力アーティファクトのパスの生成に使用されます。
  • NETWORK_ATTACHMENT_NAME: PipelineJob リソースに接続する Compute Engine ネットワーク アタッチメントの名前。ネットワーク アタッチメントを取得するには、始める前にの手順を完了している必要があります。ネットワーク アタッチメントの詳細については、VPC ネットワーク、サブネット、ネットワーク アタッチメントを設定するをご覧ください。

HTTP メソッドと URL:

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

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

{
  "display_name": "DISPLAY_NAME",
  "pipeline_spec": "PIPELINE_SPEC",
  "runtime_config": {
       "gcs_output_directory": "OUTPUT_DIRECTORY",
   },
   "psc_interface_config": {
       "network_attachment": "NETWORK_ATTACHMENT_NAME"
   }
}

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

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/pipelineJobs"

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/pipelineJobs" | Select-Object -Expand Content

出力は次のようになります。PIPELINE_JOB_ID はパイプライン実行の ID を表し、SERVICE_ACCOUNT_NAME はパイプラインの実行に使用されるサービス アカウントを表します。

{
  "name": "projects/PROJECT_ID/locations/LOCATION/pipelineJobs/PIPELINE_JOB_ID",
  "displayName": "DISPLAY_NAME",
  "createTime": "20xx-01-01T00:00:00.000000Z",
  "updateTime": "20xx-01-01T00:00:00.000000Z",
  "pipelineSpec": PIPELINE_SPEC,
  "state": "PIPELINE_STATE_PENDING",
  "labels": {
    "vertex-ai-pipelines-run-billing-id": "VERTEX_AI_PIPELINES_RUN_BILLING_ID"
  },
  "runtimeConfig": {
    "gcsOutputDirectory": "OUTPUT_DIRECTORY"
  },
  "serviceAccount": "SERVICE_ACCOUNT_NAME"
  "pscInterfaceConfig": {
    "networkAttachment": "NETWORK_ATTACHMENT_NAME"
  }
}