Funciones de monitorización

Vertex AI Feature Store te permite programar y ejecutar trabajos de monitorización de características para monitorizar datos de características, obtener estadísticas de características y detectar la deriva de características. Solo puede monitorizar los datos de las funciones si ha registrado su fuente de datos de funciones en el registro de funciones.

Para monitorizar los datos de las funciones, puede crear el recurso FeatureMonitor en un recurso FeatureGroup. Mientras creas el recurso FeatureMonitor, puedes configurar la programación de monitorización para que ejecute periódicamente tareas de monitorización en los datos de la función. También puedes ejecutar un trabajo de monitorización de funciones manualmente para monitorizar los datos de tus funciones fuera de la programación de monitorización.

Por cada trabajo de monitorización que se ejecute, Vertex AI Feature Store genera un recurso FeatureMonitorJob, que puedes recuperar para ver las estadísticas de las características y la información sobre las desviaciones detectadas en los datos de las características.

Antes de empezar

Antes de monitorizar las características con Vertex AI Feature Store, debes cumplir los requisitos previos que se indican en esta sección.

Registrar una fuente de datos de funciones

Registra tu fuente de datos de características de BigQuery en el Feature Registry creando grupos de características y características. Los recursos de FeatureMonitor que se usan para obtener y monitorizar estadísticas de funciones están asociados a grupos de funciones.

Autenticarse en Vertex AI

Autentícate en Vertex AI, a menos que ya lo hayas hecho.

Select the tab for how you plan to use the samples on this page:

Python

Para usar las Python muestras de esta página en un entorno de desarrollo local, instala e inicializa la CLI de gcloud y, a continuación, configura las credenciales predeterminadas de la aplicación con tus credenciales de usuario.

    Instala Google Cloud CLI.

    Si utilizas un proveedor de identidades (IdP) externo, primero debes iniciar sesión en la CLI de gcloud con tu identidad federada.

    If you're using a local shell, then create local authentication credentials for your user account:

    gcloud auth application-default login

    You don't need to do this if you're using Cloud Shell.

    If an authentication error is returned, and you are using an external identity provider (IdP), confirm that you have signed in to the gcloud CLI with your federated identity.

Para obtener más información, consulta Set up authentication for a local development environment.

REST

Para usar las muestras de la API REST de esta página en un entorno de desarrollo local, debes usar las credenciales que proporciones a la CLI de gcloud.

    Instala Google Cloud CLI.

    Si utilizas un proveedor de identidades (IdP) externo, primero debes iniciar sesión en la CLI de gcloud con tu identidad federada.

Para obtener más información, consulta el artículo Autenticarse para usar REST de la documentación sobre autenticación de Google Cloud .

Crear un monitor de funciones con una programación de monitorización

Para obtener y monitorizar estadísticas de funciones, crea un recurso FeatureMonitor especificando la programación para ejecutar periódicamente trabajos de monitorización de funciones y obtener estadísticas de las funciones registradas en el grupo de funciones.

Usa los siguientes ejemplos para crear un recurso FeatureMonitor. Para configurar varios horarios para el mismo grupo de funciones, debes crear varios recursos FeatureMonitor.

REST

Para crear un recurso FeatureMonitor y programar tareas de monitorización de funciones, envía una solicitud POST mediante el método featureMonitors.create.

Antes de usar los datos de la solicitud, haz las siguientes sustituciones:

  • LOCATION_ID: región en la que quieres crear el monitor de funciones, como us-central1.
  • PROJECT_ID: tu ID de proyecto.
  • FEATUREGROUP_NAME: el nombre del grupo de funciones en el que se configura la monitorización de funciones.
  • FEATURE_MONITOR_NAME: nombre del nuevo monitor de funciones que quieras crear.
  • FEATURE_ID_1 y FEATURE_ID_2: los IDs de las funciones que quieras monitorizar.
  • DRIFT_THRESHOLD_1 y DRIFT_THRESHOLD_2: umbrales de deriva de cada característica incluida en el monitor de características. El umbral de deriva se usa para detectar anomalías, como la deriva de las características. Introduce un valor del intervalo [0, 1). Si no introduce ningún valor, el umbral se define como 0.3 de forma predeterminada.
    Vertex AI Feature Store compara las instantáneas de ejecuciones consecutivas de trabajos de monitorización de características y calcula las desviaciones mediante la función ML.TFDV_VALIDATE de BigQuery. Para clasificar las anomalías, se usa la distancia L-infinito para las características categóricas y la divergencia de Jensen-Shannon para las características numéricas.
  • CRON: expresión de programación cron que representa la frecuencia con la que se ejecuta el trabajo de monitorización de la función. Para obtener más información, consulta cron.

Método HTTP y URL:

POST https://LOCATION_ID-aiplatform.googleapis.com/v1beta1/projects/PROJECT_ID/locations/LOCATION_ID/featureGroups/FEATUREGROUP_NAME/featureMonitors?feature_monitor_id=FEATURE_MONITOR_NAME

Cuerpo JSON de la solicitud:

{
  "feature_selection_config": {
    "feature_configs": [
      {"feature_id":"FEATURE_ID_1", "drift_threshold": "DRIFT_THRESHOLD_1" },
      {"feature_id":"FEATURE_ID_2", "drift_threshold": "DRIFT_THRESHOLD_2" }
    ],
  },
  "schedule_config": {
    "cron": "CRON"
  }
}

Para enviar tu solicitud, elige una de estas opciones:

curl

Guarda el cuerpo de la solicitud en un archivo llamado request.json y ejecuta el siguiente comando:

curl -X POST \
-H "Authorization: Bearer $(gcloud auth print-access-token)" \
-H "Content-Type: application/json; charset=utf-8" \
-d @request.json \
"https://LOCATION_ID-aiplatform.googleapis.com/v1beta1/projects/PROJECT_ID/locations/LOCATION_ID/featureGroups/FEATUREGROUP_NAME/featureMonitors?feature_monitor_id=FEATURE_MONITOR_NAME"

PowerShell

Guarda el cuerpo de la solicitud en un archivo llamado request.json y ejecuta el siguiente comando:

$cred = gcloud auth print-access-token
$headers = @{ "Authorization" = "Bearer $cred" }

Invoke-WebRequest `
-Method POST `
-Headers $headers `
-ContentType: "application/json; charset=utf-8" `
-InFile request.json `
-Uri "https://LOCATION_ID-aiplatform.googleapis.com/v1beta1/projects/PROJECT_ID/locations/LOCATION_ID/featureGroups/FEATUREGROUP_NAME/featureMonitors?feature_monitor_id=FEATURE_MONITOR_NAME" | Select-Object -Expand Content

Deberías recibir una respuesta JSON similar a la siguiente:

{
  "name": "projects/PROJECT_NUMBER/locations/LOCATION_ID/featureGroups/FEATUREGROUP_NAME/featureMonitors/FEATURE_MONITOR_NAME/operations/OPERATION_ID",
  "metadata": {
    "@type": "type.googleapis.com/google.cloud.aiplatform.v1beta1.CreateFeatureMonitorOperationMetadata",
    "genericMetadata": {
      "createTime": "2024-12-15T19:35:03.975958Z",
      "updateTime": "2024-12-15T19:35:03.975958Z"
    }
  }
}

Python

Antes de probar este ejemplo, sigue las Python instrucciones de configuración de la guía de inicio rápido de Vertex AI con bibliotecas de cliente. Para obtener más información, consulta la documentación de referencia de la API Python de Vertex AI.

Para autenticarte en Vertex AI, configura las credenciales predeterminadas de la aplicación. Para obtener más información, consulta el artículo Configurar la autenticación en un entorno de desarrollo local.

from google.cloud import aiplatform
from vertexai.resources.preview import feature_store

def create_feature_monitor_sample(
    project: str,
    location: str,
    existing_feature_group_id: str,
    feature_monitor_id: str,
    feature_selection_configs: List[Tuple[str, float]]
    schedule_config: str # Cron string. For example, "0 * * * *" indicates hourly execution.
):
    aiplatform.init(project="PROJECT_ID", location="LOCATION_ID")
    feature_group = feature_store.FeatureGroup("FEATUREGROUP_NAME")
    feature_monitor = feature_group.create_feature_monitor(
        name= "FEATURE_MONITOR_NAME",
        feature_selection_configs=[("FEATURE_ID_1", DRIFT_THRESHOLD_1),("FEATURE_ID_2", DRIFT_THRESHOLD_2)],
        schedule_config="CRON"
        )

Haz los cambios siguientes:

  • LOCATION_ID: región en la que quieres crear el monitor de funciones, como us-central1.
  • PROJECT_ID: tu ID de proyecto.
  • FEATUREGROUP_NAME: el nombre del grupo de funciones en el que se configura la monitorización de funciones.
  • FEATURE_MONITOR_NAME: nombre del nuevo monitor de funciones que quieras crear.
  • FEATURE_ID_1 y FEATURE_ID_2: los IDs de las funciones que quieras monitorizar.
  • DRIFT_THRESHOLD_1 y DRIFT_THRESHOLD_2: umbrales de deriva de cada característica incluida en el monitor de características. El umbral de deriva se usa para detectar la deriva de las características. Introduce un valor entre 0 y 1. Si no introduce ningún valor, el umbral se establece en 0.3 de forma predeterminada.
    Vertex AI Feature Store compara la captura de datos de la tarea de monitorización de características actual con la captura de datos de la tarea de monitorización de características anterior. Ten en cuenta que, para calcular la desviación de la distribución, Vertex AI Feature Store usa la función ML.TFDV_VALIDATE de BigQuery.
    Para la métrica usada para comparar estadísticas, se usa la distancia L-infinito en el caso de las características categóricas y la divergencia de Jensen-Shannon en el de las características numéricas.
  • CRON: expresión de programación cron que representa la frecuencia con la que se ejecuta la tarea de monitorización de la función. Para obtener más información, consulta cron.

Ejecutar manualmente un trabajo de monitorización de funciones

Puedes saltarte la espera entre tareas de monitorización de funciones programadas consecutivas y ejecutar manualmente una tarea de monitorización de funciones. Esto resulta útil si quieres obtener información de monitorización y detectar anomalías en los datos de la función inmediatamente en lugar de esperar a que se ejecute el siguiente trabajo de monitorización programado.

REST

Para ejecutar manualmente un trabajo de monitorización de funciones , crea un recurso FeatureMonitorJob y envía una solicitud POST mediante el método featureMonitorJobs.create.

Antes de usar los datos de la solicitud, haz las siguientes sustituciones:

  • LOCATION_ID: región en la que quieras ejecutar el trabajo de monitorización de funciones, como us-central1.
  • FEATUREGROUP_NAME: nombre del grupo de funciones que contiene el recurso FeatureMonitor.
  • PROJECT_ID: tu ID de proyecto.
  • FEATURE_MONITOR_NAME: nombre del recurso FeatureMonitor para el que quieres ejecutar el trabajo de monitorización de funciones.

Método HTTP y URL:

POST https://LOCATION_ID-aiplatform.googleapis.com/v1beta1/projects/PROJECT_ID/locations/LOCATION_ID/featureGroups/FEATUREGROUP_NAME/featureMonitors/FEATURE_MONITOR_ID/featureMonitorJobs

Para enviar tu solicitud, elige una de estas opciones:

curl

Ejecuta el comando siguiente:

curl -X POST \
-H "Authorization: Bearer $(gcloud auth print-access-token)" \
-H "Content-Type: application/json; charset=utf-8" \
-d "" \
"https://LOCATION_ID-aiplatform.googleapis.com/v1beta1/projects/PROJECT_ID/locations/LOCATION_ID/featureGroups/FEATUREGROUP_NAME/featureMonitors/FEATURE_MONITOR_ID/featureMonitorJobs"

PowerShell

Ejecuta el comando siguiente:

$cred = gcloud auth print-access-token
$headers = @{ "Authorization" = "Bearer $cred" }

Invoke-WebRequest `
-Method POST `
-Headers $headers `
-Uri "https://LOCATION_ID-aiplatform.googleapis.com/v1beta1/projects/PROJECT_ID/locations/LOCATION_ID/featureGroups/FEATUREGROUP_NAME/featureMonitors/FEATURE_MONITOR_ID/featureMonitorJobs" | Select-Object -Expand Content

Deberías recibir una respuesta JSON similar a la siguiente:

{
  "name": "projects/PROJECT_NUMBER/locations/LOCATION_ID/featureGroups/FEATUREGROUP_NAME/featureMonitors/FEATURE_MONITOR_NAME/featureMonitorJobs/FEATURE_MONITOR_JOB_ID"
}

Python

Antes de probar este ejemplo, sigue las Python instrucciones de configuración de la guía de inicio rápido de Vertex AI con bibliotecas de cliente. Para obtener más información, consulta la documentación de referencia de la API Python de Vertex AI.

Para autenticarte en Vertex AI, configura las credenciales predeterminadas de la aplicación. Para obtener más información, consulta el artículo Configurar la autenticación en un entorno de desarrollo local.

from google.cloud import aiplatform
from vertexai.resources.preview import feature_store

aiplatofrm.init(project="PROJECT_ID", location="LOCATION_ID")

feature_group = FeatureGroup.get("FEATUREGROUP_NAME}")
feature_monitor = feature_group.get_feature_monitor(FEATURE_MONITOR_NAME)
feature_monitor_job = feature_monitor.create_feature_monitor_job()

Haz los cambios siguientes:

  • LOCATION_ID: región en la que quieras ejecutar el trabajo de monitorización de funciones, como us-central1.
  • PROJECT_ID: tu ID de proyecto.
  • FEATUREGROUP_NAME: nombre del grupo de funciones que contiene el recurso FeatureMonitor.
  • FEATURE_MONITOR_NAME: nombre del recurso FeatureMonitor para el que quieres ejecutar el trabajo de monitorización de funciones.

Obtener estadísticas de funciones de un trabajo de monitorización

Para obtener estadísticas de todas las características de una tarea de monitorización de características, recupera el recurso FeatureMonitorJob mediante el ID de la tarea de monitorización de características, que se genera durante la ejecución de la tarea. También puede obtener estadísticas de características de un recurso específico del último trabajo de monitorización.

Mostrar tareas de monitorización de funciones

En los siguientes ejemplos se muestra cómo obtener una lista de todos los recursos FeatureMonitorJob creados para un recurso FeatureMonitor determinado.

REST

Para obtener una lista de recursos FeatureMonitorJob de un recurso FeatureMonitor específico, envía una solicitud GET mediante el método featureMonitorJobs.list.

Antes de usar los datos de la solicitud, haz las siguientes sustituciones:

  • LOCATION_ID: región en la que se encuentra el recurso Feature, como us-central1.
  • PROJECT_ID: tu ID de proyecto.
  • FEATUREGROUP_NAME: nombre del grupo de funciones que contiene el recurso FeatureMonitor.
  • FEATURE_MONITOR_NAME: nombre del recurso FeatureMonitor del que quieres obtener la lista de trabajos de monitorización de funciones.

Método HTTP y URL:

GET https://LOCATION_ID-aiplatform.googleapis.com/v1beta1/projects/PROJECT_ID/locations/LOCATION_ID/featureGroups/FEATUREGROUP_NAME/featureMonitors/FEATURE_MONITOR_NAME/featureMonitorJobs

Para enviar tu solicitud, elige una de estas opciones:

curl

Ejecuta el comando siguiente:

curl -X GET \
-H "Authorization: Bearer $(gcloud auth print-access-token)" \
"https://LOCATION_ID-aiplatform.googleapis.com/v1beta1/projects/PROJECT_ID/locations/LOCATION_ID/featureGroups/FEATUREGROUP_NAME/featureMonitors/FEATURE_MONITOR_NAME/featureMonitorJobs"

PowerShell

Ejecuta el comando siguiente:

$cred = gcloud auth print-access-token
$headers = @{ "Authorization" = "Bearer $cred" }

Invoke-WebRequest `
-Method GET `
-Headers $headers `
-Uri "https://LOCATION_ID-aiplatform.googleapis.com/v1beta1/projects/PROJECT_ID/locations/LOCATION_ID/featureGroups/FEATUREGROUP_NAME/featureMonitors/FEATURE_MONITOR_NAME/featureMonitorJobs" | Select-Object -Expand Content

Deberías recibir una respuesta JSON similar a la siguiente:

{
  "featureMonitorJobs": [
    {
      "name": "projects/PROJECT_NUMBER/locations/LOCATION_ID/featureGroups/FEATUREGROUP_NAME/featureMonitors/FEATURE_MONITOR_NAME/featureMonitorJobs/FEATURE_MONITOR_JOB_ID_1",
      "createTime": "2024-12-18T19:18:18.077161Z",
      "finalStatus": {},
      "featureSelectionConfig": {
        "featureConfigs": [
          {
            "featureId": "feature_name_1",
            "driftThreshold": 0.2
          },
          {
            "featureId": "feature_name_2",
            "driftThreshold": 0.2
          }
        ]
      }
    },
    {
      "name": "projects/PROJECT_NUMBER/locations/LOCATION_ID/featureGroups/FEATUREGROUP_NAME/featureMonitors/FEATURE_MONITOR_NAME/featureMonitorJobs/FEATURE_MONITOR_JOB_ID_2",
      "createTime": "2024-12-19T19:18:30.859921Z",
      "finalStatus": {},
      "featureSelectionConfig": {
        "featureConfigs": [
          {
            "featureId": "feature_name_1",
            "driftThreshold": 0.2
          },
          {
            "featureId": "feature_name_2",
            "driftThreshold": 0.2
          }
        ]
      }
    }
  ]
}

Python

Antes de probar este ejemplo, sigue las Python instrucciones de configuración de la guía de inicio rápido de Vertex AI con bibliotecas de cliente. Para obtener más información, consulta la documentación de referencia de la API Python de Vertex AI.

Para autenticarte en Vertex AI, configura las credenciales predeterminadas de la aplicación. Para obtener más información, consulta el artículo Configurar la autenticación en un entorno de desarrollo local.

from google.cloud import aiplatform
from vertexai.resources.preview import feature_store

aiplatofrm.init(project="PROJECT_ID", location="LOCATION_ID")

feature_group = FeatureGroup.get("FEATUREGROUP_NAME")
feature_monitor = feature_group.get_feature_monitor(FEATURE_MONITOR_NAME)
feature_monitor_jobs = feature_monitor.list_feature_monitor_jobs()

Haz los cambios siguientes:

  • LOCATION_ID: región en la que se encuentra el recurso Feature, como us-central1.
  • PROJECT_ID: tu ID de proyecto.
  • FEATUREGROUP_NAME: nombre del grupo de funciones que contiene el recurso FeatureMonitor.
  • FEATURE_MONITOR_NAME: nombre del recurso FeatureMonitor del que quieres obtener la lista de trabajos de monitorización de funciones.

Ver estadísticas de funciones de un trabajo de monitorización

En los siguientes ejemplos se muestra cómo ver las estadísticas de las funciones de todas las funciones de un trabajo de monitorización de funciones. En cada función, las estadísticas y las anomalías se muestran en el formato FeatureNameStatistics.

REST

Para ver las estadísticas de una función de un trabajo de monitorización recuperando un recurso FeatureMonitorJob, envía una solicitud GET mediante el método featureMonitorJobs.get.

Antes de usar los datos de la solicitud, haz las siguientes sustituciones:

  • LOCATION_ID: región en la que se ejecutó el trabajo de monitorización de funciones, como us-central1.
  • PROJECT_ID: tu ID de proyecto.
  • FEATUREGROUP_NAME: nombre del grupo de funciones que contiene el recurso FeatureMonitor.
  • FEATURE_MONITOR_NAME: nombre del recurso FeatureMonitor para el que se ha ejecutado el trabajo de monitorización de funciones.
  • FEATURE_MONITOR_JOB_ID: el ID del recurso FeatureMonitorJob que quieras obtener.

Método HTTP y URL:

GET https://LOCATION_ID-aiplatform.googleapis.com/v1beta1/projects/PROJECT_ID/locations/LOCATION_ID/featureGroups/FEATUREGROUP_NAME/featureMonitors/FEATURE_MONITOR_NAME/featureMonitorJobs/FEATURE_MONITOR_JOB_ID

Para enviar tu solicitud, elige una de estas opciones:

curl

Ejecuta el comando siguiente:

curl -X GET \
-H "Authorization: Bearer $(gcloud auth print-access-token)" \
"https://LOCATION_ID-aiplatform.googleapis.com/v1beta1/projects/PROJECT_ID/locations/LOCATION_ID/featureGroups/FEATUREGROUP_NAME/featureMonitors/FEATURE_MONITOR_NAME/featureMonitorJobs/FEATURE_MONITOR_JOB_ID"

PowerShell

Ejecuta el comando siguiente:

$cred = gcloud auth print-access-token
$headers = @{ "Authorization" = "Bearer $cred" }

Invoke-WebRequest `
-Method GET `
-Headers $headers `
-Uri "https://LOCATION_ID-aiplatform.googleapis.com/v1beta1/projects/PROJECT_ID/locations/LOCATION_ID/featureGroups/FEATUREGROUP_NAME/featureMonitors/FEATURE_MONITOR_NAME/featureMonitorJobs/FEATURE_MONITOR_JOB_ID" | Select-Object -Expand Content

Deberías recibir una respuesta JSON similar a la siguiente:

{
  "name": "projects/PROJECT_NUMBER/locations/LOCATION_ID/featureGroups/FEATUREGROUP_NAME/featureMonitors/FEATURE_MONITOR_NAME/featureMonitorJobs/FEATURE_MONITOR_JOB_ID",
  "createTime": "2024-12-19T19:18:18.077161Z",
  "finalStatus": {},
  "jobSummary": {
    "featureStatsAndAnomalies": [
      {
        "featureId": "feature_id_1",
        "featureStats": {
          "name": "feature_name_1",
          "type": "STRING",
          "stringStats": {
            "commonStats": {
              "numNonMissing": "6",
              "minNumValues": "1",
              "maxNumValues": "1",
              "avgNumValues": 1,
              "numValuesHistogram": {
                "buckets": [
                  {
                    "lowValue": 1,
                    "highValue": 1,
                    "sampleCount": 0.6
                  },
                  {
                    "lowValue": 1,
                    "highValue": 1,
                    "sampleCount": 0.6
                  }
                ],
                "type": "QUANTILES"
              },
              "totNumValues": "6"
            },
            "unique": "2",
            "topValues": [
              {
                "value": "59",
                "frequency": 2
              },
              {
                "value": "19",
                "frequency": 1
              }
            ],
            "avgLength": 2,
            "rankHistogram": {
              "buckets": [
                {
                  "label": "59",
                  "sampleCount": 2
                },
                {
                  "lowRank": "1",
                  "highRank": "1",
                  "label": "19",
                  "sampleCount": 1
                }
              ]
            }
          }
        },
        "statsTime": "2024-12-19T19:18:18.077161Z",
        "featureMonitorJobId": "FEATURE_MONITOR_JOB_ID",
        "featureMonitorId": "FEATURE_MONITOR_NAME"
      },
      {
        "featureId": "feature_id_2",
        "featureStats": {
          "name": "feature_name_1",
          "type": "STRING",
          "stringStats": {
            "commonStats": {
              "numNonMissing": "6",
              "minNumValues": "1",
              "maxNumValues": "1",
              "avgNumValues": 1,
              "numValuesHistogram": {
                "buckets": [
                  {
                    "lowValue": 1,
                    "highValue": 1,
                    "sampleCount": 0.6
                  },
                  {
                    "lowValue": 1,
                    "highValue": 1,
                    "sampleCount": 0.6
                  }
                ],
                "type": "QUANTILES"
              },
              "totNumValues": "6"
            },
            "unique": "2",
            "topValues": [
              {
                "value": "59",
                "frequency": 2
              },
              {
                "value": "19",
                "frequency": 1
              }
            ],
            "avgLength": 2,
            "rankHistogram": {
              "buckets": [
                {
                  "label": "59",
                  "sampleCount": 2
                },
                {
                  "lowRank": "1",
                  "highRank": "1",
                  "label": "19",
                  "sampleCount": 1
                }
              ]
            }
          }
        },
        "statsTime": "2024-12-19T19:18:18.077161Z",
        "featureMonitorJobId": "FEATURE_MONITOR_JOB_ID",
        "featureMonitorId": "FEATURE_MONITOR_NAME"
      }
    ]
  },
  "driftBaseFeatureMonitorJobId": "2250003330000300000",
  "driftBaseSnapshotTime": "2024-12-12T16:00:01.211686Z",
  "featureSelectionConfig": {
    "featureConfigs": [
      {
        "featureId": "feature_id_1",
        "driftThreshold": 0.2
      },
      {
        "featureId": "feature_id_2",
        "driftThreshold": 0.2
      }
    ]
  },
  "triggerType": "FEATURE_MONITOR_JOB_TRIGGER_ON_DEMAND"
}

Python

Antes de probar este ejemplo, sigue las Python instrucciones de configuración de la guía de inicio rápido de Vertex AI con bibliotecas de cliente. Para obtener más información, consulta la documentación de referencia de la API Python de Vertex AI.

Para autenticarte en Vertex AI, configura las credenciales predeterminadas de la aplicación. Para obtener más información, consulta el artículo Configurar la autenticación en un entorno de desarrollo local.

from google.cloud import aiplatform
from vertexai.resources.preview import feature_store

aiplatofrm.init(project="PROJECT_ID", location="LOCATION_ID")
feature_group = FeatureGroup.get("FEATUREGROUP_NAME"})

feature_monitor = feature_group.get_feature_monitor("FEATURE_MONITOR_NAME")
feature_monitor_job = feature_monitor.get_feature_monitor_job("FEATURE_MONITOR_JOB_ID)")

# Retrieve feature stats and anomalies
feature_stats_and_anomalies = feature_monitor_job.feature_stats_and_anomalies
print(feature_stats_and_anomalies)

Haz los cambios siguientes:

  • LOCATION_ID: región en la que se ejecutó el trabajo de monitorización de funciones, como us-central1.
  • PROJECT_ID: tu ID de proyecto.
  • FEATUREGROUP_NAME: nombre del grupo de funciones que contiene el recurso FeatureMonitor.
  • FEATURE_MONITOR_NAME: nombre del recurso FeatureMonitor para el que se ha ejecutado el trabajo de monitorización de funciones.
  • FEATURE_MONITOR_JOB_ID: el ID del recurso FeatureMonitorJob que quieras obtener.

Ver las estadísticas de una función

Para obtener las estadísticas de una función específica de los trabajos de monitorización de funciones más recientes, puede recuperar los detalles de la función y especificar el número de trabajos de monitorización de los que quiere obtener las estadísticas. Las estadísticas y las anomalías se muestran en el formato FeatureNameStatistics.

En los siguientes ejemplos se muestra cómo ver las estadísticas de una función concreta de un número específico de trabajos de monitorización de funciones recientes.

REST

Para ver las estadísticas de una función específica de un recurso Feature, envía una solicitud GET con el método features.get y especifica el número de trabajos de monitorización de los que quieres obtener las estadísticas.

Antes de usar los datos de la solicitud, haz las siguientes sustituciones:

  • LOCATION_ID: región en la que se ejecutó el trabajo de monitorización de funciones, como us-central1.
  • PROJECT_ID: tu ID de proyecto.
  • FEATUREGROUP_NAME: el nombre del grupo de funciones que contiene la función.
  • FEATURE_NAME: nombre del recurso Feature del que quieres obtener las estadísticas de funciones.
  • LATEST_STATS_COUNT: número de los últimos trabajos de monitorización de los que se van a obtener las estadísticas de la función.

Método HTTP y URL:

GET https://LOCATION_ID-aiplatform.googleapis.com/v1beta1/projects/PROJECT_ID/locations/LOCATION_ID/featureGroups/FEATUREGROUP_NAME/features/FEATURE_NAME?feature_stats_and_anomaly_spec.latest_stats_count=LATEST_STATS_COUNT

Para enviar tu solicitud, elige una de estas opciones:

curl

Ejecuta el comando siguiente:

curl -X GET \
-H "Authorization: Bearer $(gcloud auth print-access-token)" \
"https://LOCATION_ID-aiplatform.googleapis.com/v1beta1/projects/PROJECT_ID/locations/LOCATION_ID/featureGroups/FEATUREGROUP_NAME/features/FEATURE_NAME?feature_stats_and_anomaly_spec.latest_stats_count=LATEST_STATS_COUNT"

PowerShell

Ejecuta el comando siguiente:

$cred = gcloud auth print-access-token
$headers = @{ "Authorization" = "Bearer $cred" }

Invoke-WebRequest `
-Method GET `
-Headers $headers `
-Uri "https://LOCATION_ID-aiplatform.googleapis.com/v1beta1/projects/PROJECT_ID/locations/LOCATION_ID/featureGroups/FEATUREGROUP_NAME/features/FEATURE_NAME?feature_stats_and_anomaly_spec.latest_stats_count=LATEST_STATS_COUNT" | Select-Object -Expand Content

Deberías recibir una respuesta JSON similar a la siguiente:

{
  "name": "projects/PROJECT_NUMBER/locations/LOCATION_ID/featureGroups/FEATUREGROUP_NAME/features/FEATURE_NAME",
  "createTime": "2024-12-19T21:17:23.373559Z",
  "updateTime": "2024-12-19T21:17:23.373559Z",
  "etag": "sample_etag",
  "featureStatsAndAnomaly": [
    {
      "featureStats": {
        "name": "FEATURE_NAME",
        "type": "STRING",
        "stringStats": {
          "commonStats": {
            "numNonMissing": "4",
            "minNumValues": "1",
            "maxNumValues": "1",
            "avgNumValues": 1,
            "numValuesHistogram": {
              "buckets": [
                {
                  "lowValue": 1,
                  "highValue": 1,
                  "sampleCount": 0.4
                },
                {
                  "lowValue": 1,
                  "highValue": 1,
                  "sampleCount": 0.4
                },
                {
                  "lowValue": 1,
                  "highValue": 1,
                  "sampleCount": 0.4
                },
                {
                  "lowValue": 1,
                  "highValue": 1,
                  "sampleCount": 0.4
                }
              ],
              "type": "QUANTILES"
            },
            "totNumValues": "4"
          },
          "unique": "4",
          "topValues": [
            {
              "value": "feature_value_1",
              "frequency": 1
            },
            {
              "value": "feature_value_2",
              "frequency": 1
            },
            {
              "value": "feature_value_3",
              "frequency": 1
            },
            {
              "value": "feature_value_4",
              "frequency": 1
            }
          ],
          "avgLength": 4,
          "rankHistogram": {
            "buckets": [
              {
                "label": "label_1",
                "sampleCount": 1
              },
              {
                "lowRank": "1",
                "highRank": "1",
                "label": "label_2",
                "sampleCount": 1
              },
              {
                "lowRank": "2",
                "highRank": "2",
                "label": "label_3",
                "sampleCount": 1
              },
              {
                "lowRank": "3",
                "highRank": "3",
                "label": "label_4",
                "sampleCount": 1
              }
            ]
          }
        }
      },
      "driftDetectionThreshold": 0.1,
      "statsTime": "2024-12-19T22:00:02.734796Z",
      "featureMonitorJobId": "feature_monitor_job_id_1",
      "featureMonitorId": "feature_monitor_name_1"
    }
  ],
  "versionColumnName": "version_column_name"
}

Python

Antes de probar este ejemplo, sigue las Python instrucciones de configuración de la guía de inicio rápido de Vertex AI con bibliotecas de cliente. Para obtener más información, consulta la documentación de referencia de la API Python de Vertex AI.

Para autenticarte en Vertex AI, configura las credenciales predeterminadas de la aplicación. Para obtener más información, consulta el artículo Configurar la autenticación en un entorno de desarrollo local.

from google.cloud import aiplatform
from vertexai.resources.preview import feature_store

aiplatofrm.init(project="PROJECT_ID", location="LOCATION_ID")

feature_group = FeatureGroup.get("FEATUREGROUP_NAME"})
feature_stats_and_anomalies = feature_group.get_feature("FEATURE_NAME", latest_stats_count=LATEST_STATS_COUNT)
print(feature_stats_and_anomalies)

Haz los cambios siguientes:

  • LOCATION_ID: región en la que se ejecutó el trabajo de monitorización de funciones, como us-central1.
  • PROJECT_ID: tu ID de proyecto.
  • FEATUREGROUP_NAME: nombre del grupo de funciones que contiene el recurso FeatureMonitor.
  • FEATURE_NAME: el nombre de la función de la que quieres obtener las estadísticas.
  • LATEST_STATS_COUNT: número de los últimos trabajos de monitorización de los que se van a obtener las estadísticas de la función.

Caso práctico: usar la monitorización de funciones para detectar la deriva de las funciones

Puede usar la monitorización de funciones para detectar una anomalía en los datos de las funciones llamada "deriva de funciones". Una deriva es un cambio significativo e imprevisto en los datos de las características de BigQuery a lo largo del tiempo. Vertex AI Feature Store te ayuda a identificar la deriva de las características comparando la captura en el momento en que se ejecuta la tarea de monitorización con la captura de datos durante la ejecución de la tarea de monitorización anterior.

En el caso de cualquier característica incluida en el monitor de características, si la diferencia entre las dos capturas supera el umbral especificado en el parámetro drift_threshold, Vertex AI Feature Store identifica una deriva de características y devuelve la siguiente información en el recurso FeatureMonitorJob:

  • El parámetro driftDetected tiene el valor true.

  • La desviación de la distribución entre las dos copias. En el caso de las características numéricas, Vertex AI Feature Store calcula este valor mediante la divergencia de Jensen-Shannon. En el caso de las características categóricas, Vertex AI Feature Store calcula este valor mediante la distancia L-infinito.

  • El umbral que ha superado la desviación de la distribución.

En los siguientes ejemplos se muestra cómo obtener un recurso FeatureMonitorJob y verificar si se ha detectado una deriva.

REST

Para obtener un recurso FeatureMonitorJob , envía una solicitud GET mediante el método featureMonitorJobs.get.

Antes de usar los datos de la solicitud, haz las siguientes sustituciones:

  • LOCATION_ID: región en la que se ejecutó el trabajo de monitorización de funciones, como us-central1.
  • PROJECT_ID: tu ID de proyecto.
  • FEATUREGROUP_NAME: nombre del grupo de funciones que contiene el recurso FeatureMonitor.
  • FEATURE_MONITOR_NAME: nombre del recurso FeatureMonitor para el que se ha ejecutado el trabajo de monitorización de funciones.
  • FEATURE_MONITOR_JOB_ID: el ID del recurso FeatureMonitorJob que quieras obtener.

Método HTTP y URL:

GET https://LOCATION_ID-aiplatform.googleapis.com/v1beta1/projects/PROJECT_ID/locations/LOCATION_ID/featureGroups/FEATUREGROUP_NAME/featureMonitors/FEATURE_MONITOR_NAME/featureMonitorJobs/FEATURE_MONITOR_JOB_ID

Para enviar tu solicitud, elige una de estas opciones:

curl

Ejecuta el comando siguiente:

curl -X GET \
-H "Authorization: Bearer $(gcloud auth print-access-token)" \
"https://LOCATION_ID-aiplatform.googleapis.com/v1beta1/projects/PROJECT_ID/locations/LOCATION_ID/featureGroups/FEATUREGROUP_NAME/featureMonitors/FEATURE_MONITOR_NAME/featureMonitorJobs/FEATURE_MONITOR_JOB_ID"

PowerShell

Ejecuta el comando siguiente:

$cred = gcloud auth print-access-token
$headers = @{ "Authorization" = "Bearer $cred" }

Invoke-WebRequest `
-Method GET `
-Headers $headers `
-Uri "https://LOCATION_ID-aiplatform.googleapis.com/v1beta1/projects/PROJECT_ID/locations/LOCATION_ID/featureGroups/FEATUREGROUP_NAME/featureMonitors/FEATURE_MONITOR_NAME/featureMonitorJobs/FEATURE_MONITOR_JOB_ID" | Select-Object -Expand Content

Deberías recibir una respuesta JSON similar a la siguiente:

{
  "name": "projects/PROJECT_NUMBER/locations/LOCATION_ID/featureGroups/FEATUREGROUP_NAME/featureMonitors/FEATURE_MONITOR_NAME/featureMonitorJobs/FEATURE_MONITOR_JOB_ID",
  "createTime": "2024-12-14T19:45:30.026522Z",
  "finalStatus": {},
  "jobSummary": {
    "featureStatsAndAnomalies": [
      {
        "featureId": "feature_id_1",
        "featureStats": {
          "name": "feature_name_1",
          "type": "STRING",
          "stringStats": {
            "commonStats": {
              "numNonMissing": "3",
              "minNumValues": "1",
              "maxNumValues": "1",
              "avgNumValues": 1,
              "numValuesHistogram": {
                "buckets": [
                  {
                    "lowValue": 1,
                    "highValue": 1,
                    "sampleCount": 0.9
                  },
                  {
                    "lowValue": 1,
                    "highValue": 1,
                    "sampleCount": 0.9
                  },
                  {
                    "lowValue": 1,
                    "highValue": 1,
                    "sampleCount": 0.9
                  }
                ],
                "type": "QUANTILES"
              },
              "totNumValues": "3"
            },
            "unique": "3",
            "topValues": [
              {
                "value": "sample_value_1",
                "frequency": 1
              },
              {
                "value": "sample_value_2",
                "frequency": 1
              },
              {
                "value": "sample_value_3",
                "frequency": 1
              }
            ],
            "avgLength": 3,
            "rankHistogram": {
              "buckets": [
                {
                  "label": "sample_label_1",
                  "sampleCount": 1
                },
                {
                  "lowRank": "1",
                  "highRank": "1",
                  "label": "sample_label_2",
                  "sampleCount": 1
                },
                {
                  "lowRank": "2",
                  "highRank": "3",
                  "label": "sample_label_3",
                  "sampleCount": 1
                }
              ]
            }
          }
        },
        "distributionDeviation": 0.1388880008888000,
        "driftDetectionThreshold": 0.1,
        "driftDetected": true,
        "statsTime": "2024-12-15T19:45:37.026522Z",
        "featureMonitorJobId": "FEATURE_MONITOR_JOB_ID",
        "featureMonitorId": "FEATURE_MONITOR_NAME"
      }
    ]
  },
  "driftBaseFeatureMonitorJobId": "2250003330000300000",
  "driftBaseSnapshotTime": "2024-12-12T18:18:18.077161Z",
  "description": "sample_feature_monitor_job_description",
  "featureSelectionConfig": {
    "featureConfigs": [
      {
        "featureId": "feature_name",
        "driftThreshold": 0.1
      }
    ]
  },
  "triggerType": "FEATURE_MONITOR_JOB_TRIGGER_ON_DEMAND"
}

Python

Antes de probar este ejemplo, sigue las Python instrucciones de configuración de la guía de inicio rápido de Vertex AI con bibliotecas de cliente. Para obtener más información, consulta la documentación de referencia de la API Python de Vertex AI.

Para autenticarte en Vertex AI, configura las credenciales predeterminadas de la aplicación. Para obtener más información, consulta el artículo Configurar la autenticación en un entorno de desarrollo local.

from google.cloud import aiplatform
from vertexai.resources.preview import feature_store

aiplatofrm.init(project="PROJECT_ID", location="LOCATION_ID")
feature_group = FeatureGroup.get("FEATUREGROUP_NAME"})
feature_monitor = feature_group.get_feature_monitor("FEATURE_MONITOR_NAME")
feature_monitor_job = feature_monitor.get_feature_monitor_job("FEATURE_MONITOR_JOB_ID)")

# Retrieve feature stats and anomalies
feature_stats_and_anomalies = feature_monitor_job.feature_stats_and_anomalies
print(feature_stats_and_anomalies)

# Check whether drifts are detected
for feature_stats_and_anomalies in feature_monitor_job.feature_stats_and_anomalies:
    print("feature: ", feature_stats_and_anomalies.feature_id)
    print("distribution deviation: ", feature_stats_and_anomalies.distribution_deviation)
    print("drift detected: ", feature_stats_and_anomalies.drift_detected)

Haz los cambios siguientes:

  • LOCATION_ID: región en la que se ejecutó el trabajo de monitorización de funciones, como us-central1.
  • PROJECT_ID: tu ID de proyecto.
  • FEATUREGROUP_NAME: nombre del grupo de funciones que contiene el recurso FeatureMonitor.
  • FEATURE_MONITOR_NAME: nombre del recurso FeatureMonitor para el que se ha ejecutado el trabajo de monitorización de funciones.
  • FEATURE_MONITOR_JOB_ID: el ID del recurso FeatureMonitorJob que quieras obtener.