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, puede configurar correos electrónicos 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 del modelo y la supervisión. Con Event Grid, puede reaccionar a eventos de Azure Machine Learning, como la finalización de ejecuciones de entrenamiento y el registro y la implementación de modelos, mediante arquitecturas modernas sin servidor. Después, puede suscribirse a eventos como cambios en el estado de ejecución, la finalización de la ejecución, el registro de modelos y la implementación de modelos, y consumirlos en un área de trabajo.

Use Event Grid para 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
  • Transmisión de eventos de Azure Machine Learning a varios puntos de conexión

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 se admitan o que tengan funcionalidades restringidas. 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.

  • Registre el proveedor de recursos Microsoft.EventGrid en su suscripción de Azure. Este registro es necesario para poder crear suscripciones de eventos.

    az provider register --namespace Microsoft.EventGrid --wait
    
  • Si planea usar el ejemplo de Logic Apps, registre también el proveedor Microsoft.Logic.

    az provider register --namespace Microsoft.Logic --wait
    
  • Si tiene previsto seguir el ejemplo de la CLI, instale la eventgrid extensión CLI de Azure.

    az extension add --name eventgrid
    
  • Si tienes previsto seguir el ejemplo de la CLI con Event Hub como destino, necesitarás un espacio de nombres y un hub de Event Hub ya existentes. Consulte Creación de un centro de eventos si necesita crear uno.

El modelo de eventos y los tipos

Azure Event Grid le eventos de orígenes tales como Azure Machine Learning y otros servicios de Azure. Envía estos eventos a controladores de eventos como Azure Event Hubs, Azure Functions, Logic Apps y otros. En el diagrama siguiente se muestra cómo Event Grid conecta orígenes y controladores, pero no es una lista completa de las integraciones admitidas.

Diagrama que muestra cómo Azure Event Grid conecta orígenes como Azure Machine Learning a controladores de eventos como Azure Functions y Logic Apps.

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 varios puntos del ciclo de vida del aprendizaje automático:

Tipo de evento Descripción
Microsoft.MachineLearningServices.RunCompleted Se genera cuando se completa una ejecución de experimento de aprendizaje automático
Microsoft.MachineLearningServices.ModelRegistered Se genera cuando se registra correctamente un nuevo modelo o una nueva versión de modelo
Microsoft.MachineLearningServices.ModelDeployed Se genera cuando uno o más modelos se implementan correctamente en un punto de conexión
Microsoft.MachineLearningServices.RunStatusChanged Se activa cuando cambia el estado de una ejecución

Filtrar y suscribirse a eventos

Azure Event Grid publica estos eventos. 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 los eventos, aplique filtros para que solo se desencadenen en 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.

Azure control de acceso basado en rol (Azure RBAC) protege las suscripciones para eventos de Azure Machine Learning. Solo un colaborador o propietario de un área de trabajo puede crear, actualizar y eliminar suscripciones a eventos. Puede aplicar filtros a las suscripciones de eventos 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 panel izquierdo y, a continuación, seleccione + Suscripción a eventos.

  3. Seleccione la pestaña Filtros y desplácese hacia abajo hasta 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 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
  • 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 varias suscripciones pueden enrutar eventos al mismo controlador de eventos, no suponga que los eventos proceden de un origen determinado. Compruebe el tema del mensaje para asegurarse de que procede del área de trabajo de Aprendizaje automático que espera.
  • Del mismo modo, compruebe que el eventType sea uno que pueda procesar. No suponga que todos los eventos que recibe son 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 ayuda a mantener la resistencia a las nuevas características que podrían agregarse en el futuro.
  • Las operaciones de Azure Machine Learning con errores o canceladas no desencadenan un evento. Por ejemplo, si se produce un error en la implementación de un modelo, Microsoft. MachineLearningServices.ModelDeployed no se desencadena. Tenga en cuenta este modo de error al diseñar las aplicaciones. Siempre puede usar Azure Machine Learning SDK, CLI o portal para comprobar el estado de una operación y comprender los motivos detallados del error.

Azure Event Grid permite crear controladores de mensajes desacoplados que los eventos de Azure Machine Learning pueden desencadenar. Algunos ejemplos importantes de controladores de mensajes son:

  • Funciones de Azure
  • Azure Logic Apps
  • Azure Event Hubs
  • Canalización de Azure Data Factory
  • Webhooks genéricos, que puede hospedar en la plataforma de 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.

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

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

    Recorte 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.

Al confirmar la selección, seleccione Crear. Tras la configuración, estos eventos se envían a su punto de conexión.

Para confirmar que se creó la suscripción, seleccione Suscripciones de eventos> en el área de trabajo y compruebe que la nueva suscripción aparece en la lista.

Configuración con la CLI

Puede instalar el CLI de Azure más reciente o usar el Azure Cloud Shell que se proporciona como parte de la suscripción de Azure. Asegúrese de instalar la eventgrid extensión, como se describe en Requisitos previos.

En el ejemplo siguiente se muestra cómo seleccionar una suscripción de Azure y crear una nueva suscripción de 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"

Para confirmar que la suscripción se creó correctamente, ejecute:

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

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.

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

  2. Inicie sesión en la interfaz de usuario de Logic App y seleccione servicio Machine Learning como 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 el evento para el que desea recibir una notificación. Por ejemplo, en la captura de pantalla siguiente se muestra RunCompleted.

    Recorte 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, incluya el tipo de evento y el tema para ayudar a filtrar 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.

  6. Para comprobar que la alerta funciona, desencadene un evento calificado (por ejemplo, complete una ejecución de entrenamiento) y confirme que el correo electrónico llega a los destinatarios especificados.

Pasos siguientes

Para obtener más información sobre Event Grid e intentar Azure Machine Learning eventos, consulte: