Активация приложений, процессов или процессов CI/CD на основе событий Машинное обучение Azure (Предварительная версия)Trigger applications, processes, or CI/CD workflows based on Azure Machine Learning events (preview)

В этой статье вы узнаете, как настраивать управляемые событиями приложения, процессы или рабочие процессы CI/CD на основе событий Машинного обучения Azure, таких как сообщения об ошибках или запуски конвейера машинного обучения, при обнаружении определенных условий Сеткой событий Azure.In this article, you learn how to set up event-driven applications, processes, or CI/CD workflows based on Azure Machine Learning events, such as failure notification emails or ML pipeline runs, when certain conditions are detected by Azure Event Grid.

Машинное обучение Azure управляет всем жизненным циклом процесса машинного обучения, включая обучение модели, развертывание модели и мониторинг.Azure Machine Learning manages the entire lifecycle of machine learning process, including model training, model deployment, and monitoring. Сетку событий можно использовать для реагирования на события Машинного обучения Azure события, такие как завершение обучающих запусков, регистрация и развертывание моделей, а также обнаружение смещения данных, с помощью современных бессерверных архитектур.You can use Event Grid to react to Azure Machine Learning events, such as the completion of training runs, the registration and deployment of models, and the detection of data drift, by using modern serverless architectures. Затем можно подписываться на такие события, как изменение состояния выполнения, завершение выполнения, регистрация модели, развертывание модели либо определение расхождения данных в рабочей области, и использовать эти события.You can then subscribe and consume events such as run status changed, run completion, model registration, model deployment, and data drift detection within a workspace.

Когда следует использовать сетку событий для действий, управляемых событиями:When to use Event Grid for event driven actions:

  • отправка сообщений электронной почты при сбое выполнения и завершении выполнения;Send emails on run failure and run completion
  • использование функции Azure после регистрации модели;Use an Azure function after a model is registered
  • потоковая передача событий от Машинного обучения Azure в различные конечные точки;Streaming events from Azure Machine Learning to various of endpoints
  • запуск конвейера машинного обучения при обнаружении смещения.Trigger an ML pipeline when drift is detected

Предварительные требованияPrerequisites

Чтобы использовать Сетку событий, необходимо иметь доступ участника или владельца к рабочей области Машинного обучения Azure, для которой будут создаваться события.To use Event Grid, you need contributor or owner access to the Azure Machine Learning workspace you will create events for.

Модель и типы событийThe event model & types

Служба "Сетка событий Azure" считывает события из таких источников, как Машинное обучение Azure и другие службы Azure.Azure Event Grid reads events from sources, such as Azure Machine Learning and other Azure services. Затем эти события отправляются обработчикам событий, таким как концентраторы событий Azure, функции Azure, Logic Apps и другие.These events are then sent to event handlers such as Azure Event Hubs, Azure Functions, Logic Apps, and others. Обратите внимание: на этой схеме показано, как служба "Сетка событий" соединяет источники и обработчики, но здесь не предоставлен полный список поддерживаемых интеграций.The following diagram shows how Event Grid connects sources and handlers, but is not a comprehensive list of supported integrations.

Функциональная модель Сетки событий Azure

Дополнительные сведения об источниках событий и обработчиках событий см. в статье Что такое сетка событий?.For more information on event sources and event handlers, see What is Event Grid?.

Типы событий для Машинного обучения AzureEvent types for Azure Machine Learning

Машинное обучение Azure предоставляет события в различных точках жизненного цикла машинного обучения:Azure Machine Learning provides events in the various points of machine learning lifecycle:

Тип событияEvent type ОписаниеDescription
Microsoft.MachineLearningServices.RunCompleted Вызывается после завершения эксперимента машинного обучения.Raised when a machine learning experiment run is completed
Microsoft.MachineLearningServices.ModelRegistered Вызывается при регистрации модели машинного обучения в рабочей области.Raised when a machine learning model is registered in the workspace
Microsoft.MachineLearningServices.ModelDeployed Вызывается при завершении развертывания службы вывода с одной или несколькими моделями.Raised when a deployment of inference service with one or more models is completed
Microsoft.MachineLearningServices.DatasetDriftDetected Вызывается при завершении задания обнаружения смещения данных для двух наборов данных.Raised when a data drift detection job for two datasets is completed
Microsoft.MachineLearningServices.RunStatusChanged Вызывается при изменении состояния выполнения, в настоящий момент только в том случае, если состояние выполнения — "failed".Raised when a run status changed, currently only raised when a run status is 'failed'

Фильтр и подписка на событияFilter & subscribe to events

Эти события публикуются с помощью Сетки событий Azure.These events are published through Azure Event Grid. С помощью портала Azure, PowerShell или Azure CLI клиенты могут легко подписываться на события, указывая один или несколько типов событий, а также условия фильтрации.Using Azure portal, PowerShell or Azure CLI, customers can easily subscribe to events by specifying one or more event types, and filtering conditions.

При настройке событий можно применять фильтры только для запуска на конкретных данных событий.When setting up your events, you can apply filters to only trigger on specific event data. В приведенном ниже примере для событий изменения состояния выполнения можно выполнить фильтрацию по типам выполнения.In the example below, for run status changed events, you can filter by run types. Это событие активируется только при соблюдении условий.The event only triggers when the criteria is met. Сведения о данных событий, по которым можно выполнять фильтрацию, см. в статье Схема сетки событий Машинного обучения Azure.Refer to the Azure Machine Learning event grid schema to learn about event data you can filter by.

Подписки для Машинное обучение Azure событий защищаются с помощью управления доступом на основе ролей Azure (Azure RBAC).Subscriptions for Azure Machine Learning events are protected by Azure role-based access control (Azure RBAC). Создавать, обновлять и удалять подписки на события могут только участники или владельцы рабочей области.Only contributor or owner of a workspace can create, update, and delete event subscriptions. Фильтры могут применяться к подпискам на события во время создания подписки на событие или позже.Filters can be applied to event subscriptions either during the creation of the event subscription or at a later time.

  1. Перейдите к порталу Azure, выберите там новую или существующую подписку.Go to the Azure portal, select a new subscription or an existing one.

  2. Выберите вкладку "Фильтры" и прокрутите вниз до пункта "Дополнительные фильтры".Select the filters tab and scroll down to Advanced filters. Для параметров Ключ и Значение укажите типы свойств, по которым требуется выполнить фильтрацию.For the Key and Value, provide the property types you want to filter by. Здесь можно увидеть, что событие будет запущено только тогда, когда тип запуска является запуском конвейера или запуском этапа конвейера.Here you can see the event will only trigger when the run type is a pipeline run or pipeline step run.

    события фильтра

  • Фильтрация по типу события. Подписка на события может указывать один или несколько типов событий Машинного обучения Azure.Filter by event type: An event subscription can specify one or more Azure Machine Learning event types.

  • Фильтрация по теме события. Сетка событий Azure поддерживает фильтры темы, работающие на основе совпадений начинается с и заканчивается на, что позволяет доставлять подписчику события с соответствующей темой.Filter by event subject: Azure Event Grid supports subject filters based on begins with and ends with matches, so that events with a matching subject are delivered to the subscriber. Другие события машинного обучения имеют другой формат темы.Different machine learning events have different subject format.

    Тип событияEvent type Формат темыSubject format Образец темыSample subject
    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.DatasetDriftDetected 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
  • Расширенная фильтрация. Сетка событий Azure также поддерживает расширенную фильтрацию на основе схемы опубликованных событий.Advanced filtering: Azure Event Grid also supports advanced filtering based on published event schema. Сведения о схеме событий Машинного обучение Azure можно найти в разделе Схема событий службы "Сетка событий Azure" для Машинного обучение Azure.Azure Machine Learning event schema details can be found in Azure Event Grid event schema for Azure Machine Learning. Ниже приведены некоторые примеры расширенных фильтров, которые можно применять.Some sample advanced filterings you can perform include:

    Для Microsoft.MachineLearningServices.ModelRegistered события, чтобы отфильтровать значение тега модели:For Microsoft.MachineLearningServices.ModelRegistered event, to filter model's tag value:

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

    Дополнительные сведения о том, как применять фильтры, см. в разделе Фильтрация событий для сетки событий.To learn more about how to apply filters, see Filter events for Event Grid.

Использование событий Машинного обученияConsume Machine Learning events

Приложения, которые обрабатывают события Машинного обучения, должны следовать нескольким рекомендациям.Applications that handle Machine Learning events should follow a few recommended practices:

  • Так как в один обработчик событий можно настроить маршрутизацию событий из нескольких подписок, не следует предполагать, что события поступают из определенного источника. Но необходимо проверять тему сообщения, чтобы убедиться, что оно поступает из ожидаемой рабочей области машинного обучения.As multiple subscriptions can be configured to route events to the same event handler, it is important not to assume events are from a particular source, but to check the topic of the message to ensure that it comes from the machine learning workspace you are expecting.
  • Подобным образом убедитесь, что вы готовы к обработке этого типа событий (eventType), а также не следует предполагать, что все получаемые события будут иметь ожидаемый тип.Similarly, check that the eventType is one you are prepared to process, and do not assume that all events you receive will be the types you expect.
  • Так как сообщения могут поступать не по порядку и после некоторой задержки, используйте поля ETag, чтобы понять, являются ли сведения об объектах актуальными.As messages can arrive out of order and after some delay, use the etag fields to understand if your information about objects is still up-to-date. Используйте поля sequencer для понимания последовательности событий для каждого отдельного объекта.Also, use the sequencer fields to understand the order of events on any particular object.
  • Игнорируйте поля, которые вам непонятны.Ignore fields you don't understand. Такой подход поможет обеспечить устойчивость к новым функциям, которые могут быть добавлены в будущем.This practice will help keep you resilient to new features that might be added in the future.
  • Операции Машинного обучения Azure, которые завершились сбоем или отменены, не активируют событие.Failed or cancelled Azure Machine Learning operations will not trigger an event. Например, если развертывание модели завершается сбоем, Microsoft.MachineLearningServices.ModelDeployed не будет запущено.For example, if a model deployment fails Microsoft.MachineLearningServices.ModelDeployed won't be triggered. При проектировании приложений рекомендуется использовать такой режим сбоя.Consider such failure mode when design your applications. Вы всегда можете использовать пакет SDK, CLI или портал Машинного обучения Azure, чтобы проверить состояние операции и ознакомиться с подробными причинами сбоя.You can always use Azure Machine Learning SDK, CLI or portal to check the status of an operation and understand the detailed failure reasons.

Сетка событий Azure позволяет клиентам создавать несвязанные обработчики сообщений, которые могут запускаться событиями Машинного обучения Azure.Azure Event Grid allows customers to build de-coupled message handlers, which can be triggered by Azure Machine Learning events. Ниже приведены некоторые важные примеры обработчиков сообщений.Some notable examples of message handlers are:

  • Функции AzureAzure Functions
  • Azure Logic AppsAzure Logic Apps
  • Центры событий AzureAzure Event Hubs
  • Конвейеры фабрики данных AzureAzure Data Factory Pipeline
  • Универсальные веб-перехватчики, которые могут размещаться на платформе Azure или в других местахGeneric webhooks, which may be hosted on the Azure platform or elsewhere

Настройка на портале AzureSet up in Azure portal

  1. Откройте портал Azure и перейдите к рабочей области Машинного обучения Azure.Open the Azure portal and go to your Azure Machine Learning workspace.

  2. На панели слева выберите События, а затем выберите Подписки на события.From the left bar, select Events and then select Event Subscriptions.

    select-events-in-workspace.png

  3. Выберите тип события для использования.Select the event type to consume. Например, на следующем снимке экрана выбрано Модель зарегистрирована, Модель развернута, Выполнение завершено и Обнаружено смещение набора данных.For example, the following screenshot has selected Model registered, Model deployed, Run completed, and Dataset drift detected:

    add-event-type

  4. Выберите конечную точку, в которую будет опубликовано событие.Select the endpoint to publish the event to. На следующем снимке экрана Концентратор событий является выбранной конечной точкой:In the following screenshot, Event hub is the selected endpoint:

    На снимке экрана показана панель Создание подписки на события с открытым окном выбора концентратора событий.

После подтверждения выбора щелкните Создать.Once you have confirmed your selection, click Create. После настройки эти события будут отправлены в конечную точку.After configuration, these events will be pushed to your endpoint.

Настройка с помощью CLISet up with the CLI

Можно либо установить последнюю версию Azure CLI, либо использовать Azure Cloud Shell, предоставляемый в рамках подписки Azure.You can either install the latest Azure CLI, or use the Azure Cloud Shell that is provided as part of your Azure subscription.

Чтобы установить расширение Сетки событий, выполните следующую команду в CLI:To install the Event Grid extension, use the following command from the CLI:

az add extension --name eventgrid

В следующем примере показано, как выбрать подписку Azure и создать новую подписку на события для Машинного обучения Azure:The following example demonstrates how to select an Azure subscription and creates e a new event subscription for 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"

ПримерыExamples

Пример Отправка оповещений по электронной почтеExample: Send email alerts

Используйте Azure Logic Apps, чтобы настроить сообщения электронной почты для всех событий.Use Azure Logic Apps to configure emails for all your events. Настройте условия и укажите получателей, чтобы обеспечить совместную работу и осведомленность в разных командах.Customize with conditions and specify recipients to enable collaboration and awareness across teams working together.

  1. На портале Azure перейдите в рабочую область Машинного обучения Azure и выберите вкладку события на панели слева.In the Azure portal, go to your Azure Machine Learning workspace and select the events tab from the left bar. Там выберите Logic apps.From here, select Logic apps.

    На снимке экрана показана страница событий Машинное обучение Workspace с Logic Apps.

  2. Войдите в пользовательский интерфейс приложения логики и выберите службу "Машинное обучение" в качестве типа темы.Sign into the Logic App UI and select Machine Learning service as the topic type.

    На снимке экрана показано диалоговое окно при возникновении события ресурса с выбранным в качестве типа ресурса машинным обучением.

  3. Выберите события, о которых хотите получать уведомления.Select which event(s) to be notified for. Для примера посмотрите на снимок экрана RunCompleted.For example, the following screenshot RunCompleted.

    На снимке экрана показано диалоговое окно при возникновении события ресурса с выбранным типом события.

  4. Можно использовать метод фильтрации в приведенном выше разделе или добавить фильтры, чтобы активировать приложение логики только в ответ на подмножество типов событий.You can use the filtering method in the section above or add filters to only trigger the logic app on a subset of event types. На следующем снимке экрана используется фильтр префикса /datadriftID/runs/ .In the following screenshot, a prefix filter of /datadriftID/runs/ is used.

    filter-events

  5. Затем добавьте шаг для использования этого события и выполните поиск по электронной почте.Next, add a step to consume this event and search for email. Существует несколько разных учетных записей почты, которые можно использовать для получения событий.There are several different mail accounts you can use to receive events. Также можно настроить условия отправки оповещений по электронной почте.You can also configure conditions on when to send an email alert.

    На снимке экрана показано диалоговое окно Выбор действия с адресом электронной почты, указанным в строке поиска.

  6. Выберите Отправить сообщение электронной почты и введите параметры.Select Send an email and fill in the parameters. В теме можно указать Тип события и Тему, чтобы упростить фильтрацию событий.In the subject, you can include the Event Type and Topic to help filter events. Также можно включить ссылку на страницу рабочей области для выполнения в тексте сообщения.You can also include a link to the workspace page for runs in the message body.

    На снимке экрана отображается диалоговое окно Отправка сообщения электронной почты с разделом и типом события, добавленным в строку Тема из списка справа.

  7. Чтобы сохранить это действие, выберите Сохранить как в левом углу страницы.To save this action, select Save As on the left corner of the page. На появившейся правой панели подтвердите создание этого действия.From the right bar that appears, confirm creation of this action.

    На снимке экрана показаны кнопки Сохранить как и создать в конструкторе Logic Apps.

Пример Переобучение триггеров смещения данныхExample: Data drift triggers retraining

Модели со временем устаревают и становятся бесполезными в контексте, в котором они выполняются.Models go stale over time, and not remain useful in the context it is running in. Одним из способов определить, пора ли переучивать модель, является обнаружение смещения данных.One way to tell if it's time to retrain the model is detecting data drift.

В этом примере показано, как использовать Сетку событий с Azure Logic App для запуска переобучения.This example shows how to use event grid with an Azure Logic App to trigger retraining. В этом примере конвейер Фабрики данных Azure активируется, когда происходит смещение данных между обучением модели и обслуживанием наборов данных.The example triggers an Azure Data Factory pipeline when data drift occurs between a model's training and serving datasets.

Перед началом работы выполните следующие действия.Before you begin, perform the following actions:

В этом примере простой конвейер Фабрики данных используется для копирования файлов в хранилище BLOB-объектов и запуска опубликованного конвейера Машинного обучения.In this example, a simple Data Factory pipeline is used to copy files into a blob store and run a published Machine Learning pipeline. Дополнительные сведения об этом сценарии см. в Этап Машинного обучения в Фабрике данных Azure.For more information on this scenario, see how to set up a Machine Learning step in Azure Data Factory

На снимке экрана показан конвейер обучения в ресурсах фабрики с копией файл1, показывающий M L Execute Pipeline1.

  1. Начните с создания приложения логики.Start with creating the logic app. Перейдите на портал Azure, найдите Logic Apps и выберите "Создать".Go to the Azure portal, search for Logic Apps, and select create.

    search-logic-app

  2. Введите необходимую информацию.Fill in the requested information. Чтобы упростить работу, используйте ту же подписку и группу ресурсов, что и конвейер Фабрики данных Azure, с рабочей областью Машинного обучения Azure.To simplify the experience, use the same subscription and resource group as your Azure Data Factory Pipeline and Azure Machine Learning workspace.

    На снимке экрана показана панель создания приложения логики.

  3. После создания приложения логики выберите При возникновении события ресурса Сетки событий.Once you have created the logic app, select When an Event Grid resource event occurs.

    На снимке экрана показан конструктор Logic Apps с общими параметрами триггера, включая время возникновения события ресурса сетки событий.

  4. Войдите и укажите сведения о событии.Login and fill in the details for the event. В разделе Имя ресурса укажите имя рабочей области.Set the Resource Name to the workspace name. В разделе Тип события укажите DatasetDriftDetected.Set the Event Type to DatasetDriftDetected.

    На снимке экрана показано событие при возникновении события ресурса с выбранным элементом типа события.

  5. Добавьте новый шаг и выполните поиск по Фабрике данных Azure.Add a new step, and search for Azure Data Factory. Выберите Создание конвейера.Select Create a pipeline run.

    На снимке экрана показана панель Выбор действия с выбранным параметром создать выполнение конвейера.

  6. Войдите в систему и укажите опубликованный конвейер Фабрики данных Azure, который следует запустить.Login and specify the published Azure Data Factory pipeline to run.

    На снимке экрана показано, как создать панель выполнения конвейера с различными значениями.

  7. Сохраните и создайте приложение логики с помощью кнопки Сохранить в верхнем левом углу страницы.Save and create the logic app using the save button on the top left of the page. Чтобы просмотреть приложение, перейдите в рабочую область Портала Azure и щелкните События.To view your app, go to your workspace in the Azure portal and click on Events.

    На снимке экрана показаны события с выделенным приложением логики.

Теперь конвейер Фабрики данных активируется при смещении данных.Now the data factory pipeline is triggered when drift occurs. Сведения о вашем процессе смещения данных и конвейере машинного обучения можно найти на новом портале рабочей области.View details on your data drift run and machine learning pipeline on the new workspace portal.

На снимке экрана показаны конечные точки конвейера.

Пример Развертывание модели на основе теговExample: Deploy a model based on tags

Объект модели Машинного обучение Azure содержит параметры, на которых можно выполнить сведение развертываний, такие как имя модели, версия, тег и свойство.An Azure Machine Learning model object contains parameters you can pivot deployments on such as model name, version, tag, and property. Событие регистрации модели может активировать конечную точку. Функцию Azure можно использовать для развертывания модели на основе значений этих параметров.The model registration event can trigger an endpoint and you can use an Azure Function to deploy a model based on the value of those parameters.

Например, загляните в репозиторий https://github.com/Azure-Samples/MachineLearningSamples-NoCodeDeploymentTriggeredByEventGrid и выполните действия, описанные в файле readme.For an example, see the https://github.com/Azure-Samples/MachineLearningSamples-NoCodeDeploymentTriggeredByEventGrid repository and follow the steps in the readme file.

Дальнейшие действияNext steps

Ознакомьтесь с дополнительными сведениями о Сетке событий и попробуйте использовать события Машинного обучения Microsoft Azure.Learn more about Event Grid and give Azure Machine Learning events a try: