0 / 0
Go back to the English version of the documentation
创建自定义评估和衡量标准
Last updated: 2024年11月22日
创建自定义评估和衡量标准

要创建定制评估,请选择一组定制度量,以定量跟踪模型部署和业务应用程序。 您可以定义这些自定义指标,并与其他评估类型生成的指标一起使用。

您可以使用下列其中一种方法来管理定制评估和度量:

使用 Python SDK 管理定制度量

要使用 Python SDK 管理定制度量,必须执行以下任务:

  1. 注册具有度量定义的定制监视器
  2. 启用定制监视器
  3. 存储度量值

以下高级教程显示如何执行此操作:

可以随时禁用并再次启用定制监视。 如果不再需要定制监视器,可以将其移除。

有关更多信息,请参阅 Python SDK 文档

步骤 1:使用指标定义注册定制监视器。

必须先注册定制监视器 (这是跟踪度量的处理器) ,然后才能开始使用定制度量。 您还必须定义指标本身。

  1. 使用 get_definition(monitor_name) 方法导入 MetricTag 对象。
  2. 使用 metrics 方法定义指标,这需要 namethresholdstype 值。
  3. 使用 tags 方法定义元数据。

以下代码来自先前提及的有效样本 Notebook:

def get_definition(monitor_name):
    monitor_definitions = wos_client.monitor_definitions.list().result.monitor_definitions
   
    for definition in monitor_definitions:
        if monitor_name == definition.entity.name:
            return definition
   
    return None
 
 
monitor_name = 'my model performance'
metrics = [MonitorMetricRequest(name='sensitivity',
                                thresholds=[MetricThreshold(type=MetricThresholdTypes.LOWER_LIMIT, default=0.8)]),
          MonitorMetricRequest(name='specificity',
                                thresholds=[MetricThreshold(type=MetricThresholdTypes.LOWER_LIMIT, default=0.75)])]
tags = [MonitorTagRequest(name='region', description='customer geographical region')]
 
existing_definition = get_definition(monitor_name)
 
if existing_definition is None:
    custom_monitor_details = wos_client.monitor_definitions.add(name=monitor_name, metrics=metrics, tags=tags, background_mode=False).result
else:
    custom_monitor_details = existing_definition

要检查您的工作方式,请运行 client.data_mart.monitors.list() 命令以查看是否正确配置了新创建的监视器和度量值。

您也可以通过运行以下命令来获取监视器标识:

custom_monitor_id = custom_monitor_details.metadata.id
 
print(custom_monitor_id)

要了解更详细的情况,请运行以下命令:

custom_monitor_details = wos_client.monitor_definitions.get(monitor_definition_id=custom_monitor_id).result
print('Monitor definition details:', custom_monitor_details)

步骤 2:启用定制监视器。

接下来,必须为定制监视器启用预订。 这将激活监视器并设置阈值。

  1. 使用 target 方法导入 Threshold 对象。
  2. 使用 thresholds 方法设置指标 lower_limit 值。 提供 metric_id 值作为其中一个参数。 如果您不记得,那么可以始终使用 custom_monitor_details 命令来获取详细信息,如上例中所示。

以下代码来自先前提及的有效样本 Notebook:

target = Target(
        target_type=TargetTypes.SUBSCRIPTION,
        target_id=subscription_id
    )
 
thresholds = [MetricThresholdOverride(metric_id='sensitivity', type = MetricThresholdTypes.LOWER_LIMIT, value=0.9)]
 
custom_monitor_instance_details = wos_client.monitor_instances.create(
            data_mart_id=data_mart_id,
            background_mode=False,
            monitor_definition_id=custom_monitor_id,
            target=target
).result

要检查配置详细信息,请使用 subscription.monitoring.get_details(monitor_uid=monitor_uid) 命令。

步骤 3:存储指标值。

您必须将自定义指标存储或保存到服务实例所在的区域。

  1. 使用 metrics 方法设置要存储的指标。
  2. 使用 subscription.monitoring.store_metrics 方法落实指标。

以下代码来自先前提及的有效样本 Notebook:

from datetime import datetime, timezone, timedelta
from ibm_watson_openscale.base_classes.watson_open_scale_v2 import MonitorMeasurementRequest
custom_monitoring_run_id = "11122223333111abc"
measurement_request = [MonitorMeasurementRequest(timestamp=datetime.now(timezone.utc),
                                                 metrics=[{"specificity": 0.78, "sensitivity": 0.67, "region": "us-south"}], run_id=custom_monitoring_run_id)]
print(measurement_request[0])
 
published_measurement_response = wos_client.monitor_instances.measurements.add(
    monitor_instance_id=custom_monitor_instance_id,
    monitor_measurement_request=measurement_request).result
published_measurement_id = published_measurement_response[0]["measurement_id"]
print(published_measurement_response)

要列出所有定制监视器,请运行以下命令:

published_measurement = wos_client.monitor_instances.measurements.get(monitor_instance_id=custom_monitor_instance_id, measurement_id=published_measurement_id).result
print(published_measurement)

使用watsonx.governance管理自定义指标

步骤 1: 添加度量组

  1. 配置 选项卡上,单击 添加度量组
  2. 如果要手动配置度量组,请单击 配置新组
    a. 指定度量组的名称和描述。
    指定的名称长度必须小于或等于 48 个字符。
    b. 单击 输入参数 磁贴上的 编辑 图标,并指定输入参数的详细信息。
    您指定的参数名称必须与度量标准 API 中指定的参数名称相匹配。
    c. 如果需要该参数来配置定制监视器,请选中 必需参数 复选框。
    d. 单击添加
    添加输入参数后,单击 下一步
    e. 选择评估支持的模型类型,然后单击 下一步
    f. 如果不想指定评估调度,请单击 保存
    g. 如果要指定评估调度,请单击切换开关。
    必须指定评估调度的时间间隔,然后单击 保存。 h. 单击 添加度量 并指定度量详细信息。
    单击 保存
  3. 如果要使用 JSON 文件配置度量组,请单击 从文件导入
    上载 JSON 文件,然后单击 导入

步骤 2: 添加度量端点

  1. 度量端点 部分中,单击 添加度量端点
  2. 指定度量值端点的名称和描述。
  3. 单击 连接 磁贴上的 编辑 图标,并指定连接详细信息。
    单击 下一步
  4. 选择要与度量端点关联的度量组,然后单击 保存

步骤 3: 配置定制监视器

  1. 在 " 洞察仪表板 " 页面上,选择模型部署磁贴上的 配置监视器
  2. 评估 部分中,选择添加的度量组的名称。
  3. 选择 度量端点 磁贴上的 编辑 图标。
  4. 选择度量值端点,然后单击 下一步
    如果不想使用度量值端点,请选择
  5. 使用切换来指定要用于评估模型并提供阈值的度量。
    单击 下一步
  6. 指定输入参数的值。 如果选择了 JSON 作为度量组的数据类型,请添加 JSON 数据。
    单击 下一步

现在,您可以使用定制监视器来评估模型。

访问和可视化定制指标

要访问和可视化定制度量值,您可以使用编程接口。 以下高级教程显示如何执行此操作:

自定义指标的可视化显示在Insights控制面板上。

了解更多信息

复审评估结果

父主题: 配置模型评估

Generative AI search and answer
These answers are generated by a large language model in watsonx.ai based on content from the product documentation. Learn more