监视 Azure 机器学习

当你的关键应用程序和业务流程依赖于 Azure 资源时,你需要监视这些资源的可用性、性能和操作。 本文介绍了 Azure 机器学习生成的监视数据,以及如何使用 Azure Monitor 对此数据进行分析和发出警报。

提示

本文档中的信息主要面向管理员,因为它介绍针对 Azure 机器学习服务和关联的 Azure 服务的监视。 如果你是一名数据科学家或开发人员,并且想要监视与模型训练运行相关的信息,请参阅以下文档 :

如果要监视由部署到联机终结点的模型生成的信息,请参阅监视联机终结点

说明是 Azure Monitor?

Azure 机器学习使用 Azure Monitor 创建监视数据,这是 Azure 中的一个完整堆栈监视服务。 Azure Monitor 提供了一组用于监视 Azure 资源的完整功能。 它还可以监视其他云和本地的资源。

一开始可以阅读使用 Azure Monitor 监视 Azure 资源一文,其中介绍了以下概念:

  • 说明是 Azure Monitor?
  • 与监视相关的成本
  • 监视 Azure 中收集的数据
  • 配置数据收集
  • Azure 中用于分析监视数据并就其发出警报的标准工具

本文中的以下各部分将介绍从 Azure 机器学习收集的特定数据。 这些部分还提供了使用 Azure 工具配置数据收集和分析此数据的示例。

提示

若想了解与 Azure Monitor 相关的成本,请参阅使用情况和估计成本。 若要了解数据在 Azure Monitor 中显示需要花多长时间,请参阅 日志数据引入时间

Azure 机器学习的监视数据

Azure 机器学习收集的监视数据的类型与 Azure 资源的监视数据中所述的其他 Azure 资源相同。

请参阅 Azure 机器学习监视数据参考,详细了解 Azure 机器学习创建的日志和指标。

收集和路由

提示

日志分组到“类别组”中。 类别组是不同日志的集合,可帮助你实现不同的监视目标。 这些组是动态定义的,可能会随着时间的推移而更改,因为新的资源日志会变为可用并被添加到类别组。 请注意,这可能会产生额外费用。

审核资源日志类别组让你可以选择审核你的资源所必需的资源日志。 有关详细信息,请参阅 Azure Monitor 资源日志中的诊断设置

平台指标和活动日志会自动收集和存储,但可以使用诊断设置将其路由到其他位置 。

在创建诊断设置并将其路由到一个或多个位置之前,不会收集和存储资源日志。 需要管理多个Azure 机器学习工作区时,可将所有工作区的日志路由到同一个日志记录目标,并从单个位置查询所有日志。

有关使用 Azure 门户、Azure CLI 或 PowerShell 创建诊断设置的详细过程,请参阅创建诊断设置以收集 Azure 中的平台日志和指标。 创建诊断设置时,请指定要收集的日志类别。 Azure 机器学习的类别在 Azure 机器学习监视数据参考中列出。

重要

启用这些设置需要额外的 Azure 服务(存储帐户、事件中心或 Log Analytics),这可能会增加成本。 若要估算成本,请访问 Azure 定价计算器

可以为 Azure 机器学习配置以下日志:

类别 说明
AmlComputeClusterEvent Azure 机器学习计算群集的事件。
AmlComputeClusterNodeEvent(不建议使用) Azure 机器学习计算群集内节点的事件。
AmlComputeJobEvent Azure 机器学习计算上运行的作业的事件。
AmlComputeCpuGpuUtilization ML 服务计算 CPU 和 GPU 利用率日志。
AmlOnlineEndpointTrafficLog 流向联机终结点的流量的日志。
AmlOnlineEndpointConsoleLog 联机终结点的容器写入控制台的日志。
AmlOnlineEndpointEventLog 有关联机终结点生命周期的事件的日志。
AmlRunStatusChangedEvent ML 运行状态更改。
ModelsChangeEvent 访问(创建或删除)ML 模型时生成的事件。
ModelsReadEvent 读取 ML 模型时生成的事件。
ModelsActionEvent 访问 ML 模型时生成的事件。
DeploymentReadEvent 读取模型部署时生成的事件。
DeploymentEventACI 在 ACI 上进行模型部署时生成的事件(非常琐碎)。
DeploymentEventAKS 在 AKS 上进行模型部署时生成的事件(非常琐碎)。
InferencingOperationAKS AKS 计算类型上的推理或相关操作事件。
InferencingOperationACI ACI 计算类型上的推理或相关操作事件。
EnvironmentChangeEvent 创建或删除 ML 环境配置时生成的事件。
EnvironmentReadEvent 读取 ML 环境配置时生成的事件(非常琐碎)。
DataLabelChangeEvent 创建或删除数据标签或其项目时生成的事件。
DataLabelReadEvent 读取数据标签或其项目时生成的事件。
ComputeInstanceEvent 访问 ML 计算实例时生成的事件(非常琐碎)。
DataStoreChangeEvent 创建或删除 ML 数据存储时生成的事件。
DataStoreReadEvent 读取 ML 数据存储时生成的事件。
DataSetChangeEvent 创建或删除 ML 数据存储时生成的事件。
DataSetReadEvent 读取 ML 数据存储时生成的事件。
PipelineChangeEvent 创建或删除 ML 管道草稿或终结点或模块时生成的事件。
PipelineReadEvent 读取 ML 管道草稿或终结点或模块时生成的事件。
RunEvent 创建或删除 ML 试验时生成的事件。
RunReadEvent 读取 ML 试验时生成的事件。

注意

自 2022 年 2 月起,不建议使用 AmlComputeClusterNodeEvent 类别。 建议改用 AmlComputeClusterEvent 类别。

注意

启用诊断设置中的指标时,当前发送到存储帐户、事件中心或 log analytics 的信息中并不包含维度信息。

以下部分将讨论可以收集的指标和日志。

分析指标

可以从“Azure Monitor”菜单中打开“指标”,以分析 Azure 机器学习指标以及来自其他 Azure 服务的指标 。 有关使用此工具的详细信息,请参阅 Azure 指标资源管理器入门

有关收集的平台指标的列表,请参阅监视 Azure 机器学习数据引用指标

Azure 机器学习的所有指标都位于命名空间机器学习服务工作区中。

Metrics Explorer with Machine Learning Service Workspace selected

若要参考,可以查看 Azure Monitor 中所有受支持的资源指标列表。

提示

Azure Monitor 指标数据有效期为 90 天。 但在创建图表时,只直观显示 30 天的数据。 例如,如果想要直观显示 90 天的数据,必须将它拆分成 90 天内包含 30 天的数据的三个图表。

筛选和拆分

对于支持维度的指标,应用筛选器时可以使用维度值。 例如,筛选“群集名称”cpu-cluster 的“活动核心”

还可以按维度来拆分指标,将指标的不同部分进行直观比较。 例如,拆分管道步骤类型,查看管道中使用的步骤类型的计数。

有关筛选和拆分的详细信息,请参阅 Azure Monitor 的高级功能

分析日志

使用 Azure Monitor Log Analytics 需要创建诊断配置,并启用将信息发送到 Log Analytics。 有关详细信息,请参阅收集和路由部分。

Azure Monitor 日志中的数据以表形式存储,每个表包含自己独有的属性集。 Azure 机器学习将数据存储在以下表格中:

说明
AmlComputeClusterEvent Azure 机器学习计算群集的事件。
AmlComputeClusterNodeEvent(不建议使用) Azure 机器学习计算群集内节点的事件。
AmlComputeJobEvent Azure 机器学习计算上运行的作业的事件。
AmlComputeInstanceEvent 访问(读取/写入)ML 计算实例时生成的事件。 类别包括:ComputeInstanceEvent(非常琐碎)。
AmlDataLabelEvent 访问(读取、创建或删除)数据标签或其项目时生成的事件。 类别包括:DataLabelReadEvent、DataLabelChangeEvent。
AmlDataSetEvent 访问(读取、创建或删除)已注册或未注册的 ML 数据集时生成的事件。 类别包括:DataSetReadEvent、DataSetChangeEvent。
AmlDataStoreEvent 访问(读取、创建或删除)ML 数据存储时生成的事件。 类别包括:DataStoreReadEvent、DataStoreChangeEvent。
AmlDeploymentEvent 在 ACI 或 AKS 上进行模型部署时生成的事件。 类别包括:DeploymentReadEvent、DeploymentEventACI、DeploymentEventAKS。
AmlInferencingEvent AKS 或 ACI 计算类型上的推理或相关操作事件。 类别包括:InferencingOperationACI(非常琐碎)、InferencingOperationAKS(非常琐碎)。
AmlModelsEvent 访问(读取、创建或删除)ML 模型时生成的事件。 包括将模型和资产打包成随时可生成的包时生成的事件。 类别包括:ModelsReadEvent、ModelsActionEvent。
AmlPipelineEvent 访问(读取、创建或删除)ML 管道草稿、终结点或模块时生成的事件。类别包括:PipelineReadEvent、PipelineChangeEvent。
AmlRunEvent 访问(读取、创建或删除)ML 试验时生成的事件。 类别包括:RunReadEvent、RunEvent。
AmlEnvironmentEvent 访问(读取、创建或删除)ML 环境配置时生成的事件。 类别包括:EnvironmentReadEvent(非常琐碎)、EnvironmentChangeEvent。
AmlOnlineEndpointTrafficLog 流向联机终结点的流量的日志。
AmlOnlineEndpointConsoleLog 联机终结点的容器写入控制台的日志。
AmlOnlineEndpointEventLog 有关联机终结点生命周期的事件的日志。

注意

自 2022 年 2 月起,AmlComputeClusterNodeEvent 表将弃用。 建议改用 AmlComputeClusterEvent 表。

重要

在 Azure 机器学习菜单中选择“日志”时,Log Analytics 随即打开,其查询范围设置为当前工作区。 这意味着日志查询只包含来自该资源的数据。 如果希望运行的查询包含其他数据库或其他 Azure 服务的数据,请从“Azure Monitor”菜单中选择“日志”。 有关详细信息,请参阅 Azure Monitor Log Analytics 中的日志查询范围和时间范围

请参阅 Azure 机器学习监视数据参考,详细了解相关日志和指标。

示例 Kusto 查询

重要

在 [service-name] 菜单中选择“日志”时,Log Analytics 随即打开,其查询范围设置为当前 Azure 机器学习工作区。 这意味着日志查询只包含来自该资源的数据。 如果希望运行包含其他工作区或其他 Azure 服务数据的查询,请从“Azure Monitor”菜单中选择“日志” 。 有关详细信息,请参阅 Azure Monitor Log Analytics 中的日志查询范围和时间范围

下面是一些可用于帮助监视 Azure 机器学习资源的查询:

  • 获取过去五天内失败的作业:

    AmlComputeJobEvent
    | where TimeGenerated > ago(5d) and EventType == "JobFailed"
    | project  TimeGenerated , ClusterId , EventType , ExecutionState , ToolType
    
  • 获取特定名称的作业的记录:

    AmlComputeJobEvent
    | where JobName == "automl_a9940991-dedb-4262-9763-2fd08b79d8fb_setup"
    | project  TimeGenerated , ClusterId , EventType , ExecutionState , ToolType
    
  • 为 VM 大小为 Standard_D1_V2 的群集获取过去五天内的群集事件:

    AmlComputeClusterEvent
    | where TimeGenerated > ago(4d) and VmSize == "STANDARD_D1_V2"
    | project  ClusterName , InitialNodeCount , MaximumNodeCount , QuotaAllocated , QuotaUtilized
    
  • 在过去 8 天内获取群集节点分配::

    AmlComputeClusterEvent
    | where TimeGenerated > ago(8d) and TargetNodeCount  > CurrentNodeCount
    | project TimeGenerated, ClusterName, CurrentNodeCount, TargetNodeCount
    

将多个 Azure 机器学习工作区连接到同一个 Log Analytics 工作区时,可以跨所有资源进行查询。

  • 获取过去一天内各个工作区和群集中运行的节点数:

    AmlComputeClusterEvent
    | where TimeGenerated > ago(1d)
    | summarize avgRunningNodes=avg(TargetNodeCount), maxRunningNodes=max(TargetNodeCount)
             by Workspace=tostring(split(_ResourceId, "/")[8]), ClusterName, ClusterType, VmSize, VmPriority
    

使用模板创建工作区监视仪表板

Azure 门户中的仪表板可以集中且有组织地呈现你的云资源。 有关创建仪表板的详细信息,请参阅使用 Azure Monitor 创建、查看和管理指标警报

若要部署示例仪表板,可以使用一个公开提供的模板。 示例仪表板基于 Kusto 查询,因此必须在部署仪表板之前为 Azure 机器学习工作区启用 Log Analytics 数据收集

警报

可以通过从“Azure Monitor”菜单中打开“警报”,来访问 Azure 机器学习的警报。 请参阅使用 Azure Monitor 创建、查看和管理指标警报,详细了解如何创建警报。

下表列出了常见和推荐使用的 Azure 机器学习的指标警报规则:

警报类型 条件 描述
失败的模型部署数 聚合类型:总计,运算符:大于,阈值:0 当一个或多个模型部署失败时
配额利用率百分比 聚合类型:平均,运算符:大于,阈值:90 当配额使用率百分比大于 90% 时
不可用的节点数 聚合类型:总计,运算符:大于,阈值:0 当存在一个或多个不可用的节点时

后续步骤