Configura il monitoraggio del modello

Prima di poter iniziare a monitorare un modello, devi registrarlo in Vertex AI Model Registry e poi configurare i dettagli del monitoraggio creando un monitor del modello. Questa pagina descrive come registrare un modello e illustra tutte le specifiche che puoi definire in una configurazione di monitoraggio.

Model Monitoring 2 supporta solo i modelli tabulari. Questi modelli possono essere pubblicati su Vertex AI o su un'altra infrastruttura di pubblicazione.

Registra modello

Puoi monitorare i modelli di cui viene eseguito il deployment in qualsiasi infrastruttura di distribuzione, come su endpoint Vertex AI, GKE in BigQuery. Per registrare un modello che pubblichi in Vertex AI, consulta Importare i modelli.

Per i modelli pubblicati al di fuori di Vertex AI, puoi registrare un modello di riferimento, che funge da segnaposto per i modelli pubblicati su altre risorse. Quando registri un modello di riferimento, registri il nome del modello, come mostrato nell'esempio seguente:

SDK Python

model = aiplatform.Model.upload(
 display_name="MODEL_NAME"
)

Per i modelli di riferimento, il monitoraggio dei modelli può supportare set di dati di Cloud Storage o BigQuery. Non puoi monitorare le attribuzioni delle caratteristiche per i modelli di riferimento.

Origini dati

Puoi monitorare le metriche nei dati archiviati nelle origini indicate di seguito. Gli elementi nidificati non sono supportati. Per analizzare i dati nidificati, appiattili prima. Se le tue che si trovano in BigQuery, ad esempio, puoi usare SQL per nidificate.

BigQuery
Puoi fornire un URI della tabella BigQuery o una query SQL. Per specificare una finestra temporale o per configurare il monitoraggio continuo, la tabella deve includere una colonna di timestamp, che devi specificare nel set di dati come timestamp_field.
Cloud Storage
I dati devono essere archiviati in formato CSV o JSONL. Per i file CSV, includi un'intestazione dei nomi delle tue colonne come prima riga nel file.
Job di previsione batch Vertex AI
Fornisci il nome completo della risorsa del job di previsione batch per monitorare un job di previsione batch. Puoi eseguire un job di monitoraggio non appena crei un job di previsione batch; non devi attendere il completamento del job batch. La versione 2 di Model Monitoring esegue il job di monitoraggio subito dopo il completamento del job di previsione batch.
Logging degli endpoint Vertex AI

Per poter iniziare a monitorarlo, devi attivare il logging delle richieste e delle risposte sull'endpoint. Gli endpoint privati non sono supportati perché non supportano il logging delle richieste e delle risposte.

Model Monitoring v2 prevede il formato JSON delle richieste degli endpoint Vertex AI e risposte in modo che seguano il formato utilizzato dal metodo predict. La instances oggetti sono stati inseriti nella tabella di logging in request_payload colonna come una matrice: [INSTANCE_1, INSTANCE_2]. Analogamente, predictions vengono inseriti nella tabella di logging nella colonna response_payload come array: [PREDICTION_1, PREDICTION_2].

Sono supportati altri metodi (ad esempio la previsione non elaborata), ma i dati devono seguire il formato JSON delle richieste e delle risposte come descritto nella documentazione di riferimento dell'API per il metodo predict.

Set di dati gestito da Vertex AI

Set di dati gestiti in Vertex AI. Per ulteriori informazioni, consulta il formato del set di dati tabulare.

Monitoraggio continuo

Il monitoraggio continuo (noto anche come esecuzioni pianificate) ti consente di eseguire il monitoraggio job in base a una pianificazione che hai impostato tu. Monitoraggio continuo del modello con tempo specifiche supporta solo BigQuery e Logging degli endpoint Vertex AI come origini dati.

Per utilizzare BigQuery come origine per il monitoraggio continuo nel tempo specifiche, la tabella deve avere una colonna timestamp. Per Tabelle BigQuery generate da Vertex AI log degli endpoint, le tabelle includono già una colonna di timestamp logging_time.

Come tecnica di ottimizzazione generale di BigQuery, ti consigliamo di puoi partizionare la tabella in base al timestamp per migliorare le prestazioni delle query e controllare i costi riducendo il numero di byte letti da una query.

Tipi di dati supportati

Sono supportate sia le caratteristiche numeriche sia quelle categoriche. Puoi includere colonne con array, ad esempio un array di valori booleani, categorici, stringhe o numeri interi e i relativi valori. Model Monitoring v2 appiattisce l'array in modo che ogni elemento al suo interno un valore distinto.

Le caratteristiche numeriche sono mappate ai seguenti tipi di dati:

  • Numero in virgola mobile
  • Numero intero

Le caratteristiche categoriche corrispondono ai seguenti tipi di dati:

  • Booleano
  • Stringa
  • Categorico

Schema modello

Model Monitoring v2 utilizza lo schema del modello per analizzare i dati. Questo schema è obbligatorio quando crei un monitoraggio del modello. Per AutoML Tables, non è necessario specificare lo schema del modello; Vertex AI Model Monitoring lo recupera automaticamente.

L'esempio seguente mostra la struttura generale dello schema previsto:

SDK Python

ml_monitoring.spec.ModelMonitoringSchema(
  feature_fields=[
      ml_monitoring.spec.FieldSchema(
          name="FEATURE_NAME",
          data_type="DATA_TYPE",
          repeated=BOOLEAN
      )
  ],
    prediction_fields = [
      model_monitor.spec.FieldSchema(
          name="PREDICTION_NAME",
          data_type="DATA_TYPE",
          repeated=BOOLEAN
      )
  ],
  ground_truth_fields = [
      model_monitor.spec.FieldSchema(
          feature="GROUND_TRUTH_NAME",
          data_type="DATA_TYPE",
          repeated=BOOLEAN
      )
  ]
)

Se una colonna include un array di valori, imposta repeated su true.

Per AutoML Tables, quando Model Monitoring 2.0 recupera lo schema del modello, utilizza le funzionalità presenti nel set di dati di addestramento come funzionalità di input, escludendo la colonna target. L'output della previsione è impostato sulla colonna predicted_{target_column}. Inoltre, il metodo di estrazione di Model Monitoring v2 per il valore di output della previsione dipende dal tipo di modello. Per i modelli di classificazione di AutoML Tables, Vertex AI Model Monitoring monitora la distribuzione delle etichette argmax. Per Modelli di regressione di AutoML Tables, Vertex AI Model Monitoring monitora la distribuzione dei valori.

Set di dati di riferimento e target

Il set di dati di riferimento rappresenta un punto di riferimento utilizzato per misurare le metriche nel tempo. Il set di dati di destinazione include dati più recenti che utilizzi da confrontare con il set di dati di riferimento. Model Monitoring v2 calcola le metriche tra i due set di dati per aiutarti a monitorare la qualità dei modelli. I set di dati di riferimento e di destinazione possono provenire da qualsiasi origine dati supportata.

Come esempi di target e basi, puoi confrontare il set di dati di pubblicazione (target) con il set di dati di addestramento del modello (base) oppure puoi confrontare il set di dati di pubblicazione (target) con un set di dati di pubblicazione di un periodo di tempo precedente (base).

Set di dati di destinazione

Quando selezioni il set di dati di destinazione, Model Monitoring v2 può elaborare l'intero set di dati oppure puoi impostare una finestra per specificare la quantità di dati per Model Monitoring v2 esaminare. Ad esempio, se specifichi una finestra di 24 ore, la versione 2 del monitoraggio dei modelli confronta solo i dati delle ultime 24 ore con il set di dati di riferimento.

Nell'analisi della deviazione nei dati, la deviazione può essere volatile se il volume di dati è inadeguato vengono elaborati. Una finestra temporale più lunga consente di evitare avvisi attivati a causa di un numero ridotto di campioni.

Set di dati di riferimento

Puoi impostare il set di dati di riferimento su qualsiasi origine dati supportata, ad esempio un set di dati gestito da Vertex AI contenente i dati di addestramento del modello. Come per i set di dati di destinazione, puoi scegliere di elaborare con Model Monitoring v2 l'intero set di dati o una determinata finestra.

Specifica dell'ora

Puoi impostare le specifiche del tempo di monitoraggio utilizzando due metodi:

  • Intervallo di tempo, che include una coppia di ora di inizio e di fine.
  • Finestra temporale e offset, che specificano la quantità di dati da includere e il periodo di tempo tra i set di dati di confronto.

Ad esempio, se vuoi confrontare i dati recenti con quelli raccolti in precedenza, puoi impostare un offset. L'offset specifica il periodo di tempo tra i set di dati di destinazione e di riferimento. Ad esempio, immagina di impostare set di dati target con una finestra di un giorno e la base di riferimento è impostata con di una settimana anche con una finestra di un giorno.

In questo caso, il set di dati di destinazione include i dati delle 24 ore che precedono l'ora di inizio del job di monitoraggio. Il set di dati di riferimento include i dati dello stesso periodo di 24 ore, ma esattamente una settimana prima.

Crea un monitoraggio del modello

Crea un monitoraggio del modello per associare i dettagli del monitoraggio a una versione del modello che è stata registrata in Vertex AI Model Registry. La risorsa risultante è chiamata monitor dei modelli. Puoi creare un solo monitoraggio del modello per modello completamente gestita.

Quando crei un monitoraggio del modello, specifica il nome, la versione e . Per alcuni modelli, come AutoML, lo schema è forniti per te.

Facoltativamente, puoi impostare obiettivi di monitoraggio, set di dati di addestramento della posizione di output e delle impostazioni di notifica nel monitoraggio del modello. Quando esegui un job di monitoraggio, Model Monitoring v2 utilizza queste impostazioni come predefinite.

Console

  1. Nella console Google Cloud, vai alla pagina Monitoring.

    Vai a Monitoring

  2. Fai clic su Configura il monitoraggio.

  3. Seleziona un modello e la relativa versione da monitorare.

  4. Se applicabile, definisci lo schema delle funzionalità di input, le uscite della previsione e, se disponibili, i dati empirici reali.

  5. (Facoltativo) Per monitorare la deviazione dal set di dati di addestramento, specifica località del tuo set di dati.

  6. (Facoltativo) Per specificare un bucket Cloud Storage esistente per Esporta i risultati del monitoraggio, espandi Opzioni avanzate e seleziona una di sincronizzare la directory di una VM con un bucket.

  7. Per configurare gli obiettivi di monitoraggio, fai clic su Continua o su Configura per creare il monitoraggio del modello.

    Questa configurazione viene utilizzata come valori predefiniti durante l'esecuzione di un job.

  8. Seleziona gli scopi da monitorare. Per ogni scopo puoi impostare metrica da monitorare e una soglia per gli avvisi.

  9. Specifica gli indirizzi email e, facoltativamente, i canali di notifica in Cloud Monitoring per il monitoraggio di avvisi e notifiche.

SDK Python

from vertexai.resources.preview import ml_monitoring
from google.cloud.aiplatform_v1beta1.types import ExplanationSpec, ExplanationParameters, ExplanationMetadata

# Define Monitoring Schema. For AutoML models, this is optional if the schema information is available.
MONITORING_SCHEMA=ml_monitoring.spec.ModelMonitoringSchema(
  feature_fields=[
      ml_monitoring.spec.FieldSchema(
          name="sepal_length_cm",
          data_type="float"
      ),
      ml_monitoring.spec.FieldSchema(
          name="sepal_width_cm",
          data_type="float"
      ),
      ml_monitoring.spec.FieldSchema(
          name="petal_length_cm",
          data_type="float"
      ),
      ml_monitoring.spec.FieldSchema(
          name="petal_width_cm",
          data_type="float"
      )
  ],
  prediction_fields = [
      ml_monitoring.spec.FieldSchema(
          name="predicted_species",
          data_type="categorical"
      )
  ]
)

TRAINING_DATASET = ml_monitoring.spec.MonitoringInput(
  gcs_uri=GCS_INPUT_URI,
  data_format=DATA_FORMAT,
)

DEFAULT_FEATURE_DRIFT_SPEC=ml_monitoring.spec.DataDriftSpec(
  categorical_metric_type="l_infinity",
  numeric_metric_type="jensen_shannon_divergence",
  default_categorical_alert_threshold=0.1,
  default_numeric_alert_threshold=0.1,
)

DEFAULT_PREDICTION_OUTPUT_DRIFT_SPEC=ml_monitoring.spec.DataDriftSpec(
  categorical_metric_type="l_infinity",
  numeric_metric_type="jensen_shannon_divergence",
  default_categorical_alert_threshold=0.1,
  default_numeric_alert_threshold=0.1,
)

DEFAULT_FEATURE_ATTRIBUTION_SPEC=ml_monitoring.spec.FeatureAttributionSpec(
  default_alert_condition=0.0003,
  feature_alert_conditions={"sepal_length_cm":0.0001},
)

EXPLANATION_SPEC=ExplanationSpec(
  parameters=ExplanationParameters(
      {"sampled_shapley_attribution": {"path_count": 2}}
  ),
  metadata=ExplanationMetadata(
      inputs={
          "sepal_length_cm": ExplanationMetadata.InputMetadata({
              "input_tensor_name": "sepal_length_cm",
              "encoding": "IDENTITY",
              "modality": "numeric",
          }),
          ...
      },
      ...
  )
)

DEFAULT_OUTPUT_SPEC = ml_monitoring.spec.output.OutputSpec(
  gcs_base_dir=GCS_OUTPUT_BASE_DIR
)

DEFAULT_NOTIFICATION_SPEC = ml_monitoring.spec.NotificationSpec(
  user_emails=['[email protected]']
)

my_model_monitor = ml_monitoring.ModelMonitor.create(
  display_name=MONITORING_JOB_DISPLAY_NAME,
  model_name=MODEL_RESOURCE_NAME,
  model_version_id=MODEL_VERSION_ID,
  model_monitoring_schema=MONITORING_SCHEMA,
  # The following fields are optional for creating the model monitor.
  training_dataset=TRAINING_DATASET,
  tabular_objective_spec=ml_monitoring.spec.TabularObjective(
      feature_drift_spec=DEFAULT_FEATURE_DRIFT_SPEC,
      prediction_output_drift_spec=DEFAULT_PREDICTION_OUTPUT_DRIFT_SPEC,
      feature_attribution_spec=DEFAULT_FEATURE_ATTRIBUTION_SPEC,
  ),
  explanation_config=DEFAULT_FEATURE_ATTRIBUTION_SPEC,
  output_spec=DEFAULT_OUTPUT_SPEC,
  notification_spec=DEFAULT_NOTIFICATION_SPEC
)