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.objectModelDataCollector
构造函数
ModelDataCollector(model_name, designation='default', feature_names=None, workspace='default/default/default', webservice_name='default', model_version='default', collection_name='default')
参数
名称 | 说明 |
---|---|
model_name
必需
|
要为其收集数据的模型的名称。 |
designation
|
数据收集位置的唯一指定。 支持的指定为“输入”、“预测”、“标签”、“信号”和“常规”。 默认值: default
|
feature_names
|
提供时成为 csv 标头的功能名称列表。 默认值: None
|
workspace
|
Azure 机器学习工作区的标识符,格式为 {subscription_id}/{resource_group}/{workspace_name}。 通过 Azure 机器学习操作模型时,会自动填充此内容。 默认值: default/default/default
|
webservice_name
|
此模型当前部署到的 Web 服务的名称。 通过 Azure 机器学习操作模型时,会自动填充此内容。 默认值: default
|
model_version
|
模型的版本。 通过 Azure 机器学习操作模型时,会自动填充此内容。 默认值: default
|
collection_name
|
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
必需
|
稍后将使用可选的相关 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'