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.
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.
Acesse o portal do Azure, selecione uma nova assinatura ou uma existente.
Selecione a entrada Eventos na área de navegação à esquerda e selecione + Assinatura de evento.
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 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
Abra o portal do Azure e acesse o Workspace do Azure Machine Learning.
Na barra à esquerda, selecione Eventos e Assinaturas de Evento.
Selecione o tipo de evento a ser consumido.
Selecione o ponto de extremidade para publicar o evento. Na seguinte captura de tela, o Hub de eventos é o ponto de extremidade selecionado:
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.
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.
Entre na interface do usuário do Aplicativo Lógico e selecione "serviço do Machine Learning" como o tipo de tópico.
Selecione qual evento será notificado. Por exemplo, a captura de tela a seguir, RunCompleted.
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.
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.
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:
- Configurar um monitor de conjunto de dados para detectar o descompasso de dados (SDK/CLI v1) em um workspace
- Criar um pipeline publicado do Azure Data Factory.
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.
Comece com a criação do aplicativo lógico. Abra o portal do Azure, pesquise os Aplicativos Lógicos e clique em "Criar".
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.
Depois de criar o aplicativo lógico, selecione Quando ocorrer um evento de recurso da Grade de Eventos.
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.
Adicione uma nova etapa e pesquise Azure Data Factory. Selecione Criar uma execução de pipeline.
Faça logon e especifique o pipeline publicado do Azure Data Factory a ser executado.
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.
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.
Próximas etapas
Saiba mais sobre a Grade de Eventos e experimente os eventos do Azure Machine Learning: