Monitoraggio

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

I metodi per monitorare i negozi di funzionalità e le funzionalità sono descritti nelle seguenti sezioni:

Monitoraggio dell'archivio di caratteristiche

Vertex AI Feature Store (legacy) registra le metriche del tuo feature store in Cloud Monitoring, ad esempio il carico della CPU, la capacità di archiviazione, le latenze delle richieste e la fatturazione. Vertex AI raccoglie e genera report su queste metriche per te. Non è necessario configurare o attivare il monitoraggio del 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 semplificare l'utilizzo 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 Monitoraggio cloud di Vertex AI.

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

Utilizza la console Google Cloud per monitorare i dati fatturabili elaborati offline da 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 i negozi di funzionalità del tuo progetto.

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

Monitoraggio dei valori delle funzionalità

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

  • Analisi degli snapshot: Vertex AI Feature Store (legacy) acquisisce snapshot periodici dei valori delle funzionalità. Nel tempo, man mano che importi più dati, potresti notare una variazione nella distribuzione dei valori delle funzionalità. Questa modifica indica che potrebbe essere necessario addestrare nuovamente 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 in base a 5 milioni di ID entità selezionati in modo casuale nell'intervallo di tempo specificato come numero di giorni di inattività.

  • Importazione dell'analisi delle funzionalità: 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 funzionalità importata in precedenza o, se abilitata, la distribuzione degli istantanei.

    Per i set di dati che superano i 5 milioni di istanze, Vertex AI Feature Store (legacy) genera snapshot in base a 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 un'attributo 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 notevolmente nel tempo oppure il batch di valori importati potrebbe contenere dati che si discostano notevolmente dai dati di addestramento. Vertex AI Feature Store (legacy) ti avvisa di questa modifica. Puoi quindi addestrare di nuovo il modello per utilizzare le informazioni più recenti.

Impostare una configurazione di monitoraggio

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

  • BOOL
  • STRING
  • DOUBLE
  • INT64

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

  • Indica se attivare 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.
  • Indica se attivare l'analisi della funzionalità di importazione. L'impostazione predefinita è disattivata.

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

Creare 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

Solo l'analisi istantanea è supportata dall'interfaccia utente.

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

    Vai alla paginaFunzionalità

  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 Attivata.
  5. Inserisci il numero di giorni tra gli istantanei nel campo Intervallo di tempo per il monitoraggio.
    Il job di monitoraggio per un tipo di entità o una funzionalità viene eseguito all'ora più vicina successiva all'ora del giorno in cui attivi 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 del 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 istantanea nel campo Finestra temporale del monitoraggio.
  7. Inserisci il numero della soglia utilizzata per rilevare le anomalie per le funzionalità numeriche nel campo Soglia di avviso per numeriche.
  8. Inserisci il numero della soglia utilizzata per rilevare le anomalie per le funzionalità categoriche in questo EntityType nel campo Soglia di avviso per categoriche.
    Per ulteriori informazioni sul rilevamento delle anomalie dei valori delle funzionalità, consulta Visualizzare le anomalie dei valori delle funzionalità.
  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 di una funzionalità specifica, disattiva l'opzione Attiva 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, apporta le seguenti sostituzioni:

  • LOCATION_ID: regione in cui si trova l'archivio di funzionalità, ad esempio us-central1.
  • PROJECT_ID: il tuo ID progetto.
  • FEATURESTORE_ID: l'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 considerare quando vengono acquisiti 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 mediante la divergenza di Jenson-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 per l'analisi delle funzionalità di importazione, se abilitato.

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

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

Per autenticarti a Vertex AI, configura le Credenziali predefinite dell'applicazione. Per ulteriori 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 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 di una nuova funzionalità

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

REST

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

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

  • LOCATION_ID: regione in cui si trova l'archivio di funzionalità, ad esempio us-central1.
  • PROJECT_ID: il tuo ID progetto.
  • FEATURESTORE_ID: l'ID dell'archivio di caratteristiche.
  • ENTITY_TYPE_ID: ID del tipo di entità.
  • FEATURE_ID: l'ID della funzionalità.
  • VALUE_TYPE: il tipo di valore della funzionalità.
  • DISABLE_MONITORING: imposta 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, 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 durante l'aggiornamento di 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 per funzionalità specifiche per quel tipo di entità:

UI web

Solo l'analisi istantanea è supportata dalla UI.

  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. Nella barra delle azioni, fai clic su Modifica informazioni.
  6. In Intervallo di tempo per il monitoraggio, inserisci il numero di giorni tra gli istantanei.
    Il job di monitoraggio per un tipo di entità o una funzionalità viene eseguito all'ora più vicina successiva all'ora del giorno in cui attivi 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 del monitoraggio, il primo job di monitoraggio viene eseguito alle 23:00 di mercoledì.
  7. Fai clic su Aggiorna.
  8. Analogamente, 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. Nella barra delle azioni, fai clic su Modifica informazioni.
  11. Per disattivare il monitoraggio di una funzionalità specifica, disattiva l'opzione 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: regione in cui si trova l'archivio di funzionalità, ad esempio us-central1.
  • PROJECT_ID: il tuo ID progetto.
  • FEATURESTORE_ID: l'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 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 mediante la divergenza di Jenson-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 delle seguenti 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 Java riportate nella guida rapida all'utilizzo delle librerie client di Vertex AI. Per ulteriori informazioni, consulta la documentazione di riferimento dell'API Java di Vertex AI.

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

Per autenticarti a Vertex AI, configura le Credenziali predefinite dell'applicazione. Per ulteriori 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 di una funzionalità

L'esempio seguente disattiva il monitoraggio di 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: regione in cui si trova l'archivio di funzionalità, ad esempio us-central1.
  • PROJECT_ID: il tuo ID progetto.
  • FEATURESTORE_ID: l'ID dell'archivio di caratteristiche.
  • ENTITY_TYPE_ID: ID del tipo di entità.
  • FEATURE_ID: l'ID della funzionalità da aggiornare.
  • DISABLE_MONITORING: 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, 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 funzionalità

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 relative alla distribuzione dei valori delle funzionalità per una funzionalità:

    1. Nella colonna Elemento, fai clic sull'elemento.

    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 del valore della funzionalità supera la soglia specificata in una pipeline di monitoraggio, viene considerata un'anomalia. Esistono due tipi di anomalie: uno sbilanciamento nell'addestramento e la deriva. Per calcolare la deviazione, Vertex AI confronta i valori più recenti delle funzionalità in produzione con un valore di riferimento.

  • 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 funzionalità nei dati di addestramento è considerata la distribuzione di riferimento. Scopri di più sull'asimmetria tra addestramento e pubblicazione.

  • 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 di monitoraggio avvenuta almeno un'ora fa. In questo caso, la distribuzione statistica dei valori delle caratteristiche dell'ultima esecuzione del monitoraggio viene considerata come distribuzione di base. Scopri di più sul drift.

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-infinity. In questo caso, se il punteggio di distanza supera la soglia specificata nel campo Soglia di avviso per le categorie, viene identificata come un'anomalia.

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

In entrambi i casi, l'anomalia potrebbe essere un disallineamento addestramento/produzione o una deriva, a seconda della distribuzione di riferimento utilizzata per calcolare il punteggio di distanza. In Cloud Logging viene scritto un log di anomalia con il nome featurestore_log. Puoi sincronizzare i log con qualsiasi servizio a valle 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 di 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"
}

Monitorare gli errori di scrittura dello spazio di archiviazione offline per l'importazione in streaming

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

Visualizzare le metriche relative all'importazione in streaming nello spazio di archiviazione offline

Puoi monitorare la metrica Scrittura nello spazio 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 nello spazio di archiviazione offline per la scrittura in streaming.

    • Filtra: seleziona error_code.

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

    Dopo aver generato il grafico, puoi aggiungerlo alla tua dashboard personalizzata. Per ulteriori informazioni, 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 del negozio 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 query 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.