配置电子邮件通知

Vertex AI Pipelines 可以向您发送通知,以报告流水线运行成功或失败。当流水线退出时,Google Cloud 会向您指定的电子邮件地址发送最终状态通知电子邮件。

本指南介绍如何使用 Google Cloud 流水线组件 SDK 中的电子邮件通知组件配置从流水线发出的电子邮件通知。

准备工作

在构建发送通知的流水线之前,请按照以下说明设置 Google Cloud 项目和开发环境。

  1. 为了让您的 Google Cloud 项目为运行机器学习流水线做好准备,请按照配置 Google Cloud 项目指南中的说明操作。

  2. 安装 Kubeflow Pipelines SDK v1.8 或更高版本。
    (可选)在安装之前,请运行以下命令以查看当前安装的 Kubeflow Pipelines SDK 版本:

      pip freeze | grep kfp
    
  3. 如需在流水线中使用 Vertex AI Python 客户端,请安装 Vertex AI 客户端库 v1.7 或更高版本

  4. 如需在流水线中使用 Vertex AI 服务,请安装 Google Cloud 流水线组件

从流水线发送通知

以下示例展示了如何通过定义电子邮件通知任务 (notify_email_task) 并将其添加到流水线的退出处理程序 (dsl.ExitHandler) 来配置电子邮件通知。此通知任务会在流水线退出时调用电子邮件通知组件中的 VertexNotificationEmailOp operator。

from kfp import dsl
from kfp import compiler
from google_cloud_pipeline_components.v1.vertex_notification_email import VertexNotificationEmailOp

@dsl.pipeline(
    name='PIPELINE_NAME',
    pipeline_root=PIPELINE_ROOT_PATH,
)
def TASK_NAME():
    notify_email_task = VertexNotificationEmailOp(recipients=RECIPIENTS_LIST)

    with dsl.ExitHandler(notify_email_task):
        # Add your pipeline tasks here.

compiler.Compiler().compile(pipeline_func=notification_email_pipeline,
        package_path='notification_email_pipeline.yaml')

请替换以下内容:

  • PIPELINE_NAME:流水线的名称。

  • PIPELINE_ROOT_PATH:指定流水线服务账号可以访问的 Cloud Storage URI。流水线运行的工件存储在流水线根目录中。

    流水线根目录可以在流水线函数上设置为 @kfp.dsl.pipeline 注释的参数,也可以在调用 create_run_from_job_spec 以创建流水线运行时设置。

  • TASK_NAME:要为其配置电子邮件通知的流水线任务的名称。

  • RECIPIENTS_LIST:接收通知电子邮件的电子邮件地址的列表;最多三个,以逗号分隔。

dsl.ExitHandler 退出处理程序函数的正文中添加流水线任务。通过以这种方式在退出处理程序函数中封装任务,您可以指定通知电子邮件组件在流水线退出时报告这些任务的状态。例如,如果退出处理程序内容中的某个任务失败,通知会报告失败状态。

电子邮件通知示例

如果您使用从流水线发送通知中的代码示例为流水线配置电子邮件通知,则 Vertex AI 会在流水线退出时发送如下所示的电子邮件通知:

主题:Vertex Pipelines 作业“PIPELINE_NAME”任务“TASK_NAME
发件人:Google Notifications <notify-noreply@google.com>

尊敬的 Vertex AI 客户:

Vertex Pipelines 作业“PIPELINE_NAME”任务“TASK_NAME”在以下状态下结束:{status}。

其他详情:
- 项目:{project}
- 流水线名称:PIPELINE_NAME
- 流水线作业 ID:{pipeline_job_id}
- 开始时间:{start_time}

如需在 Cloud 控制台中查看此流水线作业,请使用以下链接:{console_link}

此致
Google Cloud AI 团队敬上

在此示例中:

  • {status} 表示任务的最终状态,可以是 SUCCEEDEDFAILEDCANCELLED
  • {project} 是项目名称。
  • {pipeline_job_id} 是唯一的流水线作业 ID。
  • {start_time} 表示流水线的开始时间。
  • {console_link} 是 Google Cloud 控制台中流水线作业的超链接。