Monitorfunktionen

Mit Vertex AI Feature Store können Sie Feature-Monitoring-Jobs planen und ausführen, um Feature-Daten zu überwachen, Feature-Statistiken abzurufen und Feature-Drift zu erkennen. Sie können Featuredaten nur überwachen, wenn Sie Ihre Featuredatenquelle in 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 für die Feature-Daten ausgeführt werden. Alternativ können Sie einen Job zur Funktionsüberwachung manuell ausführen, um Ihre Funktionsdaten außerhalb des Überwachungszeitplans zu überwachen.

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

Hinweise

Bevor Sie Features mit dem Vertex AI Feature Store überwachen, 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 Featurestatistiken 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. 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.

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.

    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.

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

Featuremonitor mit 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 das Abrufen 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

Senden Sie zum Erstellen einer FeatureMonitor-Ressource und zum Planen von Feature-Monitoring-Jobs eine POST-Anfrage mit der Methode featureMonitors.create.

Ersetzen Sie diese Werte in den folgenden Anfragedaten:

  • LOCATION_ID: Region, in der Sie den Featuremonitor erstellen möchten, z. B. us-central1.
  • PROJECT_ID: Ihre Projekt-ID.
  • FEATUREGROUP_NAME: Der Name der Featuregruppe, für die Sie die Featureüberwachung einrichten.
  • 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 Features, die Sie beobachten möchten.
  • DRIFT_THRESHOLD_1 und DRIFT_THRESHOLD_2: Schwellenwerte für die Abweichung für jedes Feature, das im Feature-Monitor enthalten ist. Der Abweichungsschwellenwert wird verwendet, um Anomalien wie Feature-Abweichungen zu erkennen. 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-Monitor-Jobs und berechnet Abweichungen mit der Funktion ML.TFDV_VALIDATE in BigQuery. Zur Klassifizierung von Anomalien wird die L-Infinity-Entfernung für kategoriale Features und die Jensen-Shannon-Abweichung für numerische Features verwendet.
  • CRON: Cron-Zeitplanausdruck, der die Häufigkeit für die Ausführung des Feature-Monitoring-Jobs 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 Featuremonitor erstellen möchten, z. B. us-central1.
  • PROJECT_ID: Ihre Projekt-ID.
  • FEATUREGROUP_NAME: Der Name der Featuregruppe, für die Sie die Featureüberwachung einrichten.
  • 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 Features, die Sie beobachten möchten.
  • DRIFT_THRESHOLD_1 und DRIFT_THRESHOLD_2: Grenzwerte für die Abweichung für jedes Feature, das im Feature-Monitor enthalten ist. Der Drift-Schwellenwert wird verwendet, um Feature-Drift zu erkennen. 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-Monitor-Job mit dem Daten-Snapshot aus dem vorherigen Feature-Monitor-Job. Zum Berechnen der Verteilungsabweichung verwendet Vertex AI Feature Store die Funktion ML.TFDV_VALIDATE in BigQuery.
    Für den Messwert, der zum Vergleichen von Statistiken verwendet wird, wird die L-Infinity-Entfernung für kategoriale Features und die Jensen-Shannon-Divergenz für numerische Features verwendet.
  • CRON: Cron-Zeitplanausdruck, der die Häufigkeit für die Ausführung des Feature-Monitoring-Jobs darstellt. Weitere Informationen finden Sie unter Cron.

Feature-Monitoring-Job manuell ausführen

Sie können die Wartezeit zwischen aufeinanderfolgenden geplanten Feature-Monitoringjobs überspringen und einen Feature-Monitoringjob manuell ausführen. Das ist nützlich, wenn Sie Monitoringinformationen abrufen und Anomalien in den Featuredaten sofort erkennen möchten, anstatt auf die nächste geplante Ausführung des Monitoringjobs 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 Feature-Monitoringjob 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 Feature-Monitoring-Job 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 Feature-Monitoringjob 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 Feature-Monitoring-Job 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 Feature-Monitoring-Job-ID abrufen, die während der Ausführung des Feature-Monitoring-Jobs generiert wurde. Sie können auch Feature-Statistiken für eine bestimmte Ressource für den letzten Monitoring-Job abrufen.

Featuremonitoringjobs auflisten

Die folgenden Beispiele zeigen, wie Sie eine Liste aller FeatureMonitorJob-Ressourcen abrufen, die für eine bestimmte FeatureMonitor-Ressource erstellt wurden.

REST

Wenn Sie eine Liste von 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: Die 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 Feature-Monitoring-Jobs 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: Die 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 Feature-Monitoring-Jobs auflisten möchten.

Feature-Statistiken aus einem Monitoringjob ansehen

Die folgenden Beispiele zeigen, wie Sie die Feature-Statistiken für alle Features in einem Feature-Monitoring-Job aufrufen. Für jedes Attribut werden die Statistiken und Anomalien im Format FeatureNameStatistics angezeigt.

REST

Wenn Sie die Feature-Statistiken aus einem Monitoring-Job ansehen 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: Die Region, in der der Job zur Feature-Überwachung 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 Feature-Monitoring-Job 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: Die Region, in der der Job zur Feature-Überwachung 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 Feature-Monitoring-Job ausgeführt wurde.
  • FEATURE_MONITOR_JOB_ID: Die ID der FeatureMonitorJob-Ressource, die Sie abrufen möchten.

Featurestatistiken für ein Feature ansehen

Sie können die Feature-Statistiken für ein bestimmtes Feature aus den zuletzt ausgeführten Feature-Monitoring-Jobs abrufen, indem Sie die Feature-Details abrufen und die Anzahl der Monitoring-Jobs angeben, aus denen Sie die Statistiken abrufen möchten. Die Statistiken und Anomalien werden im Format FeatureNameStatistics angezeigt.

Die folgenden Beispiele zeigen, wie Sie die Feature-Statistiken für ein bestimmtes Feature aus einer angegebenen Anzahl der letzten Feature-Monitoring-Jobs aufrufen.

REST

Wenn Sie die Feature-Statistiken für ein bestimmtes Feature 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: Die Region, in der der Job zur Feature-Überwachung 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 Feature-Statistiken abrufen möchten.
  • LATEST_STATS_COUNT: Die Anzahl der letzten Monitoring-Jobs, aus denen die Feature-Statistiken 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: Die Region, in der der Job zur Feature-Überwachung 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 Feature-Statistiken abgerufen werden sollen.

Beispielanwendungsfall: Feature-Monitoring zur Erkennung von Feature-Drift verwenden

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

Wenn für ein im Feature-Monitor enthaltenes Feature die Differenz zwischen den beiden Snapshots den im Parameter drift_threshold angegebenen Grenzwert überschreitet, erkennt 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 berechnet Vertex AI Feature Store diesen Wert mithilfe der Jensen-Shannon-Abweichung. Für kategoriale Features berechnet Vertex AI Feature Store diesen Wert mit der L-Infinity-Entfernung.

  • Der Schwellenwert, der durch die Verteilungsabweichung überschritten wurde.

Die folgenden Beispiele zeigen, wie Sie eine FeatureMonitorJob-Ressource abrufen und prüfen, ob eine Abweichung erkannt wurde.

REST

Senden Sie zum Abrufen einer FeatureMonitorJob-Ressource eine GET-Anfrage mit der Methode featureMonitorJobs.get.

Ersetzen Sie diese Werte in den folgenden Anfragedaten:

  • LOCATION_ID: Die Region, in der der Job zur Feature-Überwachung 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 Feature-Monitoring-Job 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: Die Region, in der der Job zur Feature-Überwachung 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 Feature-Monitoring-Job ausgeführt wurde.
  • FEATURE_MONITOR_JOB_ID: Die ID der FeatureMonitorJob-Ressource, die Sie abrufen möchten.