Supervisa el desvío y el sesgo de los atributos

En esta página, se describe cómo crear, administrar y, también, interpretar los resultados de los trabajos de Model Monitoring para modelos implementados en los extremos de predicción en línea. Vertex AI Model Monitoring admite el sesgo de atributos y la detección de desvíos para atributos de entrada categóricos y numéricos.

Cuando un modelo está en producción con Model Monitoring habilitado, sus solicitudes de predicción entrantes se registran en una tabla de BigQuery en tu proyecto de Google Cloud. Luego, los valores del atributo de entrada contenidos en las solicitudes registradas se analizan en busca de sesgos o desvíos.

Puedes habilitar la detección de sesgo si proporcionas el conjunto de datos de entrenamiento original para tu modelo. De lo contrario, deberás habilitar la detección de desvío. Para obtener más información, consulta Introducción a Vertex AI Model Monitoring.

Requisitos previos

Para usar la supervisión de modelos, completa lo siguiente:

  1. Tener un modelo disponible en Vertex AI que sea de AutoML tabular o tipo de entrenamiento personalizado importado.

  2. Si habilitas la detección de sesgo, sube los datos de entrenamiento a Cloud Storage o BigQuery y obtén el vínculo del URI a los datos.

Crea un trabajo de Model Monitoring

Para configurar la detección de sesgo o de desvío, crea un trabajo de supervisión de la implementación del modelo:

Console

Para crear un trabajo de supervisión de la implementación del modelo con Cloud Console, crea un extremo:

  1. En Google Cloud Console, ve a la página Extremos de Vertex AI.

    Ir a Endpoints

  2. Haz clic en Crear extremo.

  3. En el panel Nuevo extremo, asigna un nombre al extremo y configura una región.

  4. Haz clic en Continuar.

  5. En el campo Nombre del modelo, selecciona un entrenamiento personalizado importado o un modelo tabular de AutoML.

  6. En el campo Versión, selecciona una versión para tu modelo.

  7. Haz clic en Continuar.

  8. En el panel Supervisión de modelos, selecciona Habilitar la supervisión de modelos para este extremo. Cualquier configuración de supervisión que establezcas se aplica a todos los modelos implementados en el extremo.

  9. Ingresa un nombre visible de trabajo de Monitoring.

  10. Haz clic en Continuar. Se abrirá el panel Objetivo de supervisión con opciones para el sesgo o la detección de desvío:

    Detección de sesgos

    1. Selecciona Detección de sesgos entre el entrenamiento y la entrega.
    2. En Fuente de datos de entrenamiento, proporciona una fuente de datos de entrenamiento.
    3. En Columna objetivo, ingresa el nombre de la columna de los datos de entrenamiento que el modelo está entrenado para predecir. Este campo se excluye del análisis de supervisión.
    4. Opcional: En Límites de alerta, especifica los límites para activar las alertas. Para obtener información sobre cómo dar formato a los umbrales, mantén el puntero sobre el ícono de ayuda .
    5. Haga clic en Crear.

    Detección de desvíos

    1. Selecciona Detección de desvío de predicción.
    2. Opcional: En Límites de alerta, especifica los límites para activar las alertas. Para obtener información sobre cómo dar formato a los umbrales, mantén el puntero sobre el ícono de ayuda .
    3. Haga clic en Crear.

gcloud

Para crear un trabajo de supervisión de la implementación del modelo con la CLI de gcloud, primero implementa tu modelo en un extremo.

La configuración de un trabajo de supervisión se aplica a todos los modelos implementados en un extremo.

Ejecuta el comando gcloud ai model-monitoring-jobs create:

gcloud ai model-monitoring-jobs create \
  --project=PROJECT_ID \
  --region=REGION \
  --display-name=MONITORING_JOB_NAME \
  --emails=EMAIL_ADDRESS_1,EMAIL_ADDRESS_2 \
  --endpoint=ENDPOINT_ID \
  --feature-thresholds=FEATURE_1=THRESHOLD_1,FEATURE_2=THRESHOLD_2 \
  --prediction-sampling-rate=SAMPLING_RATE \
  --monitoring-frequency=MONITORING_FREQUENCY \
  --target-field=TARGET_FIELD \
  --bigquery-uri=BIGQUERY_URI

Donde:

  • PROJECT_ID es el ID de tu proyecto de Google Cloud. Por ejemplo, my-project.

  • REGION es la ubicación de tu trabajo de supervisión. Por ejemplo, us-central1.

  • MONITORING_JOB_NAME es el nombre de tu trabajo de supervisión. Por ejemplo, my-job.

  • EMAIL_ADDRESS es la dirección de correo electrónico en la que deseas recibir alertas de Model Monitoring. Por ejemplo, example@example.com.

  • ENDPOINT_ID es el ID del extremo en el que se implementa el modelo. Por ejemplo, 1234567890987654321.

  • FEATURE_1=THRESHOLD_1 es el límite de alertas de cada función que deseas supervisar (opcional). Por ejemplo, housing-latitude=0.4. Se registra una alerta cuando la distancia estadística entre la distribución de los atributos de entrada y el modelo de referencia correspondiente supera el umbral especificado. De forma predeterminada, se supervisa cada atributo categórico y numérico, con valores de umbral de 0.3.

  • SAMPLING_RATE es la fracción de las solicitudes de predicción entrantes que deseas registrar (opcional). Por ejemplo, 0.5. Si no se especifica, Model Monitoring registra todas las solicitudes de predicción.

  • MONITORING_FREQUENCY es la frecuencia con la que deseas que el trabajo de supervisión se ejecute en las entradas registradas recientemente (opcional). El nivel de detalle mínimo es 1 hora. El valor predeterminado es de 24 horas. Por ejemplo, 2.

  • (obligatorio para la detección de sesgo) TARGET_FIELD es el campo que predice el modelo. Este campo se excluye del análisis de supervisión. Por ejemplo, housing-price.

  • (obligatorio para la detección de sesgo) BIGQUERY_URI es obligatorio para el conjunto de datos de entrenamiento almacenado en BigQuery y usa el siguiente formato:

    bq://\PROJECT.\DATASET.\TABLE
    

    Por ejemplo, bq://\my-project.\housing-data.\san-francisco.

    Puedes reemplazar la marca bigquery-uri por vínculos alternativos a tu conjunto de datos de entrenamiento:

    • Para un archivo CSV almacenado en un bucket de Cloud Storage, usa --data-format=csv --gcs-uris=gs://BUCKET_NAME/OBJECT_NAME.

    • Para un archivo TFRecord almacenado en un bucket de Cloud Storage, usa --data-format=tf-record --gcs-uris=gs://BUCKET_NAME/OBJECT_NAME.

    • Para un conjunto de datos administrado de AutoML tabular, usa --dataset=DATASET_ID.

Python SDK

Para obtener información sobre el flujo de trabajo de la API de Model Monitoring de modelo de extremo a extremo, consulta el notebook de ejemplo.

API de REST

Para obtener más información sobre la detección de sesgo o la detección de desvío, consulta projects.locations.modelDeploymentMonitoringJobs en la referencia de REST de Vertex AI.

(Opcional) Actualiza un trabajo de Model Monitoring

Puedes ver, actualizar, pausar y borrar un trabajo de Model Monitoring:

Console

Usa Cloud Console para ver y actualizar los parámetros de un trabajo de Model Monitoring. Para pausar y borrar trabajos de Model Monitoring, usa la CLI de gcloud.

  1. En Google Cloud Console, ve a la página Extremos de Vertex AI.

    Ir a Endpoints

  2. Haz clic en el nombre del extremo que deseas editar.

  3. Haz clic en Editar la configuración.

  4. En el panel Editar extremo, selecciona Objetivos de supervisión o Supervisión de modelos.

  5. Actualiza los parámetros que deseas cambiar.

  6. Haz clic en Actualizar.

gcloud

Ejecuta el siguiente comando:

gcloud ai model-monitoring-jobs COMMAND MONITORING_JOB_NAME \
  --PARAMETER=VALUE --project=PROJECT_ID --region=REGION

Donde:

  • COMMAND es el comando que deseas realizar en el trabajo de supervisión. Por ejemplo, update, pause, resume o delete. Para obtener más información, consulta la referencia de la CLI de gcloud.

  • MONITORING_JOB_NAME es el nombre de tu trabajo de supervisión. Por ejemplo, my-job.

  • PARAMETER=VALUE es el parámetro que deseas actualizar (opcional). Esta marca solo es obligatoria cuando se usa el comando update. Por ejemplo, monitoring-frequency=2.

  • PROJECT_ID es el ID de tu proyecto de Google Cloud. Por ejemplo, my-project.

  • REGION es la ubicación de tu trabajo de supervisión. Por ejemplo, us-central1.

(Opcional) Configura alertas para el trabajo de Model Monitoring

Puedes supervisar y depurar el trabajo de Model Monitoring mediante alertas. Model Monitoring te notifica automáticamente sobre las actualizaciones de trabajos a través de correo electrónico, pero también puedes configurar alertas a través de Cloud Logging.

Correo electrónico

Para los siguientes eventos, Model Monitoring envía una notificación por correo electrónico a cada dirección de correo electrónico especificada cuando se creó el trabajo de Model Monitoring:

  • Cada vez que se configura la detección de desvío o desvío
  • Cada vez que se actualiza una configuración de trabajo de Model Monitoring existente
  • Cada vez que falla una canalización programada

Cloud Logging

Para habilitar los registros de canalización, establece el campo enableMonitoringPipelineLogs en tu configuración de modelDeploymentMonitoringJobs como true. Los registros de depuración se escriben en Cloud Logging cuando se configura el trabajo de supervisión y en cada intervalo de supervisión.

Los registros de depuración se escriben en Cloud Logging con el nombre de registro: model_monitoring. Por ejemplo:

logName="projects/model-monitoring-demo/logs/aiplatform.googleapis.com%2FFmodel_monitoring" resource.labels.model_deployment_monitoring_job=6680511704087920640

Aquí hay un ejemplo de una entrada de registro de progreso del trabajo:

{
"insertId": "e2032791-acb9-4d0f-ac73-89a38788ccf3@a1",
"jsonPayload": {
  "@type": "type.googleapis.com/google.cloud.aiplatform.logging.ModelMonitoringPipelineLogEntry",
  "statusCode": {
    "message": "Scheduled model monitoring pipeline finished successfully for job projects/677687165274/locations/us-central1/modelDeploymentMonitoringJobs/6680511704087920640"
  },
  "modelDeploymentMonitoringJob": "projects/677687165274/locations/us-central1/modelDeploymentMonitoringJobs/6680511704087920640"
},
"resource": {
  "type": "aiplatform.googleapis.com/ModelDeploymentMonitoringJob",
  "labels": {
    "model_deployment_monitoring_job": "6680511704087920640",
    "location": "us-central1",
    "resource_container": "projects/677687165274"
  }
},
"timestamp": "2022-02-04T15:33:54.778883Z",
"severity": "INFO",
"logName": "projects/model-monitoring-demo/logs/staging-aiplatform.sandbox.googleapis.com%2Fmodel_monitoring",
"receiveTimestamp": "2022-02-04T15:33:56.343298321Z"
}

Configura alertas para anomalías en las funciones

Model Monitoring detecta una anomalía cuando se excede el límite establecido para una función. Model Monitoring te notifica de forma automática sobre las anomalías detectadas por correo electrónico, pero también puedes configurar alertas a través de Cloud Logging.

Correo electrónico

En cada intervalo de supervisión, si se excede el umbral de al menos una función, Model Monitoring envía una alerta por correo electrónico a cada dirección de correo electrónico especificada cuando se creó el trabajo de Model Monitoring. El mensaje de correo electrónico incluye lo siguiente:

  • La hora en la que se ejecutó el trabajo de supervisión.
  • El nombre del atributo que tiene sesgo o desvío.
  • El umbral de alertas y la medición de distancia estadística registrada.

Cloud Logging

Para habilitar las alertas de Cloud Logging, configura el campo enableLogging de la configuración de ModelMonitoringAlertConfig como true.

En cada intervalo de supervisión, se escribe un registro de anomalías en Cloud Logging si la distribución de al menos una función supera el umbral de esa función. Puedes reenviar registros a cualquier servicio compatible con Cloud Logging, como Pub/Sub.

Las anomalías se escriben en Cloud Logging con el nombre de registro: model_monitoring_anomaly. Por ejemplo:

logName="projects/model-monitoring-demo/logs/aiplatform.googleapis.com%2FFmodel_monitoring_anomaly" resource.labels.model_deployment_monitoring_job=6680511704087920640

Este es un ejemplo de una entrada de registro de anomalías:

{
"insertId": "b0e9c0e9-0979-4aff-a5d3-4c0912469f9a@a1",
"jsonPayload": {
  "anomalyObjective": "RAW_FEATURE_SKEW",
  "endTime": "2022-02-03T19:00:00Z",
  "featureAnomalies": [
    {
      "featureDisplayName": "age",
      "deviation": 0.9,
      "threshold": 0.7
    },
    {
      "featureDisplayName": "education",
      "deviation": 0.6,
      "threshold": 0.3
    }
  ],
  "totalAnomaliesCount": 2,
  "@type": "type.googleapis.com/google.cloud.aiplatform.logging.ModelMonitoringAnomaliesLogEntry",
  "startTime": "2022-02-03T18:00:00Z",
  "modelDeploymentMonitoringJob": "projects/677687165274/locations/us-central1/modelDeploymentMonitoringJobs/6680511704087920640",
  "deployedModelId": "1645828169292316672"
},
"resource": {
  "type": "aiplatform.googleapis.com/ModelDeploymentMonitoringJob",
  "labels": {
    "model_deployment_monitoring_job": "6680511704087920640",
    "location": "us-central1",
    "resource_container": "projects/677687165274"
  }
},
"timestamp": "2022-02-03T19:00:00Z",
"severity": "WARNING",
"logName": "projects/model-monitoring-demo/logs/staging-aiplatform.sandbox.googleapis.com%2Fmodel_monitoring_anomaly",
"receiveTimestamp": "2022-02-03T19:59:52.121398388Z"
}

Analiza datos de sesgo y desvío

Puedes usar Cloud Console para visualizar las distribuciones de cada atributo supervisado y conocer qué cambios generaron un sesgo o un desvío con el tiempo. Puedes ver las distribuciones de valores de atributos como un histograma.

Console

  1. Para navegar a los histogramas de distribución de características en Cloud Console, ve a la página Extremos.

    Ir a Endpoints

  2. En la página Endpoints, haz clic en el extremo que deseas analizar.

  3. En la página de detalles del extremo que seleccionaste, hay una lista de todos los modelos implementados en ese extremo. Haz clic en el nombre de un modelo para analizar.

  4. La página de detalles del modelo enumera los atributos de entrada del modelo, junto con información pertinente, como el umbral de alertas para cada atributo y la cantidad de alertas anteriores del atributo.

  5. Para analizar un atributo, haz clic en su nombre. En una página, se muestran los histogramas de distribución de atributos para ese atributo.

    Para cada función supervisada, puedes ver las distribuciones de los 50 trabajos de supervisión más recientes en Cloud Console. Para la detección de sesgos, la distribución de los datos de entrenamiento se muestra justo al lado de la distribución de datos de entrada:

    Histogramas que muestran un ejemplo de distribución de datos de entrada y distribución de datos de entrenamiento para la detección de sesgos.

    La visualización de la distribución de datos como histogramas te permite enfocarte con rapidez en los cambios que ocurrieron en los datos. Después, puedes decidir ajustar la canalización de generación de atributos o volver a entrenar el modelo.

¿Qué sigue?