Configurar notificações por e-mail

O Vertex AI Pipelines pode notificar sobre o sucesso ou a falha de uma execução de pipeline. Quando o pipeline é encerrado, o Google Cloud envia uma notificação final de status ao endereço de e-mail que você especificou.

Este guia mostra como configurar as notificações por e-mail a partir de um pipeline usando o componente de notificação por e-mail no SDK dos componentes de pipeline do Google Cloud.

Antes de começar

Antes de criar um pipeline para enviar notificações, use as instruções a seguir para configurar o projeto do Google Cloud e o ambiente de desenvolvimento.

  1. Para preparar o projeto do Google Cloud para executar pipelines de ML, siga as instruções no guia Como configurar o projeto do Google Cloud.

  2. Instale a versão 1.8 ou mais recente do SDK do Kubeflow Pipelines.
    (Opcional) Antes da instalação, execute o seguinte comando para ver qual versão do SDK do Kubeflow Pipelines está instalada no momento:

      pip freeze | grep kfp
    
  3. Para usar o cliente Vertex AI Python nos pipelines, instale as bibliotecas de cliente Vertex AI v1.7 ou mais recente.

  4. Para usar os serviços do Vertex AI nos pipelines, instale os componentes de pipeline do Google Cloud.

Enviar uma notificação de um pipeline

O exemplo a seguir mostra como configurar notificações por e-mail definindo uma tarefa de notificação de e-mail (notify_email_task) e adicionando-a ao gerenciador de saída do pipeline (dsl.ExitHandler). Essa tarefa de notificação invoca o operador VertexNotificationEmailOp no componente de notificação de e-mail quando o pipeline é encerrado.

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')

Substitua:

  • PIPELINE_NAME: o nome do pipeline.

  • PIPELINE_ROOT_PATH: especifique um URI do Cloud Storage que sua conta de serviço de pipelines possa acessar. Os artefatos das execuções de pipeline são armazenados na raiz do pipeline.

    A raiz do pipeline pode ser definida como um argumento da @kfp.dsl.pipeline anotação na função do pipeline ou quando você chama create_run_from_job_spec para criar uma execução de pipeline.

  • TASK_NAME: o nome da tarefa do pipeline para que você está configurando notificações por e-mail.

  • RECIPIENTS_LIST: uma lista separada por vírgulas de até três endereços de e-mail para os quais o e-mail de notificação será enviado.

Adicione as tarefas do pipeline ao corpo da função do gerenciador de saída dsl.ExitHandler. Ao agrupar as tarefas na função de gerenciador de saída, você especifica que o componente do e-mail de notificação vai informar o status dessas tarefas quando o pipeline for encerrado. Por exemplo, se uma tarefa no conteúdo do gerenciador de saída falhar, a notificação vai informar o status como falha.

Exemplo de um e-mail de notificação

Se você configurar notificações por e-mail para um pipeline usando o exemplo de código em Enviar uma notificação de um pipeline, a Vertex AI vai enviar uma notificação por e-mail semelhante à seguinte quando o pipeline for finalizado:

Assunto: Job do Vertex Pipelines "PIPELINE_NAME", tarefa "TASK_NAME"
De: Notificações do Google <notify-noreply@google.com>

Olá, cliente da Vertex AI

O job do Vertex Pipelines "PIPELINE_NAME", tarefa "TASK_NAME", foi finalizado com o seguinte status: {status}.

Outros detalhes:
- Projeto: {project}
- Nome do pipeline: PIPELINE_NAME
- ID do job no pipeline: {pipeline_job_id}
- Horário de início: {start_time}

Para explorar este job de pipeline no console do Cloud, use o link: {console_link}

Atenciosamente,
Equipe de IA do Google Cloud

Neste exemplo:

  • {status} representa o estado final da tarefa, que pode ser SUCCEEDED, FAILED ou CANCELLED.
  • {project} é o nome do projeto;
  • {pipeline_job_id} é o ID exclusivo do job do pipeline.
  • {start_time} representa o horário de início do pipeline.
  • {console_link} é um hiperlink para o job do pipeline no console do Google Cloud.