Creación de supervisores y métricas personalizados

Los supervisores personalizados consolidan un conjunto de métricas personalizadas que le permiten realizan un seguimiento, de forma cuantitativa, de cualquier aspecto del despliegue del modelo y de la aplicación empresarial. Puede definir métricas personalizadas y utilizarlas junto con las métricas estándar, como por ejemplo las métricas de equidad, rendimiento y calidad del modelo que se supervisan en IBM Watson OpenScale.

Para gestionar las métricas y los supervisores personalizados, debe utilizar la interfaz programática que forma parte del SDK de Python. De forma similar, puede almacenar métricas personalizadas en la despensa de datos de Watson OpenScale para acceder a ellas cuando sea necesario. Las métricas personalizadas también se visualizan en el panel de control de Watson OpenScale.

Gestión de métricas personalizadas

Para trabajar con métricas personalizadas, debe realizar las tareas siguientes:

  1. Registrar el supervisor personalizado con la definición de métricas.
  2. Habilitar el supervisor personalizado.
  3. Almacenar valores de métrica.

La siguiente guía de aprendizaje avanzada muestra cómo hacerlo:

Puede inhabilitar y habilitar de nuevo la supervisión personalizada en cualquier momento. Puede eliminar el supervisor personalizado si ya no lo necesita.

Para obtener más información, consulte la Documentación del SDK de Python.

Paso 1: Registrar el supervisor personalizado con la definición de métricas.

Antes de empezar a utilizar métricas personalizadas, debe registrar el supervisor personalizado, que es el procesador que realiza un seguimiento de las métricas. También debe definir las propias métricas.

  1. Utilice el método get_definition (monitor_name) para importar los objetos Metric y Tag.
  2. Utilice el método metrics para definir las métricas, que requieren valores de name, thresholds y type.
  3. Utilice el método tags para definir los metadatos.

El código siguiente procede del cuaderno de ejemplo de trabajo que se ha mencionado anteriormente:

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

Para comprobar cómo van las cosas, ejecute el mandato client.data_mart.monitors.list () para ver si el supervisor recién creado y las métricas se han configurado correctamente.

También puede obtener el ID de supervisor ejecutando el mandato siguiente:

custom_monitor_id = custom_monitor_details.metadata.id
 
print(custom_monitor_id)

Para obtener una visión más detallada, ejecute el mandato siguiente:

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

Paso 2: Habilitar el supervisor personalizado.

A continuación, debe habilitar el supervisor personalizado para la suscripción. Así se activa el supervisor y se establecen los umbrales.

  1. Utilice el método target para importar el objeto Threshold.
  2. Utilice el método thresholds para establecer el valor de la métrica lower_limit. Deberá proporcionar el valor metric_id como uno de los parámetros. Si no lo recuerda, siempre puede utilizar el mandato custom_monitor_details para obtener los detalles tal como se muestra en el ejemplo anterior.

El código siguiente procede del cuaderno de ejemplo de trabajo que se ha mencionado anteriormente:

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

Para comprobar los detalles de la configuración, utilice el mandato subscription.monitoring.get_details(monitor_uid=monitor_uid).

Paso 3: Almacenar valores de métrica.

Debe almacenar o guardar las métricas personalizadas en la región donde existe la instancia de Watson OpenScale.

  1. Utilice el método metrics para establecer qué métricas está almacenando.
  2. Utilice el método subscription.monitoring.store_metrics para confirmar las métricas.

El código siguiente procede del cuaderno de ejemplo de trabajo que se ha mencionado anteriormente:

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)

Para listar todos los supervisores personalizados, ejecute el mandato siguiente:

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

Acceder y visualizar métricas personalizadas

Para acceder a las métricas personalizadas y visualizarlas, puede utilizar la interfaz programática. La siguiente guía de aprendizaje avanzada muestra cómo hacerlo:

La visualización de las métricas personalizadas se muestra en el panel de control de Watson OpenScale.