Monitorare le funzionalità

Vertex AI Feature Store ti consente di pianificare ed eseguire job di monitoraggio delle caratteristiche per monitorare i dati delle caratteristiche, recuperare le statistiche delle caratteristiche e rilevare la deviazione delle caratteristiche. Puoi monitorare i dati delle funzionalità solo se hai registrato l'origine dati delle funzionalità nel registro delle funzionalità.

Per monitorare i dati delle funzionalità, puoi creare la risorsa FeatureMonitor in una risorsa FeatureGroup. Durante la creazione della risorsa FeatureMonitor, puoi configurare la pianificazione del monitoraggio per eseguire periodicamente i job di monitoraggio sui dati delle funzionalità. In alternativa, puoi eseguire manualmente un job di monitoraggio delle funzionalità per monitorare i dati delle funzionalità al di fuori della pianificazione del monitoraggio.

Per ogni job di monitoraggio eseguito, Vertex AI Feature Store genera una risorsa FeatureMonitorJob, che puoi recuperare per visualizzare le statistiche sulle funzionalità e le informazioni sulla deriva rilevata nei dati delle funzionalità.

Prima di iniziare

Prima di monitorare le caratteristiche utilizzando Vertex AI Feature Store, completa i prerequisiti elencati in questa sezione.

Registra l'origine dati delle funzionalità

Registra l'origine dei dati delle caratteristiche da BigQuery nel registro delle caratteristiche creando gruppi di caratteristiche e caratteristiche. Le risorse FeatureMonitor utilizzate per recuperare e monitorare le statistiche delle funzionalità sono associate ai gruppi di funzionalità.

Autenticarsi in Vertex AI

Autenticati su Vertex AI, a meno che tu non l'abbia già fatto.

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

Python

Per utilizzare gli esempi di Python questa pagina in un ambiente di sviluppo locale, installa e inizializza gcloud CLI, quindi configura le Credenziali predefinite dell'applicazione con le tue credenziali utente.

  1. Install the Google Cloud CLI.

  2. If you're using an external identity provider (IdP), you must first sign in to the gcloud CLI with your federated identity.

  3. To initialize the gcloud CLI, run the following command:

    gcloud init
  4. 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.

Per ulteriori informazioni, vedi Set up authentication for a local development environment.

REST

Per utilizzare gli esempi di API REST in questa pagina in un ambiente di sviluppo locale, utilizzi le credenziali che fornisci a gcloud CLI.

    After installing the Google Cloud CLI, initialize it by running the following command:

    gcloud init

    If you're using an external identity provider (IdP), you must first sign in to the gcloud CLI with your federated identity.

Per saperne di più, consulta la sezione Autenticarsi per l'utilizzo di REST nella documentazione sull'autenticazione di Google Cloud .

Crea un monitoraggio di funzionalità con una pianificazione del monitoraggio

Per recuperare e monitorare le statistiche sulle funzionalità, crea una risorsa FeatureMonitor specificando la pianificazione per eseguire periodicamente i job di monitoraggio delle funzionalità e recuperare le statistiche sulle funzionalità registrate nel gruppo di funzionalità.

Utilizza gli esempi riportati di seguito per creare una risorsa FeatureMonitor. Per configurare più programmazioni per lo stesso gruppo di funzionalità, devi creare più risorse FeatureMonitor.

REST

Per creare una risorsa FeatureMonitor e pianificare i job di monitoraggio delle funzionalità, invia una richiesta POST utilizzando il metodo featureMonitors.create.

Prima di utilizzare i dati della richiesta, apporta le seguenti sostituzioni:

  • LOCATION_ID: la regione in cui vuoi creare il monitor delle funzionalità, ad esempio us-central1.
  • PROJECT_ID: il tuo ID progetto.
  • FEATUREGROUP_NAME: il nome del gruppo di funzionalità in cui hai configurato il monitoraggio delle funzionalità.
  • FEATURE_MONITOR_NAME: un nome per il nuovo monitoraggio delle funzionalità che vuoi creare.
  • FEATURE_ID_1 e FEATURE_ID_2: gli ID delle funzionalità che vuoi monitorare.
  • DRIFT_THRESHOLD_1 e DRIFT_THRESHOLD_2: soglie di deviazione per ogni caratteristica inclusa nel monitoraggio delle caratteristiche. La soglia di deviazione viene utilizzata per rilevare anomalie, ad esempio la deviazione delle caratteristiche. Inserisci un valore compreso nell'intervallo [0, 1). Se non inserisci un valore, la soglia è impostata su 0.3 per impostazione predefinita.
    Vertex AI Feature Store confronta gli snapshot delle esecuzioni consecutive del job di monitoraggio delle funzionalità e calcola le derive utilizzando la funzione ML.TFDV_VALIDATE in BigQuery. Per classificare le anomalie, viene utilizzata la distanza L-infinito per le caratteristiche categoriche e la divergenza di Jensen-Shannon per le caratteristiche numeriche.
  • CRON: Espressione di pianificazione cron che rappresenta la frequenza di esecuzione del job di monitoraggio delle funzionalità. Per ulteriori informazioni, consulta cron.

Metodo HTTP e 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

Corpo JSON della richiesta:

{
  "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"
  }
}

Per inviare la richiesta, scegli una di queste opzioni:

curl

Salva il corpo della richiesta in un file denominato request.json, quindi esegui il comando seguente:

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

Salva il corpo della richiesta in un file denominato request.json, quindi esegui il comando seguente:

$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

Dovresti ricevere una risposta JSON simile alla seguente:

{
  "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

Prima di provare questo esempio, segui le istruzioni di configurazione di Python nella guida rapida di Vertex AI per l'utilizzo delle librerie client. Per ulteriori informazioni, consulta la documentazione di riferimento dell'API Vertex AI Python.

Per autenticarti in Vertex AI, configura le Credenziali predefinite dell'applicazione. Per ulteriori informazioni, consulta Configura l'autenticazione per un ambiente di sviluppo locale.

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"
        )

Sostituisci quanto segue:

  • LOCATION_ID: la regione in cui vuoi creare il monitor delle funzionalità, ad esempio us-central1.
  • PROJECT_ID: il tuo ID progetto.
  • FEATUREGROUP_NAME: il nome del gruppo di funzionalità in cui hai configurato il monitoraggio delle funzionalità.
  • FEATURE_MONITOR_NAME: un nome per il nuovo monitoraggio delle funzionalità che vuoi creare.
  • FEATURE_ID_1 e FEATURE_ID_2: gli ID delle funzionalità che vuoi monitorare.
  • DRIFT_THRESHOLD_1 e DRIFT_THRESHOLD_2: soglie di deviazione per ogni caratteristica inclusa nel monitor delle caratteristiche. La soglia di deviazione viene utilizzata per rilevare la deviazione delle caratteristiche. Inserisci un valore compreso tra 0 e 1. Se non inserisci un valore, la soglia è impostata su 0.3 per impostazione predefinita.
    Vertex AI Feature Store confronta lo snapshot dei dati del job di monitoraggio delle funzionalità corrente con lo snapshot dei dati del job di monitoraggio delle funzionalità precedente. Tieni presente che per calcolare la deviazione della distribuzione, Vertex AI Feature Store utilizza la funzione ML.TFDV_VALIDATE in BigQuery.
    Per la metrica utilizzata per confrontare le statistiche, viene utilizzata la distanza L-infinity per le caratteristiche categoriche e la divergenza di Jensen-Shannon per le caratteristiche numeriche.
  • CRON: espressione di pianificazione cron che rappresenta la frequenza di esecuzione del job di monitoraggio delle funzionalità. Per ulteriori informazioni, consulta cron.

Eseguire manualmente un job di monitoraggio delle funzionalità

Puoi saltare l'attesa tra i job di monitoraggio delle funzionalità pianificati consecutivi ed eseguire manualmente un job di monitoraggio delle funzionalità. Questa funzionalità è utile se vuoi recuperare immediatamente le informazioni di monitoraggio e rilevare anomalie nei dati delle funzionalità invece di attendere l'esecuzione del successivo job di monitoraggio pianificato.

REST

Per eseguire manualmente un job di monitoraggio delle funzionalità creando una risorsa FeatureMonitorJob , invia una richiesta POST utilizzando il metodo featureMonitorJobs.create.

Prima di utilizzare i dati della richiesta, apporta le seguenti sostituzioni:

  • LOCATION_ID: la regione in cui vuoi eseguire il job di monitoraggio delle funzionalità, ad esempio us-central1.
  • FEATUREGROUP_NAME: il nome del gruppo di funzionalità che contiene la risorsa FeatureMonitor.
  • PROJECT_ID: il tuo ID progetto.
  • FEATURE_MONITOR_NAME: il nome della risorsa FeatureMonitor per cui vuoi eseguire il job di monitoraggio delle funzionalità.

Metodo HTTP e URL:

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

Per inviare la richiesta, scegli una di queste opzioni:

curl

Esegui questo comando:

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

Esegui questo comando:

$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

Dovresti ricevere una risposta JSON simile alla seguente:

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

Python

Prima di provare questo esempio, segui le istruzioni di configurazione di Python nella guida rapida di Vertex AI per l'utilizzo delle librerie client. Per ulteriori informazioni, consulta la documentazione di riferimento dell'API Vertex AI Python.

Per autenticarti in Vertex AI, configura le Credenziali predefinite dell'applicazione. Per ulteriori informazioni, consulta Configura l'autenticazione per un ambiente di sviluppo locale.

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()

Sostituisci quanto segue:

  • LOCATION_ID: la regione in cui vuoi eseguire il job di monitoraggio delle funzionalità, ad esempio us-central1.
  • PROJECT_ID: il tuo ID progetto.
  • FEATUREGROUP_NAME: il nome del gruppo di funzionalità che contiene la risorsa FeatureMonitor.
  • FEATURE_MONITOR_NAME: il nome della risorsa FeatureMonitor per cui vuoi eseguire il job di monitoraggio delle funzionalità.

Recuperare le statistiche delle funzionalità da un job di monitoraggio

Puoi recuperare le statistiche delle funzionalità per tutte le funzionalità in un job di monitoraggio delle funzionalità recuperando la risorsa FeatureMonitorJob utilizzando l'ID del job di monitoraggio delle funzionalità generato durante l'esecuzione del job di monitoraggio delle funzionalità. Puoi anche recuperare le statistiche delle caratteristiche per una risorsa specifica per l'ultimo job di monitoraggio.

Elenca i job di monitoraggio delle funzionalità

Gli esempi riportati di seguito mostrano come recuperare un elenco di tutte le risorse FeatureMonitorJob create per una determinata risorsa FeatureMonitor.

REST

Per recuperare un elenco di risorse FeatureMonitorJob per una risorsa FeatureMonitor specificata, invia una richiesta GET utilizzando il metodo featureMonitorJobs.list.

Prima di utilizzare i dati della richiesta, apporta le seguenti sostituzioni:

  • LOCATION_ID: la regione in cui si trova la risorsa Feature, ad esempio us-central1.
  • PROJECT_ID: il tuo ID progetto.
  • FEATUREGROUP_NAME: il nome del gruppo di funzionalità che contiene la risorsa FeatureMonitor.
  • FEATURE_MONITOR_NAME: il nome della risorsa FeatureMonitor per cui vuoi elencare i job di monitoraggio delle funzionalità.

Metodo HTTP e URL:

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

Per inviare la richiesta, scegli una di queste opzioni:

curl

Esegui questo comando:

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

Esegui questo comando:

$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

Dovresti ricevere una risposta JSON simile alla seguente:

{
  "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

Prima di provare questo esempio, segui le istruzioni di configurazione di Python nella guida rapida di Vertex AI per l'utilizzo delle librerie client. Per ulteriori informazioni, consulta la documentazione di riferimento dell'API Vertex AI Python.

Per autenticarti in Vertex AI, configura le Credenziali predefinite dell'applicazione. Per ulteriori informazioni, consulta Configura l'autenticazione per un ambiente di sviluppo locale.

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()

Sostituisci quanto segue:

  • LOCATION_ID: la regione in cui si trova la risorsa Feature, ad esempio us-central1.
  • PROJECT_ID: il tuo ID progetto.
  • FEATUREGROUP_NAME: il nome del gruppo di funzionalità che contiene la risorsa FeatureMonitor.
  • FEATURE_MONITOR_NAME: il nome della risorsa FeatureMonitor per cui vuoi elencare i job di monitoraggio delle funzionalità.

Visualizzare le statistiche delle funzionalità da un job di monitoraggio

Gli esempi riportati di seguito mostrano come visualizzare le statistiche delle caratteristiche per tutte le caratteristiche in un job di monitoraggio delle caratteristiche. Per ogni funzionalità, le statistiche e le anomalie vengono visualizzate nel formato FeatureNameStatistics.

REST

Per visualizzare le statistiche delle funzionalità di un job di monitoraggio recuperando una risorsa FeatureMonitorJob, invia una richiesta GET utilizzando il metodo featureMonitorJobs.get.

Prima di utilizzare i dati della richiesta, apporta le seguenti sostituzioni:

  • LOCATION_ID: la regione in cui è stato eseguito il job di monitoraggio delle funzionalità, ad esempio us-central1.
  • PROJECT_ID: il tuo ID progetto.
  • FEATUREGROUP_NAME: il nome del gruppo di funzionalità che contiene la risorsa FeatureMonitor.
  • FEATURE_MONITOR_NAME: il nome della risorsa FeatureMonitor per cui è stato eseguito il job di monitoraggio delle funzionalità.
  • FEATURE_MONITOR_JOB_ID: L'ID della risorsa FeatureMonitorJob che vuoi recuperare.

Metodo HTTP e 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

Per inviare la richiesta, scegli una di queste opzioni:

curl

Esegui questo comando:

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

Esegui questo comando:

$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

Dovresti ricevere una risposta JSON simile alla seguente:

{
  "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

Prima di provare questo esempio, segui le istruzioni di configurazione di Python nella guida rapida di Vertex AI per l'utilizzo delle librerie client. Per ulteriori informazioni, consulta la documentazione di riferimento dell'API Vertex AI Python.

Per autenticarti in Vertex AI, configura le Credenziali predefinite dell'applicazione. Per ulteriori informazioni, consulta Configura l'autenticazione per un ambiente di sviluppo locale.

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)

Sostituisci quanto segue:

  • LOCATION_ID: la regione in cui è stato eseguito il job di monitoraggio delle funzionalità, ad esempio us-central1.
  • PROJECT_ID: il tuo ID progetto.
  • FEATUREGROUP_NAME: il nome del gruppo di funzionalità che contiene la risorsa FeatureMonitor.
  • FEATURE_MONITOR_NAME: il nome della risorsa FeatureMonitor per cui è stato eseguito il job di monitoraggio delle funzionalità.
  • FEATURE_MONITOR_JOB_ID: l'ID della risorsa FeatureMonitorJob che vuoi recuperare.

Visualizzare le statistiche di una funzionalità

Puoi recuperare le statistiche delle funzionalità per una funzionalità specifica dai job di monitoraggio delle funzionalità più recenti eseguiti recuperando i dettagli della funzionalità e specificando il numero di job di monitoraggio da cui vuoi recuperare le statistiche. Le statistiche e le anomalie vengono visualizzate nel formato FeatureNameStatistics.

Gli esempi riportati di seguito mostrano come visualizzare le statistiche delle caratteristiche per una caratteristica specifica di un numero specificato di job di monitoraggio delle caratteristiche recenti.

REST

Per visualizzare le statistiche delle funzionalità per una funzionalità specifica in una risorsa Feature, invia una richiesta GET utilizzando il metodo features.get e specificando il numero di job di monitoraggio da cui recuperare le statistiche.

Prima di utilizzare i dati della richiesta, apporta le seguenti sostituzioni:

  • LOCATION_ID: la regione in cui è stato eseguito il job di monitoraggio delle funzionalità, ad esempio us-central1.
  • PROJECT_ID: il tuo ID progetto.
  • FEATUREGROUP_NAME: il nome del gruppo di funzionalità che contiene la funzionalità.
  • FEATURE_NAME: il nome della risorsa Feature per cui vuoi recuperare le statistiche sulle funzionalità.
  • LATEST_STATS_COUNT: il numero degli ultimi job di monitoraggio da cui recuperare le statistiche sulle funzionalità.

Metodo HTTP e 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

Per inviare la richiesta, scegli una di queste opzioni:

curl

Esegui questo comando:

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

Esegui questo comando:

$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

Dovresti ricevere una risposta JSON simile alla seguente:

{
  "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

Prima di provare questo esempio, segui le istruzioni di configurazione di Python nella guida rapida di Vertex AI per l'utilizzo delle librerie client. Per ulteriori informazioni, consulta la documentazione di riferimento dell'API Vertex AI Python.

Per autenticarti in Vertex AI, configura le Credenziali predefinite dell'applicazione. Per ulteriori informazioni, consulta Configura l'autenticazione per un ambiente di sviluppo locale.

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)

Sostituisci quanto segue:

  • LOCATION_ID: la regione in cui è stato eseguito il job di monitoraggio delle funzionalità, ad esempio us-central1.
  • PROJECT_ID: il tuo ID progetto.
  • FEATUREGROUP_NAME: il nome del gruppo di funzionalità che contiene la risorsa FeatureMonitor.
  • FEATURE_NAME: il nome della funzionalità per cui vuoi recuperare le statistiche.
  • LATEST_STATS_COUNT: il numero di job di monitoraggio più recenti da cui recuperare le statistiche sulle funzionalità.

Esempio di caso d'uso: utilizza il monitoraggio delle caratteristiche per rilevare la deviazione delle caratteristiche

Puoi utilizzare il monitoraggio delle caratteristiche per rilevare un'anomalia nei dati delle caratteristiche chiamata deviazione delle caratteristiche. Una deviazione è una modifica significativa e imprevista dei dati delle funzionalità in BigQuery nel tempo. Vertex AI Feature Store ti aiuta a identificare la deriva delle funzionalità confrontando lo snapshot al momento dell'esecuzione del job di monitoraggio con lo snapshot dei dati durante l'esecuzione del job di monitoraggio precedente.

Per qualsiasi funzionalità inclusa nel monitoraggio delle funzionalità, se la differenza tra i due snapshot supera la soglia specificata nel parametro drift_threshold, Vertex AI Feature Store identifica una deriva delle funzionalità e restituisce le seguenti informazioni nella risorsa FeatureMonitorJob:

  • Il parametro driftDetected è impostato su true.

  • La deviazione della distribuzione tra i due snapshot. Per le caratteristiche numeriche, Vertex AI Feature Store calcola questo valore utilizzando la divergenza di Jensen-Shannon. Per le caratteristiche categoriche, Vertex AI Feature Store calcola questo valore utilizzando la distanza L-infinito.

  • La soglia superata dalla deviazione della distribuzione.

Gli esempi riportati di seguito mostrano come recuperare una risorsa FeatureMonitorJob e verificare se è stato rilevato un drift.

REST

Per recuperare una risorsa FeatureMonitorJob , invia una richiesta GET utilizzando il metodo featureMonitorJobs.get.

Prima di utilizzare i dati della richiesta, apporta le seguenti sostituzioni:

  • LOCATION_ID: la regione in cui è stato eseguito il job di monitoraggio delle funzionalità, ad esempio us-central1.
  • PROJECT_ID: il tuo ID progetto.
  • FEATUREGROUP_NAME: il nome del gruppo di funzionalità che contiene la risorsa FeatureMonitor.
  • FEATURE_MONITOR_NAME: il nome della risorsa FeatureMonitor per cui è stato eseguito il job di monitoraggio delle funzionalità.
  • FEATURE_MONITOR_JOB_ID: l'ID della risorsa FeatureMonitorJob che vuoi recuperare.

Metodo HTTP e 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

Per inviare la richiesta, scegli una di queste opzioni:

curl

Esegui questo comando:

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

Esegui questo comando:

$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

Dovresti ricevere una risposta JSON simile alla seguente:

{
  "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

Prima di provare questo esempio, segui le istruzioni di configurazione di Python nella guida rapida di Vertex AI per l'utilizzo delle librerie client. Per ulteriori informazioni, consulta la documentazione di riferimento dell'API Vertex AI Python.

Per autenticarti in Vertex AI, configura le Credenziali predefinite dell'applicazione. Per ulteriori informazioni, consulta Configura l'autenticazione per un ambiente di sviluppo locale.

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)

Sostituisci quanto segue:

  • LOCATION_ID: la regione in cui è stato eseguito il job di monitoraggio delle funzionalità, ad esempio us-central1.
  • PROJECT_ID: il tuo ID progetto.
  • FEATUREGROUP_NAME: il nome del gruppo di funzionalità che contiene la risorsa FeatureMonitor.
  • FEATURE_MONITOR_NAME: il nome della risorsa FeatureMonitor per cui è stato eseguito il job di monitoraggio delle funzionalità.
  • FEATURE_MONITOR_JOB_ID: l'ID della risorsa FeatureMonitorJob che vuoi recuperare.