ModelDataCollector 类

定义可用于将 Azure 机器学习 AKS Web 服务部署中的数据收集到 Blob 存储的模型数据收集器。

使用 ModelDataCollector 类可以为 Azure 机器学习 AKS 部署中的模型定义数据收集器。 数据收集器对象可用于将模型数据(例如输入和预测)收集到工作区的 Blob 存储中。 在部署中启用模型数据收集后,收集的数据将在以下容器路径中显示为 csv 文件:/modeldata/{workspace_name}/{webservice_name}/{model_name}/{model_version}/{designation}/{year}/{month}/{day}/{collection_name}.csv

ModelDataCollector 构造函数。

启用模型数据收集后,数据将发送到以下容器路径:/modeldata/{workspace}/{webservice_name}/{model_name}/{model_version}/{指定}/{year}/{month}/{day}/{collection_name}.csv

继承
builtins.object
ModelDataCollector

构造函数

ModelDataCollector(model_name, designation='default', feature_names=None, workspace='default/default/default', webservice_name='default', model_version='default', collection_name='default')

参数

名称 说明
model_name
必需
str

要为其收集数据的模型的名称。

designation
str

数据收集位置的唯一指定。 支持的指定为“输入”、“预测”、“标签”、“信号”和“常规”。

默认值: default
feature_names

提供时成为 csv 标头的功能名称列表。

默认值: None
workspace
str

Azure 机器学习工作区的标识符,格式为 {subscription_id}/{resource_group}/{workspace_name}。 通过 Azure 机器学习操作模型时,会自动填充此内容。

默认值: default/default/default
webservice_name
str

此模型当前部署到的 Web 服务的名称。 通过 Azure 机器学习操作模型时,会自动填充此内容。

默认值: default
model_version
str

模型的版本。 通过 Azure 机器学习操作模型时,会自动填充此内容。

默认值: default
collection_name
str

ModelDataCollector 将数据收集到的文件的名称。 此参数仅考虑用于“信号”和“常规”指定。 对于其他类型的指定,指定名称用作文件名。

默认值: default

注解

目前,ModelDataCollector 仅适用于 Azure 机器学习 AKS 部署。 若要在部署中收集模型数据,需要执行以下步骤:

  • 更新 entry_script 映像来添加 ModelDataCollector 对象和 collect 语句。 可以在一个脚本中定义多个 ModelDataCollector 对象,例如,一个用于输入,一个用于同一模型的预测。 若要更详细地了解如何定义和使用 entry_script息,请参阅以下类:InferenceConfig

  • 在 AKS 模型部署步骤中设置 enable_data_collection 标志。 部署模型后,此标志可用于打开/关闭模型数据收集,无需修改 entry_script。 若要更详细地了解如何配置模型部署,请参阅以下类:AksWebservice

以下代码片段显示了 entry_script 在 ModelDataCollection 中的呈现效果:


   from azureml.monitoring import ModelDataCollector

   def init():
       global inputs_dc

       # Define your models and other scoring related objects
       # ...

       # Define input data collector to model "bestmodel". You need to define one object per model and
       # designation. For the sake of simplicity, we are only defining one object here.
       inputs_dc = ModelDataCollector(model_name="bestmodel", designation="inputs", feature_names=["f1", "f2"])

   def run(raw_data):
       global inputs_dc

       # Convert raw_data to proper format and run prediction
       # ...

       # Use inputs_dc to collect data. For any data that you want to collect, you need to call collect method
       # on respective ModelDataCollector objects. For the sake of simplicity, we are only working on a single
       # object.
       inputs_dc.collect(input_data)

上面的示例说明了有关 ModelDataCollector 的一些信息。 首先,按模型和指定定义对象,在本例中为“最佳模型”和“输入”。 其次,ModelDataCollector 需要表格数据作为输入,并以 csv 文件的形式维护数据。 可提供可选特征名称来设置这些 csv 文件的标题。

以下代码片段显示了如何在模型部署期间启用 ModelDataCollector:


   webservice_config = AksWebservice.deploy_configuration(collect_model_data=True)
   Model.deploy(ws, "myservice", [model], inference_config, webservice_config, aks_cluster)

部署 Azure 机器学习 AKS Web 服务并在服务上运行评分后,收集的数据将显示在工作区的存储帐户中。 为便于访问和使用ModelDataCollector 将对数据进行分区。 所有数据都将收集到“modeldata”存储容器下。 下面是分区格式:

/modeldata/{workspace_name}/{webservice_name}/{model_name}/{model_version}/{designation}/{year}/{month}/{day}/{collection_name}.csv

请注意,文件名中的 collection_name 将仅考虑用于“信号”和“常规”指定。 对于“输入”、“预测”和“标签”,文件名将设置为 {designation}.csv。

方法

add_correlations

帮助程序函数,用于将关联标头和值添加到给定的输入数据。

collect

收集数据以进行存储。

add_correlations

帮助程序函数,用于将关联标头和值添加到给定的输入数据。

add_correlations(input_data, correlations)

参数

名称 说明
input_data
必需

要向其添加关联标头和值的数据。

correlations
必需

从 collect() 函数返回的关联标头和值。

返回

类型 说明

添加了关联标头和值的 input_data。

注解

调用 collect 后,它将返回一组关联标头和值。 其中包括元数据,例如请求 ID、时间戳,以及由 ModelDataCollector 生成或作为参数提供的唯一相关 ID。 这些值可用于稍后分析和关联不同类型的数据。 下面的示例演示如何向输入数据和预测数据添加关联。 请注意,默认情况下,“输入”指定类型具有关联数据。


   # Define inputs_dc and predictions_dc for the same model and "inputs" and "predictions" designations
   # respectively
   # ...

   correlations = inputs_dc.collect(input_data)
   predictions_data = predictions_dc.add_correlations(predictions_data, correlations)
   predictions_dc.collect(predictions_data)

collect

收集数据以进行存储。

collect(input_data, user_correlation_id='')

参数

名称 说明
input_data
必需

要收集的数据。 对于数据帧类型,如果存在包含特征名称的标头,则数据目标中将包含此信息,无需在 ModelDataCollector 构造函数中显式传特征名称。

user_correlation_id
必需
str

稍后将使用可选的相关 ID 来关联此数据。

返回

类型 说明

包含关联标头和值的字典。

属性

AML_DC_BOUNDARY_HEADER

AML_DC_BOUNDARY_HEADER = '$aml_dc_boundary'

AML_DC_CORRELATION_HEADER

AML_DC_CORRELATION_HEADER = '$aml_dc_correlation_id'

AML_DC_SCORING_TIMESTAMP_HEADER

AML_DC_SCORING_TIMESTAMP_HEADER = '$aml_dc_scoring_timestamp'

AML_MODEL_NAME_HEADER

AML_MODEL_NAME_HEADER = '$aml_model_name'

AML_MODEL_VERSION_HEADER

AML_MODEL_VERSION_HEADER = '$aml_model_version'

AML_REQUEST_ID_HEADER

AML_REQUEST_ID_HEADER = '$aml_request_id'

AML_SERVICE_NAME_HEADER

AML_SERVICE_NAME_HEADER = '$aml_service_name'

AML_WORKSPACE_HEADER

AML_WORKSPACE_HEADER = '$aml_workspace'

dllpath

dllpath = 'C:\\hostedtoolcache\\windows\\Python\\3.9.13\\x64\\lib\\site-packages\\azureml\\monitoring\\tools\\modeldatacollector\\lib\\native\\Windows'