Desencadenar aplicaciones, procesos o flujos de trabajo de CI/CD basados en eventos de Azure Machine Learning

En este artículo, aprenderá a configurar aplicaciones controladas por eventos, procesos o flujos de trabajo de CI/CD basadas en eventos de Azure Machine Learning. Por ejemplo, mensajes de correo electrónico de notificación de error o ejecuciones de canalización de ML, cuando se detectan determinadas condiciones mediante Azure Event Grid.

Azure Machine Learning administra todo el ciclo de vida del proceso de aprendizaje automático, incluido el entrenamiento del modelo, la implementación de modelo y la supervisión. Puede usar Event Grid para reaccionar a eventos de Azure Machine Learning, como la finalización de las ejecuciones de entrenamiento, el registro y la implementación de modelos, y la detección de desfases de datos mediante arquitecturas modernas sin servidor. Después, puede suscribirse y consumir eventos como el cambio en el estado de ejecución, la finalización de la ejecución, el registro de modelos, la implementación de modelos y la detección de desfase de datos dentro de un área de trabajo.

Cuándo usar Event Grid para las acciones controladas por eventos:

  • Envío de correos electrónicos en caso de error de ejecución y al finalizar la ejecución
  • Uso de una función de Azure una vez registrado un modelo
  • Streaming de eventos desde Azure Machine Learning a varios puntos de conexión
  • Desencadenamiento de una canalización de Machine Learning cuando se detecta un desfase

Importante

Los elementos marcados (versión preliminar) en este artículo se encuentran actualmente en versión preliminar pública. Se ofrece la versión preliminar sin Acuerdo de Nivel de Servicio y no se recomienda para cargas de trabajo de producción. Es posible que algunas características no sean compatibles o que tengan sus funcionalidades limitadas. Para más información, consulte Términos de uso complementarios de las Versiones Preliminares de Microsoft Azure.

Requisitos previos

Para usar Event Grid, necesita acceso de colaborador o propietario al área de trabajo de Azure Machine Learning para la que se crean los eventos.

Modelo de evento y tipos

Azure Event Grid le eventos de orígenes tales como Azure Machine Learning y otros servicios de Azure. Estos eventos se envían después a controladores de eventos tales como Azure Event Hubs, Azure Functions, Logic Apps y otros. En el diagrama siguiente se muestra cómo se conectan los orígenes y los controladores en Event Grid, pero no proporciona una lista completa de las integraciones admitidas.

Modelo funcional de Azure Event Grid

Para obtener más información sobre los orígenes de eventos y los controladores de eventos, consulte ¿Qué es Event Grid?

Tipos de eventos de Azure Machine Learning

Azure Machine Learning proporciona eventos en los distintos puntos del ciclo de vida de aprendizaje automático:

Tipo de evento Descripción
Microsoft.MachineLearningServices.RunCompleted Se genera cuando se completa la ejecución de un experimento de aprendizaje automático.
Microsoft.MachineLearningServices.ModelRegistered (versión preliminar) Se genera cuando se registra un modelo de aprendizaje automático en el área de trabajo
Microsoft.MachineLearningServices.ModelDeployed (versión preliminar) Se genera cuando se completa una implementación de servicio de inferencia con uno o varios modelos.
Microsoft.MachineLearningServices.DatasetDriftDetected (versión preliminar) Se genera cuando se completa un trabajo de detección de desfase de datos para dos conjuntos de datos
Microsoft.MachineLearningServices.RunStatusChanged Se genera cuando cambia un estado de ejecución.

Filtrar y suscribirse a eventos

Estos eventos se publican a través de Azure Event Grid. En Azure Portal, PowerShell o la CLI de Azure, los clientes pueden suscribirse a eventos fácilmente especificando uno o varios tipos de eventos y las condiciones de filtrado.

Al configurar eventos, puede aplicar filtros para que se desencadenen únicamente con datos de eventos específicos. En el ejemplo siguiente, para eventos de cambio de estado de ejecución, puede filtrar por tipos de ejecución. El evento solo se desencadena cuando se cumplen los criterios. Para más información sobre los datos de eventos que puede filtrar, consulte el esquema de Event Grid de Azure Machine Learning.

Las suscripciones para eventos de Azure Machine Learning están protegidas por el control de acceso basado en rol (RBAC de Azure). Solo un colaborador o propietario de un área de trabajo puede crear, actualizar y eliminar suscripciones a eventos. Los filtros pueden aplicarse a las suscripciones de eventos, ya sea durante la creación de la suscripción de eventos o en un momento posterior.

  1. Vaya a Azure Portal y seleccione una suscripción nueva o existente.

  2. Seleccione la entrada Eventos en el área de navegación de la izquierda y, a continuación, seleccione + Suscripción a eventos.

  3. Seleccione la pestaña de filtros y desplácese hacia abajo hasta los filtros avanzados. En Clave y Valor, proporcione los tipos de propiedad por los que desee filtrar. Aquí puede ver que el evento solo se desencadena cuando el tipo de ejecución sea una ejecución de canalización o de paso de canalización.

    filtrado de eventos

  • Filtrado por tipo de evento: Una suscripción de eventos puede especificar uno o varios tipos de evento de Azure Machine Learning.

  • Filtrado por asunto del evento: Azure Event Grid admite filtros de asunto en función de las coincidencias de comienza por y termina en, con el fin de que los eventos con un asunto coincidente se entreguen al suscriptor. Distintos eventos de aprendizaje automático tienen un formato de asunto diferente.

    Tipo de evento Formato de asunto Asunto de ejemplo
    Microsoft.MachineLearningServices.RunCompleted experiments/{ExperimentId}/runs/{RunId} experiments/b1d7966c-f73a-4c68-b846-992ace89551f/runs/my_exp1_1554835758_38dbaa94
    Microsoft.MachineLearningServices.ModelRegistered (versión preliminar) models/{modelName}:{modelVersion} models/sklearn_regression_model:3
    Microsoft.MachineLearningServices.ModelDeployed (versión preliminar) endpoints/{serviceId} endpoints/my_sklearn_aks
    Microsoft.MachineLearningServices.DatasetDriftDetected (versión preliminar) 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
  • Filtrado avanzado: Azure Event Grid también admite el filtrado avanzado basado en el esquema de eventos publicados. Los detalles del esquema de eventos de Azure Machine Learning se pueden encontrar en Esquema de eventos de Azure Event Grid para Azure Machine Learning. En el caso del evento Microsoft.MachineLearningServices.ModelRegistered, filtrar el valor de etiqueta del modelo:

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

    Para más información sobre cómo aplicar filtros, consulte el artículo de Filtrado de eventos para Event Grid.

Consumo de eventos de Machine Learning

Las aplicaciones que controlan los eventos de Machine Learning deben seguir algunos procedimientos recomendados:

  • Dado que se pueden configurar varias suscripciones para enrutar eventos al mismo controlador, es importante no asumir que los eventos provienen de un origen determinado, sino comprobar el tema del mensaje para asegurarse de que proviene del área de trabajo de aprendizaje automático prevista.
  • De igual forma, compruebe que eventType es uno de los que está preparado para procesar y no asuma que todos los eventos que reciba van a ser los tipos que espera.
  • Dado que los mensajes pueden llegar desordenados y con cierto retraso, utilice los campos de etag para saber si la información acerca de los objetos sigue estando actualizada. Además, utilice los campos del secuenciador para conocer el orden de los eventos en cualquier objeto determinado.
  • Ignore los campos que no comprenda. Esta práctica le ayudará a mantenerse resistente a las nuevas características que puedan agregarse en el futuro.
  • Las operaciones de Azure Machine Learning con errores o canceladas no desencadenarán un evento. Por ejemplo, si se produce un error en la implementación de un modelo, no se desencadenará Microsoft.MachineLearningServices.ModelDeployed. Tenga en cuenta este modo de error al diseñar las aplicaciones. Siempre puede usar el SDK de Azure Machine Learning, la CLI o el portal para comprobar el estado de una operación y comprender los motivos de error detallados.

Azure Event Grid permite a los clientes compilar controladores de mensajes desacoplados, que se pueden desencadenar mediante eventos de Azure Machine Learning. Algunos ejemplos importantes de controladores de mensajes son:

  • Azure Functions
  • Azure Logic Apps
  • Azure Event Hubs
  • Canalización de Azure Data Factory
  • Webhooks genéricos, que se pueden hospedar en la plataforma Azure o en otro lugar

Configuración en Azure Portal

  1. Abra Azure Portal y vaya al área de trabajo de Azure Machine Learning.

  2. En la barra de la izquierda, seleccione Eventos y después Suscripciones a eventos.

    Captura de pantalla que muestra la selección de suscripción a eventos.

  3. Seleccione el tipo de evento que se va a consumir.

    Captura de pantalla del formulario para crear una suscripción a un evento.

  4. Seleccione el punto de conexión en el que se va a publicar el evento. En la captura de pantalla siguiente, Centro de eventos es el punto de conexión seleccionado:

    Captura de pantalla que muestra el panel Crear suscripción de eventos con la pestaña Seleccionar centro de eventos abierta.

Una vez que confirme la selección, seleccione Crear. Después de la configuración, estos eventos se insertarán en el punto de conexión.

Configuración con la CLI

Puede instalar la CLI de Azure más reciente, o bien usar Azure Cloud Shell que se proporciona como parte de la suscripción de Azure.

Para instalar la extensión Event Grid, use el siguiente comando de la CLI:

az extension add --name eventgrid

En el ejemplo siguiente se muestra cómo seleccionar una suscripción de Azure y, después, crear una suscripción a eventos 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"

Ejemplos

Ejemplo: Envío de alertas de correo electrónico

Use Azure Logic Apps para configurar mensajes de correo electrónico para todos los eventos. Personalice con condiciones y especifique destinatarios para permitir la colaboración y el reconocimiento entre los equipos que trabajan juntos.

  1. En Azure Portal, vaya al área de trabajo Azure Machine Learning y seleccione la pestaña Eventos en la barra de la izquierda. Desde ahí, seleccione Aplicaciones lógicas.

    Captura de pantalla que muestra la selección de Logic Apps.

  2. Inicie sesión en la interfaz de usuario de la aplicación lógica y seleccione Machine Learning Service como el tipo de tema.

    Captura de pantalla que muestra el cuadro de diálogo Cuando se produce un evento de recursos con Machine Learning seleccionado como tipo de recurso.

  3. Seleccione los eventos que quiere que le notifiquen. Por ejemplo, en la captura de pantalla siguiente, RunCompleted.

    Captura de pantalla que muestra el servicio de Machine Learning como tipo de recurso.

  4. A continuación, agregue un paso para consumir este evento y buscar el correo electrónico. Hay varias cuentas de correo electrónico que puede usar para recibir eventos. También puede configurar condiciones sobre cuándo enviar una alerta de correo electrónico.

    Captura de pantalla que muestra el cuadro de diálogo Choose an action (Elegir una acción) con el correo electrónico especificado en la línea de búsqueda.

  5. Seleccione Enviar un correo electrónico y rellene los parámetros. En el asunto, puede incluir el tipo de evento y el tema para ayudar a filtrar los eventos. También puede incluir un vínculo a la página del área de trabajo para las ejecuciones en el cuerpo del mensaje.

    Para guardar esta acción, seleccione Guardar como en la esquina izquierda de la página.

    Captura de pantalla que muestra el cuadro de diálogo Send an email (Enviar un correo electrónico) con el tema y el tipo de evento agregados a la línea de asunto de la lista de la derecha.

Ejemplo: Reentrenamiento de desencadenador de desfase de datos

Importante

Este ejemplo se basa en una característica (desfase de datos) que solo está disponible cuando se usa el SDK v1 de Azure Machine Learning o la extensión de la CLI de Azure v1 para Azure Machine Learning. Para más información, consulte el artículo en el que se explica qué es la CLI y el SDK v2 de Azure Machine Learning.

Los modelos quedan obsoletos a lo largo del tiempo y conservan la utilidad en el contexto en el que se ejecutan. Una manera de saber si es el momento de volver a entrenar el modelo consiste en detectar el desfase de los datos.

En este ejemplo se muestra cómo usar Event Grid con una aplicación lógica de Azure para desencadenar el nuevo entrenamiento. El ejemplo desencadena una canalización de Azure Data Factory cuando se produce el desfase de datos entre los conjuntos de datos de entrenamiento y de servicio de un modelo.

Antes de empezar, realice las acciones siguientes:

En este ejemplo, se usa una canalización de Data Factory simple para copiar archivos en un almacén de blobs y ejecutar una canalización de Machine Learning publicada. Para más información sobre este escenario, consulte cómo configurar un paso de Machine Learning en Azure Data Factory.

Captura de pantalla que muestra la canalización de la formación en Azure Data Factory.

  1. Comience con la creación de la aplicación lógica. Vaya a Azure Portal, busque Aplicaciones lógicas y seleccione Crear.

    search-logic-app

  2. Rellene la información solicitada. Para simplificar la experiencia, use la misma suscripción y el mismo grupo de recursos de la canalización de Azure Data Factory y el área de trabajo de Azure Machine Learning.

    Captura de pantalla que muestra el panel de creación de aplicaciones lógicas.

  3. Una vez que haya creado la aplicación lógica, seleccione Cuando se produce un evento de recursos de Event Grid.

    Captura de pantalla que muestra el diseñador de aplicaciones lógicas con las opciones de Empezar con un desencadenador común, entre las que se incluye Cuando se produce un evento de recursos de Event Grid.

  4. Inicie sesión y rellene los detalles del evento. Establezca el nombre del recurso en el nombre del área de trabajo. Establezca el tipo de evento en DatasetDriftDetected.

    Captura de pantalla que muestra el elemento de tipo de evento de desfase de datos.

  5. Agregue un nuevo paso y busque Azure Data Factory. Seleccione Crear una ejecución de canalización.

    Captura de pantalla que muestra el panel Choose an action (Elegir una acción) con Create a pipeline run (Crear una ejecución de canalización) seleccionada.

  6. Inicie sesión y especifique la canalización de Azure Data Factory publicada que se va a ejecutar.

    Captura de pantalla que muestra el panel Create a pipeline run (Crear una ejecución de canalización) con varios valores.

  7. Guarde y cree la aplicación lógica con el botón Guardar de la parte superior izquierda de la página. Para ver la aplicación, vaya al área de trabajo en Azure Portal y seleccione Eventos.

    Captura de pantalla que muestra eventos con la aplicación lógica resaltada.

Ahora la canalización de Data Factory se desencadena cuando se produce el desfase. Consulte los detalles sobre la ejecución del desfase de datos y la canalización de aprendizaje automático en Estudio de Azure Machine Learning.

Captura de pantalla que muestra los puntos finales de la canalización.

Pasos siguientes

Obtenga más información sobre Event Grid y pruebe los eventos de Azure Machine Learning: