你当前正在访问 Microsoft Azure Global Edition 技术文档网站。 如果需要访问由世纪互联运营的 Microsoft Azure 中国技术文档网站,请访问 https://docs.azure.cn

监视部署到生产环境的模型的性能

适用范围:Azure CLI ml 扩展 v2(最新版)Python SDK azure-ai-ml v2(最新版)

在 Azure 机器学习中,可以使用模型监视来持续跟踪生产中的机器学习模型的性能。 模型监视提供监视信号的大致视图。 它还会向你发出潜在问题的警报。 监视生产中模型的信号和性能指标时,可以关键地评估模型固有风险。 还可以识别可能对业务造成不利影响的盲点。

本文介绍如何执行以下任务:

  • 对部署到 Azure 机器学习联机终结点的模型执行现成的高级监视
  • 监视生产环境中模型的性能指标
  • 监视部署在 Azure 机器学习外部或部署到 Azure 机器学习批处理终结点的模型
  • 设置自定义信号和指标以用于模型监视
  • 解释监视结果
  • 将 Azure 机器学习模型监控与 Azure 事件网格相集成

先决条件

  • Azure CLIml Azure CLI 的扩展,已安装并配置。 有关详细信息,请参阅安装和设置 CLI (v2)。

  • Bash shell 或其他兼容的 shell,例如 Linux 系统中的 shell 或 Windows 的 Linux 子系统。 本文中的 Azure CLI 示例假定你使用这种类型的 shell。

  • Azure 机器学习工作区。 有关创建工作区的说明,请参阅 “设置”。

  • 至少具有以下 Azure 基于角色的访问控制(Azure RBAC)角色之一的用户帐户:

    • Azure 机器学习工作区的所有者角色
    • Azure 机器学习工作区的参与者角色
    • 具有 Microsoft.MachineLearningServices/workspaces/onlineEndpoints/* 权限的自定义角色

    有关详细信息,请参阅管理对 Azure 机器学习工作区的访问

  • 用于监视 Azure 机器学习托管在线终结点或 Kubernetes 在线终结点:

  • 用于监视部署到 Azure 机器学习批处理终结点或部署在 Azure 机器学习外部的模型:

    • 收集生产数据并将其注册为 Azure 机器学习数据资产的方法
    • 持续更新已注册的数据资产以监视模型的方法
    • (推荐)在 Azure 机器学习工作区中注册模型,以便进行世系跟踪

配置无服务器 Spark 计算池

模型监视作业计划在无服务器 Spark 计算池上运行。 支持以下 Azure 虚拟机实例类型:

  • Standard_E4s_v3
  • Standard_E8s_v3
  • Standard_E16s_v3
  • Standard_E32s_v3
  • Standard_E64s_v3

若要按照本文中的过程指定虚拟机实例类型,请执行以下步骤:

使用 Azure CLI 创建监视器时,请使用 YAML 配置文件。 在该文件中,将 create_monitor.compute.instance_type 值设置为要使用的类型。

设置现成的模型监视

请考虑将模型部署到 Azure 机器学习联机终结点中的生产环境并在部署时启用 数据收集 的方案。 在这种情况下,Azure 机器学习会收集生产推理数据,并自动将其存储在 Azure Blob 存储中。 可以使用 Azure 机器学习模型监视来持续监视此生产推理数据。

可以使用 Azure CLI、Python SDK 或工作室进行现成的模型监视设置。 现成的模型监视配置提供以下监视功能:

  • Azure 机器学习会自动检测与 Azure 机器学习联机部署关联的生产推理数据资产,并使用数据资产进行模型监视。
  • 比较参考数据资产设置为最近的历史生产推理数据资产。
  • 监视设置会自动包括和跟踪以下内置监视信号:数据偏移、预测偏移和数据质量。 对于每个监视信号,Azure 机器学习使用:
    • 最近的历史生产推理数据资产作为比较参考数据资产。
    • 指标和阈值的智能默认值。
  • 监控任务被配置为定期运行。 该作业获取监视信号,并根据其相应的阈值评估每个指标结果。 默认情况下,当超出任何阈值时,Azure 机器学习会向设置监视器的用户发送警报电子邮件。

若要设置开箱即用的模型监控,请执行以下步骤。

在 Azure CLI 中,使用 az ml schedule 来安排监视作业。

  1. 在 YAML 文件中创建监视定义。 有关开箱即用的示例定义,请参阅以下 YAML 代码,该代码也可以在 azureml-examples 存储库中找到。

    使用此定义之前,请调整值以适应你的环境。 对于 endpoint_deployment_id,请使用值的格式为 azureml:<endpoint-name>:<deployment-name>

    # out-of-box-monitoring.yaml
    $schema:  http://azureml/sdk-2-0/Schedule.json
    name: credit_default_model_monitoring
    display_name: Credit default model monitoring
    description: Credit default model monitoring setup with minimal configurations
    
    trigger:
      # perform model monitoring activity daily at 3:15am
      type: recurrence
      frequency: day #can be minute, hour, day, week, month
      interval: 1 # #every day
      schedule: 
        hours: 3 # at 3am
        minutes: 15 # at 15 mins after 3am
    
    create_monitor:
    
      compute: # specify a spark compute for monitoring job
        instance_type: standard_e4s_v3
        runtime_version: "3.3"
    
      monitoring_target: 
        ml_task: classification # model task type: [classification, regression, question_answering]
        endpoint_deployment_id: azureml:credit-default:main # azureml endpoint deployment id
    
      alert_notification: # emails to get alerts
        emails:
          - abc@example.com
          - def@example.com
    
  2. 运行以下命令以创建模型:

    az ml schedule create -f ./out-of-box-monitoring.yaml
    

设置高级模型监视

Azure 机器学习为持续模型监视提供了许多功能。 有关此功能的综合列表,请参阅 模型监视的功能。 在许多情况下,需要设置支持高级监视任务的模型监视。 以下部分提供了一些高级监视示例:

  • 使用多个监视信号获得广泛视图
  • 使用历史模型定型数据或验证数据作为比较引用数据资产
  • 监视前 N 个最重要的特征和单个特征

配置特征重要性

特征重要性表示每个输入特征对模型输出的相对重要性。 例如,温度对模型的预测可能比高程更重要。 当您启用特征重要性时,可以明确了解哪些特征在生产环境中不应发生偏移或出现数据质量问题。

要使用任何信号(例如数据偏移或数据质量)启用特征重要性,你需要提供:

  • 训练数据资产作为 reference_data 数据资产。
  • reference_data.data_column_names.target_column 属性是模型输出列或预测列的名称。

启用功能重要性后,会看到在 Azure 机器学习工作室中监视的每个功能的功能重要性。

使用 Python SDK 或 Azure CLI 时,可以通过设置 alert_enabled 属性来打开或关闭每个信号的警报。

可以使用 Azure CLI、Python SDK 或工作室设置高级模型监视。

  1. 在 YAML 文件中创建监视定义。 有关示例高级定义,请参阅以下 YAML 代码,该代码在 azureml-examples 存储库中也可用。

    使用此定义之前,请调整以下设置和任何其他设置以满足环境的需求:

    • 对于 endpoint_deployment_id,请使用格式为 azureml:<endpoint-name>:<deployment-name> 的值。
    • 对于引用输入数据部分中的 path,请使用格式为 azureml:<reference-data-asset-name>:<version> 的值。
    • 对于 target_column,请使用包含模型预测的值的输出列的名称,例如 DEFAULT_NEXT_MONTH
    • 对于features,列出要用于高级数据质量信号的功能,例如SEXEDUCATIONAGE
    • 在下方 emails,列出要用于通知的电子邮件地址。
    # advanced-model-monitoring.yaml
    $schema:  http://azureml/sdk-2-0/Schedule.json
    name: fraud_detection_model_monitoring
    display_name: Fraud detection model monitoring
    description: Fraud detection model monitoring with advanced configurations
    
    trigger:
      # perform model monitoring activity daily at 3:15am
      type: recurrence
      frequency: day #can be minute, hour, day, week, month
      interval: 1 # #every day
      schedule: 
        hours: 3 # at 3am
        minutes: 15 # at 15 mins after 3am
    
    create_monitor:
    
      compute: 
        instance_type: standard_e4s_v3
        runtime_version: "3.3"
    
      monitoring_target:
        ml_task: classification
        endpoint_deployment_id: azureml:credit-default:main
      
      monitoring_signals:
        advanced_data_drift: # monitoring signal name, any user defined name works
          type: data_drift
          # reference_dataset is optional. By default referece_dataset is the production inference data associated with Azure Machine Learning online endpoint
          reference_data:
            input_data:
              path: azureml:credit-reference:1 # use training data as comparison reference dataset
              type: mltable
            data_context: training
            data_column_names:
              target_column: DEFAULT_NEXT_MONTH
          features: 
            top_n_feature_importance: 10 # monitor drift for top 10 features
          alert_enabled: true
          metric_thresholds:
            numerical:
              jensen_shannon_distance: 0.01
            categorical:
              pearsons_chi_squared_test: 0.02
        advanced_data_quality:
          type: data_quality
          # reference_dataset is optional. By default reference_dataset is the production inference data associated with Azure Machine Learning online endpoint
          reference_data:
            input_data:
              path: azureml:credit-reference:1
              type: mltable
            data_context: training
          features: # monitor data quality for 3 individual features only
            - SEX
            - EDUCATION
          alert_enabled: true
          metric_thresholds:
            numerical:
              null_value_rate: 0.05
            categorical:
              out_of_bounds_rate: 0.03
    
        feature_attribution_drift_signal:
          type: feature_attribution_drift
          # production_data: is not required input here
          # Please ensure Azure Machine Learning online endpoint is enabled to collected both model_inputs and model_outputs data
          # Azure Machine Learning model monitoring will automatically join both model_inputs and model_outputs data and used it for computation
          reference_data:
            input_data:
              path: azureml:credit-reference:1
              type: mltable
            data_context: training
            data_column_names:
              target_column: DEFAULT_NEXT_MONTH
          alert_enabled: true
          metric_thresholds:
            normalized_discounted_cumulative_gain: 0.9
      
      alert_notification:
        emails:
          - abc@example.com
          - def@example.com
    
  2. 运行以下命令以创建模型:

    az ml schedule create -f ./advanced-model-monitoring.yaml
    

设置模型性能监视

使用 Azure 机器学习模型监视时,可以通过计算模型的性能指标来跟踪生产中模型的性能。 目前支持以下模型性能指标:

  • 对于分类模型:
    • 精准率
    • 准确性
    • 召回率
  • 对于回归模型:
    • 平均绝对误差 (MAE)
    • 平均平方误差(MSE)
    • 根均方误差(RMSE)

模型性能监视的先决条件

  • 生产模型(模型预测)的输出数据,每行都有唯一 ID。 如果使用 Azure 机器学习数据收集器 收集生产数据,则会为每个推理请求提供相关 ID。 数据收集器还提供从应用程序记录自己的唯一 ID 的选项。

    注意

    对于 Azure 机器学习模型性能监控,建议使用 Azure 机器学习数据收集器 将唯一 ID 记录在一个单独的列中。

  • 每行均具有唯一 ID 的基本事实数据(实际值)。 给定行的唯一 ID 应与该特定推理请求的模型输出数据的唯一 ID 匹配。 此唯一 ID 用于将地面真实数据资产与模型输出数据联接。

    如果没有地面真实数据,则无法执行模型性能监视。 基本事实数据在应用程序级别出现,因此你有责任在这些数据可用时对其进行收集。 还应在 Azure 机器学习中维护包含此真实数据的数据资产。

  • (可选)已预先连接的表格数据资产,其中包含模型输出数据和真实基准数据。

使用数据收集器时监控模型性能的要求

满足以下条件时,Azure 机器学习会为你生成相关 ID:

生成的关联 ID 包含在记录的 JSON 对象中。 但是,数据收集器会批量处理在短时间间隔内发送的行。 批处理行位于同一 JSON 对象中。 在每个对象中,所有行都具有相同的关联 ID。

为了区分 JSON 对象中的行,Azure 机器学习模型性能监视使用索引来确定对象中行的顺序。 例如,如果批处理包含三行,并且相关 ID 为 test,则第一行的 ID 为 test_0,第二行的 ID 为 test_1,第三行的 ID 为 test_2。 若要将地面真实数据资产唯一 ID 与收集的生产推理模型输出数据的 ID 匹配,请相应地为每个关联 ID 应用索引。 如果记录的 JSON 对象只有一行,则将 correlationid_0 用作 correlationid 值。

为了避免使用此索引,我们建议您在单独的列中记录您的唯一 ID。 将该列放在 Azure 机器学习数据收集器 记录的 pandas 数据帧中。 在模型监视配置中,可以指定此列的名称,以将模型输出数据与地面真实数据联接。 只要两个数据资产中每一行的 ID 相同,Azure 机器学习模型监视就可以执行模型性能监视。

监视模型性能的示例工作流

若要了解与模型性能监视关联的概念,请考虑以下示例工作流。 它适用于部署模型以预测信用卡交易是否欺诈的方案:

  1. 将部署配置为使用数据收集器收集模型的生产推理数据(输入和输出数据)。 将输出数据存储在名为is_fraud的列中。
  2. 对于收集的推理数据的每一行,请记录唯一 ID。 唯一 ID 可以来自应用程序,也可以使用 correlationid Azure 机器学习为每个记录的 JSON 对象唯一生成的值。
  3. 当基本事实数据(或实际值)is_fraud 可用时,请记录每一行并将其映射到与模型输出数据中相应行记录的相同唯一 ID。
  4. 在 Azure 机器学习中注册数据资产,并使用它来收集和维护基本事实 is_fraud 数据。
  5. 创建一个模型性能监控信号,使用唯一的 ID 列将模型的生产推理和真实数据资产连接起来。
  6. 计算模型性能指标。

满足 模型性能监视的先决条件后,请执行以下步骤来设置模型监视:

  1. 在 YAML 文件中创建监视定义。 以下示例规范定义了使用生产推理数据的模型监视。 使用此定义之前,请调整以下设置和任何其他设置以满足环境的需求:

    • 对于 endpoint_deployment_id,请使用格式为 azureml:<endpoint-name>:<deployment-name> 的值。
    • 对于输入数据节中的每个 path 值,请使用格式为 azureml:<data-asset-name>:<version> 的值。
    • prediction对于值,请使用包含模型预测的值的输出列的名称。
    • 对于 actual 值,请使用包含模型试图预测的实际值的“基本事实数据”列的名称。
    • 对于 correlation_id 值,请使用用于连接输出数据和基本事实数据的列的名称。
    • 在下方 emails,列出要用于通知的电子邮件地址。
    # model-performance-monitoring.yaml
    $schema:  http://azureml/sdk-2-0/Schedule.json
    name: model_performance_monitoring
    display_name: Credit card fraud model performance
    description: Credit card fraud model performance
    
    trigger:
      type: recurrence
      frequency: day
      interval: 7 
      schedule: 
        hours: 10
        minutes: 15
    
    create_monitor:
      compute: 
        instance_type: standard_e8s_v3
        runtime_version: "3.3"
      monitoring_target:
        ml_task: classification
        endpoint_deployment_id: azureml:loan-approval-endpoint:loan-approval-deployment
    
      monitoring_signals:
        fraud_detection_model_performance: 
          type: model_performance 
          production_data:
            input_data:
              path: azureml:credit-default-main-model_outputs:1
              type: mltable
            data_column_names:
              prediction: is_fraud
              correlation_id: correlation_id
          reference_data:
            input_data:
              path: azureml:my_model_ground_truth_data:1
              type: mltable
            data_column_names:
              actual: is_fraud
              correlation_id: correlation_id
            data_context: ground_truth
          alert_enabled: true
          metric_thresholds: 
            tabular_classification:
              accuracy: 0.95
              precision: 0.8
      alert_notification: 
          emails: 
            - abc@example.com
    
  2. 运行以下命令以创建模型:

    az ml schedule create -f ./model-performance-monitoring.yaml
    

设置生产数据的模型监视

还可以监视部署到 Azure 机器学习批处理终结点或部署在 Azure 机器学习外部的模型。 如果没有部署,但具有生产数据,则可以使用数据执行持续模型监视。 若要监视这些模型,你必须能够:

  • 从生产环境中部署的模型收集生产推理数据。
  • 将生产推理数据注册为 Azure 机器学习数据资产,并确保数据持续更新。
  • 提供自定义数据预处理组件,如果未使用 数据收集器 收集数据,请将其注册为 Azure 机器学习组件。 如果没有此自定义数据预处理组件,Azure 机器学习模型监视系统将无法将数据处理成支持时间窗口的表格形式。

自定义预处理组件必须具有以下输入和输出签名:

输入或输出 签名名称 类型 描述 示例值
输入 data_window_start 文本,字符串 ISO8601格式的数据窗口开始时间 2023-05-01T04:31:57.012Z
输入 data_window_end 文本,字符串 ISO8601 格式的数据窗口结束时间 2023-05-01T04:31:57.012Z
输入 input_data uri_folder 收集的生产推理数据,该数据注册为 Azure 机器学习数据资产 azureml:myproduction_inference_data:1
输出 preprocessed_data mltable 与引用数据架构的子集匹配的表格数据资产

有关自定义数据预处理组件的示例,请参阅 azuremml-examples GitHub 存储库中的 custom_preprocessing

有关注册 Azure 机器学习组件的说明,请参阅 工作区中的“注册”组件

注册生产数据和预处理组件后,可以设置模型监视。

  1. 创建类似于以下文件的监视定义 YAML 文件。 使用此定义之前,请调整以下设置和任何其他设置以满足环境的需求:

    • 对于 endpoint_deployment_id ,请使用格式为 azureml:<endpoint-name>:<deployment-name> 的值。
    • 对于 pre_processing_component,请使用 azureml:<component-name>:<component-version> 格式的值。 指定确切的版本,例如 1.0.0,而不是 1
    • 对于每个 path,请使用格式为 azureml:<data-asset-name>:<version> 的值。
    • target_column对于值,请使用包含模型预测的值的输出列的名称。
    • 在下方 emails,列出要用于通知的电子邮件地址。
    # model-monitoring-with-collected-data.yaml
    $schema:  http://azureml/sdk-2-0/Schedule.json
    name: fraud_detection_model_monitoring
    display_name: Fraud detection model monitoring
    description: Fraud detection model monitoring with your own production data
    
    trigger:
      # perform model monitoring activity daily at 3:15am
      type: recurrence
      frequency: day #can be minute, hour, day, week, month
      interval: 1 # #every day
      schedule: 
        hours: 3 # at 3am
        minutes: 15 # at 15 mins after 3am
    
    create_monitor:
      compute: 
        instance_type: standard_e4s_v3
        runtime_version: "3.3"
      monitoring_target:
        ml_task: classification
        endpoint_deployment_id: azureml:fraud-detection-endpoint:fraud-detection-deployment
      
      monitoring_signals:
    
        advanced_data_drift: # monitoring signal name, any user defined name works
          type: data_drift
          # define production dataset with your collected data
          production_data:
            input_data:
              path: azureml:my_production_inference_data_model_inputs:1  # your collected data is registered as Azure Machine Learning asset
              type: uri_folder
            data_context: model_inputs
            pre_processing_component: azureml:production_data_preprocessing:1.0.0
          reference_data:
            input_data:
              path: azureml:my_model_training_data:1 # use training data as comparison baseline
              type: mltable
            data_context: training
            data_column_names:
              target_column: is_fraud
          features: 
            top_n_feature_importance: 20 # monitor drift for top 20 features
          alert_enabled: true
          metric_thresholds:
            numerical:
              jensen_shannon_distance: 0.01
            categorical:
              pearsons_chi_squared_test: 0.02
    
        advanced_prediction_drift: # monitoring signal name, any user defined name works
          type: prediction_drift
          # define production dataset with your collected data
          production_data:
            input_data:
              path: azureml:my_production_inference_data_model_outputs:1  # your collected data is registered as Azure Machine Learning asset
              type: uri_folder
            data_context: model_outputs
            pre_processing_component: azureml:production_data_preprocessing:1.0.0
          reference_data:
            input_data:
              path: azureml:my_model_validation_data:1 # use training data as comparison reference dataset
              type: mltable
            data_context: validation
          alert_enabled: true
          metric_thresholds:
            categorical:
              pearsons_chi_squared_test: 0.02
      
      alert_notification:
        emails:
          - abc@example.com
          - def@example.com
    
  2. 运行以下命令以创建模型。

    az ml schedule create -f ./model-monitoring-with-collected-data.yaml
    

使用自定义信号和指标设置模型监视

使用 Azure 机器学习模型监视时,可以定义自定义信号并实现所选的任何指标来监视模型。 可以将自定义信号注册为 Azure 机器学习组件。 当模型监视作业按其指定的计划运行时,它会计算自定义信号中定义的指标,就像它针对数据偏移、预测偏移和数据质量预生成信号所做的那样。

若要设置用于模型监视的自定义信号,必须先定义自定义信号,并将其注册为 Azure 机器学习组件。 Azure 机器学习组件必须具有以下输入和输出签名。

组件输入签名

组件输入数据帧应包含以下项:

  • 包含 mltable 预处理组件中已处理的数据的结构。
  • 任何数量的文本,每个文本表示作为自定义信号组件的一部分实现的指标。 例如,如果实现std_deviation指标,则需要为std_deviation_threshold提供输入。 通常,每个指标应有一个名称为 <metric-name>_threshold 的输入。
签名名称 类型 描述 示例值
production_data mltable 与引用数据架构的子集匹配的表格数据资产
std_deviation_threshold 文本,字符串 实现的指标的相应阈值 2

组件输出签名

组件输出端口应具有以下签名:

签名名称 类型 描述
signal_metrics mltable 包含计算指标的 mltable 结构。 有关此签名的架构,请参阅下一部分, signal_metrics架构

signal_metrics 架构

组件输出数据帧应包含四列: groupmetric_namemetric_valuethreshold_value

签名名称 类型 描述 示例值
group 文本,字符串 要应用于自定义指标的顶级逻辑分组 交易金额
metric_name 文本,字符串 自定义指标的名称 std_deviation
metric_value 数值 自定义指标的值 44,896.082
threshold_value 数值 自定义指标的阈值 2

下表显示了计算指标的 std_deviation 自定义信号组件的示例输出:

群 体 metric_value 指标名称 阈值
交易金额 44,896.082 std_deviation 2
LOCALHOUR 3.983 std_deviation 2
交易金额(美元) 54,004.902 std_deviation 2
DIGITALITEMCOUNT 7.238 std_deviation 2
PHYSICALITEMCOUNT 5.509 std_deviation 2

若要查看自定义信号组件定义和指标计算代码的示例,请参阅 azureml 示例存储库中的custom_signal

有关注册 Azure 机器学习组件的说明,请参阅 工作区中的“注册”组件

在 Azure 机器学习中创建和注册自定义信号组件后,请执行以下步骤来设置模型监视:

  1. 在 YAML 文件中创建类似于以下定义的监视定义。 使用此定义之前,请调整以下设置和任何其他设置以满足环境的需求:

    • 对于 component_id,请使用格式为 azureml:<custom-signal-name>:1.0.0 的值。
    • 在输入数据部分的path,请使用格式为azureml:<production-data-asset-name>:<version>的值。
    • 对于 pre_processing_component
      • 如果使用 数据收集器 收集数据,则可以省略该 pre_processing_component 属性。
      • 如果不使用数据收集器,并且想使用组件预处理生产数据,请使用 azureml:<custom-preprocessor-name>:<custom-preprocessor-version> 格式的值。
    • 在下方 emails,列出要用于通知的电子邮件地址。
    # custom-monitoring.yaml
    $schema:  http://azureml/sdk-2-0/Schedule.json
    name: my-custom-signal
    trigger:
      type: recurrence
      frequency: day # Possible frequency values include "minute," "hour," "day," "week," and "month."
      interval: 7 # Monitoring runs every day when you use the value 1.
    create_monitor:
      compute:
        instance_type: "standard_e4s_v3"
        runtime_version: "3.3"
      monitoring_signals:
        customSignal:
          type: custom
          component_id: azureml:my_custom_signal:1.0.0
          input_data:
            production_data:
              input_data:
                type: uri_folder
                path: azureml:my_production_data:1
              data_context: test
              data_window:
                lookback_window_size: P30D
                lookback_window_offset: P7D
              pre_processing_component: azureml:custom_preprocessor:1.0.0
          metric_thresholds:
            - metric_name: std_deviation
              threshold: 2
      alert_notification:
        emails:
          - abc@example.com
    
  2. 运行以下命令以创建模型:

    az ml schedule create -f ./custom-monitoring.yaml
    

解释监视结果

配置模型监视器并完成第一次运行后,可以在 Azure 机器学习工作室中查看结果。

  1. 在工作室的 “管理”下,选择“ 监视”。 在“监视”页中,选择模型监视器的名称以查看其概述页。 本页显示监视模型、终结点和部署。 它还提供有关配置的信号的详细信息。 下图显示了包含数据偏移和数据质量信号的监视概述页。

    模型监视页面的屏幕截图,其中突出显示了“监视”。可以看到两个信号的失败率和通过率信息。

  2. 查看概述页的 “通知 ”部分。 在本部分中,可以看到每个信号的功能违反了其相应指标配置的阈值。

  3. “信号 ”部分中,选择 data_drift 以查看有关数据偏移信号的详细信息。 在详细信息页上,可以看到监视配置包含的每个数值和分类功能的数据偏移指标值。 如果你的监视器有多个运行,则会看到每个特征的趋势线。

    显示有关数据偏移信号的详细信息的屏幕截图,包括特征数据偏移图表和特征细分。

  4. 在详细信息页上,选择单个功能的名称。 打开一个详细视图,显示生产分布与参考分布的对比。 您还可以使用此视图跟踪该功能随时间推移的变化。

    显示有关功能的详细信息的屏幕截图,包括直方图和显示随时间偏移的图表。

  5. 返回到监视概述页。 在 “信号 ”部分中,选择 data_quality 以查看有关此信号的详细信息。 在此页上,可以看到所监视的每个功能的 null 值速率、超出边界速率和数据类型错误率。

    显示数据质量信号详细信息(包括失败率、通过率以及特征细分)的屏幕截图。

模型监视是一个持续的过程。 使用 Azure 机器学习模型监视时,可以配置多个监视信号,以便大致了解生产中模型的性能。

将 Azure 机器学习模型监视与事件网格集成

使用 事件网格时,可以配置 Azure 机器学习模型监视生成的事件以触发应用程序、进程和 CI/CD 工作流。 可以通过各种事件处理程序(例如 Azure 事件中心、Azure Functions 和 Azure 逻辑应用)使用事件。 当监视器检测到偏移时,可以通过编程方式执行作,例如运行机器学习管道来重新训练模型并重新部署模型。

若要将 Azure 机器学习模型监视与事件网格集成,请执行以下步骤。

创建系统主题

如果没有用于监视的事件网格系统主题,请创建一个。 有关说明,请参阅 Azure 门户中的“创建、查看和管理事件网格系统”主题

创建事件订阅

  1. 在 Azure 门户中,转到 Azure 机器学习工作区。

  2. 选择事件,然后选择事件订阅

    显示 Azure 机器学习工作区的“事件”页的屏幕截图。突出显示了事件和事件订阅。

  3. “名称”旁边,输入事件订阅的名称,例如 MonitoringEvent

  4. “事件类型”下,仅选择 “运行状态已更改”。

    警告

    仅为事件类型选择 运行状态已更改。 不要选择“检测到数据集偏移”,它适用于数据偏移 v1,而不是 Azure 机器学习模型监视。

  5. 选择“ 筛选器 ”选项卡。在 “高级筛选器”下,选择“ 添加新筛选器”,然后输入以下值:

    • 在“密钥”下,输入“data.RunTags.azureml_modelmonitor_threshold_breached”
    • 在“运算符”下,选择“字符串包含”
    • 下,输入由于一个或多个特性违反指标阈值而导致失败

    Azure 门户中“创建事件说明”页的屏幕截图。突出显示了“筛选器”选项卡和“键”、“运算符”和“值”下的值。

    使用此筛选器时,当 Azure 机器学习工作区中的任何监视器的运行状态发生更改时,将生成事件。 运行状态可以从已完成更改为失败或从失败更改为已完成。

    若要在监视级别进行筛选,请再次选择“ 添加新筛选器 ”,然后输入以下值:

    • 在“密钥”下,输入“data.RunTags.azureml_modelmonitor_threshold_breached”
    • 在“运算符”下,选择“字符串包含”
    • 在“值”下,输入要为其筛选事件的监视器信号的名称,例如 credit_card_fraud_monitor_data_drift。 输入的名称必须与监视信号的名称匹配。 在筛选中使用的任何信号都应采用包含监视器名称和信号说明的格式 <monitor-name>_<signal-description> 的名称。
  6. 选择基本选项卡。配置您希望用作事件处理端点的终结点,例如事件中心。

  7. 选择“创建”以创建事件订阅。

查看事件

捕获事件后,可以在事件处理程序终结点页上查看它们:

使用事件中心终结点和 Azure 机器学习工作区主题的事件订阅页的屏幕截图。图表可见。

还可以在 Azure Monitor 的“指标”选项卡中查看事件:

“监视指标”页的屏幕截图。折线图显示过去一小时内共有三个事件。