Disparar aplicativos, processos ou fluxos de trabalho de 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 com base em eventos baseados no Azure Machine Learning. Por exemplo, emails de notificação de falha ou pipeline de ML são executados quando determinadas condições são detectadas usando a Grade de Eventos do Azure.

O Azure Machine Learning gerencia todo o ciclo de vida do processo de machine learning, incluindo treinamento de modelo, implantação de modelo e monitoramento. Você pode usar a Grade de Eventos para reagir a eventos do Azure Machine Learning, como a conclusão de execuções de treinamento, o registro e a implantação de modelos e a detecção de descompasso de dados, usando arquiteturas modernas sem servidor. Em seguida, é possível assinar e consumir eventos como o status de execução alterado, conclusão da execução, registro de modelo, implantação de modelo e detecção de descompasso de dados em um workspace.

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

  • Enviar emails sobre falhas e conclusão de execução
  • Usar uma função do Azure depois que um modelo é registrado
  • Transmitir eventos do Azure Machine Learning para vários pontos de extremidade
  • Disparar um pipeline de ML quando o descompasso for detectado

Importante

Os itens marcados (versão prévia) neste artigo estão atualmente em versão prévia pública. A versão prévia é fornecida sem um contrato de nível de serviço e não é recomendada para cargas de trabalho de produção. Alguns recursos podem não ter suporte ou podem ter restrição de recursos. Para obter mais informações, consulte Termos de Uso Complementares de Versões Prévias do Microsoft Azure.

Pré-requisitos

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

Modelo e tipos de evento

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

Modelo funcional da Grade de Eventos do Azure

Para saber mais sobre as origens e os manipuladores de eventos, confira O que é a Grade de Eventos?

Tipos de eventos para o Azure Machine Learning

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

Tipo de evento Descrição
Microsoft.MachineLearningServices.RunCompleted Gerado quando uma execução de experimento de machine learning é concluída
Microsoft.MachineLearningServices.ModelRegistered (versão prévia) Gerado quando um modelo de machine learning é registrado no workspace
Microsoft.MachineLearningServices.ModelDeployed (versão prévia) Gerado quando uma implantação do serviço de inferência com um ou mais modelos é concluída
Microsoft.MachineLearningServices.DatasetDriftDetected (versão prévia) Gerado quando um trabalho de detecção de descompasso de dados para dois conjuntos de dados é concluído
Microsoft.MachineLearningServices.RunStatusChanged Gerado quando um status de execução é alterado

Filtrar e assinar eventos

Esses eventos são publicados por meio da Grade de Eventos do Azure. No portal do Azure, do PowerShell ou da CLI do Azure, você pode assinar facilmente os eventos especificando um ou mais tipos de evento e filtrando as condições.

Ao configurar seus eventos, você pode aplicar filtros para disparar apenas dados específicos dos eventos. No exemplo a seguir, para eventos de status de execução alterado, é possível filtrar por tipos de execução. O evento só dispara quando os critérios são atendidos. Para obter mais informações sobre os dados de evento nos quais você pode filtrar, consulte o esquema da Grade de Eventos do Azure Machine Learning.

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

  1. Acesse o portal do Azure, selecione uma nova assinatura ou uma existente.

  2. Selecione a entrada Eventos na área de navegação à esquerda e selecione + Assinatura de evento.

  3. Selecione a guia de filtros e role para baixo até "Filtros avançados". Em Chave e Valor, defina os tipos de propriedade que você quer filtrar. Aqui você pode ver que o evento é disparado quando o tipo de execução for uma execução de pipeline ou 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 é compatível com filtros de assuntos baseados em correspondências de começa com e termina com, para que os eventos com o assunto correspondente sejam entregues ao assinante. Diferentes eventos de machine learning têm um formato de assunto distinto.

    Tipo de evento Formato do assunto Exemplo de assunto
    Microsoft.MachineLearningServices.RunCompleted experiments/{ExperimentId}/runs/{RunId} experiments/b1d7966c-f73a-4c68-b846-992ace89551f/runs/my_exp1_1554835758_38dbaa94
    Microsoft.MachineLearningServices.ModelRegistered (versão prévia) models/{modelName}:{modelVersion} models/sklearn_regression_model:3
    Microsoft.MachineLearningServices.ModelDeployed (versão prévia) endpoints/{serviceId} endpoints/my_sklearn_aks
    Microsoft.MachineLearningServices.DatasetDriftDetected (versão prévia) 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 é compatível com a filtragem avançada com base no esquema de evento publicado. Os detalhes do esquema de eventos do Azure Machine Learning podem ser encontrados em Esquema de eventos da Grade de Eventos do Azure para o Azure Machine Learning. Para o evento Microsoft.MachineLearningServices.ModelRegistered, filtrar o valor da tag do modelo:

    --advanced-filter data.ModelTags.key1 StringIn ('value1')
    

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

Consumir eventos do Machine Learning

Aplicativos que manipulam eventos do Machine Learning devem seguir algumas práticas recomendadas:

  • Como várias assinaturas podem ser configuradas para direcionar eventos para o mesmo manipulador, é importante não supor que os eventos sejam de uma origem específica, mas para verificar o tópico de mensagem a fim de garantir que ela venha do Workspace do Machine Learning que você está esperando.
  • Da mesma forma, verifique se o eventType é do tipo que você está preparado para processar, e não suponha que todos os eventos recebidos serão os tipos esperados.
  • Como as mensagens podem chegar fora de ordem e após algum atraso, use os campos de etag para entender se suas informações sobre objetos ainda estão atualizadas. Além disso, use os campos do sequenciador para entender a ordem de eventos em qualquer objeto específico.
  • Ignore os campos que você não entende. Essa prática ajudará você a manter-se resiliente a novos recursos que possam ser adicionados no futuro.
  • As operações do Azure Machine Learning com falha ou canceladas não dispararão um evento. Por exemplo, se uma implantação de modelo falhar, Microsoft.MachineLearningServices.ModelDeployed não será disparado. Considere esse modo de falha ao projetar seus aplicativos. Você sempre pode usar o SDK, a CLI ou o portal do Azure Machine Learning para verificar o status de uma operação e entender os motivos de falha com detalhes.

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

  • Funções do Azure
  • Aplicativos Lógicos do Azure
  • Hubs de eventos do Azure
  • Pipeline do Azure Data Factory
  • Webhooks genéricos, que podem ser hospedados na plataforma do Azure ou em outro lugar

Configurar no portal do Azure

  1. Abra o portal do Azure e acesse o Workspace do Azure Machine Learning.

  2. Na barra à esquerda, selecione Eventos e Assinaturas de Evento.

    Captura de tela mostrando a seleção de Assinatura de Evento.

  3. Selecione o tipo de evento a ser consumido.

    Captura de tela do formulário Criar a Assinatura de Evento.

  4. Selecione o ponto de extremidade para publicar o evento. Na seguinte captura de tela, 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 ponto de extremidade.

Configurar com a CLI

É possível instalar a CLI do Azure mais recente ou usar o Azure Cloud Shell fornecido como parte da assinatura do Azure.

Para instalar a extensão da Grade de Eventos, use o seguinte comando da CLI:

az extension add --name eventgrid

O seguinte exemplo demonstra como selecionar uma assinatura do Azure e cria e uma 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 de email

Use os Aplicativos Lógicos do Azure para configurar emails para todos os seus eventos. Personalize com condições e especifique os destinatários para permitir a colaboração e o reconhecimento entre equipes que trabalham juntas.

  1. Na portal do Azure, acesse o Workspace do Azure Machine Learning e selecione a guia de eventos na barra à esquerda. Nela, 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 do Machine Learning" como o tipo de tópico.

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

  3. Selecione qual evento será notificado. Por exemplo, a captura de tela a seguir, RunCompleted.

    Captura de tela mostrando o serviço do Machine Learning como o tipo de recurso.

  4. Em seguida, adicione uma etapa para consumir esse evento e pesquise o email. 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 email.

    A captura de tela mostra a caixa de diálogo Escolher uma ação com email inserido na linha de pesquisa.

  5. Selecione Enviar um email e preencha os parâmetros. No assunto, você pode incluir 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 workspace para as 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 email com Tópico e Tipo de Evento adicionados à linha do assunto da lista à direita.

Exemplo: Novo treinamento dos gatilhos de descompasso de dados

Importante

Este exemplo depende de um recurso (descompasso 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, confira O que é a CLI e o SDK v2 do Azure Machine Learning.

Os modelos ficam obsoletos com o passar do tempo e não permanecem úteis no contexto em que estão sendo executados. Um modo de saber se é hora de treinar novamente o modelo é detectar o descompasso de dados.

Este exemplo mostra como usar a Grade de Eventos com um Aplicativo Lógico do Azure para disparar o novo treinamento. O exemplo dispara um pipeline do Azure Data Factory quando o descompasso de dados ocorre entre o treinamento de um modelo e o fornecimento de conjuntos de dados.

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

Neste exemplo, um pipeline simples do Data Factory é usado a fim de copiar arquivos para um repositório de BLOB e executar um pipeline publicado do Machine Learning. Para saber mais sobre este cenário, veja como configurar uma etapa do Machine Learning 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. Abra o portal do Azure, pesquise os Aplicativos Lógicos e clique em "Criar".

    search-logic-app

  2. Preencha as informações solicitadas. Para simplificar a experiência, use a mesma assinatura e grupo de recursos que o pipeline do Azure Data Factory e o Workspace 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 ocorrer um evento de recurso da Grade de Eventos.

  4. Faça logon e preencha os detalhes do evento. Defina o Nome do Recurso no nome do workspace. Defina o Tipo de Evento como DatasetDriftDetected.

    Captura de tela mostrando o item do tipo de evento de descompasso de dados.

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

    A captura de tela mostra o painel Escolher 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 na parte superior esquerda da página. Para ver o aplicativo, acesse o workspace no portal do Azure e selecione Eventos.

    A captura de tela mostra eventos com o Aplicativo Lógico destacado.

Agora, o pipeline de data factory é disparado quando ocorre o descompasso. Veja detalhes sobre a execução de descompasso de dados e o pipeline de machine learning no Estúdio do Azure Machine Learning.

Captura de tela mostrando os pontos de extremidade do pipeline.

Próximas etapas

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