Monitorare le funzionalità

Vertex AI Feature Store ti consente di pianificare ed eseguire job di monitoraggio delle funzionalità per monitorare i dati delle funzionalità, recuperare le statistiche sulle funzionalità e rilevare la deriva delle funzionalità. Puoi monitorare i dati delle funzionalità solo se hai registrato l'origine dati delle funzionalità nel registry 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 in modo da eseguire periodicamente 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 funzionalità utilizzando Vertex AI Feature Store, completa i prerequisiti elencati in questa sezione.

Registra l'origine dati delle funzionalità

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

Esegui l'autenticazione in Vertex AI

Esegui l'autenticazione su Vertex AI, se non l'hai ancora fatto.

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

Python

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

  1. Install the Google Cloud CLI.
  2. To initialize the gcloud CLI, run the following command:

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

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

REST

Per utilizzare gli esempi dell'API REST in questa pagina in un ambiente di sviluppo locale, utilizza le credenziali fornite a gcloud CLI.

    Install the Google Cloud CLI, then initialize it by running the following command:

    gcloud init

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

Creare un monitoraggio delle funzionalità con una pianificazione del monitoraggio

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

Utilizza i seguenti esempi per creare una risorsa FeatureMonitor. Per configurare più pianificazioni 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: regione in cui vuoi creare il monitoraggio delle funzionalità, ad esempio us-central1.
  • PROJECT_ID: l'ID del tuo 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 deriva per ogni caratteristica inclusa nel monitoraggio delle funzionalità. La soglia di deriva viene utilizzata per rilevare anomalie, come la deriva delle funzionalità. 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 dei 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 delle seguenti 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 Python riportate nella guida rapida all'utilizzo delle librerie client di Vertex AI. Per ulteriori informazioni, consulta la documentazione di riferimento dell'API Python di Vertex AI.

Per autenticarti a Vertex AI, configura le Credenziali predefinite dell'applicazione. Per ulteriori informazioni, consulta Configurare 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: regione in cui vuoi creare il monitoraggio delle funzionalità, ad esempio us-central1.
  • PROJECT_ID: l'ID del tuo 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 deriva per ogni caratteristica inclusa nel monitoraggio delle funzionalità. La soglia di deriva viene utilizzata per rilevare la deriva delle funzionalità. 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 durante il job di monitoraggio delle funzionalità precedente. Tieni presente che per calcolare il punteggio di deriva, Vertex AI Feature Store utilizza la funzione ML.TFDV_VALIDATE in BigQuery.
    Per la metrica utilizzata per confrontare le statistiche, la distanza L-infinito viene utilizzata 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 il tempo di attesa tra job di monitoraggio delle funzionalità pianificati consecutivi ed eseguire manualmente un job di monitoraggio delle funzionalità. Questa operazione è utile se vuoi recuperare immediatamente le informazioni di monitoraggio e rilevare anomalie nei dati delle funzionalità anziché 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: regione in cui vuoi eseguire il job di monitoraggio delle funzionalità, ad esempio us-central1.
  • FEATUREGROUP_NAME: il nome del gruppo di funzionalità contenente la risorsa FeatureMonitor.
  • PROJECT_ID: l'ID del tuo 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 delle seguenti 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 Python riportate nella guida rapida all'utilizzo delle librerie client di Vertex AI. Per ulteriori informazioni, consulta la documentazione di riferimento dell'API Python di Vertex AI.

Per autenticarti a Vertex AI, configura le Credenziali predefinite dell'applicazione. Per ulteriori informazioni, consulta Configurare 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: regione in cui vuoi eseguire il job di monitoraggio delle funzionalità, ad esempio us-central1.
  • PROJECT_ID: l'ID del tuo progetto.
  • FEATUREGROUP_NAME: il nome del gruppo di funzionalità contenente la risorsa FeatureMonitor.
  • FEATURE_MONITOR_NAME: il nome della risorsa FeatureMonitor per la quale 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à di 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. Puoi anche recuperare le statistiche delle funzionalità 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 specifica, invia una richiesta GET utilizzando il metodo featureMonitorJobs.list.

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

  • LOCATION_ID: regione in cui si trova la risorsa Feature, ad esempio us-central1.
  • PROJECT_ID: l'ID del tuo progetto.
  • FEATUREGROUP_NAME: il nome del gruppo di funzionalità contenente 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 delle seguenti 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 Python riportate nella guida rapida all'utilizzo delle librerie client di Vertex AI. Per ulteriori informazioni, consulta la documentazione di riferimento dell'API Python di Vertex AI.

Per autenticarti a Vertex AI, configura le Credenziali predefinite dell'applicazione. Per ulteriori informazioni, consulta Configurare 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: regione in cui si trova la risorsa Feature, ad esempio us-central1.
  • PROJECT_ID: l'ID del tuo progetto.
  • FEATUREGROUP_NAME: il nome del gruppo di funzionalità contenente 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 funzionalità per tutte le funzionalità in un job di monitoraggio delle funzionalità. 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: regione in cui è stato eseguito il job di monitoraggio delle funzionalità, ad esempio us-central1.
  • PROJECT_ID: l'ID del tuo progetto.
  • FEATUREGROUP_NAME: il nome del gruppo di funzionalità contenente 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 delle seguenti 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 Python riportate nella guida rapida all'utilizzo delle librerie client di Vertex AI. Per ulteriori informazioni, consulta la documentazione di riferimento dell'API Python di Vertex AI.

Per autenticarti a Vertex AI, configura le Credenziali predefinite dell'applicazione. Per ulteriori informazioni, consulta Configurare 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: regione in cui è stato eseguito il job di monitoraggio delle funzionalità, ad esempio us-central1.
  • PROJECT_ID: l'ID del tuo progetto.
  • FEATUREGROUP_NAME: il nome del gruppo di funzionalità contenente 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 delle funzionalità per 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 funzionalità per una funzionalità specifica da un numero specificato di job di monitoraggio delle funzionalità recenti.

REST

Per visualizzare le statistiche delle funzionalità per una funzionalità specifica in una Feature risorsa, 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: regione in cui è stato eseguito il job di monitoraggio delle funzionalità, ad esempio us-central1.
  • PROJECT_ID: l'ID del tuo progetto.
  • FEATUREGROUP_NAME: il nome del gruppo di funzionalità contenente la funzionalità.
  • FEATURE_NAME: il nome della risorsa Feature per cui vuoi recuperare le statistiche delle funzionalità.
  • LATEST_STATS_COUNT: il numero degli ultimi job di monitoraggio da cui recuperare le statistiche delle 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 delle seguenti 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 Python riportate nella guida rapida all'utilizzo delle librerie client di Vertex AI. Per ulteriori informazioni, consulta la documentazione di riferimento dell'API Python di Vertex AI.

Per autenticarti a Vertex AI, configura le Credenziali predefinite dell'applicazione. Per ulteriori informazioni, consulta Configurare 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: regione in cui è stato eseguito il job di monitoraggio delle funzionalità, ad esempio us-central1.
  • PROJECT_ID: l'ID del tuo progetto.
  • FEATUREGROUP_NAME: il nome del gruppo di funzionalità contenente la risorsa FeatureMonitor.
  • FEATURE_NAME: il nome della funzionalità per cui vuoi recuperare le statistiche.
  • LATEST_STATS_COUNT: il numero degli ultimi job di monitoraggio da cui recuperare le statistiche delle funzionalità.

Caso d'uso di esempio: utilizza il monitoraggio delle funzionalità per rilevare la deriva delle funzionalità

Puoi utilizzare il monitoraggio delle funzionalità per rilevare un'anomalia nei dati delle funzionalità, chiamata deviazione delle funzionalità. 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 istantanei. Per le funzionalità 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 dal punteggio di deriva.

Gli esempi riportati di seguito mostrano come recuperare una risorsa FeatureMonitorJob e verificare se è stata rilevata una deriva.

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: regione in cui è stato eseguito il job di monitoraggio delle funzionalità, ad esempio us-central1.
  • PROJECT_ID: l'ID del tuo progetto.
  • FEATUREGROUP_NAME: il nome del gruppo di funzionalità contenente 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 delle seguenti 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 Python riportate nella guida rapida all'utilizzo delle librerie client di Vertex AI. Per ulteriori informazioni, consulta la documentazione di riferimento dell'API Python di Vertex AI.

Per autenticarti a Vertex AI, configura le Credenziali predefinite dell'applicazione. Per ulteriori informazioni, consulta Configurare 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("drift score: ", feature_stats_and_anomalies.distribution_deviation)
    print("drift detected: ", feature_stats_and_anomalies.drift_detected)

Sostituisci quanto segue:

  • LOCATION_ID: regione in cui è stato eseguito il job di monitoraggio delle funzionalità, ad esempio us-central1.
  • PROJECT_ID: l'ID del tuo progetto.
  • FEATUREGROUP_NAME: il nome del gruppo di funzionalità contenente 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.