Monitoraggio

In Vertex AI Feature Store (legacy), puoi monitorare e impostare avvisi su archivi di caratteristiche e caratteristiche. Ad esempio, un team operativo potrebbe di un archivio di caratteristiche al fine di 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) segnala le metriche sull'archivio di caratteristiche a Cloud Monitoring come il carico della CPU, la capacità di archiviazione e la richiesta e la latenza minima. Vertex AI raccoglie e segnala 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.

Monitoraggio dei valori delle funzionalità

Il monitoraggio del valore delle caratteristiche consente di tenere traccia del valore di una caratteristica modifiche alla distribuzione 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 una variazione nella distribuzione dei valori delle caratteristiche. 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 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à.

  • 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 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.

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. La i prezzi delle case vendute di recente potrebbero variare significativamente nel tempo oppure il gruppo 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 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 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 abilitare l'analisi delle caratteristiche 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 caratteristiche:

UI web

La UI supporta solo l'analisi di snapshot.

  1. Nella sezione Vertex AI della console Google Cloud, vai a 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 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 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 prendere in considerazione per ogni istantanea nel campo Finestra temporale del 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 funzionalità all'entità, fai clic su Aggiungi funzionalità.
  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, apporta 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 funzionalità.
  • 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 per le funzionalità 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 viene calcolata in base alla distanza L-infinity.
  • 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, 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 lo OPERATION_ID nella risposta a recupera il 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 nel Guida rapida di Vertex AI con librerie client. Per ulteriori informazioni, consulta la documentazione di riferimento dell'API Java di 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 nel Guida rapida di Vertex AI con librerie client. Per ulteriori informazioni, consulta API Node.js Vertex AI documentazione di riferimento.

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 for Python.

Disattivare il monitoraggio di 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, apporta 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 dell'elemento.
  • DISABLE_MONITORING: 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, 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. 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 lo OPERATION_ID nella risposta a recupera il 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 di 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 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 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: 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 funzionalità.
  • 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 è 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 viene calcolata in base alla distanza L-infinity.
  • IMPORT_FEATURE_ANALYSIS_STATE: lo stato che indica se abilitare l'analisi della 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. 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 nel Guida rapida di Vertex AI con librerie client. Per ulteriori informazioni, consulta API Java Vertex AI documentazione di riferimento.

Per autenticarti in Vertex AI, configura le 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 nel Guida rapida di Vertex AI con librerie client. Per ulteriori informazioni, consulta la documentazione di riferimento dell'API Node.js di Vertex AI.

Per autenticarti in Vertex AI, configura le 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, apporta 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 funzionalità.
  • ENTITY_TYPE_ID: ID del tipo di entità.
  • FEATURE_ID: l'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, 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"
}

Visualizza distribuzioni dei valori delle caratteristiche

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

UI web

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

    Vai alla sezione 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 Elemento, fai clic sull'elemento.

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

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ù 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ù 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 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 un'anomalia.

  • Per le caratteristiche numeriche, il punteggio della 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 di flussi di dati.

Visualizzare le metriche relative all'importazione di streaming in uno 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 Esplora metriche:

    Vai a Esplora metriche

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

  3. Nella scheda Configurazione, 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.

    • Raggruppa per: seleziona error_code.

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

  4. Dopo aver aggiornato questi campi, 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 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 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.