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 インターフェースを使用してパイプライン実行を作成する
パイプライン実行を作成するには、まずパイプライン仕様を作成する必要があります。パイプライン仕様は、コンパイルされたパイプライン定義を変換して作成するインメモリ オブジェクトです。
パイプライン仕様を作成する
次の手順に沿って、パイプライン実行の作成に使用できるインメモリ パイプライン仕様を作成します。
パイプラインを定義して YAML ファイルにコンパイルします。パイプラインの定義とコンパイルの詳細については、パイプラインを構築するをご覧ください。
次のコードサンプルを使用して、コンパイル済みパイプライン 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_v1/services/pipeline_service
定義を使用して実行を構成します。
# Import aiplatform and the appropriate API version v1
from google.cloud import aiplatform, aiplatform_v1
# 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_v1.PipelineServiceClient(client_options=client_options)
PSCI_INTERFACE_CONFIG = {
"network_attachment": "NETWORK_ATTACHMENT_NAME",
"dns_peering_configs": [
{
"domain": "DNS_DOMAIN",
"target_project": "TARGET_PROJECT",
"target_network": "TARGET_NETWORK"
}
]
}
# Construct the request
request = aiplatform_v1.CreatePipelineJobRequest(
parent=f"projects/PROJECT_ID/locations/LOCATION",
pipeline_job=aiplatform_v1.PipelineJob(
display_name="DISPLAY_NAME",
pipeline_spec=PIPELINE_SPEC,
runtime_config=aiplatform_v1.PipelineJob.RuntimeConfig(
gcs_output_directory="OUTPUT_DIRECTORY",
),
psc_interface_config=aiplatform_v1.PscInterfaceConfig(
PSCI_INTERFACE_CONFIG
),
)
# Make the API call
response = client.create_pipeline_job(request=request)
# Print the response
print(response)
次のように置き換えます。
- PROJECT_ID: パイプライン実行を作成するプロジェクトのプロジェクト ID。
- LOCATION: パイプライン実行を作成するリージョン。
- DISPLAY_NAME: パイプライン ジョブの名前。表示名の最大長は 128 文字です。
- PIPELINE_SPEC: パイプライン仕様を作成するで作成したパイプライン仕様。
- OUTPUT_DIRECTORY: 出力アーティファクトを保存する Cloud Storage バケットの URI。このパスはパイプラインのルート出力ディレクトリであり、出力アーティファクトのパスの生成に使用されます。
- NETWORK_ATTACHMENT_NAME:
PipelineJob
リソースに関連付ける Compute Engine ネットワーク アタッチメントの名前。ネットワーク アタッチメントを取得するには、始める前にセクションの手順を完了している必要があります。ネットワーク アタッチメントの詳細については、VPC ネットワーク、サブネット、ネットワーク アタッチメントを設定するをご覧ください。 - DNS_DOMAIN: 限定公開 DNS ピアリングを設定したときに作成したプライベート クラウド DNS ゾーンの DNS 名。
- TARGET_PROJECT: VPC ネットワークをホストしているプロジェクト。
- TARGET_NETWORK: VPC ネットワーク名。
REST
パイプライン実行を作成するには、pipelineJobs.create メソッドを使用して POST
リクエストを送信します。
リクエストのデータを使用する前に、次のように置き換えます。
- PROJECT_ID: パイプライン実行を作成するプロジェクトのプロジェクト ID。
- LOCATION: パイプライン実行を作成するリージョン。
- DISPLAY_NAME: パイプライン ジョブの名前。表示名の最大長は 128 文字です。
- PIPELINE_SPEC: パイプライン仕様を作成するで作成したパイプライン仕様。
- OUTPUT_DIRECTORY: 出力アーティファクトを保存する Cloud Storage バケットの URI。このパスはパイプラインのルート出力ディレクトリであり、出力アーティファクトのパスの生成に使用されます。
- NETWORK_ATTACHMENT_NAME:
PipelineJob
リソースに関連付ける Compute Engine ネットワーク アタッチメントの名前。ネットワーク アタッチメントを取得するには、始める前にセクションの手順を完了している必要があります。ネットワーク アタッチメントの詳細については、VPC ネットワーク、サブネット、ネットワーク アタッチメントを設定するをご覧ください。 - DNS_DOMAIN: 限定公開 DNS ピアリングを設定したときに作成したプライベート クラウド DNS ゾーンの DNS 名。
- TARGET_PROJECT: VPC ネットワークをホストしているプロジェクト。
- TARGET_NETWORK: VPC ネットワーク名。
HTTP メソッドと URL:
POST https://LOCATION-aiplatform.googleapis.com/v1/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", "dns_peering_configs": [ { "domain": "DNS_DOMAIN", "target_project": "TARGET_PROJECT", "target_network": "TARGET_NETWORK" } ] } }
リクエストを送信するには、次のいずれかのオプションを選択します。
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/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/v1/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", "dnsPeeringConfigs": [ { "domain": "DNS_DOMAIN", "targetProject": "TARGET_PROJECT", "targetNetwork": "TARGET_NETWORK" } ] } }