Monitoring

In Vertex AI Feature Store (Legacy) können Sie Benachrichtigungen zu Featurestores und Features überwachen und festlegen. Ein Betriebsteam kann beispielsweise einen Featurestore überwachen, um seine CPU-Auslastung zu verfolgen. Feature-Inhaber wie Data Scientists können Featurewerte beobachten, um Drift im Zeitverlauf zu erkennen.

Die Methoden zum Monitoring von Feature Stores und Features werden in den folgenden Abschnitten beschrieben:

Featurestore-Monitoring

Vertex AI Feature Store (Legacy) meldet Messwerte für Ihren Featurestore an Cloud Monitoring, z. B. CPU-Last, Speicherkapazität und Anfragelatenzen. Vertex AI sammelt und meldet diese Messwerte für Sie. Sie müssen das Feature-Store-Monitoring nicht konfigurieren oder aktivieren.

Verwenden Sie Cloud Monitoring, um Schwellenwerte und Benachrichtigungen zu konfigurieren. Sie können beispielsweise eine Benachrichtigung dafür einrichten, wenn die durchschnittliche CPU-Auslastung 70 % überschreitet. Dann müssen Sie möglicherweise die Anzahl der Feature-Store-Knoten erhöhen.

Sie können sich auch die Feature Store-Messwerte im Abschnitt Vertex AI der Google Cloud Console ansehen, um Trends im Zeitverlauf anzusehen. Bei einigen Diagrammen werden in der Konsole zusammengefasste oder berechnete Werte angezeigt, damit die Informationen leichter zu nutzen sind. Sie können die Rohdaten jederzeit in Cloud Monitoring aufrufen.

Weitere Informationen finden Sie unter Vertex AI Feature Store-Monitoringmesswerte (Legacy) auf der Vertex AI Cloud Monitoring-Seite.

Featurewert-Monitoring

Mit dem Featurewert-Monitoring können Sie verfolgen, wie sehr sich die Wertverteilung eines Features in einem Featurestore ändert. Folgende Arten des Feature-Wert-Monitoring werden unterstützt:

  • Snapshot-Analyse: Vertex AI Feature Store (Legacy) erstellt regelmäßig Snapshots Ihrer Featurewerte. Wenn Sie mit der Zeit immer mehr Daten aufnehmen, stellen Sie möglicherweise eine Änderung der Verteilung der Featurewerte fest. Diese Änderung bedeutet, dass alle Modelle, die diese Features verwenden, möglicherweise neu trainiert werden müssen. Sie können einen Schwellenwert angeben, sodass Anomalien in der Cloud Logging Console protokolliert werden, wenn die Verteilungsabweichung den Schwellenwert überschreitet.

    Für Datasets, die 5 Millionen Entitäts-IDs überschreiten, generiert Vertex AI Feature Store (Legacy) Snapshots basierend auf 5 Millionen zufällig ausgewählten Entitäts-IDs innerhalb des Zeitfensters, das Sie als Zahl der Veralterungs-Tage angegeben haben.

  • Analyse von importierten Features: Jeder ImportFeatureValues-Vorgang generiert Verteilungsstatistiken für die in den Vertex AI Feature Store (Legacy) aufgenommenen Werte. Sie können Anomalien erkennen, indem Sie Ihre Verteilungsstatistiken mit der zuvor importierten Featurewert-Verteilung oder, sofern aktiviert, der Snapshot-Verteilung vergleichen.

    Für Datasets, die 5 Millionen Instanzen überschreiten, generiert Vertex AI Feature Store (Legacy) Snapshots basierend auf zufällig ausgewählten Daten:

    • Wenn die Anzahl der Instanzen innerhalb des aufgenommenen Datasets 5 Millionen, aber nicht 50 Millionen überschreitet, wird der Snapshot basierend auf 5 Millionen zufällig ausgewählten Instanzen generiert.
    • Wenn die Anzahl der Instanzen im aufgenommenen Dataset 50 Millionen überschreitet, wird der Snapshot basierend auf 10 % der zufällig generierten Instanzen generiert.

Nehmen wir als Beispiel ein Feature, das Preise von kürzlich verkauften Häuser erfasst und diese Werte dann in ein Modell einspeist, um den Preis eines Hauses vorherzusagen. Die Preise von kürzlich verkauften Häusern können im Laufe der Zeit erheblich schwanken oder der Batch der importierten Werte kann Daten enthalten, die von den Trainingsdaten erheblich abweichen. Vertex AI Feature Store (Legacy) benachrichtigt Sie über diese Änderung. Sie können Ihr Modell dann neu trainieren, um die neuesten Informationen zu verwenden.

Monitoringkonfiguration festlegen

Um das Monitoring zu starten, können Sie eine Monitoringkonfiguration für einen Entitätstyp definieren, der das Monitoring für alle Features der folgenden Typen ermöglicht:

  • BOOL
  • STRING
  • DOUBLE
  • INT64

Sie können die Monitoring-Konfiguration beim Erstellen eines Entitätstyps festlegen. Sie können das Monitoring auch für bestimmte Features deaktivieren, indem Sie das Attribut disableMonitoring festlegen. Die Monitoringkonfiguration für Entitätstypen gibt Folgendes an:

  • Gibt an, ob Monitoring aktiviert werden soll. Monitoring ist standardmäßig deaktiviert.
  • Schwellenwerte zum Erkennen von Anomalien. Der Standardschwellenwert ist 0,3.
  • Lookback-Window zusätzlich zum Intervall zwischen Snapshots (für die Snapshot-Analyse). Der Standardwert ist 21.
  • Gibt an, ob die Analyse von importierten Features aktiviert werden soll. Der Standardwert ist deaktiviert.

Weitere Informationen finden Sie in der API-Referenz unter dem Typ FeaturestoreMonitoringConfig.

Entitätstyp mit aktiviertem Monitoring erstellen

Im folgenden Beispiel wird ein Entitätstyp erstellt, bei dem das Feature-Monitoring aktiviert ist:

Web-UI

Über die UI wird nur die Snapshot-Analyse unterstützt.

  1. Rufen Sie im Bereich "Vertex AI" der Google Cloud Console die Seite Features auf.

    Zur Seite „Features“

  2. Wählen Sie eine Region aus der Drop-down-Liste Region aus.
  3. Klicken Sie auf Entitätstyp erstellen.
  4. Erweitern Sie den Abschnitt Featuremonitoring auf Aktiviert.
  5. Geben Sie die Anzahl der Tage zwischen Snapshots im Feld Zeitintervall für Monitoring ein.
    Der Monitoring-Job für einen Entitätstyp oder ein Feature wird in der nächsten Runde nach der Tageszeit ausgeführt, wenn Sie das Monitoring für den Entitätstyp oder das Feature aktivieren. Wenn Sie beispielsweise das Monitoring am Montag um 22:30 Uhr aktivieren und als Monitoring-Intervall zwei Tage angeben, wird der erste Monitoring-Job am Mittwoch um 23:00 Uhr ausgeführt.
  6. Geben Sie im Feld Lookback-Window für Monitoring die Anzahl der Tage für das Lookback ein, die jedem Snapshot zurückgeschrieben werden soll.
  7. Geben Sie die Zahl für den Schwellenwert für die Erkennung von Anomalien für numerische Features in das Feld Numerischer Schwellenwert für Benachrichtigungen ein.
  8. Geben Sie die Anzahl für den Schwellenwert ein, der zum Erkennen von Anomalien für kategoriale Features in diesem EntityType im Feld Kategorialer Benachrichtigungsschwellenwert verwendet wird.
    Weitere Informationen zum Erkennen von Merkmalswertanomalien finden Sie unter Featurewert Anomalien ansehen.
  9. Klicken Sie auf Erstellen.
  10. Klicken Sie in der Funktionstabelle auf einen Entitätstyp.
  11. Klicken Sie auf Features hinzufügen, um der Entität neue Features hinzuzufügen.
  12. Wenn Sie das Monitoring für eine bestimmte Funktion deaktivieren möchten, deaktivieren Sie die Option Monitoring aktivieren.

REST

Senden Sie zum Erstellen eines Entitätstyps eine POST-Anfrage mit der Methode entityTypes.create.

Ersetzen Sie diese Werte in den folgenden Anfragedaten:

  • LOCATION_ID: Region, in der sich der Featurestore befindet, z. B. us-central1.
  • PROJECT_ID: Ihre Projekt-ID.
  • FEATURESTORE_ID: ID des Featurestores.
  • ENTITY_TYPE_ID: ID des Entitätstyps.
  • DURATION: Intervall zwischen den Snapshots in Tagen.
  • STALENESS_DAYS: Anzahl der Tage, die beim Erstellen von Snapshots berücksichtigt werden soll.
  • NUMERICAL_THRESHOLD_VALUE: Schwellenwert für die Erkennung von Anomalien für numerische Features unter diesem Entitätstyp. Die Statistikabweichung wird durch die Jenson-Shannon-Abweichung berechnet.
  • CATEGORICAL_THRESHOLD_VALUE: Schwellenwert zur Erkennung von Anomalien für kategoriale Features unter diesem Entitätstyp. Die Statistikabweichung wird durch die L-Infinity-Entfernung berechnet.
  • IMPORT_FEATURE_ANALYSIS_STATE: Status gibt an, ob die Analyse von importierten Features aktiviert werden soll.
  • IMPORT_FEATURE_ANALYSIS_BASELINE: Referenz für die Analyse von importierten Features, falls aktiviert.

HTTP-Methode und URL:

POST https://LOCATION_ID-aiplatform.googleapis.com/v1/projects/PROJECT_ID/locations/LOCATION_ID/featurestores/FEATURESTORE_ID/entityTypes?entityTypeId=ENTITY_TYPE_ID

JSON-Text der Anfrage:

{
  "monitoringConfig": {
    "snapshotAnalysis": {
      "monitoringIntervalDays": "DURATION"
      "stalenessDays": "STALENESS_DAYS"
    }
  },
 "numericalThresholdConfig": {
    "value": "NUMERICAL_THRESHOLD_VALUE"
  },
  "categoricalThresholdConfig": {
    "value": "CATEGORICAL_THRESHOLD_VALUE"
  },
  "importFeatureAnalysis": {
    "state": "IMPORT_FEATURE_ANALYSIS_STATE",
    "anomalyDetectionBaseline": "IMPORT_FEATURE_ANALYSIS_BASELINE"
  }
}

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/v1/projects/PROJECT_ID/locations/LOCATION_ID/featurestores/FEATURESTORE_ID/entityTypes?entityTypeId=ENTITY_TYPE_ID"

PowerShell

Speichern Sie den Anfragetext in einer Datei mit dem Namen request.json und führen Sie 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/v1/projects/PROJECT_ID/locations/LOCATION_ID/featurestores/FEATURESTORE_ID/entityTypes?entityTypeId=ENTITY_TYPE_ID" | Select-Object -Expand Content

Die Ausgabe sieht in etwa so aus: Sie können OPERATION_ID in der Antwort verwenden, um den Status des Vorgangs abzurufen.

{
  "name": "projects/PROJECT_ID/locations/LOCATION_ID/operations/OPERATION_ID",
  "metadata": {
    "@type": "type.googleapis.com/google.cloud.aiplatform.ui.CreateEntityTypeOperationMetadata",
    "genericMetadata": {
      "createTime": "2022-04-29T20:29:05.206525Z",
      "updateTime": "2022-04-29T20:29:05.206525Z"
    }
  }
}

Java

Bevor Sie dieses Beispiel anwenden, folgen Sie den Java Schritten zur Einrichtung in der Vertex AI-Kurzanleitung zur Verwendung von Clientbibliotheken. Weitere Informationen finden Sie in der Referenzdokumentation zur Vertex AI Java 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.


import com.google.api.gax.longrunning.OperationFuture;
import com.google.cloud.aiplatform.v1.CreateEntityTypeOperationMetadata;
import com.google.cloud.aiplatform.v1.CreateEntityTypeRequest;
import com.google.cloud.aiplatform.v1.EntityType;
import com.google.cloud.aiplatform.v1.FeaturestoreMonitoringConfig;
import com.google.cloud.aiplatform.v1.FeaturestoreMonitoringConfig.SnapshotAnalysis;
import com.google.cloud.aiplatform.v1.FeaturestoreName;
import com.google.cloud.aiplatform.v1.FeaturestoreServiceClient;
import com.google.cloud.aiplatform.v1.FeaturestoreServiceSettings;
import java.io.IOException;
import java.util.concurrent.ExecutionException;
import java.util.concurrent.TimeUnit;
import java.util.concurrent.TimeoutException;

public class CreateEntityTypeMonitoringSample {

  public static void main(String[] args)
      throws IOException, InterruptedException, ExecutionException, TimeoutException {
    // TODO(developer): Replace these variables before running the sample.
    String project = "YOUR_PROJECT_ID";
    String featurestoreId = "YOUR_FEATURESTORE_ID";
    String entityTypeId = "YOUR_ENTITY_TYPE_ID";
    String description = "YOUR_ENTITY_TYPE_DESCRIPTION";
    int monitoringIntervalDays = 1;
    String location = "us-central1";
    String endpoint = "us-central1-aiplatform.googleapis.com:443";
    int timeout = 300;
    createEntityTypeMonitoringSample(
        project,
        featurestoreId,
        entityTypeId,
        description,
        monitoringIntervalDays,
        location,
        endpoint,
        timeout);
  }

  static void createEntityTypeMonitoringSample(
      String project,
      String featurestoreId,
      String entityTypeId,
      String description,
      int monitoringIntervalDays,
      String location,
      String endpoint,
      int timeout)
      throws IOException, InterruptedException, ExecutionException, TimeoutException {

    FeaturestoreServiceSettings featurestoreServiceSettings =
        FeaturestoreServiceSettings.newBuilder().setEndpoint(endpoint).build();

    // Initialize client that will be used to send requests. This client only needs to be created
    // once, and can be reused for multiple requests. After completing all of your requests, call
    // the "close" method on the client to safely clean up any remaining background resources.
    try (FeaturestoreServiceClient featurestoreServiceClient =
        FeaturestoreServiceClient.create(featurestoreServiceSettings)) {

      FeaturestoreMonitoringConfig featurestoreMonitoringConfig =
          FeaturestoreMonitoringConfig.newBuilder()
              .setSnapshotAnalysis(
                  SnapshotAnalysis.newBuilder().setMonitoringIntervalDays(monitoringIntervalDays))
              .build();

      EntityType entityType =
          EntityType.newBuilder()
              .setDescription(description)
              .setMonitoringConfig(featurestoreMonitoringConfig)
              .build();

      CreateEntityTypeRequest createEntityTypeRequest =
          CreateEntityTypeRequest.newBuilder()
              .setParent(FeaturestoreName.of(project, location, featurestoreId).toString())
              .setEntityType(entityType)
              .setEntityTypeId(entityTypeId)
              .build();

      OperationFuture<EntityType, CreateEntityTypeOperationMetadata> entityTypeFuture =
          featurestoreServiceClient.createEntityTypeAsync(createEntityTypeRequest);
      System.out.format(
          "Operation name: %s%n", entityTypeFuture.getInitialFuture().get().getName());
      System.out.println("Waiting for operation to finish...");
      EntityType entityTypeResponse = entityTypeFuture.get(timeout, TimeUnit.SECONDS);
      System.out.println("Create Entity Type Monitoring Response");
      System.out.format("Name: %s%n", entityTypeResponse.getName());
    }
  }
}

Node.js

Bevor Sie dieses Beispiel anwenden, folgen Sie den Node.js-Einrichtungsschritten in der Vertex AI-Kurzanleitung zur Verwendung von Clientbibliotheken. Weitere Informationen finden Sie in der Referenzdokumentation zur Vertex AI Node.js 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.

/**
 * TODO(developer): Uncomment these variables before running the sample.\
 * (Not necessary if passing values as arguments)
 */

// const project = 'YOUR_PROJECT_ID';
// const featurestoreId = 'YOUR_FEATURESTORE_ID';
// const entityTypeId = 'YOUR_ENTITY_TYPE_ID';
// const description = 'YOUR_ENTITY_TYPE_DESCRIPTION';
// const duration = <MONITORING_INTERVAL_IN_SECONDS>;
// const location = 'YOUR_PROJECT_LOCATION';
// const apiEndpoint = 'YOUR_API_ENDPOINT';
// const timeout = <TIMEOUT_IN_MILLI_SECONDS>;

// Imports the Google Cloud Featurestore Service Client library
const {FeaturestoreServiceClient} =
  require('@google-cloud/aiplatform').v1beta1;

// Specifies the location of the api endpoint
const clientOptions = {
  apiEndpoint: apiEndpoint,
};

// Instantiates a client
const featurestoreServiceClient = new FeaturestoreServiceClient(
  clientOptions
);

async function createEntityTypeMonitoring() {
  // Configure the parent resource
  const parent = `projects/${project}/locations/${location}/featurestores/${featurestoreId}`;

  const entityType = {
    description: description,
    monitoringConfig: {
      snapshotAnalysis: {
        monitoringInterval: {
          seconds: Number(duration),
        },
      },
    },
  };

  const request = {
    parent: parent,
    entityTypeId: entityTypeId,
    entityType: entityType,
  };

  // Create EntityType request
  const [operation] = await featurestoreServiceClient.createEntityType(
    request,
    {timeout: Number(timeout)}
  );
  const [response] = await operation.promise();

  console.log('Create entity type monitoring response');
  console.log(`Name : ${response.name}`);
  console.log('Raw response:');
  console.log(JSON.stringify(response, null, 2));
}
createEntityTypeMonitoring();

Weitere Sprachen

Informationen zum Installieren und Verwenden des Vertex AI SDK für Python finden Sie unter Vertex AI SDK für Python verwenden. Weitere Informationen finden Sie in der Referenzdokumentation zur Vertex AI SDK for Python API.

Monitoring für eine neue Funktion deaktivieren

Im folgenden Beispiel wird eine neue Funktion mit deaktiviertem Monitoring erstellt:

REST

Senden Sie mit der Methode features.create eine POST-Anfrage, um ein Feature zu erstellen.

Ersetzen Sie diese Werte in den folgenden Anfragedaten:

  • LOCATION_ID: Die Region, in der sich der Featurestore befindet, z. B. us-central1.
  • PROJECT_ID: Ihre Projekt-ID.
  • FEATURESTORE_ID: ID des Featurestores.
  • ENTITY_TYPE_ID: ID des Entitätstyps.
  • FEATURE_ID: ID des Features.
  • VALUE_TYPE: Der Werttyp des Features.
  • DISABLE_MONITORING: Legen Sie "true" fest, um das Monitoring explizit zu deaktivieren.

HTTP-Methode und URL:

POST https://LOCATION_ID-aiplatform.googleapis.com/v1/projects/PROJECT_ID/locations/LOCATION_ID/featurestores/FEATURESTORE_ID/entityTypes/ENTITY_TYPE_ID?featureId=/FEATURE_ID

JSON-Text der Anfrage:

{
  "disableMonitoring": "DISABLE_MONITORING",
  "valueType": "VALUE_TYPE"
}

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/v1/projects/PROJECT_ID/locations/LOCATION_ID/featurestores/FEATURESTORE_ID/entityTypes/ENTITY_TYPE_ID?featureId=/FEATURE_ID"

PowerShell

Speichern Sie den Anfragetext in einer Datei mit dem Namen request.json und führen Sie 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/v1/projects/PROJECT_ID/locations/LOCATION_ID/featurestores/FEATURESTORE_ID/entityTypes/ENTITY_TYPE_ID?featureId=/FEATURE_ID" | Select-Object -Expand Content

Die Ausgabe sieht in etwa so aus: Sie können OPERATION_ID in der Antwort verwenden, um den Status des Vorgangs abzurufen.

{
  "name": "projects/PROJECT_ID/locations/LOCATION_ID/operations/OPERATION_ID",
  "metadata": {
    "@type": "type.googleapis.com/google.cloud.aiplatform.ui.CreateFeatureOperationMetadata",
    "genericMetadata": {
      "createTime": "2022-04-29T20:29:05.206525Z",
      "updateTime": "2022-04-29T20:29:05.206525Z"
    }
  }
}

Monitoring-Konfiguration aktualisieren

Sie können die Monitoring-Konfiguration beim Aktualisieren eines Entitätstyps festlegen. Sie können das Monitoring auch für bestimmte Features deaktivieren, indem Sie das Attribut disableMonitoring festlegen.

Monitoring-Konfiguration für Entitätstyp und -features aktualisieren

Im folgenden Beispiel wird die Monitoringkonfiguration eines vorhandenen Entitätstyps und bestimmte Features für diesen Entitätstyp aktualisiert:

Web-UI

Über die UI wird nur die Snapshot-Analyse unterstützt.

  1. Rufen Sie im Bereich "Vertex AI" der Google Cloud Console die Seite Features auf.
  2. Wählen Sie eine Region aus der Drop-down-Liste Region aus.
  3. Suchen Sie in der Tabelle "Features" die Spalte Entitätstyp, um den zu aktualisierenden Entitätstyp zu finden.
  4. Klicken Sie auf den Namen des Entitätstypnamens, um die Seite mit den Entitätsdetails aufzurufen.
  5. Klicken Sie in der Aktionsleiste auf Informationen bearbeiten.
  6. Geben Sie unter Zeitintervall für Monitoring die Anzahl der Tage zwischen Snapshots ein.
    Der Monitoring-Job für einen Entitätstyp oder ein Feature wird in der nächsten Runde nach der Tageszeit ausgeführt, wenn Sie das Monitoring für den Entitätstyp oder das Feature aktivieren. Wenn Sie beispielsweise das Monitoring am Montag um 22:30 Uhr aktivieren und als Monitoring-Intervall zwei Tage angeben, wird der erste Monitoring-Job am Mittwoch um 23:00 Uhr ausgeführt.
  7. Klicken Sie auf Aktualisieren.
  8. In der Spalte Features finden Sie ebenfalls die Spalte, die das zu aktualisierende Feature enthält.
  9. Klicken Sie auf den Namen der Funktion, um die Detailseite aufzurufen.
  10. Klicken Sie in der Aktionsleiste auf Informationen bearbeiten.
  11. Wenn Sie das Monitoring für eine bestimmte Funktion deaktivieren möchten, deaktivieren Sie die Option Monitoring aktiviert.

REST

Senden Sie zum Aktualisieren eines Entitätstyps eine PATCH-Anfrage mit der Methode entityTypes.patch.

Ersetzen Sie diese Werte in den folgenden Anfragedaten:

  • LOCATION_ID: Region, in der sich der Featurestore befindet, z. B. us-central1.
  • PROJECT_ID: Ihre Projekt-ID.
  • FEATURESTORE_ID: ID des Featurestores.
  • ENTITY_TYPE_ID: ID des Entitätstyps.
  • DURATION_IN_DAYS: Intervall zwischen den Snapshots in Tagen.
  • STALENESS_DAYS: Anzahl der Tage, die beim Erstellen von Snapshots berücksichtigt werden soll.
  • NUMERICAL_THRESHOLD_VALUE: Schwellenwert für die Erkennung von Anomalien für numerische Features unter diesem Entitätstyp. Die Statistikabweichung wird durch die Jenson-Shannon-Abweichung berechnet.
  • CATEGORICAL_THRESHOLD_VALUE: Schwellenwert zur Erkennung von Anomalien für kategoriale Features unter diesem Entitätstyp. Die Statistikabweichung wird durch die L-Infinity-Entfernung berechnet.
  • IMPORT_FEATURE_ANALYSIS_STATE: Status gibt an, ob die Analyse von importierten Features aktiviert werden soll.
  • IMPORT_FEATURE_ANALYSIS_BASELINE: Die Referenz gibt "???" an.

HTTP-Methode und URL:

PATCH https://LOCATION_ID-aiplatform.googleapis.com/v1/projects/PROJECT_ID/locations/LOCATION_ID/featurestores/FEATURESTORE_ID/entityTypes/ENTITY_TYPE_ID

JSON-Text der Anfrage:

{
  "monitoringConfig": {
    "snapshotAnalysis": {
      "monitoringIntervalDays": "DURATION_IN_DAYS",
      "stalenessDays": "STALENESS_DAYS"
    }
  },
  "numericalThresholdConfig": {
    "value": "NUMERICAL_THRESHOLD_VALUE"
  },
  "categoricalThresholdConfig": {
    "value": "CATEGORICAL_THRESHOLD_VALUE"
  },
  "importFeatureAnalysis": {
    "state": "IMPORT_FEATURE_ANALYSIS_STATE",
    "anomalyDetectionBaseline": "IMPORT_FEATURE_ANALYSIS_BASELINE"
  }
}

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 PATCH \
-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/v1/projects/PROJECT_ID/locations/LOCATION_ID/featurestores/FEATURESTORE_ID/entityTypes/ENTITY_TYPE_ID"

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 PATCH `
-Headers $headers `
-ContentType: "application/json; charset=utf-8" `
-InFile request.json `
-Uri "https://LOCATION_ID-aiplatform.googleapis.com/v1/projects/PROJECT_ID/locations/LOCATION_ID/featurestores/FEATURESTORE_ID/entityTypes/ENTITY_TYPE_ID" | Select-Object -Expand Content

Sie sollten in etwa folgende JSON-Antwort erhalten:

{
  "name": "projects/PROJECT_NUMBER/locations/LOCATION_ID/featurestores/FEATURESTORE_ID/entityTypes/ENTITY_TYPE_ID",
  "createTime": "2021-07-22T23:18:31.339972Z",
  "updateTime": "2021-07-29T22:24:40.221821Z",
  "etag": "AMEw9yPGDpwUwHx39gIDIg5mTQz65GMhnYHRzRslVPonm1g8xTnsTC5YUibmWo2MIuI=",
  "monitoringConfig": {
    "snapshotAnalysis": {
      "monitoringIntervalDays": "DURATION_IN_DAYS",
      "stalenessDays": "STALENESS_DAYS"
    }
  },
  "numericalThresholdConfig": {
    "value": "NUMERICAL_THRESHOLD_VALUE"
  },
  "categoricalThresholdConfig": {
    "value": "CATEGORICAL_THRESHOLD_VALUE"
  },
  "importFeatureAnalysis": {
    "state": "IMPORT_FEATURE_ANALYSIS_STATE",
    "anomalyDetectionBaseline": "IMPORT_FEATURE_ANALYSIS_BASELINE"
  }
}

Java

Bevor Sie dieses Beispiel anwenden, folgen Sie den Java-Einrichtungsschritten in der Vertex AI-Kurzanleitung zur Verwendung von Clientbibliotheken. Weitere Informationen finden Sie in der Referenzdokumentation zur Vertex AI Java 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.


import com.google.cloud.aiplatform.v1.EntityType;
import com.google.cloud.aiplatform.v1.EntityTypeName;
import com.google.cloud.aiplatform.v1.FeaturestoreMonitoringConfig;
import com.google.cloud.aiplatform.v1.FeaturestoreMonitoringConfig.SnapshotAnalysis;
import com.google.cloud.aiplatform.v1.FeaturestoreServiceClient;
import com.google.cloud.aiplatform.v1.FeaturestoreServiceSettings;
import com.google.cloud.aiplatform.v1.UpdateEntityTypeRequest;
import java.io.IOException;

public class UpdateEntityTypeMonitoringSample {

  public static void main(String[] args) throws IOException {
    // TODO(developer): Replace these variables before running the sample.
    String project = "YOUR_PROJECT_ID";
    String featurestoreId = "YOUR_FEATURESTORE_ID";
    String entityTypeId = "YOUR_ENTITY_TYPE_ID";
    int monitoringIntervalDays = 1;
    String location = "us-central1";
    String endpoint = "us-central1-aiplatform.googleapis.com:443";
    updateEntityTypeMonitoringSample(
        project, featurestoreId, entityTypeId, monitoringIntervalDays, location, endpoint);
  }

  static void updateEntityTypeMonitoringSample(
      String project,
      String featurestoreId,
      String entityTypeId,
      int monitoringIntervalDays,
      String location,
      String endpoint)
      throws IOException {

    FeaturestoreServiceSettings featurestoreServiceSettings =
        FeaturestoreServiceSettings.newBuilder().setEndpoint(endpoint).build();

    // Initialize client that will be used to send requests. This client only needs to be created
    // once, and can be reused for multiple requests. After completing all of your requests, call
    // the "close" method on the client to safely clean up any remaining background resources.
    try (FeaturestoreServiceClient featurestoreServiceClient =
        FeaturestoreServiceClient.create(featurestoreServiceSettings)) {
      FeaturestoreMonitoringConfig featurestoreMonitoringConfig =
          FeaturestoreMonitoringConfig.newBuilder()
              .setSnapshotAnalysis(
                  SnapshotAnalysis.newBuilder().setMonitoringIntervalDays(monitoringIntervalDays))
              .build();
      EntityType entityType =
          EntityType.newBuilder()
              .setName(
                  EntityTypeName.of(project, location, featurestoreId, entityTypeId).toString())
              .setMonitoringConfig(featurestoreMonitoringConfig)
              .build();

      UpdateEntityTypeRequest updateEntityTypeRequest =
          UpdateEntityTypeRequest.newBuilder().setEntityType(entityType).build();
      EntityType entityTypeResponse =
          featurestoreServiceClient.updateEntityType(updateEntityTypeRequest);
      System.out.println("Update Entity Type Monitoring Response");
      System.out.println(entityTypeResponse);
    }
  }
}

Node.js

Bevor Sie dieses Beispiel anwenden, folgen Sie den Node.js-Einrichtungsschritten in der Vertex AI-Kurzanleitung zur Verwendung von Clientbibliotheken. Weitere Informationen finden Sie in der Referenzdokumentation zur Vertex AI Node.js 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.

/**
 * TODO(developer): Uncomment these variables before running the sample.\
 * (Not necessary if passing values as arguments)
 */

// const project = 'YOUR_PROJECT_ID';
// const featurestoreId = 'YOUR_FEATURESTORE_ID';
// const entityTypeId = 'YOUR_ENTITY_TYPE_ID';
// const duration = <MONITORING_INTERVAL_IN_SECONDS>;
// const location = 'YOUR_PROJECT_LOCATION';
// const apiEndpoint = 'YOUR_API_ENDPOINT';
// const timeout = <TIMEOUT_IN_MILLI_SECONDS>;

// Imports the Google Cloud Featurestore Service Client library
const {FeaturestoreServiceClient} =
  require('@google-cloud/aiplatform').v1beta1;

// Specifies the location of the api endpoint
const clientOptions = {
  apiEndpoint: apiEndpoint,
};

// Instantiates a client
const featurestoreServiceClient = new FeaturestoreServiceClient(
  clientOptions
);

async function updateEntityTypeMonitoring() {
  // Configure the name resource
  const name = `projects/${project}/locations/${location}/featurestores/${featurestoreId}/entityTypes/${entityTypeId}`;

  // Constructing the monitoring configuration
  const monitoringConfig = {
    snapshotAnalysis: {
      monitoringInterval: {
        seconds: Number(duration),
      },
    },
  };

  // Constructing the entityType
  const entityType = {
    name: name,
    monitoringConfig: monitoringConfig,
  };

  const request = {
    entityType: entityType,
  };

  // Update EntityType request
  const [response] = await featurestoreServiceClient.updateEntityType(
    request,
    {timeout: Number(timeout)}
  );

  console.log('Update entity type monitoring response');
  console.log(`Name : ${response.name}`);
  console.log('Raw response:');
  console.log(JSON.stringify(response, null, 2));
}
updateEntityTypeMonitoring();

Monitoring für eine Funktion deaktivieren

Im folgenden Beispiel wird das Monitoring für ein vorhandenes Feature deaktiviert:

REST

Wenn Sie ein Feature aktualisieren möchten, senden Sie eine PATCH-Anfrage mit der Methode features.patch.

Ersetzen Sie diese Werte in den folgenden Anfragedaten:

  • LOCATION_ID: Die Region, in der sich der Featurestore befindet, z. B. us-central1.
  • PROJECT_ID: Ihre Projekt-ID.
  • FEATURESTORE_ID: ID des Featurestores.
  • ENTITY_TYPE_ID: ID des Entitätstyps.
  • FEATURE_ID: ID des zu aktualisierenden Features.
  • DISABLE_MONITORING: Legen Sie "true" fest, um das Monitoring explizit zu deaktivieren.

HTTP-Methode und URL:

PATCH https://LOCATION_ID-aiplatform.googleapis.com/v1/projects/PROJECT_ID/locations/LOCATION_ID/featurestores/FEATURESTORE_ID/entityTypes/ENTITY_TYPE_ID/features/FEATURE_ID

JSON-Text der Anfrage:

{
  "disableMonitoring": "DISABLE_MONITORING"
}

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 PATCH \
-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/v1/projects/PROJECT_ID/locations/LOCATION_ID/featurestores/FEATURESTORE_ID/entityTypes/ENTITY_TYPE_ID/features/FEATURE_ID"

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 PATCH `
-Headers $headers `
-ContentType: "application/json; charset=utf-8" `
-InFile request.json `
-Uri "https://LOCATION_ID-aiplatform.googleapis.com/v1/projects/PROJECT_ID/locations/LOCATION_ID/featurestores/FEATURESTORE_ID/entityTypes/ENTITY_TYPE_ID/features/FEATURE_ID" | Select-Object -Expand Content

Sie sollten in etwa folgende JSON-Antwort erhalten:

{
  "name": "projects/PROJECT_NUMBER/locations/LOCATION_ID/featurestores/FEATURESTORE_ID/entityTypes/ENTITY_TYPE_ID/features/FEATURE_ID",
  "valueType": "FEATURE_VALUE_TYPE",
  "createTime": "2021-07-22T23:18:31.339972Z",
  "updateTime": "2021-07-29T22:24:40.221821Z",
  "etag": "AMEw9yPGDpwUwHx39gIDIg5mTQz65GMhnYHRzRslVPonm1g8xTnsTC5YUibmWo2MIuI=",
  "disableMonitoring": "DISABLE_MONITORING"
}

Verteilungen der Featurewerte abrufen

Verwenden Sie die Google Cloud Console, um die Verteilung der Featurewerte im Zeitverlauf abzurufen.

Web-UI

  1. Rufen Sie im Bereich "Vertex AI" der Google Cloud Console die Seite Features auf.

    Zur Seite „Features“

  2. Wählen Sie eine Region aus der Drop-down-Liste Region aus.

  3. Klicken Sie in der Spalte Entitätstyp auf den Entitätstyp, um die Verteilungen der Featurewerte für alle Features eines Entitätstyps anzuzeigen.

  4. So rufen Sie die Verteilungsmesswerte von Features für ein Feature auf:

    1. Klicken Sie in der Spalte Funktion auf das Feature.

    2. Klicken Sie auf den Tab Messwerte, um die Messwerte für die Verteilung der Featurewerte anzuzeigen.

Anomalien der Featurewerte abrufen

Wenn die Verteilung der Featurewerte in einer Monitoring-Pipeline vom angegebenen Schwellenwert abweicht, wird sie als Anomalie betrachtet. Es gibt zwei Arten von Anomalien: Abweichungen zwischen Training und Bereitstellung und Drift. Vertex AI vergleicht die neuesten Featurewerte in der Produktion mit einer Referenz, um die Abweichung zu berechnen.

  • Vertex AI vergleicht die neuesten Featurewerte mit der statistischen Verteilung der Featurewerte in den Trainingsdaten, um Abweichungen zwischen Training und Bereitstellung zu erkennen. In diesem Fall gilt die statistische Verteilung der Featurewerte in den Trainingsdaten als Basisverteilung. Weitere Informationen zu Abweichungen zwischen Training und Bereitstellung.

  • Vertex AI vergleicht die neuesten Featurewerte mit der statistischen Verteilung der Featurewerte aus dem letzten Monitoringlauf, der mindestens vor einer Stunde aufgetreten ist, um Abweichungen zu erkennen. In diesem Fall wird die statistische Verteilung der Featurewerte aus dem letzten Monitoring-Lauf als Basisverteilung betrachtet. Weitere Informationen zu Drift

In beiden Fällen wird die Referenzverteilung mit den neuesten Merkmalswerten in der Produktion verglichen, um eine Entfernungspunktzahl zu berechnen.

  • Bei kategorialen Merkmalen wird die Entfernungspunktzahl anhand der L-Infinity-Entfernung berechnet. Wenn der Abstandswert in diesem Fall den Schwellenwert überschreitet, den Sie im Feld Schwellenwert für kategoriale Benachrichtigungen angeben, wird er als Anomalie identifiziert.

  • Für numerische Features wird die Entfernungspunktzahl mithilfe der Jensen-Shannon-Abweichung berechnet. In diesem Fall wird die Entfernungspunktzahl als Anomalie bezeichnet, wenn sie den Schwellenwert überschreitet, den Sie im Feld Schwellenwert für numerische Benachrichtigungen festgelegt haben.

In beiden Fällen kann die Anomalie eine Abweichung zwischen Training und Bereitstellung oder eine Abweichung sein, je nach der Basisverteilung, die zur Berechnung der Entfernungspunktzahl verwendet wird. In Cloud Logging wird ein Anomalielog mit dem Lognamen featurestore_log geschrieben. Sie können die Logs mit jedem nachgelagerten Dienst synchronisieren, der von Cloud Logging unterstützt wird, beispielsweise Pub/Sub.

Weitere Informationen zum Festlegen der Schwellenwerte von Benachrichtigungen finden Sie unter Entitätstyp mit aktiviertem Monitoring erstellen.

Beispielabfrage für alle Anomalien eines bestimmten Featurestores

logName="projects/model-monitoring-demo/logs/aiplatform.googleapis.com%2FFfeaturestore_log"
resource.labels.resource_container=<project_number>
resource.labels.featurestore_id=<featurestore_id>

Beispiel für einen Anomalielogeintrag

{
  "insertId": "ktbx5jf7vdn7b",
  "jsonPayload": {
    "threshold": 0.001,
    "featureName": "projects/<project_number>/locations/us-central1/featurestores/<featurestore_id>/entityTypes/<entity_type_id>/features/<feature_id>",
    "deviation": 1,
    "@type": "type.googleapis.com/google.cloud.aiplatform.logging.FeatureAnomalyLogEntry",
    "objective": "Featurestore Monitoring Snapshot Drift Anomaly"
  },
  "resource": {
    "type": "aiplatform.googleapis.com/Featurestore",
    "labels": {
      "resource_container": "<project_number>",
      "location": "us-central1",
      "featurestore_id": "<featurestore_id>"
    }
  },
  "timestamp": "2022-02-06T00:54:06.455501Z",
  "severity": "WARNING",
  "logName": "projects/model-monitoring-demo/logs/aiplatform.googleapis.com%2Ffeaturestore_log",
  "receiveTimestamp": "2022-02-06T00:54:06.476107155Z"
}

Offlinespeicher-Schreibfehler bei der Streamingaufnahme überwachen

Verwenden Sie die Google Cloud Console, um Schreibfehler im Offlinespeicher während der Streamingaufnahme zu überwachen.

Messwerte für die Streamingaufnahme zum Offlinespeicher ansehen

Sie können den Messwert Offlinespeicher-Schreibvorgang für Streaming-Schreibvorgang für Vertex AI Feature Store (Legacy) im Metrics Explorer überwachen.

Web-UI

  1. Rufen Sie in der Google Cloud Console den Metrics Explorer auf.

    Zum Metrics Explorer

  2. Wählen Sie in der Symbolleiste den Tab Explorer aus.

  3. Geben Sie auf dem Tab Konfiguration die Daten an, die im Diagramm angezeigt werden sollen:

    • Ressource und Messwert: Wählen Sie den Messwert Vertex AI Feature Store – Offlinespeicher-Schreibvorgang für Streaming-Schreibvorgang aus.

    • Gruppieren nach: Wählen Sie error_code aus.

    • Minimaler Ausrichtungszeitraum: Gibt das minimale Zeitintervall für die Ausrichtung der Daten im Diagramm an.

  4. Nachdem Sie diese Felder aktualisiert haben, werden im Diagramm die Offlinespeicher-Schreibfehler für die verschiedenen Fehlercodes angezeigt.

    Nachdem Sie das Diagramm erstellt haben, können Sie es Ihrem benutzerdefinierten Dashboard hinzufügen. Weitere Informationen finden Sie unter Diagramm zur späteren Verwendung speichern.

Vertex AI Feature Store-Logs (Legacy) aufrufen

Im Log-Explorer können Sie die Logeinträge für Ihren Feature Store ansehen, einschließlich der Logs, die während der Offlinespeicher-Schreibfehler generiert wurden.

Web-UI

  1. Rufen Sie in der Google Cloud Console die Seite Log-Explorer auf.

    Zu „Log-Explorer“

  2. Fügen Sie im Query Builder die folgenden Abfrageparameter hinzu und klicken Sie dann auf Abfrage ausführen:

    • Ressource: Wählen Sie Vertex AI Feature Store aus.
    • Logname: Wählen Sie unter Vertex AI API aiplatform.googlapis.com/featurestore_log aus.