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, você pode configurar emails de notificação de falha ou execuções de pipeline de ML quando determinadas condições são detectadas usando 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. Usando a Grade de Eventos, você pode reagir a eventos Azure Machine Learning, como a conclusão de execuções de treinamento e o registro e implantação de modelos, usando arquiteturas modernas sem servidor. Em seguida, você pode assinar e consumir eventos, como alteração no status da execução, conclusão da execução, registro de modelo e implantação de modelo, dentro de um espaço de trabalho.

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

  • 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 destinos

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 funcionalidades. Para obter mais informações, veja 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.

  • Registre o provedor de recursos Microsoft.EventGrid na sua assinatura do Azure. Esse registro é necessário para que você possa criar assinaturas de evento.

    az provider register --namespace Microsoft.EventGrid --wait
    
  • Se você planeja usar o exemplo do Logic Apps, registre também o provedor Microsoft.Logic.

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

    az extension add --name eventgrid
    
  • Se você planeja seguir o exemplo da CLI com o Hub de Eventos como destino, precisará de um namespace e hub existentes do Hub de Eventos. Consulte Criar um hub de eventos se você precisar criar um.

O modelo e os tipos de evento

A Grade de Eventos do Azure lê eventos de origens, como o Azure Machine Learning e outros serviços do Azure. Ele envia esses eventos 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 com suporte.

Diagrama mostrando como Grade de Eventos do Azure conecta fontes como Azure Machine Learning a manipuladores de eventos, como Azure Functions e Aplicativos Lógicos.

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

Tipos de eventos para o Azure Machine Learning

Azure Machine Learning fornece eventos em vários pontos do ciclo de vida do 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 Exibido quando um novo modelo ou versão de modelo é registrado com sucesso
Microsoft.MachineLearningServices.ModelDeployed Exibido quando um ou mais modelos são implantados com sucesso em um ponto de extremidade
Microsoft.MachineLearningServices.RunStatusChanged Exibido quando o status de execução é alterado

Filtrar e assinar eventos

Grade de Eventos do Azure publica esses eventos. 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, aplique filtros para disparar apenas em dados de evento específicos. 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.

O controle de acesso baseado em função do Azure (Azure RBAC) protege as assinaturas de eventos do Azure Machine Learning. Somente um colaborador ou proprietário do workspace pode criar, atualizar e excluir assinaturas de evento. Você pode aplicar filtros 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 no painel esquerdo e selecione + Assinatura de evento.

  3. Selecione a guia 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 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 é 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 rotear eventos para o mesmo manipulador de eventos, não suponha que os eventos sejam de uma fonte específica. Verifique o tópico da mensagem para garantir que ela venha do espaço de trabalho de aprendizado de máquina que você espera.
  • Da mesma forma, verifique se o eventType é aquele que você pode processar. Não suponha que todos os eventos recebidos sejam 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 ajuda a mantê-lo resiliente a novos recursos que podem ser adicionados no futuro.
  • Operações de Azure Machine Learning com falha ou canceladas não disparam um evento. Por exemplo, se uma implantação de modelo falhar, Microsoft.MachineLearningServices.ModelDeployed não é acionado. Considere esse modo de falha ao projetar seus aplicativos. Você sempre pode usar Azure Machine Learning SDK, CLI ou portal para verificar o status de uma operação e entender os motivos detalhados da falha.

O Grade de Eventos do Azure permite criar manipuladores de mensagens desacoplados, que podem ser acionados por eventos do Azure Machine Learning. Alguns exemplos notáveis de manipuladores de mensagens incluem:

  • Azure Functions
  • Aplicativo Lógico do Azure
  • Hubs de Eventos do Azure
  • Pipeline do Azure Data Factory
  • Webhooks genéricos, que você pode hospedar na plataforma 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.

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

Para confirmar se a assinatura foi criada , selecione>Assinaturas de Eventos em seu workspace e verifique se sua nova assinatura aparece na lista.

Configurar com a CLI

Você pode instalar o CLI do Azure mais recente ou usar o Azure Cloud Shell fornecido como parte de sua assinatura Azure. Instale a eventgrid extensão, conforme descrito em Pré-requisitos.

O exemplo a seguir demonstra como selecionar uma assinatura Azure e criar uma nova assinatura de evento para 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 se a assinatura foi criada com êxito, execute:

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

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. Faça login na interface do usuário do Logic App e selecione o serviço de 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 o evento para o qual você deseja ser notificado. Por exemplo, a captura de tela a seguir mostra 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, inclua 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 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.

  6. Para verificar se o alerta funciona, dispare um evento de qualificação - por exemplo, conclua uma execução de treinamento - e confirme se o email chega aos destinatários especificados.

Próximas etapas

Para saber mais sobre a Grade de Eventos e experimentar Azure Machine Learning eventos, confira: