您可以使用 Private Service Connect 接口 (PSC-I) 为流水线运行配置专用连接。我们建议您使用 Vertex AI Private Service Connect 进行专用连接,因为这样可以降低 IP 耗尽的几率,并支持传递对等互连。
Vertex AI Pipelines 使用用于训练的基础 PSC-I 基础架构将连接详细信息传递给自定义训练作业。如需详细了解将 PSC-I 与自定义训练搭配使用时的限制和价格,请参阅使用 Private Service Connect 接口进行 Vertex AI 训练。
限制
Private Service Connect 接口不支持外部 IP 地址。
价格
如需了解 Private Service Connect 接口的价格,请参阅所有网络价格页面。
准备工作
如需将 PSC-I 与 Vertex AI Pipelines 搭配使用,您必须先为 Vertex AI 资源设置 Private Service Connect 接口。
使用 PSC-I 创建流水线作业
如需创建流水线作业,您必须先创建流水线规范。流水线规范是通过转换已编译的流水线定义创建的内存中对象。
创建流水线规范
按照以下说明创建可用于创建流水线作业的内存中流水线规范:
定义流水线并将其编译为 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 文件的本地路径。
创建流水线运行
使用以下示例使用 PSC-I 创建流水线作业:
Python
如需使用 Vertex AI SDK for Python 创建包含 PSC-I 的流水线作业,请使用 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 方法和网址:
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" } }