Acionar aplicações, processos ou fluxos de trabalho CI/CD com base em eventos do Azure Machine Learning

Neste artigo, você aprenderá a configurar aplicativos, processos ou fluxos de trabalho de CI/CD orientados a eventos com base em eventos do Azure Machine Learning. Por exemplo, pode configurar emails de notificação de falhas ou execuções de pipeline de ML quando certas condições são detetadas usando o Azure Event Grid.

O Azure Machine Learning gere todo o ciclo de vida do processo de machine learning, incluindo treino de modelos, implementação de modelos e monitorização. Ao utilizar o Event Grid, pode reagir a eventos do Azure Machine Learning, como a conclusão de execuções de treino e o registo e implementação de modelos, utilizando arquiteturas serverless modernas. Pode então subscrever e consumir eventos como alteração do estado da execução, conclusão da execução, registo de modelos e implementação de modelos dentro de um espaço de trabalho.

Use a Grelha de Eventos para ações orientadas a eventos:

  • Enviar e-mails em caso de falha na execução e de conclusão da execução
  • Usar uma função do Azure depois que um modelo é registrado
  • Transmitir eventos do Azure Machine Learning para vários endpoints

Importante

Os itens assinalados com (pré-visualização) neste artigo estão atualmente em pré-visualização pública. A versão de pré-visualização é fornecida sem um acordo de nível de serviço e não é recomendada para cargas de trabalho de produção. Algumas funcionalidades poderão não ser suportadas ou poderão ter capacidades limitadas. Para obter mais informações, veja Termos Suplementares de Utilização para Pré-visualizações do Microsoft Azure.

Pré-requisitos

Para usar a Grade de Eventos, você precisa de acesso de colaborador ou proprietário ao espaço de trabalho do Azure Machine Learning para o qual você cria eventos.

  • Registe o fornecedor de recursos do Microsoft.EventGrid na subscrição do Azure que possui. Este registo é obrigatório antes de poder criar subscrições para eventos.

    az provider register --namespace Microsoft.EventGrid --wait
    
  • Se planeias usar o exemplo do Logic Apps, regista também o Microsoft.Logic fornecedor.

    az provider register --namespace Microsoft.Logic --wait
    
  • Se planeia seguir o exemplo da CLI, instale a eventgrid extensão CLI do Azure.

    az extension add --name eventgrid
    
  • Se planeia seguir o exemplo da CLI com o Event Hub como destino, precisa de um namespace e hub existentes no Event Hub. Veja Criar um hub de eventos se precisar de criar um.

O modelo de eventos e tipos

A Grade de Eventos do Azure lê eventos de fontes, como o Azure Machine Learning e outros serviços do Azure. Envia estes eventos para gestores de eventos como Hubs de Eventos do Azure, Funções do Azure, Logic Apps e outros. O diagrama seguinte mostra como o Event Grid liga fontes e handlers, mas não é uma lista abrangente de integrações suportadas.

Diagrama que mostra como o Azure Event Grid liga fontes como o Azure Machine Learning a gestores de eventos como Funções do Azure e Logic Apps.

Para mais informações sobre fontes de eventos e gestores de eventos, consulte O que é a Grade de Eventos?.

Tipos de eventos do Azure Machine Learning

O Azure Machine Learning oferece eventos em vários pontos do ciclo de vida do machine learning:

Tipo de evento Descrição
Microsoft.MachineLearningServices.RunCompleted Elevado quando uma experiência de aprendizagem automática termina
Microsoft.MachineLearningServices.ModelRegistered Elevado quando um novo modelo ou versão do modelo é registado com sucesso
Microsoft.MachineLearningServices.ModelDeployed É ativado quando um ou mais modelos são implementados com sucesso num endpoint
Microsoft.MachineLearningServices.RunStatusChanged Acionado quando o estado de uma execução muda

Filtrar e subscrever os eventos

O Azure Event Grid publica estes eventos. No portal do Azure, PowerShell ou CLI do Azure, você pode se inscrever facilmente em eventos especificando um ou mais tipos de eventos e condições de filtragem.

Ao configurar os seus eventos, aplique filtros para disparar apenas em dados específicos do evento. No exemplo seguinte, para eventos de alteração do estado da execução, pode filtrar por tipos de execução. O evento só é acionado quando os critérios são atendidos. Para obter mais informações sobre os dados de evento que você pode filtrar, consulte o esquema da Grade de Eventos do Azure Machine Learning.

O controlo de acesso baseado em funções do Azure (Azure RBAC) protege subscrições para eventos do Azure Machine Learning. Somente o colaborador ou proprietário de um espaço de trabalho pode criar, atualizar e excluir assinaturas de eventos. Pode aplicar filtros às subscrições do evento, seja durante a criação da subscrição ou numa data posterior.

  1. Vá para o portal do Azure, selecione uma nova assinatura ou uma existente.

  2. Selecione a entrada de Eventos no painel esquerdo e depois selecione + Subscrição de Evento.

  3. Selecione o separador Filtros e desloque-se para baixo até Filtros Avançados. Para Key e Value, forneça os tipos de propriedade pelos quais você deseja filtrar. Aqui pode ver os acionadores de evento quando o tipo de execução é uma execução de pipeline ou uma execução de etapa de pipeline.

    Filtrar eventos

  • Filtrar por tipo de evento: uma assinatura de evento pode especificar um ou mais tipos de evento do Azure Machine Learning.

  • Filtrar por assunto do evento: O Azure Event Grid suporta filtros de assunto com base em correspondências do tipo começa com e termina com, de modo que os eventos com um assunto correspondente sejam entregues ao subscritor. Diferentes eventos de aprendizado de máquina têm diferentes formatos de assunto.

    Tipo de evento Formato do assunto Assunto da amostra
    Microsoft.MachineLearningServices.RunCompleted experiments/{ExperimentId}/runs/{RunId} experiments/b1d7966c-f73a-4c68-b846-992ace89551f/runs/my_exp1_1554835758_38dbaa94
    Microsoft.MachineLearningServices.ModelRegistered models/{modelName}:{modelVersion} models/sklearn_regression_model:3
    Microsoft.MachineLearningServices.ModelDeployed endpoints/{serviceId} endpoints/my_sklearn_aks
    Microsoft.MachineLearningServices.RunStatusChanged experiments/{ExperimentId}/runs/{RunId} experiments/b1d7966c-f73a-4c68-b846-992ace89551f/runs/my_exp1_1554835758_38dbaa94
  • Filtragem avançada: a Grade de Eventos do Azure também dá suporte à filtragem avançada com base no esquema de eventos publicado. Os detalhes do esquema de eventos do Azure Machine Learning podem ser encontrados no esquema de eventos da Grade de Eventos do Azure para o Azure Machine Learning. Para o evento Microsoft.MachineLearningServices.ModelRegistered, filtrar o valor da etiqueta do modelo:

    --advanced-filter data.ModelTags.key1 StringIn value1
    

    Para saber mais sobre como aplicar filtros, consulte Filtrar eventos para Grade de Eventos.

Consumir eventos de aprendizagem automática

Os aplicativos que lidam com eventos de Machine Learning devem seguir algumas práticas recomendadas:

  • Como várias subscrições podem encaminhar eventos para o mesmo gestor de eventos, não presuma que os eventos são de uma fonte específica. Verifique o tema da mensagem para garantir que vem do espaço de trabalho de aprendizagem automática que espera.
  • Da mesma forma, verifica se o eventType é um que consegues processar. Não presuma que todos os eventos que recebe são do tipo que espera.
  • Como as mensagens podem chegar fora de ordem e depois de algum atraso, use os campos etag para entender se suas informações sobre objetos ainda estão atualizadas. Além disso, use os campos sequenciadores para entender a ordem dos eventos em qualquer objeto específico.
  • Ignore campos que você não entende. Esta prática ajuda a mantê-lo resiliente face a novas funcionalidades que possam ser adicionadas no futuro.
  • Operações falhadas ou canceladas do Azure Machine Learning não desencadeiam nenhum evento. Por exemplo, se a implementação de um modelo falhar, Microsoft.MachineLearningServices.ModelDeployed não é acionado. Considere esse modo de falha ao projetar seus aplicativos. Pode sempre usar o Azure Machine Learning SDK, CLI ou portal para verificar o estado de uma operação e compreender as razões detalhadas da falha.

O Azure Event Grid permite construir manipuladores de mensagens desacoplados, que eventos do Azure Machine Learning podem desencadear. Alguns exemplos notáveis de manipuladores de mensagens incluem:

  • Funções do Azure
  • Azure Logic Apps
  • Hubs de Eventos do Azure
  • Azure Data Factory Pipeline (Pipeline do Azure Data Factory)
  • Webhooks genéricos, que podes alojar na plataforma Azure ou noutro local

Configurar no portal do Azure

  1. Abra o portal do Azure e vá para seu espaço de trabalho do Azure Machine Learning.

  2. Na barra esquerda, selecione Eventos e, em seguida, selecione Subscrições de Eventos.

    Captura de ecrã a mostrar a seleção de Subscrição de Evento.

  3. Selecione o tipo de evento para consumir.

    Captura de ecrã do formulário Criar Subscrição de Evento.

  4. Selecione o endpoint para publicar o evento. Na captura de ecrã seguinte, Event hub é o ponto de extremidade selecionado:

    A captura de tela mostra o painel Criar Assinatura de Evento com Selecionar Hub de Eventos aberto.

Quando confirmar a sua seleção, selecione Criar. Após a configuração, estes eventos são enviados para o seu endpoint.

Para confirmar que a subscrição foi criada, selecione Eventos>Eventos Subscrições no seu espaço de trabalho e verifique se a sua nova subscrição aparece na lista.

Configuração com a CLI

Pode instalar a mais recente CLI do Azure, ou usar o Azure Cloud Shell fornecido como parte da sua subscrição do Azure. Certifica-te de que instalas a eventgrid extensão, conforme descrito em Pré-requisitos.

O exemplo seguinte demonstra como selecionar uma subscrição do Azure e criar uma nova subscrição de evento para o Azure Machine Learning:

# Select the Azure subscription that contains the workspace
az account set --subscription "<name or ID of the subscription>"

# Subscribe to the machine learning workspace. This example uses EventHub as a destination. 
az eventgrid event-subscription create --name {eventGridFilterName} \
  --source-resource-id /subscriptions/{subId}/resourceGroups/{RG}/providers/Microsoft.MachineLearningServices/workspaces/{wsName} \
  --endpoint-type eventhub \
  --endpoint /subscriptions/{SubID}/resourceGroups/TestRG/providers/Microsoft.EventHub/namespaces/n1/eventhubs/EH1 \
  --included-event-types Microsoft.MachineLearningServices.ModelRegistered \
  --subject-begins-with "models/mymodelname"

Para confirmar que a subscrição foi criada com sucesso, execute:

az eventgrid event-subscription show \
  --name {eventGridFilterName} \
  --source-resource-id /subscriptions/{subId}/resourceGroups/{RG}/providers/Microsoft.MachineLearningServices/workspaces/{wsName}

Exemplos

Exemplo: Enviar alertas por e-mail

Utilize Azure Logic Apps para configurar e-mails para todos os seus eventos. Personalize com condições e especifique destinatários para permitir a colaboração e o reconhecimento entre as equipes que trabalham juntas.

  1. No portal do Azure, vá para seu espaço de trabalho do Azure Machine Learning e selecione a guia de eventos na barra esquerda. A partir daqui, selecione Aplicativos lógicos.

    Captura de tela mostrando a seleção de Aplicativos Lógicos.

  2. Inicie sessão na interface da Logic App e selecione o serviço Machine Learning como tipo de tópico.

    A captura de tela mostra a caixa de diálogo Quando ocorre um evento de recurso com o aprendizado de máquina selecionado como um tipo de recurso.

  3. Selecione o evento para o qual quer ser notificado. Por exemplo, a captura de ecrã seguinte mostra RunCompleted.

    Captura de tela mostrando o serviço de Aprendizado de Máquina como o tipo de recurso.

  4. Em seguida, adicione uma etapa para consumir esse evento e pesquise por e-mail. Há várias contas de email diferentes que você pode usar para receber eventos. Você também pode configurar condições sobre quando enviar um alerta por e-mail.

    A captura de tela mostra a caixa de diálogo Escolha uma ação com o e-mail inserido na linha de pesquisa.

  5. Selecione Enviar um e-mail e preencha os parâmetros. No assunto, inclua o Tipo de Evento e o Tópico para ajudar a filtrar os eventos. Você também pode incluir um link para a página do espaço de trabalho para execuções no corpo da mensagem.

    Para salvar essa ação, selecione Salvar como no canto esquerdo da página.

    A captura de tela mostra a caixa de diálogo Enviar um e-mail com Tópico e Tipo de Evento adicionados à linha de assunto da lista à direita.

  6. Para verificar se o alerta funciona, acione um evento de qualificação – por exemplo, complete um treino – e confirme que o email chegou aos destinatários especificados.

Próximos passos

Para saber mais sobre o Event Grid e experimentar eventos do Azure Machine Learning, veja: