Monitoraggio

In Vertex AI Feature Store (legacy), puoi monitorare e impostare avvisi su featurestore e caratteristiche. Ad esempio, un team operativo potrebbe monitorare un archivio di caratteristiche per monitorare l'utilizzo 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 monitorare i feature store e le funzionalità sono descritti nelle sezioni seguenti:

Monitoraggio di Feature Store

Vertex AI Feature Store (legacy) invia a Cloud Monitoring metriche sul feature store, ad esempio carico della CPU, capacità di archiviazione, latenze delle richieste e fatturazione. Vertex AI raccoglie e riporta queste metriche per te. Non è necessario configurare o attivare il monitoraggio di Feature Store.

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 di aumentare il numero di nodi del feature store.

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 rendere le informazioni più facili da consultare. 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 Vertex AI di Cloud Monitoring.

Monitorare la fatturazione per i dati offline elaborati in un feature store

Utilizza la console Google Cloud per monitorare i dati fatturabili elaborati offline dai metodi featurestores.batchReadFeatureValues e entityTypes.exportFeatureValues. Puoi visualizzare i byte fatturabili per ogni feature store.

Puoi monitorare la metrica Byte fatturabili per Vertex AI Feature Store (legacy) in Metrics Explorer.

Console

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

    Vai a Esplora metriche

  2. Nell'elenco Metrica, seleziona Vertex AI Feature Store > Featurestore > Byte fatturabili.

  3. Fai clic su Applica. Il grafico mostra i dati fatturabili offline per gli store di funzionalità nel tuo progetto.

    Dopo aver generato il grafico, puoi aggiungerlo alla dashboard personalizzata. Per saperne di più, vedi Salvare un grafico per riferimento futuro.

Monitoraggio del valore della caratteristica

Il monitoraggio dei valori delle caratteristiche ti consente di monitorare la variazione della distribuzione dei valori delle caratteristiche in un archivio di caratteristiche. Sono supportati i seguenti tipi di monitoraggio dei valori delle funzionalità:

  • Analisi degli snapshot: Vertex AI Feature Store (legacy) crea periodicamente snapshot dei valori delle funzionalità. Nel tempo, man mano che acquisisci più dati, potresti notare che la distribuzione dei valori delle caratteristiche cambia. Questa modifica indica che potrebbe essere necessario eseguire di nuovo l'addestramento di tutti i modelli che utilizzano queste funzionalità. Puoi specificare una soglia in modo che le anomalie vengano registrate nella console 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 in modo casuale all'interno dell'intervallo di tempo specificato come numero di giorni di obsolescenza.

  • Importazione dell'analisi delle caratteristiche: ogni operazione ImportFeatureValues genera statistiche di distribuzione per i valori importati in Vertex AI Feature Store (legacy). Puoi scegliere di rilevare le anomalie confrontando le statistiche di distribuzione con la distribuzione dei valori delle caratteristiche importata in precedenza o, se attivata, con la distribuzione dello snapshot.

    Per i set di dati che superano i 5 milioni di istanze, Vertex AI Feature Store (legacy) genera snapshot basati su dati selezionati in modo casuale, 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 in base a 5 milioni di istanze selezionate in modo casuale.
    • 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.

Ad esempio, considera una funzionalità 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 in modo significativo 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 (legacy) ti avvisa di questa modifica. Puoi quindi eseguire di nuovo l'addestramento del modello per utilizzare le informazioni più recenti.

Impostare una configurazione di monitoraggio

Per iniziare 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:

  • Indica se abilitare il monitoraggio. Il monitoraggio è disattivato per impostazione predefinita.
  • Soglie utilizzate per rilevare le anomalie. La soglia predefinita è 0,3.
  • Finestra temporale oltre all'intervallo tra gli snapshot (per l'analisi degli snapshot). Il valore predefinito è 21.
  • Se attivare l'analisi della funzionalità di importazione. L'impostazione predefinita è disattivata.

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 funzionalità:

UI web

Dall'interfaccia utente è supportata solo l'analisi degli 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. Imposta la sezione Monitoraggio delle funzionalità su Attivato.
  5. Inserisci il numero di giorni tra gli snapshot nel campo Intervallo di tempo per il monitoraggio.
    Il job di monitoraggio per un tipo di entità o una funzionalità viene eseguito all'ora esatta più vicina dopo l'ora del giorno in cui abiliti il monitoraggio per il tipo di entità o la funzionalità. Ad esempio, se attivi il monitoraggio alle 22:30 di lunedì e specifichi due giorni come intervallo di tempo di monitoraggio, il primo job di monitoraggio viene eseguito alle 23:00 di mercoledì.
  6. Inserisci il numero di giorni da prendere in considerazione per ogni snapshot nel campo Finestra temporale del monitoraggio.
  7. Inserisci il numero per la soglia utilizzata per rilevare le anomalie per le funzionalità numeriche nel campo Soglia di avviso per numeriche.
  8. Inserisci il numero per la soglia utilizzata per rilevare le anomalie per le caratteristiche categoriche in questo EntityType nel campo Soglia di avviso per categoriche.
    Per saperne di più sul rilevamento delle anomalie dei valori delle caratteristiche, consulta Visualizzare le anomalie dei valori delle caratteristiche.
  9. Fai clic su Crea.
  10. Nella tabella delle funzionalità, fai clic su un tipo di entità.
  11. Per aggiungere nuove funzionalità all'entità, fai clic su Aggiungi funzionalità.
  12. Per disattivare il monitoraggio per una funzionalità specifica, disattiva l'opzione Abilita monitoraggio.

REST

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

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

  • LOCATION_ID: la regione in cui si trova Feature Store, ad esempio us-central1.
  • PROJECT_ID: il tuo ID progetto
  • FEATURESTORE_ID: ID dello store di funzionalità.
  • ENTITY_TYPE_ID: l'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 per gli snapshot.
  • NUMERICAL_THRESHOLD_VALUE: La soglia per rilevare le anomalie per le funzionalità numeriche in questo tipo di entità. La deviazione statistica viene calcolata in base alla divergenza di Jensen-Shannon.
  • CATEGORICAL_THRESHOLD_VALUE: la soglia per rilevare le anomalie per le funzionalità categoriche in questo tipo di entità. La deviazione statistica viene calcolata in base alla distanza L-infinity.
  • IMPORT_FEATURE_ANALYSIS_STATE: Lo stato che indica se attivare l'analisi delle funzionalità di importazione.
  • IMPORT_FEATURE_ANALYSIS_BASELINE: La base di riferimento per l'analisi della funzionalità 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 di queste opzioni:

curl

Salva il corpo della richiesta in un file denominato request.json, quindi esegui il comando seguente:

curl -X POST \
-H "Authorization: Bearer $(gcloud auth print-access-token)" \
-H "Content-Type: application/json; charset=utf-8" \
-d @request.json \
"https://LOCATION_ID-aiplatform.googleapis.com/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, quindi esegui il comando seguente:

$cred = gcloud auth print-access-token
$headers = @{ "Authorization" = "Bearer $cred" }

Invoke-WebRequest `
-Method POST `
-Headers $headers `
-ContentType: "application/json; charset=utf-8" `
-InFile request.json `
-Uri "https://LOCATION_ID-aiplatform.googleapis.com/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 di configurazione di Java nella guida rapida di Vertex AI per l'utilizzo delle librerie client. Per ulteriori informazioni, consulta la documentazione di riferimento dell'API Vertex AI Java.

Per autenticarti in Vertex AI, configura le Credenziali predefinite dell'applicazione. Per ulteriori informazioni, vedi Configura 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 di configurazione di Node.js nella guida rapida di Vertex AI per l'utilizzo delle librerie client. Per ulteriori informazioni, consulta la documentazione di riferimento dell'API Vertex AI Node.js.

Per autenticarti in Vertex AI, configura le Credenziali predefinite dell'applicazione. Per ulteriori informazioni, vedi Configura 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 scoprire 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 for Python.

Disattivare il monitoraggio per una nuova funzionalità

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

REST

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

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

  • LOCATION_ID: la regione in cui si trova Feature Store, ad esempio us-central1.
  • PROJECT_ID: il tuo ID progetto
  • FEATURESTORE_ID: ID dello store di funzionalità.
  • ENTITY_TYPE_ID: l'ID del tipo di entità.
  • FEATURE_ID: ID della funzionalità.
  • VALUE_TYPE: il tipo di valore della funzionalità.
  • DISABLE_MONITORING: impostalo 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 di queste opzioni:

curl

Salva il corpo della richiesta in un file denominato request.json, quindi esegui il comando seguente:

curl -X POST \
-H "Authorization: Bearer $(gcloud auth print-access-token)" \
-H "Content-Type: application/json; charset=utf-8" \
-d @request.json \
"https://LOCATION_ID-aiplatform.googleapis.com/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, quindi esegui il comando seguente:

$cred = gcloud auth print-access-token
$headers = @{ "Authorization" = "Bearer $cred" }

Invoke-WebRequest `
-Method POST `
-Headers $headers `
-ContentType: "application/json; charset=utf-8" `
-InFile request.json `
-Uri "https://LOCATION_ID-aiplatform.googleapis.com/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 la configurazione del monitoraggio

Puoi impostare la configurazione di 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

Dall'interfaccia utente è supportata solo l'analisi degli 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 tipo di entità per visualizzare la pagina dei dettagli dell'entità.
  5. Dalla barra delle azioni, fai clic su Modifica informazioni.
  6. In Intervallo di tempo per il 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 esatta più vicina dopo l'ora del giorno in cui abiliti il monitoraggio per il tipo di entità o la funzionalità. Ad esempio, se attivi il monitoraggio alle 22:30 di lunedì e specifichi due giorni come intervallo di tempo di monitoraggio, il primo job di monitoraggio viene eseguito alle 23:00 di mercoledì.
  7. Fai clic su Aggiorna.
  8. Allo stesso modo, nella tabella delle funzionalità, visualizza la colonna Funzionalità per trovare la funzionalità da aggiornare.
  9. Fai clic sul nome della funzionalità per visualizzare la pagina dei dettagli.
  10. Dalla 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, apporta le seguenti sostituzioni:

  • LOCATION_ID: la regione in cui si trova Feature Store, ad esempio us-central1.
  • PROJECT_ID: il tuo ID progetto
  • FEATURESTORE_ID: ID dello store di funzionalità.
  • ENTITY_TYPE_ID: l'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 per gli snapshot.
  • NUMERICAL_THRESHOLD_VALUE: La soglia per rilevare le anomalie per le funzionalità numeriche in questo tipo di entità. La deviazione statistica viene calcolata in base alla divergenza di Jensen-Shannon.
  • CATEGORICAL_THRESHOLD_VALUE: la soglia per rilevare le anomalie per le funzionalità categoriche in questo tipo di entità. La deviazione statistica viene calcolata in base alla distanza L-infinity.
  • IMPORT_FEATURE_ANALYSIS_STATE: Lo stato che indica se attivare l'analisi delle funzionalità di importazione.
  • IMPORT_FEATURE_ANALYSIS_BASELINE: Il valore 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 di queste opzioni:

curl

Salva il corpo della richiesta in un file denominato request.json, quindi esegui il comando seguente:

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, quindi esegui il comando seguente:

$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 di configurazione di Java nella guida rapida di Vertex AI per l'utilizzo delle librerie client. Per ulteriori informazioni, consulta la documentazione di riferimento dell'API Vertex AI Java.

Per autenticarti in Vertex AI, configura le Credenziali predefinite dell'applicazione. Per ulteriori informazioni, vedi Configura 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 di configurazione di Node.js nella guida rapida di Vertex AI per l'utilizzo delle librerie client. Per ulteriori informazioni, consulta la documentazione di riferimento dell'API Vertex AI Node.js.

Per autenticarti in Vertex AI, configura le Credenziali predefinite dell'applicazione. Per ulteriori informazioni, vedi Configura 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 per una funzionalità esistente:

REST

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

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

  • LOCATION_ID: la regione in cui si trova Feature Store, ad esempio us-central1.
  • PROJECT_ID: il tuo ID progetto
  • FEATURESTORE_ID: ID dello store di funzionalità.
  • ENTITY_TYPE_ID: l'ID del tipo di entità.
  • FEATURE_ID: l'ID della funzionalità da aggiornare.
  • DISABLE_MONITORING: impostalo 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 di queste opzioni:

curl

Salva il corpo della richiesta in un file denominato request.json, quindi esegui il comando seguente:

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, quindi esegui il comando seguente:

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

Visualizzare le distribuzioni dei valori delle caratteristiche

Utilizza la console Google Cloud per visualizzare la distribuzione dei valori delle funzionalità 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 Funzionalità, fai clic sulla funzionalità.

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

Visualizzare le anomalie dei valori delle funzionalità

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

  • Per rilevare il disallineamento tra addestramento e distribuzione, Vertex AI confronta gli ultimi valori 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 viene considerata come distribuzione di base. Scopri di più sulla distorsione tra addestramento e servizio.

  • Per rilevare la deviazione, Vertex AI confronta gli ultimi valori delle caratteristiche in produzione con la distribuzione statistica dei valori delle caratteristiche dell'ultima esecuzione del monitoraggio avvenuta almeno un'ora prima. In questo caso, la distribuzione statistica dei valori delle caratteristiche dell'ultima esecuzione del monitoraggio viene considerata la distribuzione di base. Scopri di più sulla deriva.

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

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

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

In entrambi i casi, l'anomalia potrebbe essere un disallineamento addestramento/produzione o una deviazione, a seconda della distribuzione di base utilizzata per calcolare il punteggio di distanza. Un log di anomalia viene scritto in Cloud Logging con il nome 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 il monitoraggio abilitato.

Query di esempio per tutte le anomalie generate per un determinato feature store

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 anomala

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

Monitorare gli errori di scrittura dello 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 limportazione di flussi di dati.

Visualizzare le metriche per l'importazione di flussi di dati nell'archivio offline

Puoi monitorare la metrica Scrittura di archiviazione offline per la scrittura in streaming per Vertex AI Feature Store (legacy) in Metrics Explorer.

UI web

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

    Vai a Esplora metriche

  2. Specifica i dati da visualizzare nel grafico:

    • Risorsa e metrica: seleziona la metrica Vertex AI Feature Store > Scrittura di spazio di archiviazione offline per la scrittura di streaming.

    • Filtra: seleziona error_code.

  3. Fai clic su Applica. Il grafico mostra gli errori di scrittura dell'archiviazione offline per i vari codici di errore.

    Dopo aver generato il grafico, puoi aggiungerlo alla dashboard personalizzata. Per saperne di più, vedi Salvare un grafico per riferimento futuro.

Visualizzare i log di Vertex AI Feature Store (legacy)

Puoi visualizzare le voci di log per il tuo feature store, 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 poi fai clic su Esegui query:

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