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, emails de notificação de falha ou pipeline de ML são executados, quando determinadas condições são detetadas usando a Grade de Eventos do Azure.

O Azure Machine Learning gerencia todo o ciclo de vida do processo de aprendizado de máquina, incluindo treinamento de modelo, implantação de modelo e monitoramento. Você pode usar a Grade de Eventos para reagir a eventos do Aprendizado de Máquina do Azure, como a conclusão de execuções de treinamento, o registro e a implantação de modelos e a deteção de desvio de dados, usando arquiteturas modernas sem servidor. Em seguida, você pode se inscrever e consumir eventos como status de execução alterado, conclusão de execução, registro de modelo, implantação de modelo e deteção de desvio de dados em um espaço de trabalho.

Quando usar a Grade de Eventos para ações controladas por eventos:

  • Enviar e-mails em falha de execução e conclusão de execução
  • Usar uma função do Azure depois que um modelo é registrado
  • Streaming de eventos do Azure Machine Learning para vários pontos de extremidade
  • Acionar um pipeline de ML quando o desvio for detetado

Importante

Os itens marcados (visualização) neste artigo estão atualmente em visualização pública. A versão de visualização é fornecida sem um contrato 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.

O modelo de evento & types

A Grade de Eventos do Azure lê eventos de fontes, como o Azure Machine Learning e outros serviços do Azure. Esses eventos são enviados para manipuladores de eventos, como Hubs de Eventos do Azure, Azure Functions, Aplicativos Lógicos e outros. O diagrama a seguir mostra como a Grade de Eventos conecta fontes e manipuladores, mas não é uma lista abrangente de integrações suportadas.

Modelo funcional da Grade de Eventos do Azure

Para obter mais informações sobre fontes de eventos e manipuladores de eventos, consulte O que é Grade de Eventos?

Tipos de eventos do Azure Machine Learning

O Azure Machine Learning proporciona eventos nos vários pontos do ciclo de vida da aprendizagem automática:

Tipo de evento Descrição
Microsoft.MachineLearningServices.RunCompleted Gerado quando a execução de uma experimentação de aprendizagem automática é concluída
Microsoft.MachineLearningServices.ModelRegistered (pré-visualização) Gerado quando um modelo de aprendizagem automática é registado na área de trabalho
Microsoft.MachineLearningServices.ModelDeployed (pré-visualização) Gerado quando uma implementação do serviço de inferência com um ou mais modelos é concluída
Microsoft.MachineLearningServices.DatasetDriftDetected (pré-visualização) Gerado quando um trabalho de deteção de desfasamento de dados para dois conjuntos de dados é concluído
Microsoft.MachineLearningServices.RunStatusChanged Gerado quando um status de execução é alterado

Filtrar e subscrever eventos

Esses eventos são publicados por meio da Grade de Eventos do Azure. 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 seus eventos, você pode aplicar filtros para acionar apenas dados de eventos específicos. No exemplo a seguir, para eventos alterados de status de execução, você 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.

As assinaturas para eventos do Azure Machine Learning são protegidas pelo controle de acesso baseado em função do Azure (Azure RBAC). Somente o colaborador ou proprietário de um espaço de trabalho pode criar, atualizar e excluir assinaturas de eventos. Os filtros podem ser aplicados a assinaturas de eventos durante a criação da assinatura do evento ou posteriormente.

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

  2. Selecione a entrada Eventos na área de navegação esquerda e, em seguida, selecione + Subscrição de eventos.

  3. Selecione a guia filtros e role para baixo até Filtros avançados. Para Key e Value, forneça os tipos de propriedade pelos quais você deseja filtrar. Aqui você pode ver os gatilhos de evento quando o tipo de execução é uma execução de pipeline ou 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: a Grade de Eventos do Azure dá suporte a filtros de assunto com base em partidas efinais com correspondências, para que eventos com um assunto correspondente sejam entregues ao assinante. 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 (pré-visualização) models/{modelName}:{modelVersion} models/sklearn_regression_model:3
    Microsoft.MachineLearningServices.ModelDeployed (pré-visualização) endpoints/{serviceId} endpoints/my_sklearn_aks
    Microsoft.MachineLearningServices.DatasetDriftDetected (pré-visualização) datadrift/{data.DataDriftId}/run/{data.RunId} datadrift/4e694bf5-712e-4e40-b06a-d2a2755212d4/run/my_driftrun1_1550564444_fbbcdc0f
    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 Microsoft.MachineLearningServices.ModelRegistered evento, para filtrar o valor da tag 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 Machine Learning

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

  • Como várias assinaturas podem ser configuradas para rotear eventos para o mesmo manipulador de eventos, é importante não assumir que os eventos são de uma fonte específica, mas verificar o tópico da mensagem para garantir que ela venha do espaço de trabalho de aprendizado de máquina que você está esperando.
  • Da mesma forma, verifique se o eventType é aquele que você está preparado para processar e não assuma que todos os eventos recebidos serão os tipos esperados.
  • 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. Essa prática ajudará a mantê-lo resiliente a novos recursos que possam ser adicionados no futuro.
  • As operações do Azure Machine Learning com falha ou canceladas não acionarão um evento. Por exemplo, se uma implantação de modelo falhar, Microsoft.MachineLearningServices.ModelDeployed não será acionado. Considere esse modo de falha ao projetar seus aplicativos. Você sempre pode usar o SDK do Azure Machine Learning, CLI ou portal para verificar o status de uma operação e entender os motivos detalhados da falha.

A Grade de Eventos do Azure permite que os clientes criem manipuladores de mensagens dissociados, que podem ser acionados por eventos do Azure Machine Learning. Alguns exemplos notáveis de manipuladores de mensagens são:

  • Funções do Azure
  • Azure Logic Apps
  • Hubs de Eventos do Azure
  • Azure Data Factory Pipeline
  • Webhooks genéricos, que podem ser hospedados na plataforma Azure ou em outro lugar

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 a ser consumido.

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

  4. Selecione o ponto de extremidade no qual o evento será publicado. Na captura de tela a seguir, o Hub de eventos é o ponto de extremidade selecionado:

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

Depois de confirmar a seleção, selecione Criar. Após a configuração, esses eventos serão enviados por push para o seu ponto de extremidade.

Configuração com a CLI

Você pode instalar a CLI do Azure mais recente ou usar o Azure Cloud Shell fornecido como parte de sua assinatura do Azure.

Para instalar a extensão de grade de eventos, use o seguinte comando da CLI:

az extension add --name eventgrid

O exemplo a seguir demonstra como selecionar uma assinatura do Azure e cria uma nova assinatura 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"

Exemplos

Exemplo: Enviar alertas por e-mail

Use os Aplicativos Lógicos do Azure para configurar emails 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. Entre na interface do usuário do Aplicativo Lógico e selecione Serviço de Aprendizado de Máquina como o 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 será notificado. Por exemplo, a captura de tela a seguir 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, você pode incluir o Tipo de Evento e o Tópico para ajudar a filtrar 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.

Exemplo: desvio de dados aciona retreinamento

Importante

Este exemplo depende de um recurso (desvio de dados) que só está disponível ao usar o SDK do Azure Machine Learning v1 ou a extensão da CLI do Azure v1 para o Azure Machine Learning. Para obter mais informações, consulte O que é a CLI do Azure Machine Learning & SDK v2.

Os modelos ficam obsoletos com o tempo e não permanecem úteis no contexto em que estão sendo executados. Uma maneira de saber se é hora de treinar novamente o modelo é detetar desvio de dados.

Este exemplo mostra como usar a Grade de Eventos com um Aplicativo Lógico do Azure para disparar o retreinamento. O exemplo aciona um pipeline do Azure Data Factory quando ocorre desvio de dados entre o treinamento de um modelo e o serviço de conjuntos de dados.

Antes de começar, execute as seguintes ações:

Neste exemplo, um pipeline simples do Data Factory é usado para copiar arquivos em um repositório de blob e executar um pipeline de Machine Learning publicado. Para obter mais informações sobre esse cenário, consulte como configurar uma etapa de Aprendizado de Máquina no Azure Data Factory.

Captura de tela mostrando o pipeline de treinamento no Azure Data Factory.

  1. Comece com a criação do aplicativo lógico. Vá para o portal do Azure, procure Aplicativos Lógicos e selecione criar.

    pesquisa-lógica-app

  2. Preencha as informações solicitadas. Para simplificar a experiência, use a mesma assinatura e o mesmo grupo de recursos do Azure Data Factory Pipeline e do espaço de trabalho do Azure Machine Learning.

    A captura de tela mostra o painel Criar Aplicativo Lógico.

  3. Depois de criar o aplicativo lógico, selecione Quando ocorrer um evento de recurso da Grade de Eventos.

    A captura de tela mostra o Designer de Aplicativos Lógicos com Iniciar com opções de gatilho comuns, incluindo Quando ocorre um evento de recurso de Grade de Eventos.

  4. Faça login e preencha os dados do evento. Defina o Nome do recurso como o nome do espaço de trabalho. Defina o Tipo de Evento como DatasetDriftDetected.

    Captura de tela mostrando o item de tipo de evento de desvio de dados.

  5. Adicione uma nova etapa e pesquise o Azure Data Factory. Selecione Criar uma execução de pipeline.

    A captura de tela mostra o painel Escolha uma ação com a opção Criar uma execução de pipeline selecionada.

  6. Faça logon e especifique o pipeline publicado do Azure Data Factory a ser executado.

    A captura de tela mostra o painel Criar uma execução de pipeline com vários valores.

  7. Salve e crie o aplicativo lógico usando o botão Salvar no canto superior esquerdo da página. Para ver a sua aplicação, aceda à sua área de trabalho no portal do Azure e selecione Eventos.

    A captura de tela mostra eventos com o Aplicativo Lógico realçado.

Agora, o pipeline de fábrica de dados é acionado quando ocorre desvio. Veja detalhes sobre a execução de desvio de dados e o pipeline de aprendizagem automática no estúdio de Aprendizagem de Máquina do Azure.

Captura de tela mostrando pontos de extremidade de pipeline.

Próximos passos

Saiba mais sobre a Grade de Eventos e experimente os eventos do Azure Machine Learning: