本文介绍如何基于 Azure 机器学习事件设置事件驱动的应用程序、进程或 CI/CD 工作流。 例如,当通过Azure 事件网格检测到某些条件时,您可以设置故障通知邮件或 ML 管道运行作业。
Azure 机器学习管理机器学习过程的整个生命周期,包括模型训练、模型部署和监视。 通过使用事件网格,可以使用新式无服务器体系结构对Azure 机器学习事件做出反应,例如训练运行完成和模型注册和部署。 然后,可以在工作区中订阅和使用事件,例如运行状态已更改、运行完成、模型注册和模型部署。
将事件网格用于事件驱动操作:
- 在运行失败和运行完成时发送电子邮件
- 注册模型后使用 Azure 函数
- 将事件从Azure 机器学习流式传输到各种终结点
重要
本文中标记了“(预览版)”的项目目前为公共预览版。 该预览版在提供时没有附带服务级别协议,建议不要将其用于生产工作负载。 某些功能可能不受支持或者受限。 有关详细信息,请参阅适用于 Azure 预览版的补充使用条款。
先决条件
要使用事件网格,你需要对要为其创建事件的 Azure 机器学习工作区具有“参与者”或“所有者”访问权限。
在您的 Azure 订阅中注册
Microsoft.EventGrid资源提供程序。 必须先进行此注册,然后才能创建事件订阅。az provider register --namespace Microsoft.EventGrid --wait如果计划使用逻辑应用示例,也请注册
Microsoft.Logic提供程序。az provider register --namespace Microsoft.Logic --wait如果计划按照 CLI 示例进行操作,请安装
eventgridAzure CLI扩展。az extension add --name eventgrid如果打算按照 CLI 示例,将事件中心作为目标,则需要现有的事件中心命名空间和中心。 如果需要创建 事件中心 ,请参阅“创建事件中心”。
事件模型和类型
Azure 事件网格从 Azure 机器学习和其他 Azure 服务等源中读取事件。 它将这些事件发送到事件处理程序,例如Azure 事件中心、Azure Functions、逻辑应用等。 下图显示了事件网格如何连接源和处理程序,但它不是受支持的集成的完整列表。
有关事件源和事件处理程序的详细信息,请参阅什么是事件网格?
Azure 机器学习的事件类型
Azure 机器学习在机器学习生命周期的各个点提供事件:
| 事件类型 | DESCRIPTION |
|---|---|
Microsoft.MachineLearningServices.RunCompleted |
机器学习实验运行完成时触发 |
Microsoft.MachineLearningServices.ModelRegistered |
当成功注册新模型或模型版本时触发 |
Microsoft.MachineLearningServices.ModelDeployed |
成功将一个或多个模型部署到终结点时引发 |
Microsoft.MachineLearningServices.RunStatusChanged |
当运行状态更改时触发 |
筛选并订阅事件
Azure 事件网格发布这些事件。 在 Azure门户、PowerShell 或 Azure CLI 中,可以通过指定一种或多种事件类型并筛选条件来轻松地订阅事件。
设置事件时,应用筛选条件,使其仅在特定事件数据时触发。 在以下示例中,对于运行状态更改的事件,可以按运行类型进行筛选。 该事件仅在满足条件时才会触发。 有关可以筛选的事件数据的详细信息,请参阅 Azure 机器学习事件网格架构。
Azure基于角色的访问控制(Azure RBAC)保护Azure 机器学习事件的订阅。 只有工作区参与者或所有者可以创建、更新和删除事件订阅。 可以在 创建 事件订阅期间或稍后将筛选器应用于事件订阅。
转到 Azure 门户,选择新订阅或现有订阅。
从左窗格中选择 “事件 ”条目,然后选择“ + 事件订阅”。
选择 “筛选器 ”选项卡并向下滚动到 “高级”筛选器。 对于“键”和“值”,提供要作为筛选依据的属性类型 。 在这里,您可以看到当运行类型为管道运行或管道步骤运行时对应的事件触发器。
按事件类型筛选: 事件订阅可以指定一个或多个 Azure 机器学习事件类型。
按事件主题筛选: Azure 事件网格支持根据“开头为”和“结尾为”的匹配筛选主题,以便将具有匹配主题的事件传递给订阅者 。 不同的机器学习事件具有不同的主题格式。
事件类型 主题格式 示例主题 Microsoft.MachineLearningServices.RunCompletedexperiments/{ExperimentId}/runs/{RunId}experiments/b1d7966c-f73a-4c68-b846-992ace89551f/runs/my_exp1_1554835758_38dbaa94Microsoft.MachineLearningServices.ModelRegisteredmodels/{modelName}:{modelVersion}models/sklearn_regression_model:3Microsoft.MachineLearningServices.ModelDeployedendpoints/{serviceId}endpoints/my_sklearn_aksMicrosoft.MachineLearningServices.RunStatusChangedexperiments/{ExperimentId}/runs/{RunId}experiments/b1d7966c-f73a-4c68-b846-992ace89551f/runs/my_exp1_1554835758_38dbaa94高级筛选:Azure 事件网格还支持基于已发布事件架构的高级筛选。 有关 Azure 机器学习事件架构的详细信息,请参阅 Azure 机器学习的 Azure 事件网格事件架构。 对于
Microsoft.MachineLearningServices.ModelRegistered事件,要筛选模型的标记值:--advanced-filter data.ModelTags.key1 StringIn value1若要详细了解如何应用筛选器,请参阅筛选事件网格的事件。
消费机器学习事件
处理机器学习事件的应用程序应遵循以下建议的做法:
- 由于多个订阅可以将事件路由到同一事件处理程序,因此不要假定事件来自特定源。 检查消息的主题,确保消息来自预期的机器学习工作区。
- 同样,请检查 eventType 是否属于你可以处理的类型。 不要假设你接收到的所有事件都是你预期的类型。
- 由于消息可能会乱序到达,也可能会在延迟一段时间后到达,请使用 etag 字段来判断您掌握的对象信息是否仍为最新。 此外,还可使用 sequencer 字段来了解任何特定对象的事件顺序。
- 忽略不了解的字段。 这种做法有助于让你能够灵活应对将来可能添加的新功能。
- 失败或取消Azure 机器学习操作不会触发事件。 例如,如果模型部署失败,则不会触发 Microsoft.MachineLearningServices.ModelDeployed。 设计应用程序时,请考虑此类失败模式。 始终可以使用 Azure 机器学习 SDK、CLI 或门户来检查操作的状态,并了解详细的失败原因。
Azure 事件网格 使你能够构建由 Azure 机器学习 事件触发的解耦消息处理程序。 消息处理程序的一些显著示例包括:
- Azure Functions
- Azure 逻辑应用
- Azure 事件中心
- Azure 数据工厂管道
- 可在 Azure 平台或其他位置托管的通用 Webhook
在 Azure 门户中设置
打开 Azure 门户,然后转到 Azure 机器学习工作区。
在左侧栏中选择“事件”,然后选择“事件订阅”。
选择要使用的事件类型。
选择要将事件发布到的终结点。 以下屏幕截图中选择的终结点是“事件中心”:
确认选择时,请选择“ 创建”。 配置后,这些事件将被推送到您的端点。
使用 CLI 进行设置
可以安装最新的 Azure CLI。
要安装事件网格扩展,请在 CLI 中使用以下命令:
az extension add --name eventgrid
以下示例演示如何选择Azure订阅并为Azure 机器学习创建新的事件订阅:
# 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"
若要确认订阅已成功创建,请运行:
az eventgrid event-subscription show \
--name {eventGridFilterName} \
--source-resource-id /subscriptions/{subId}/resourceGroups/{RG}/providers/Microsoft.MachineLearningServices/workspaces/{wsName}
例子
示例:发送电子邮件警报
使用 Azure 逻辑应用为所有事件配置电子邮件。 根据条件进行自定义,并指定收件人,以实现跨协作团队的协作和意识。
在 Azure 门户中转到 Azure 机器学习工作区,并从左侧栏中选择“事件”选项卡。 在此处选择“逻辑应用”。
登录到逻辑应用 UI,并选择机器学习服务作为主题类型。
选择您希望接收通知的事件。 例如,以下屏幕截图显示了 RunCompleted。
接下来,添加一个步骤来使用此事件并搜索电子邮件。 可以使用多个不同的电子邮件帐户来接收事件。 还可以配置发送电子邮件警报的时间。
选择“发送电子邮件”并填写参数。 在主题中,包括事件类型和主题,以帮助筛选事件。 还可以在消息正文中添加运行对应的工作区页面链接。
若要保存此操作,请选择页面左上角的“另存为”。
后续步骤
若要详细了解事件网格并尝试Azure 机器学习事件,请参阅: