Configura il monitoraggio del modello

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

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

Registra modello

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

Per i modelli pubblicati al di fuori di Vertex AI, puoi registrare Un modello di riferimento, che rappresenta un segnaposto per i modelli pubblicati altre risorse. Quando registri un modello di riferimento, registri anche gli elementi come mostrato nell'esempio seguente:

SDK Python

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

Per i modelli di riferimento, Model Monitoring può supportare e set di dati da 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. Nidificati non sono supportate. Per analizzare i dati nidificati, devi prima suddividerli. 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 un , che specifichi 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 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. Model Monitoring v2 esegue il job di monitoraggio subito dopo l'esecuzione del job di previsione batch completata.
Logging degli endpoint Vertex AI

Devi abilitare il logging delle richieste e delle risposte nell'endpoint prima di iniziare monitorandolo. Gli endpoint privati non sono supportati perché non supportano il logging di richiesta-risposta.

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 (come la previsione non elaborata), ma i dati devono seguire il formato JSON di richiesta e risposta come documentato nel riferimento dell'API per 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 che 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 sono mappate 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 v2 recupera lo schema del modello, viene utilizzato il metodo caratteristiche presenti nel set di dati di addestramento come caratteristiche di input, ad eccezione del target. L'output della previsione è impostato su predicted_{target_column} colonna. 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 di destinazione

Il set di dati di riferimento rappresenta un punto di riferimento che viene utilizzato per misurare 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 tuoi modelli. I valori di riferimento e i set di dati di destinazione possono provenire da qualsiasi origine dati supportata.

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

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, Model Monitoring v2 confronta solo i dati delle ultime 24 ore rispetto al 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 Set di dati gestito da Vertex AI che contiene l'addestramento del modello e i dati di Google Cloud. Analogamente ai set di dati di destinazione, puoi scegliere di lasciare che Model Monitoring v2 elabori l'intero set di dati o una determinata finestra.

Specifica temporale

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

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

Ad esempio, nei casi in cui vuoi confrontare i dati recenti con quelli raccolti in precedenza, puoi impostare un offset. L'offset specifica l'ora tra i set di dati di destinazione e quelli 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 della stessa Periodo di 24 ore, ma esattamente una settimana prima.

Crea un monitoraggio del modello

Crea un monitoraggio del modello per associare i dettagli di monitoraggio a una versione del modello che sia stato registrato in Vertex AI Model Registry. La risorsa risultante è chiamato monitoraggio del modello. 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 quelli 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 se esegui un job di monitoraggio, Model Monitoring v2 usa 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 caratteristiche di input per la previsione e, se disponibile, i dati di fatto.

  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 predefinita 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 monitorare 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@example.com']
)

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
)