Prima di poter iniziare a monitorare un modello, devi registrarlo in Vertex AI Model Registry e poi configurare i dettagli del monitoraggio creando un 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 su Vertex AI o su altre infrastrutture di pubblicazione.
Registra modello
Puoi monitorare i modelli di cui è stato eseguito il deployment su qualsiasi infrastruttura di pubblicazione, ad esempio su endpoint Vertex AI, GKE o BigQuery. Per registrare un modello che pubblichi in Vertex AI, consulta Importare modelli.
Per i modelli pubblicati al di fuori di Vertex AI, puoi registrare un modello di riferimento, ovvero un segnaposto per i modelli pubblicati su altre risorse. Quando registri un modello di riferimento, registri il nome del modello, come mostrato nel seguente esempio:
SDK Python
model = aiplatform.Model.upload( display_name="MODEL_NAME" )
Per i modelli di riferimento, Model Monitoring può supportare 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 seguenti origini. Le funzionalità nidificate non sono supportate. Per analizzare i dati nidificati, appiattiscili prima. Se i tuoi dati si trovano, ad esempio, in BigQuery, puoi utilizzare SQL per trasformare le funzionalità nidificate.
- BigQuery
- Puoi fornire un URI di tabella BigQuery o una query SQL. Per specificare
una finestra temporale o per configurare il monitoraggio continuo, la tabella deve includere una
colonna timestamp, 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 con i nomi delle colonne come prima riga del file.
- Job di previsioni in batch Vertex AI
- Fornisci il nome della risorsa del job di previsione batch completo per monitorare un job di previsione batch. Puoi eseguire un job di monitoraggio non appena crei il job di previsioni in batch; non devi attendere il completamento del job batch. Il monitoraggio dei modelli v2 esegue il job di monitoraggio subito dopo il completamento del job di previsione batch.
- Logging degli endpoint Vertex AI
Prima di poter iniziare a monitorare l'endpoint, devi abilitare la registrazione delle richieste e delle risposte. Gli endpoint privati non sono supportati perché non supportano la registrazione di richieste e risposte.
Model Monitoring v2 prevede che il formato JSON delle richieste e delle risposte dell'endpoint Vertex AI segua il formato utilizzato dal metodo
predict
. Gli oggettiinstances
vengono inseriti nella tabella di logging nella colonnarequest_payload
come array:[INSTANCE_1, INSTANCE_2]
. Analogamente, gli oggettipredictions
vengono inseriti nella tabella di logging nella colonnaresponse_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 di richiesta e risposta documentato nel riferimento API per il metodo
predict
.- Set di dati gestito da Vertex AI
Set di dati gestiti in Vertex AI. Per saperne di più, consulta la sezione Formato del set di dati tabellare.
Monitoraggio continuo
Il monitoraggio continuo (noto anche come esecuzioni pianificate) consente di eseguire i job di monitoraggio in base a una pianificazione impostata. Il monitoraggio continuo dei modelli con le specifiche temporali supporta solo BigQuery e la registrazione degli endpoint Vertex AI come origini dati.
Per utilizzare BigQuery come origine per il monitoraggio continuo con specifiche temporali, la tabella deve avere una colonna timestamp. Per le tabelle BigQuery generate dalla registrazione degli endpoint Vertex AI, le tabelle includono già una colonna timestamp logging_time
.
Come tecnica generale di ottimizzazione di BigQuery, ti consigliamo di 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, stringa o interi. Model Monitoring v2 appiattisce l'array in modo che ogni elemento dell'array sia un valore distinto.
Le funzionalità numeriche vengono mappate ai seguenti tipi di dati:
- Numero in virgola mobile
- Numero intero
Le caratteristiche categoriche vengono 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 monitor del modello. Per AutoML Tables, non devi 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, 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 Model Monitoring v2 per il valore di output della previsione
dipende dal tipo di modello. Per i modelli di classificazione AutoML Tables,
Vertex AI Model Monitoring monitora la distribuzione delle etichette argmax. Per i modelli di regressione AutoML Tables, Vertex AI Model Monitoring monitora la distribuzione dei valori.
Set di dati di riferimento e di destinazione
Il set di dati di base rappresenta un punto di riferimento che utilizzi per misurare le metriche nel tempo. Il set di dati target include dati più recenti che utilizzi per il confronto con il set di dati di base. Model Monitoring v2 calcola le metriche tra i due set di dati per aiutarti a monitorare la qualità dei tuoi modelli. I set di dati di riferimento e di destinazione possono provenire da qualsiasi origine dati supportata.
Come esempi di target e baseline, puoi confrontare il set di dati di servizio (target) con il set di dati di addestramento del modello (baseline) oppure puoi confrontare il set di dati di servizio (target) con un set di dati di servizio di un periodo di tempo precedente (baseline).
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, che specifica la quantità di dati da esaminare per Model Monitoring v2. Ad esempio, se specifichi una finestra di 24 ore, Model Monitoring v2 confronta solo i dati delle ultime 24 ore con il set di dati di riferimento.
Per l'analisi della deriva dei dati, la deriva può essere volatile se viene elaborato un volume di dati inadeguato. Una finestra temporale più ampia può contribuire a evitare avvisi attivati a causa di un numero ridotto di campioni.
Set di dati di riferimento
Puoi impostare il set di dati di base su qualsiasi origine dati supportata, ad esempio un set di dati gestito da Vertex AI che contiene i dati di addestramento del modello. Analogamente ai set di dati di destinazione, puoi scegliere di far elaborare a Model Monitoring v2 l'intero set di dati o una finestra specifica.
Specifica dell'ora
Puoi impostare le specifiche dell'ora di monitoraggio in due modi:
- Intervallo di tempo, che include una coppia di ora di inizio e ora 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, nei casi in cui 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, supponiamo di impostare il set di dati target con una finestra di un giorno e la base di riferimento con un offset di una settimana, anch'essa con una finestra di un giorno.
In questo caso, il set di dati di destinazione include i dati delle 24 ore precedenti l'ora di inizio del job di monitoraggio. Il set di dati di base 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 di monitoraggio a una versione del modello registrata in Vertex AI Model Registry. La risorsa risultante è chiamata monitor del modello. Puoi creare un solo monitoraggio del modello per versione del modello.
Quando crei un monitoraggio del modello, specifica il nome del modello, la relativa versione e lo schema. Per alcuni modelli, come i modelli AutoML, lo schema viene fornito.
Puoi anche impostare obiettivi di monitoraggio, un set di dati di addestramento, la posizione dell'output di monitoraggio e le impostazioni di notifica nel monitoraggio del modello. Quando esegui un job di monitoraggio, Model Monitoring v2 utilizza queste impostazioni come predefinite.
Console
Nella console Google Cloud , vai alla pagina Monitoring.
Fai clic su Configura monitoraggio.
Seleziona un modello e la relativa versione da monitorare.
Se applicabile, definisci lo schema delle caratteristiche di input, degli output di previsione e, se disponibili, dei dati empirici reali.
(Facoltativo) Per monitorare la deriva dal set di dati di addestramento, specifica la posizione del set di dati.
(Facoltativo) Per specificare un bucket Cloud Storage esistente per esportare i risultati del monitoraggio, espandi Opzioni avanzate e seleziona un bucket.
Per configurare gli obiettivi di monitoraggio, fai clic su Continua o su Configura per creare il monitoraggio del modello.
Questa configurazione viene utilizzata come impostazioni predefinite durante l'esecuzione di un job.
Seleziona gli obiettivi da monitorare. Per ogni obiettivo, puoi impostare la metrica da monitorare e una soglia per gli avvisi.
Specifica gli indirizzi email e, facoltativamente, i canali di notifica in Cloud Monitoring per avvisi e notifiche di monitoraggio.
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_threshold=0.0003, feature_alert_thresholds={"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_spec=DEFAULT_FEATURE_ATTRIBUTION_SPEC, output_spec=DEFAULT_OUTPUT_SPEC, notification_spec=DEFAULT_NOTIFICATION_SPEC )