Monitoraggio

In Vertex AI Feature Store (legacy), puoi monitorare e impostare avvisi su featurestore e caratteristiche. Ad esempio, un team delle operazioni potrebbe monitorare un archivio di caratteristiche per monitorare l'uso della CPU. I proprietari delle caratteristiche, come i data scientist, potrebbero monitorare i valori delle caratteristiche per rilevare la deviazione nel tempo.

I metodi per il monitoraggio degli archivi di caratteristiche e delle caratteristiche sono descritti nelle sezioni seguenti:

Monitoraggio archivio di caratteristiche

Vertex AI Feature Store (legacy) segnala le metriche sul tuo archivio di caratteristiche a Cloud Monitoring, come il carico della CPU, la capacità di archiviazione e le latenze delle richieste. Vertex AI raccoglie e segnala queste metriche per te. Non è necessario configurare o abilitare il monitoraggio dell'archivio di caratteristiche.

Per configurare soglie e notifiche, utilizza Cloud Monitoring. Ad esempio, puoi impostare un avviso se il carico medio della CPU supera il 70%, il che potrebbe richiedere un aumento del numero di nodi dell'archivio di caratteristiche.

Puoi anche visualizzare le metriche dell'archivio di caratteristiche nella sezione Vertex AI della console Google Cloud per vedere le tendenze nel tempo. Per alcuni grafici, la console mostra valori aggregati o calcolati per semplificare la fruizione delle informazioni. Puoi sempre visualizzare i dati non elaborati in Cloud Monitoring.

Per ulteriori informazioni, consulta le metriche di monitoraggio di Vertex AI Feature Store (legacy) nella pagina di Vertex AI Cloud Monitoring.

Monitoraggio del valore delle caratteristiche

Il monitoraggio del valore delle caratteristiche consente di tenere traccia di quanto la distribuzione del valore di una caratteristica cambia in un archivio di caratteristiche. Sono supportati i seguenti tipi di monitoraggio dei valori delle caratteristiche:

  • Analisi snapshot: Vertex AI Feature Store (legacy) acquisisce snapshot periodici dei valori delle tue caratteristiche. Nel tempo, man mano che importi più dati, potresti notare che la distribuzione dei valori delle caratteristiche cambia. Questa modifica indica che potrebbe essere necessario riaddestrare tutti i modelli che utilizzano queste caratteristiche. Puoi specificare una soglia in modo che le anomalie vengano registrate nella console di Cloud Logging ogni volta che la deviazione della distribuzione supera la soglia.

    Per i set di dati che superano i 5 milioni di ID entità, Vertex AI Feature Store (legacy) genera snapshot basati su 5 milioni di ID entità selezionati casualmente nell'intervallo di tempo specificato come numero di giorni di inattività.

  • Analisi delle caratteristiche di importazione: ogni operazione ImportFeatureValues genera statistiche di distribuzione per i valori importati in Vertex AI Feature Store (legacy). Puoi scegliere di rilevare anomalie confrontando le tue statistiche di distribuzione con la distribuzione dei valori delle caratteristiche importate in precedenza o, se attivata, la distribuzione di snapshot.

    Per set di dati che superano i 5 milioni di istanze, Vertex AI Feature Store (legacy) genera snapshot basati su dati selezionati casualmente, come segue:

    • Se il numero di istanze all'interno del set di dati importato supera i 5 milioni, ma non i 50 milioni, lo snapshot viene generato sulla base di 5 milioni di istanze selezionate casualmente.
    • Se il numero di istanze all'interno del set di dati importato supera i 50 milioni, lo snapshot viene generato in base al 10% delle istanze, selezionate in modo casuale.

Prendi ad esempio una caratteristica che raccoglie i prezzi delle case vendute di recente e poi inserisce i valori in un modello per prevedere il prezzo di una casa. I prezzi delle case vendute di recente potrebbero variare significativamente nel tempo oppure il batch di valori importati potrebbe contenere dati che si discostano in modo significativo dai dati di addestramento. Vertex AI Feature Store ti avvisa di questo cambiamento. In seguito, puoi addestrare nuovamente il modello per utilizzare le informazioni più recenti.

Imposta una configurazione di monitoraggio

Per avviare il monitoraggio, puoi definire una configurazione di monitoraggio su un tipo di entità, che abilita il monitoraggio per tutte le funzionalità dei seguenti tipi:

  • BOOL
  • STRING
  • DOUBLE
  • INT64

Puoi impostare la configurazione del monitoraggio quando crei un tipo di entità. Puoi anche scegliere di disattivare il monitoraggio per funzionalità specifiche impostando la proprietà disableMonitoring. La configurazione del monitoraggio del tipo di entità specifica quanto segue:

  • Se abilitare il monitoraggio. Il monitoraggio è disabilitato per impostazione predefinita.
  • Soglie utilizzate per rilevare le anomalie. La soglia predefinita è 0,3.
  • Finestra temporale oltre all'intervallo tra le istantanee (per l'analisi delle istantanee). Il valore predefinito è 21.
  • Indica se abilitare l'analisi delle caratteristiche di importazione. L'impostazione predefinita è disabilitata.

Per ulteriori informazioni, consulta il tipo FeaturestoreMonitoringConfig nel riferimento API.

Crea un tipo di entità con il monitoraggio abilitato

L'esempio seguente crea un tipo di entità in cui è abilitato il monitoraggio delle caratteristiche:

UI web

La UI supporta solo l'analisi di snapshot.

  1. Nella sezione Vertex AI della console Google Cloud, vai alla pagina Funzionalità.

    Vai alla pagina Funzionalità

  2. Seleziona una regione dall'elenco a discesa Regione.
  3. Fai clic su Crea tipo di entità.
  4. Capovolgi la sezione Monitoraggio delle funzionalità su Abilitato.
  5. Inserisci il numero di giorni tra gli snapshot nel campo Intervallo di tempo del monitoraggio.
    Il job di monitoraggio per un tipo di entità o una funzionalità viene eseguito all'ora arrotondata più vicina all'ora del giorno in cui abiliti il monitoraggio per il tipo di entità o la funzionalità. Ad esempio, se abiliti il monitoraggio alle 22:30 di lunedì e specifichi due giorni come intervallo di tempo del monitoraggio, il primo job di monitoraggio viene eseguito alle 23:00 di mercoledì.
  6. Inserisci il numero di giorni da esaminare per ogni istantanea nel campo Finestra temporale di monitoraggio.
  7. Inserisci il numero della soglia utilizzata per rilevare le anomalie delle caratteristiche numeriche nel campo Soglia di avviso numerica.
  8. Inserisci il numero della soglia utilizzata per rilevare le anomalie per le caratteristiche categoriche in questo EntityType nel campo Soglia di avviso categorico.
    Per ulteriori informazioni sul rilevamento di anomalie nei valori delle caratteristiche, consulta Visualizzare le anomalie dei valori delle caratteristiche.
  9. Fai clic su Crea.
  10. Nella tabella delle caratteristiche, fai clic su un tipo di entità.
  11. Per aggiungere nuove caratteristiche all'entità, fai clic su Aggiungi caratteristiche.
  12. Per disattivare il monitoraggio per una funzionalità specifica, disattiva Abilita il monitoraggio.

REST

Per creare un tipo di entità, invia una richiesta POST utilizzando il metodo entityTypes.create.

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

  • LOCATION_ID: regione in cui si trova l'archivio di caratteristiche, ad esempio us-central1.
  • PROJECT_ID: il tuo ID progetto.
  • FEATURESTORE_ID: ID dell'archivio di caratteristiche.
  • ENTITY_TYPE_ID: ID del tipo di entità.
  • DURATION: la durata dell'intervallo tra gli snapshot in giorni.
  • STALENESS_DAYS: il numero di giorni da prendere in considerazione quando si scattano istantanee.
  • NUMERICAL_THRESHOLD_VALUE: la soglia per rilevare le anomalie delle caratteristiche numeriche in questo tipo di entità. La deviazione statistica è calcolata dalla divergenza di Jenson-Shannon.
  • CATEGORICAL_THRESHOLD_VALUE: la soglia per rilevare le anomalie per le caratteristiche categoriche in questo tipo di entità. La deviazione statistica è calcolata dalla distanza L-infinito.
  • IMPORT_FEATURE_ANALYSIS_STATE: lo stato che indica se abilitare l'analisi della funzionalità di importazione.
  • IMPORT_FEATURE_ANALYSIS_BASELINE: la base di riferimento per l'analisi delle caratteristiche di importazione, se abilitata.

Metodo HTTP e URL:

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

Corpo JSON della richiesta:

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

Per inviare la richiesta, scegli una delle seguenti opzioni:

curl

Salva il corpo della richiesta in un file denominato request.json ed esegui questo comando:

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

Salva il corpo della richiesta in un file denominato request.json ed esegui questo comando:

$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

Dovresti vedere un output simile al seguente. Puoi utilizzare OPERATION_ID nella risposta per ottenere lo stato dell'operazione.

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

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

Per eseguire l'autenticazione su Vertex AI, configura Credenziali predefinite dell'applicazione. Per maggiori informazioni, consulta Configurare l'autenticazione per un ambiente di sviluppo locale.


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

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

Per eseguire l'autenticazione su Vertex AI, configura Credenziali predefinite dell'applicazione. Per maggiori informazioni, consulta Configurare l'autenticazione per un ambiente di sviluppo locale.

/**
 * 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();

Linguaggi aggiuntivi

Per informazioni su come installare e utilizzare l'SDK Vertex AI per Python, consulta Utilizzare l'SDK Vertex AI per Python. Per ulteriori informazioni, consulta la documentazione di riferimento dell'API Vertex AI SDK per Python.

Disattivare il monitoraggio per una nuova funzionalità

L'esempio seguente crea una nuova funzionalità con il monitoraggio disattivato:

REST

Per creare una caratteristica, invia una richiesta POST utilizzando il metodo features.create.

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

  • LOCATION_ID: regione in cui si trova l'archivio di caratteristiche, ad esempio us-central1.
  • PROJECT_ID: il tuo ID progetto.
  • FEATURESTORE_ID: ID dell'archivio di caratteristiche.
  • ENTITY_TYPE_ID: ID del tipo di entità.
  • FEATURE_ID: ID dell'elemento.
  • VALUE_TYPE: il tipo di valore della caratteristica.
  • DISABLE_MONITORING: viene impostato su true per disattivare esplicitamente il monitoraggio.

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

Corpo JSON della richiesta:

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

Per inviare la richiesta, scegli una delle seguenti opzioni:

curl

Salva il corpo della richiesta in un file denominato request.json ed esegui questo comando:

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

Salva il corpo della richiesta in un file denominato request.json ed esegui questo comando:

$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

Dovresti vedere un output simile al seguente. Puoi utilizzare OPERATION_ID nella risposta per ottenere lo stato dell'operazione.

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

Aggiorna configurazione di monitoraggio

Puoi impostare la configurazione del monitoraggio quando aggiorni un tipo di entità. Puoi anche scegliere di disattivare il monitoraggio per funzionalità specifiche impostando la proprietà disableMonitoring.

Aggiorna la configurazione del monitoraggio per il tipo di entità e le funzionalità

L'esempio seguente aggiorna la configurazione di monitoraggio per un tipo di entità esistente e funzionalità specifiche per quel tipo di entità:

UI web

La UI supporta solo l'analisi di snapshot.

  1. Nella sezione Vertex AI della console Google Cloud, vai alla pagina Funzionalità.
  2. Seleziona una regione dall'elenco a discesa Regione.
  3. Nella tabella delle funzionalità, visualizza la colonna Tipo di entità per trovare il tipo di entità da aggiornare.
  4. Fai clic sul nome del nome del tipo di entità per visualizzare la pagina dei dettagli dell'entità.
  5. Nella barra delle azioni, fai clic su Modifica informazioni.
  6. In Intervallo di tempo del monitoraggio, inserisci il numero di giorni tra gli snapshot.
    Il job di monitoraggio per un tipo di entità o una funzionalità viene eseguito all'ora arrotondata più vicina all'ora del giorno in cui abiliti il monitoraggio per il tipo di entità o la funzionalità. Ad esempio, se abiliti il monitoraggio alle 22:30 di lunedì e specifichi due giorni come intervallo di tempo del monitoraggio, il primo job di monitoraggio viene eseguito alle 23:00 di mercoledì.
  7. Fai clic su Update (Aggiorna).
  8. Analogamente, nella tabella delle funzionalità, visualizza la colonna Funzionalità per trovare la funzionalità da aggiornare.
  9. Fai clic sul nome dell'elemento per visualizzare la pagina dei dettagli.
  10. Nella barra delle azioni, fai clic su Modifica informazioni.
  11. Per disattivare il monitoraggio per una funzionalità specifica, disattiva Monitoraggio abilitato.

REST

Per aggiornare un tipo di entità, invia una richiesta PATCH utilizzando il metodo entityTypes.patch.

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

  • LOCATION_ID: regione in cui si trova l'archivio di caratteristiche, ad esempio us-central1.
  • PROJECT_ID: il tuo ID progetto.
  • FEATURESTORE_ID: ID dell'archivio di caratteristiche.
  • ENTITY_TYPE_ID: ID del tipo di entità.
  • DURATION_IN_DAYS: la durata dell'intervallo tra gli snapshot in giorni.
  • STALENESS_DAYS: il numero di giorni da prendere in considerazione quando si scattano istantanee.
  • NUMERICAL_THRESHOLD_VALUE: la soglia per rilevare le anomalie delle caratteristiche numeriche in questo tipo di entità. La deviazione statistica è calcolata dalla divergenza di Jenson-Shannon.
  • CATEGORICAL_THRESHOLD_VALUE: la soglia per rilevare le anomalie per le caratteristiche categoriche in questo tipo di entità. La deviazione statistica è calcolata dalla distanza L-infinito.
  • IMPORT_FEATURE_ANALYSIS_STATE: lo stato che indica se abilitare l'analisi della funzionalità di importazione.
  • IMPORT_FEATURE_ANALYSIS_BASELINE: la base di riferimento che indica ????

Metodo HTTP e URL:

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

Corpo JSON della richiesta:

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

Per inviare la richiesta, scegli una delle seguenti opzioni:

curl

Salva il corpo della richiesta in un file denominato request.json ed esegui questo comando:

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

Salva il corpo della richiesta in un file denominato request.json ed esegui questo comando:

$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

Dovresti ricevere una risposta JSON simile alla seguente:

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

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

Per eseguire l'autenticazione su Vertex AI, configura Credenziali predefinite dell'applicazione. Per maggiori informazioni, consulta Configurare l'autenticazione per un ambiente di sviluppo locale.


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

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

Per eseguire l'autenticazione su Vertex AI, configura Credenziali predefinite dell'applicazione. Per maggiori informazioni, consulta Configurare l'autenticazione per un ambiente di sviluppo locale.

/**
 * 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();

Disattivare il monitoraggio per una funzionalità

L'esempio seguente disattiva il monitoraggio di una funzionalità esistente:

REST

Per aggiornare una caratteristica, invia una richiesta PATCH utilizzando il metodo features.patch.

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

  • LOCATION_ID: regione in cui si trova l'archivio di caratteristiche, ad esempio us-central1.
  • PROJECT_ID: il tuo ID progetto.
  • FEATURESTORE_ID: ID dell'archivio di caratteristiche.
  • ENTITY_TYPE_ID: ID del tipo di entità.
  • FEATURE_ID: ID della funzionalità da aggiornare.
  • DISABLE_MONITORING: viene impostato su true per disattivare esplicitamente il monitoraggio.

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

Corpo JSON della richiesta:

{
  "disableMonitoring": "DISABLE_MONITORING"
}

Per inviare la richiesta, scegli una delle seguenti opzioni:

curl

Salva il corpo della richiesta in un file denominato request.json ed esegui questo comando:

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

Salva il corpo della richiesta in un file denominato request.json ed esegui questo comando:

$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

Dovresti ricevere una risposta JSON simile alla seguente:

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

Visualizza distribuzioni dei valori delle caratteristiche

Utilizza la console Google Cloud per visualizzare la distribuzione dei valori delle caratteristiche nel tempo.

UI web

  1. Nella sezione Vertex AI della console Google Cloud, vai alla pagina Funzionalità.

    Vai alla pagina Funzionalità

  2. Seleziona una regione dall'elenco a discesa Regione.

  3. Per visualizzare le distribuzioni dei valori delle caratteristiche per tutte le caratteristiche di un tipo di entità, fai clic sul tipo di entità nella colonna Tipo di entità.

  4. Per visualizzare le metriche di distribuzione dei valori delle caratteristiche per una caratteristica:

    1. Nella colonna Caratteristica, fai clic sulla caratteristica.

    2. Fai clic sulla scheda Metriche per visualizzare le metriche di distribuzione dei valori delle caratteristiche.

Visualizza le anomalie dei valori delle funzionalità

Se la distribuzione dei valori delle caratteristiche devia oltre la soglia specificata in una pipeline di monitoraggio, viene considerata un'anomalia. Esistono due tipi di anomalie: disallineamento e deviazione tra addestramento e distribuzione. Per calcolare la deviazione, Vertex AI confronta i valori delle caratteristiche più recenti in produzione con una base di riferimento.

  • Per rilevare un disallineamento addestramento/distribuzione, Vertex AI confronta i valori più recenti delle caratteristiche in produzione con la distribuzione statistica dei valori delle caratteristiche nei dati di addestramento. In questo caso, la distribuzione statistica dei valori delle caratteristiche nei dati di addestramento è considerata come la distribuzione di riferimento. Scopri di più sul disallineamento addestramento/distribuzione.

  • Per rilevare la deviazione, Vertex AI confronta i valori più recenti delle caratteristiche in produzione con la distribuzione statistica dei valori delle caratteristiche dell'esecuzione più recente di monitoraggio avvenuta almeno un'ora prima. In questo caso, la distribuzione statistica dei valori delle caratteristiche dell'esecuzione di monitoraggio più recente viene considerata come la distribuzione di riferimento. Scopri di più sulla deviazione.

In entrambi i casi, la distribuzione di riferimento viene confrontata con gli ultimi valori delle caratteristiche in produzione per calcolare un punteggio relativo alla distanza.

  • Per le caratteristiche categoriche, il punteggio della distanza viene calcolato utilizzando la distanza L-infinity. In questo caso, se il punteggio della distanza supera la soglia specificata nel campo Soglia di avviso categoria, viene identificato come anomalia.

  • Per le caratteristiche numeriche, il punteggio della distanza viene calcolato utilizzando la divergenza di Jensen-Shannon. In questo caso, se il punteggio della distanza supera la soglia specificata nel campo Soglia di avviso numerica, il punteggio viene identificato come anomalia.

In entrambi i casi, l'anomalia potrebbe essere un disallineamento addestramento/distribuzione o una deviazione, a seconda della distribuzione di riferimento utilizzata per calcolare il punteggio della distanza. Un log anomalia viene scritto in Cloud Logging con il nome log featurestore_log. Puoi sincronizzare i log con qualsiasi servizio downstream supportato da Cloud Logging, ad esempio Pub/Sub.

Per saperne di più sull'impostazione delle soglie di avviso, consulta Creare un tipo di entità con monitoraggio abilitato.

Esempio di query per tutte le anomalie generate per un determinato archivio di caratteristiche

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

Esempio di voce di log anomalia

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

Monitora gli errori di scrittura nello spazio di archiviazione offline per l'importazione di flussi di dati

Utilizza la console Google Cloud per monitorare gli errori di scrittura nello spazio di archiviazione offline durante l'importazione di flussi di dati.

Visualizza le metriche per l'importazione di flussi di dati nello spazio di archiviazione offline

Puoi monitorare la metrica Scrittura nello spazio di archiviazione offline per la scrittura nello streaming per Vertex AI Feature Store (legacy) in Esplora metriche.

UI web

  1. Nella console Google Cloud, vai a Metrics Explorer:

    Vai a Esplora metriche

  2. Nella barra degli strumenti, seleziona la scheda Explorer.

  3. Nella scheda Configurazione, specifica i dati da visualizzare nel grafico:

    • Risorsa e metrica: seleziona la metrica Vertex AI Feature Store - Scrittura archiviazione offline per scrittura flussi.

    • Raggruppa per: seleziona error_code.

    • Periodo di allineamento minimo: specifica l'intervallo di tempo minimo per allineare i dati nel grafico.

  4. Dopo aver aggiornato questi campi, nel grafico vengono visualizzati gli errori di scrittura dello spazio di archiviazione offline per i vari codici di errore.

    Dopo aver generato il grafico, puoi aggiungerlo alla dashboard personalizzata. Per ulteriori informazioni, vedi Salvare un grafico per riferimento futuro.

Visualizza i log di Vertex AI Feature Store (legacy)

Puoi visualizzare le voci di log per l'archivio di caratteristiche, inclusi i log generati durante gli errori di scrittura dell'archivio offline, in Esplora log.

UI web

  1. Nella console Google Cloud, vai a Esplora log:

    Vai a Esplora log

  2. In Query Builder, aggiungi i seguenti parametri di ricerca e quindi fai clic su Esegui query:

    • Risorsa: seleziona Vertex AI Feature Store.
    • Nome log: in API Vertex AI, seleziona aiplatform.googlapis.com/featurestore_log.