Monitorfunktionen

Mit Vertex AI Feature Store können Sie Jobs für das Feature-Monitoring planen und ausführen, um Feature-Daten zu überwachen, Feature-Statistiken abzurufen und Feature-Drifts zu erkennen. Sie können Feature-Daten nur dann überwachen, wenn Sie Ihre Feature-Datenquelle in der Feature Registry registriert haben.

Wenn Sie Feature-Daten überwachen möchten, können Sie die FeatureMonitor-Ressource unter einer FeatureGroup-Ressource erstellen. Beim Erstellen der FeatureMonitor-Ressource können Sie den Monitoringzeitplan so konfigurieren, dass Monitoringjobs regelmäßig auf den Feature-Daten ausgeführt werden. Alternativ können Sie einen Job zum Überwachen von Funktionen manuell ausführen, um Ihre Funktionsdaten außerhalb des Monitoring-Zeitplans zu überwachen.

Für jeden ausgeführten Monitoring-Job generiert Vertex AI Feature Store eine FeatureMonitorJob-Ressource, die Sie abrufen können, um sich die Feature-Statistiken und Informationen zur in den Feature-Daten erkannten Abweichung anzusehen.

Hinweis

Bevor Sie Funktionen mit dem Vertex AI Feature Store überwachen können, müssen Sie die in diesem Abschnitt aufgeführten Voraussetzungen erfüllen.

Datenquelle für Funktionen registrieren

Registrieren Sie Ihre Feature-Datenquelle aus BigQuery in der Feature Registry, indem Sie Featuregruppen und Features erstellen. Die FeatureMonitor-Ressourcen, die zum Abrufen und Überwachen von Feature-Statistiken verwendet werden, sind mit Featuregruppen verknüpft.

Bei Vertex AI authentifizieren

Authentifizieren Sie sich bei Vertex AI, sofern nicht bereits geschehen.

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

Python

Wenn Sie die Python Beispiele auf dieser Seite in einer lokalen Entwicklungsumgebung verwenden möchten, installieren und initialisieren Sie die gcloud CLI und richten dann die Standardanmeldedaten für Anwendungen mit Ihren Nutzeranmeldedaten ein.

  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.

Weitere Informationen unter Set up authentication for a local development environment.

REST

Verwenden Sie die von der gcloud CLI bereitgestellten Anmeldedaten, um die REST API-Beispiele auf dieser Seite in einer lokalen Entwicklungsumgebung zu verwenden.

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

    gcloud init

Weitere Informationen finden Sie unter Für die Verwendung von REST authentifizieren in der Dokumentation zur Google Cloud-Authentifizierung.

Feature-Monitor mit einem Monitoring-Zeitplan erstellen

Wenn Sie Featurestatistiken abrufen und überwachen möchten, erstellen Sie eine FeatureMonitor-Ressource, in der Sie den Zeitplan für die regelmäßige Ausführung von Feature-Monitoring-Jobs und den Abruf von Featurestatistiken für die in der Featuregruppe registrierten Features angeben.

Verwenden Sie die folgenden Beispiele, um eine FeatureMonitor-Ressource zu erstellen. Wenn Sie mehrere Zeitpläne für dieselbe Featuregruppe einrichten möchten, müssen Sie mehrere FeatureMonitor-Ressourcen erstellen.

REST

Wenn Sie eine FeatureMonitor-Ressource erstellen und Jobs für das Feature-Monitoring planen möchten, senden Sie eine POST-Anfrage mit der Methode featureMonitors.create.

Ersetzen Sie diese Werte in den folgenden Anfragedaten:

  • LOCATION_ID: Region, in der Sie den Feature-Monitor erstellen möchten, z. B. us-central1.
  • PROJECT_ID: Ihre Projekt-ID.
  • FEATUREGROUP_NAME: Der Name der Featuregruppe, in der Sie das Feature-Monitoring eingerichtet haben.
  • FEATURE_MONITOR_NAME: Ein Name für den neuen Feature-Monitor, den Sie erstellen möchten.
  • FEATURE_ID_1 und FEATURE_ID_2: Die IDs der Funktionen, die Sie überwachen möchten.
  • DRIFT_THRESHOLD_1 und DRIFT_THRESHOLD_2: Abweichungsgrenzwerte für jedes im Feature-Monitor enthaltene Feature. Mit dem Drift-Schwellenwert werden Anomalien wie die Feature-Drift erkannt. Geben Sie einen Wert im Bereich [0, 1) ein. Wenn Sie keinen Wert eingeben, wird der Schwellenwert standardmäßig auf 0.3 festgelegt.
    Vertex AI Feature Store vergleicht die Snapshots aus aufeinanderfolgenden Ausführungen von Feature-Monitoring-Jobs und berechnet Abweichungen mithilfe der Funktion „ML.TFDV_VALIDATE“ in BigQuery. Zur Klassifizierung von Anomalien wird für kategorische Features die L-Unendlich-Entfernung und für numerische Features die Jensen-Shannon-Abweichung verwendet.
  • CRON: Cron-Zeitplanausdruck, der die Häufigkeit für die Ausführung des Monitoring-Jobs für die Funktion darstellt. Weitere Informationen finden Sie unter Cron.

HTTP-Methode und 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

JSON-Text der Anfrage:

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

Wenn Sie die Anfrage senden möchten, wählen Sie eine der folgenden Optionen aus:

curl

Speichern Sie den Anfragetext in einer Datei mit dem Namen request.json und führen Sie den folgenden Befehl aus:

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

Speichern Sie den Anfragetext in einer Datei mit dem Namen request.json und führen Sie den folgenden Befehl aus:

$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

Sie sollten eine JSON-Antwort ähnlich wie diese erhalten:

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

Bevor Sie dieses Beispiel anwenden, folgen Sie den Python-Einrichtungsschritten in der Vertex AI-Kurzanleitung zur Verwendung von Clientbibliotheken. Weitere Informationen finden Sie in der Referenzdokumentation zur Vertex AI Python API.

Richten Sie zur Authentifizierung bei Vertex AI Standardanmeldedaten für Anwendungen ein. Weitere Informationen finden Sie unter Authentifizierung für eine lokale Entwicklungsumgebung einrichten.

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

Ersetzen Sie Folgendes:

  • LOCATION_ID: Region, in der Sie den Feature-Monitor erstellen möchten, z. B. us-central1.
  • PROJECT_ID: Ihre Projekt-ID.
  • FEATUREGROUP_NAME: Der Name der Featuregruppe, in der Sie das Feature-Monitoring eingerichtet haben.
  • FEATURE_MONITOR_NAME: Ein Name für den neuen Feature-Monitor, den Sie erstellen möchten.
  • FEATURE_ID_1 und FEATURE_ID_2: Die IDs der Funktionen, die Sie überwachen möchten.
  • DRIFT_THRESHOLD_1 und DRIFT_THRESHOLD_2: Abweichungsgrenzwerte für jedes im Feature-Monitor enthaltene Feature. Mit dem Drift-Schwellenwert wird die Feature-Drift erkannt. Geben Sie einen Wert zwischen 0 und 1 ein. Wenn Sie keinen Wert eingeben, wird der Schwellenwert standardmäßig auf 0.3 festgelegt.
    Vertex AI Feature Store vergleicht den Daten-Snapshot aus dem aktuellen Feature-Monitoring-Job mit dem Daten-Snapshot aus dem vorherigen Feature-Monitoring-Job. Zur Berechnung der Abweichung der Verteilung verwendet Vertex AI Feature Store die Funktion „ML.TFDV_VALIDATE“ in BigQuery.
    Als Messwert für den Vergleich von Statistiken wird für kategorische Merkmale die L-Infinity-Entfernung und für numerische Merkmale die Jensen-Shannon-Abweichung verwendet.
  • CRON: Cron-Zeitplanausdruck, der die Häufigkeit für die Ausführung des Monitoring-Jobs für die Funktion darstellt. Weitere Informationen finden Sie unter Cron.

Feature-Monitoring-Job manuell ausführen

Sie können die Wartezeit zwischen aufeinanderfolgenden geplanten Feature-Monitoring-Jobs überspringen und einen Feature-Monitoring-Job manuell ausführen. Das ist nützlich, wenn Sie Monitoring-Informationen abrufen und Anomalien in den Feature-Daten sofort erkennen möchten, anstatt auf die Ausführung des nächsten geplanten Monitoring-Jobs zu warten.

REST

Wenn Sie einen Feature-Monitoring-Job manuell ausführen möchten, indem Sie eine FeatureMonitorJob-Ressource erstellen, senden Sie eine POST-Anfrage mit der Methode featureMonitorJobs.create.

Ersetzen Sie diese Werte in den folgenden Anfragedaten:

  • LOCATION_ID: Region, in der Sie den Job zum Überwachen von Funktionen ausführen möchten, z. B. us-central1.
  • FEATUREGROUP_NAME: Der Name der Featuregruppe, die die FeatureMonitor-Ressource enthält.
  • PROJECT_ID: Ihre Projekt-ID.
  • FEATURE_MONITOR_NAME: Der Name der FeatureMonitor-Ressource, für die Sie den Job zum Überwachen von Funktionen ausführen möchten.

HTTP-Methode und URL:

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

Senden Sie die Anfrage mithilfe einer der folgenden Optionen:

curl

Führen Sie folgenden Befehl aus:

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

Führen Sie folgenden Befehl aus:

$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

Sie sollten eine JSON-Antwort ähnlich wie diese erhalten:

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

Python

Bevor Sie dieses Beispiel anwenden, folgen Sie den Python-Einrichtungsschritten in der Vertex AI-Kurzanleitung zur Verwendung von Clientbibliotheken. Weitere Informationen finden Sie in der Referenzdokumentation zur Vertex AI Python API.

Richten Sie zur Authentifizierung bei Vertex AI Standardanmeldedaten für Anwendungen ein. Weitere Informationen finden Sie unter Authentifizierung für eine lokale Entwicklungsumgebung einrichten.

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

Ersetzen Sie Folgendes:

  • LOCATION_ID: Region, in der Sie den Job zum Überwachen von Funktionen ausführen möchten, z. B. us-central1.
  • PROJECT_ID: Ihre Projekt-ID.
  • FEATUREGROUP_NAME: Der Name der Featuregruppe, die die FeatureMonitor-Ressource enthält.
  • FEATURE_MONITOR_NAME: Der Name der FeatureMonitor-Ressource, für die Sie den Job zum Überwachen von Funktionen ausführen möchten.

Funktionsstatistiken aus einem Monitoring-Job abrufen

Sie können Feature-Statistiken für alle Features in einem Feature-Monitoring-Job abrufen, indem Sie die FeatureMonitorJob-Ressource mit der Job-ID des Feature-Monitoring-Jobs abrufen, die bei der Ausführung des Jobs generiert wurde. Sie können auch Feature-Statistiken für eine bestimmte Ressource für den letzten Monitoring-Job abrufen.

Feature-Monitoring-Jobs auflisten

In den folgenden Beispielen wird gezeigt, wie Sie eine Liste aller FeatureMonitorJob-Ressourcen abrufen, die für eine bestimmte FeatureMonitor-Ressource erstellt wurden.

REST

Wenn Sie eine Liste der FeatureMonitorJob-Ressourcen für eine bestimmte FeatureMonitor-Ressource abrufen möchten, senden Sie eine GET-Anfrage mit der Methode featureMonitorJobs.list.

Ersetzen Sie diese Werte in den folgenden Anfragedaten:

  • LOCATION_ID: Region, in der sich die Feature-Ressource befindet, z. B. us-central1.
  • PROJECT_ID: Ihre Projekt-ID.
  • FEATUREGROUP_NAME: Der Name der Featuregruppe, die die FeatureMonitor-Ressource enthält.
  • FEATURE_MONITOR_NAME: Der Name der FeatureMonitor-Ressource, für die Sie die Jobs zum Feature-Monitoring auflisten möchten.

HTTP-Methode und URL:

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

Senden Sie die Anfrage mithilfe einer der folgenden Optionen:

curl

Führen Sie folgenden Befehl aus:

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

Führen Sie folgenden Befehl aus:

$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

Sie sollten eine JSON-Antwort ähnlich wie diese erhalten:

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

Bevor Sie dieses Beispiel anwenden, folgen Sie den Python-Einrichtungsschritten in der Vertex AI-Kurzanleitung zur Verwendung von Clientbibliotheken. Weitere Informationen finden Sie in der Referenzdokumentation zur Vertex AI Python API.

Richten Sie zur Authentifizierung bei Vertex AI Standardanmeldedaten für Anwendungen ein. Weitere Informationen finden Sie unter Authentifizierung für eine lokale Entwicklungsumgebung einrichten.

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

Ersetzen Sie Folgendes:

  • LOCATION_ID: Region, in der sich die Feature-Ressource befindet, z. B. us-central1.
  • PROJECT_ID: Ihre Projekt-ID.
  • FEATUREGROUP_NAME: Der Name der Featuregruppe, die die FeatureMonitor-Ressource enthält.
  • FEATURE_MONITOR_NAME: Der Name der FeatureMonitor-Ressource, für die Sie die Jobs zum Feature-Monitoring auflisten möchten.

Featurestatistiken aus einem Monitoring-Job ansehen

In den folgenden Beispielen wird gezeigt, wie Sie die Feature-Statistiken für alle Features in einem Feature-Monitoring-Job aufrufen. Für jedes Element werden die Statistiken und Anomalien im FeatureNameStatistics-Format angezeigt.

REST

Wenn Sie die Feature-Statistiken aus einem Monitoring-Job aufrufen möchten, indem Sie eine FeatureMonitorJob-Ressource abrufen, senden Sie eine GET-Anfrage mit der Methode featureMonitorJobs.get.

Ersetzen Sie diese Werte in den folgenden Anfragedaten:

  • LOCATION_ID: Region, in der der Job für das Feature-Monitoring ausgeführt wurde, z. B. us-central1.
  • PROJECT_ID: Ihre Projekt-ID.
  • FEATUREGROUP_NAME: Der Name der Featuregruppe, die die FeatureMonitor-Ressource enthält.
  • FEATURE_MONITOR_NAME: Der Name der FeatureMonitor-Ressource, für die der Job zum Überwachen von Funktionen ausgeführt wurde.
  • FEATURE_MONITOR_JOB_ID: Die ID der FeatureMonitorJob-Ressource, die Sie abrufen möchten.

HTTP-Methode und 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

Senden Sie die Anfrage mithilfe einer der folgenden Optionen:

curl

Führen Sie folgenden Befehl aus:

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

Führen Sie folgenden Befehl aus:

$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

Sie sollten eine JSON-Antwort ähnlich wie diese erhalten:

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

Bevor Sie dieses Beispiel anwenden, folgen Sie den Python-Einrichtungsschritten in der Vertex AI-Kurzanleitung zur Verwendung von Clientbibliotheken. Weitere Informationen finden Sie in der Referenzdokumentation zur Vertex AI Python API.

Richten Sie zur Authentifizierung bei Vertex AI Standardanmeldedaten für Anwendungen ein. Weitere Informationen finden Sie unter Authentifizierung für eine lokale Entwicklungsumgebung einrichten.

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)

Ersetzen Sie Folgendes:

  • LOCATION_ID: Region, in der der Job für das Feature-Monitoring ausgeführt wurde, z. B. us-central1.
  • PROJECT_ID: Ihre Projekt-ID.
  • FEATUREGROUP_NAME: Der Name der Featuregruppe, die die FeatureMonitor-Ressource enthält.
  • FEATURE_MONITOR_NAME: Der Name der FeatureMonitor-Ressource, für die der Job zum Überwachen von Funktionen ausgeführt wurde.
  • FEATURE_MONITOR_JOB_ID: Die ID der FeatureMonitorJob-Ressource, die Sie abrufen möchten.

Featurestatistiken für ein Feature aufrufen

Sie können die Featurestatistiken für ein bestimmtes Feature aus den letzten ausgeführten Feature-Monitoring-Jobs abrufen. Rufen Sie dazu die Feature-Details ab und geben Sie die Anzahl der Monitoring-Jobs an, aus denen Sie die Statistiken abrufen möchten. Die Statistiken und Anomalien werden im Format FeatureNameStatistics angezeigt.

In den folgenden Beispielen wird gezeigt, wie Sie die Feature-Statistiken für ein bestimmtes Feature aus einer bestimmten Anzahl kürzlich ausgeführter Jobs für das Feature-Monitoring aufrufen.

REST

Wenn Sie die Feature-Statistiken für ein bestimmtes Element in einer Feature-Ressource aufrufen möchten, senden Sie eine GET-Anfrage mit der Methode features.get und geben Sie die Anzahl der Monitoring-Jobs an, aus denen die Statistiken abgerufen werden sollen.

Ersetzen Sie diese Werte in den folgenden Anfragedaten:

  • LOCATION_ID: Region, in der der Job für das Feature-Monitoring ausgeführt wurde, z. B. us-central1.
  • PROJECT_ID: Ihre Projekt-ID.
  • FEATUREGROUP_NAME: der Name der Featuregruppe, die das Feature enthält
  • FEATURE_NAME: Der Name der Feature-Ressource, für die Sie die Featurestatistiken abrufen möchten.
  • LATEST_STATS_COUNT: Die Anzahl der letzten Monitoring-Jobs, aus denen die Featurestatistiken abgerufen werden sollen.

HTTP-Methode und 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

Senden Sie die Anfrage mithilfe einer der folgenden Optionen:

curl

Führen Sie folgenden Befehl aus:

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

Führen Sie folgenden Befehl aus:

$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

Sie sollten eine JSON-Antwort ähnlich wie diese erhalten:

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

Bevor Sie dieses Beispiel anwenden, folgen Sie den Python-Einrichtungsschritten in der Vertex AI-Kurzanleitung zur Verwendung von Clientbibliotheken. Weitere Informationen finden Sie in der Referenzdokumentation zur Vertex AI Python API.

Richten Sie zur Authentifizierung bei Vertex AI Standardanmeldedaten für Anwendungen ein. Weitere Informationen finden Sie unter Authentifizierung für eine lokale Entwicklungsumgebung einrichten.

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)

Ersetzen Sie Folgendes:

  • LOCATION_ID: Region, in der der Job für das Feature-Monitoring ausgeführt wurde, z. B. us-central1.
  • PROJECT_ID: Ihre Projekt-ID.
  • FEATUREGROUP_NAME: Der Name der Featuregruppe, die die FeatureMonitor-Ressource enthält.
  • FEATURE_NAME: Der Name des Features, für das Sie die Featurestatistiken abrufen möchten.
  • LATEST_STATS_COUNT: Die Anzahl der letzten Monitoring-Jobs, aus denen die Featurestatistiken abgerufen werden sollen.

Beispiel für einen Anwendungsfall: Feature-Monitoring zur Erkennung von Feature-Abweichungen verwenden

Mithilfe des Feature-Monitorings können Sie eine Anomalie in Feature-Daten erkennen, die als Feature-Drift bezeichnet wird. Ein Drift ist eine erhebliche und unvorhergesehene Änderung der Feature-Daten in BigQuery im Laufe der Zeit. Mit Vertex AI Feature Store können Sie Feature-Abweichungen erkennen, indem Sie den Snapshot zum Zeitpunkt der Ausführung des Monitoring-Jobs mit dem Daten-Snapshot bei der vorherigen Ausführung des Monitoring-Jobs vergleichen.

Wenn für ein im Feature-Monitor enthaltenes Feature der Unterschied zwischen den beiden Snapshots den im Parameter drift_threshold angegebenen Grenzwert überschreitet, erkennt der Vertex AI Feature Store eine Feature-Abweichung und gibt die folgenden Informationen in der FeatureMonitorJob-Ressource zurück:

  • Der Parameter driftDetected ist auf true festgelegt.

  • Die Abweichung der Verteilung zwischen den beiden Snapshots. Für numerische Features wird dieser Wert im Vertex AI Feature Store mithilfe der Jensen-Shannon-Abweichung berechnet. Bei kategorischen Merkmalen wird dieser Wert in Vertex AI Feature Store anhand der L-Infinity-Entfernung berechnet.

  • Der Grenzwert, der von der Abweichung der Verteilung überschritten wurde.

In den folgenden Beispielen wird gezeigt, wie Sie eine FeatureMonitorJob-Ressource abrufen und prüfen, ob eine Abweichung erkannt wurde.

REST

Wenn Sie eine FeatureMonitorJob-Ressource abrufen möchten , senden Sie eine GET-Anfrage mit der Methode featureMonitorJobs.get.

Ersetzen Sie diese Werte in den folgenden Anfragedaten:

  • LOCATION_ID: Region, in der der Job für das Feature-Monitoring ausgeführt wurde, z. B. us-central1.
  • PROJECT_ID: Ihre Projekt-ID.
  • FEATUREGROUP_NAME: Der Name der Featuregruppe, die die FeatureMonitor-Ressource enthält.
  • FEATURE_MONITOR_NAME: Der Name der FeatureMonitor-Ressource, für die der Job zum Überwachen von Funktionen ausgeführt wurde.
  • FEATURE_MONITOR_JOB_ID: Die ID der FeatureMonitorJob-Ressource, die Sie abrufen möchten.

HTTP-Methode und 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

Senden Sie die Anfrage mithilfe einer der folgenden Optionen:

curl

Führen Sie folgenden Befehl aus:

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

Führen Sie folgenden Befehl aus:

$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

Sie sollten eine JSON-Antwort ähnlich wie diese erhalten:

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

Bevor Sie dieses Beispiel anwenden, folgen Sie den Python-Einrichtungsschritten in der Vertex AI-Kurzanleitung zur Verwendung von Clientbibliotheken. Weitere Informationen finden Sie in der Referenzdokumentation zur Vertex AI Python API.

Richten Sie zur Authentifizierung bei Vertex AI Standardanmeldedaten für Anwendungen ein. Weitere Informationen finden Sie unter Authentifizierung für eine lokale Entwicklungsumgebung einrichten.

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)

Ersetzen Sie Folgendes:

  • LOCATION_ID: Region, in der der Job für das Feature-Monitoring ausgeführt wurde, z. B. us-central1.
  • PROJECT_ID: Ihre Projekt-ID.
  • FEATUREGROUP_NAME: Der Name der Featuregruppe, die die FeatureMonitor-Ressource enthält.
  • FEATURE_MONITOR_NAME: Der Name der FeatureMonitor-Ressource, für die der Job zum Überwachen von Funktionen ausgeführt wurde.
  • FEATURE_MONITOR_JOB_ID: Die ID der FeatureMonitorJob-Ressource, die Sie abrufen möchten.