Vertex AI Pipelines 中的资源加标签功能

Vertex AI Pipelines 可能会自动将流水线运行作业中的标签传播到通过 Google Cloud 流水线组件生成的资源,也可能会要求您为生成的资源加标签,具体取决于组件类型、资源和 Google Cloud 流水线组件 SDK 版本。对于用户定义的组件,您需要编写组件代码以通过环境变量来关联标签。如需了解详情,请参阅通过用户定义的组件生成的资源

具有自动加标签功能的资源

无论使用的是哪一个 Google Cloud 流水线组件 SDK 版本,Vertex AI Pipelines 都会自动为以下资源加标签:

CustomJob 个资源

Vertex AI Pipelines 会自动将流水线运行作业中的标签传播到 CustomJob 资源。所有版本的 Google Cloud 流水线组件 SDK 中的以下组件都支持此功能:

Google Cloud 流水线组件 SDK v1.0.31 或更高版本中具有自动加标签功能的资源

如果您使用 Google Cloud 流水线组件 SDK v1.0.31 或更高版本,Vertex AI Pipelines 会自动为以下资源加标签:

BatchPredictionJob 个资源

如果您使用 Google Cloud 流水线组件 SDK v1.0.31 或更高版本,Vertex AI Pipelines 会自动将流水线运行作业中的标签传播到通过 ModelBatchPredictOp 组件生成的 BatchPredictionJob 资源。

Vertex AI endpoint 资源

如果您使用 Google Cloud 流水线组件 SDK v1.0.31 或更高版本,Vertex AI Pipelines 会自动将流水线运行作业中的标签传播到通过 EndpointCreateOp 组件生成的 Vertex AI endpoint 资源。

HyperparameterTuningJob 个资源

如果您使用 Google Cloud 流水线组件 SDK v1.0.31 或更高版本,Vertex AI Pipelines 会自动将流水线运行作业中的标签传播到通过 HyperparameterTuningJobRunOp 组件生成的 HyperparameterTuningJob 资源。

Vertex AI 数据集资源

如果您使用 Google Cloud 流水线组件 SDK v1.0.31 或更高版本,Vertex AI Pipelines 会自动将流水线运行作业中的标签传播到通过以下 Vertex AI 组件生成的 Vertex AI 数据集资源:

Google Cloud BigQuery 作业资源

如果您使用 Google Cloud 流水线组件 SDK v1.0.31 或更高版本,Vertex AI Pipelines 会自动将流水线运行作业中的标签传播到通过任何 BigQuery ML 组件生成的 Google Cloud BigQuery 作业资源。

Google Cloud Dataproc 作业资源

如果您使用 Google Cloud 流水线组件 SDK v1.0.31 或更高版本,Vertex AI Pipelines 会自动将流水线运行作业中的标签传播到通过任何 Dataproc Serverless 组件生成的 Google Cloud Dataproc 作业资源。

TrainingPipelineModel 资源

如果您使用 Google Cloud 流水线组件 SDK v1.0.31 或更高版本,Vertex AI Pipelines 会自动将流水线运行作业中的标签传播到通过以下 AutoML 组件生成的 TrainingPipelineModel 资源:

Google Cloud BigQuery 表资源

如果您使用 Google Cloud 流水线组件 SDK v1.0.31 或更高版本,Vertex AI Pipelines 会自动将流水线运行作业中的标签传播到通过 ForecastingPreprocessingOp 组件生成的 Google Cloud BigQuery 表资源。

不具有自动加标签功能的资源

无论使用的是哪一个 Google Cloud 流水线组件 SDK 版本,Vertex AI Pipelines 都不会自动为以下资源加标签:

Google Cloud Dataflow 资源

Vertex AI Pipelines 不会自动为 DataflowPythonJobOp 组件生成的 Dataflow 资源加标签。您可以通过在代码中添加相关指令来为此类资源加标签。

使用以下代码示例将流水线运行作业中的结算标签传播到使用 DataflowPythonJobOp 组件生成的任何 Google Cloud Dataflow 资源:

  import argparse
  import apache_beam as beam
  ...
  def run(argv=None):
    parser = argparse.ArgumentParser()
    # Don't add `--labels` to the argument list, so that they will be passed to the pipeline_options
    parser.add_argument('--input', …)
    parser.add_argument('--output', …)
  ...
    known_args, pipeline_args = parser.parse_known_args(argv)
    pipeline_options = PipelineOptions(pipeline_args)
    with beam.Pipeline(options=pipeline_options) as p:

通过用户定义的组件生成的资源

Vertex AI Pipelines 不会自动为通过用户定义的组件生成的 Google Cloud 资源加标签。您可以通过在代码中添加相关指令来检索环境变量 VERTEX_AI_PIPELINES_RUN_LABELS 中的标签,并将这些标签关联到在运行时使用组件生成的 Google Cloud 资源。

环境变量 VERTEX_AI_PIPELINE_RUN_LABELS 包含 JSON 格式的标签,它们是一些键值对。

例如:{ "label1_key": "label1_value", "label2_key": "label2_value", ...}

如果您使用的是 Python 版 Vertex AI SDK,请在组件代码中使用以下代码示例,将环境变量中的标签传播到通过组件生成的新资源:

import os
import json
from google.cloud import aiplatform

aiplatform.init(
  project='PROJECT_ID',
  location='LOCATION'
)

aiplatform.RESOURCE.create(
  ...
  json.loads(os.getenv("VERTEX_AI_PIPELINES_RUN_LABELS"))
)

请替换以下内容:

  • PROJECT_ID:在其中运行此流水线的 Google Cloud 项目。

  • LOCATION:此流水线的运行位置或区域。

  • RESOURCE:通过组件生成的 Google Cloud 资源,例如 CustomJobModel

如果要使用 Python 来解析环境变量,则也可使用 gcp_labels_util.attach_system_labels 实用程序。只有在您有权访问 Google Cloud 流水线组件库并且使用的是 Python 时,才能使用此实用程序。如需了解详情,请参阅 GitHub 中的实用函数源代码

不支持加标签功能的资源

Vertex AI Pipelines 不支持将结算标签传播到以下资源:

ML Metadata 资源

ML Metadata 资源是在存储区级层计费的。您无法使用结算标签来了解资源级费用。

Cloud Storage 资源

Vertex AI Pipelines 不会将结算标签传播到 Cloud Storage 资源,例如 Cloud Storage 存储桶。

后续步骤