Questa pagina descrive come creare, gestire e interpretare i risultati dei job di monitoraggio dei modelli per i modelli di cui è stato eseguito il deployment negli endpoint di previsione online. Vertex AI Model Monitoring supporta il rilevamento di disallineamento e deviazione delle caratteristiche per le caratteristiche di input categoriche e numeriche.
Quando un modello viene implementato in produzione con il monitoraggio dei modelli attivo, le richieste di previsione in entrata vengono registrate in una tabella BigQuery nel progetto Google Cloud. I valori delle caratteristiche di input contenuti nelle richieste registrate vengono poi analizzati per rilevare eventuali scostamenti o deviazioni.
Puoi attivare il rilevamento del disallineamento se fornisci il set di dati di addestramento originale per il tuo modello. In caso contrario, devi attivare il rilevamento della deviazione. Per ulteriori informazioni, consulta Introduzione a Vertex AI Model Monitoring.
Prerequisiti
Per utilizzare il monitoraggio dei modelli, completa quanto segue:
Avere un modello disponibile in Vertex AI di tipo AutoML tabulare o addestramento personalizzato tabulare importato.
- Se utilizzi un endpoint esistente, assicurati che tutti i modelli di cui è stato eseguito il deployment sotto l'endpoint siano di tipo AutoML tabulare o di addestramento personalizzato importato.
Se attivi il rilevamento degli scostamenti, carica i dati di addestramento su Cloud Storage o BigQuery e ottieni il link URI ai dati. Per il rilevamento delle deviazioni, i dati di addestramento non sono obbligatori.
(Facoltativo) Per i modelli con addestramento personalizzato, carica lo schema dell'istanza di analisi per il modello su Cloud Storage. Model Monitoring richiede lo schema per avviare la procedura di monitoraggio e calcolare la distribuzione di riferimento per il rilevamento del disallineamento. Se non fornisci lo schema durante la creazione del job, il job rimane in stato pending finché Model Monitoring non riesce ad analizzare automaticamente lo schema dalle prime 1000 richieste di previsione ricevute dal modello.
Crea un job di monitoraggio del modello
Per configurare il rilevamento di disallineamento o di deviazione, crea un job di monitoraggio del deployment del modello:
Console
Per creare un job di monitoraggio del deployment del modello utilizzando la console Google Cloud, crea un endpoint:
Nella console Google Cloud, vai alla pagina Endpoint Vertex AI.
Fai clic su Crea endpoint.
Nel riquadro Nuovo endpoint, assegna un nome all'endpoint e imposta una regione.
Fai clic su Continua.
Nel campo Nome del modello, seleziona un modello AutoML tabulare o con addestramento personalizzato importato.
Nel campo Versione, seleziona una versione per il modello.
Fai clic su Continua.
Nel riquadro Monitoraggio dei modelli, assicurati che l'opzione Attiva il monitoraggio dei modelli per questo endpoint sia attivata. Le impostazioni di monitoraggio configurate si applicano a tutti i modelli di cui è stato eseguito il deployment nell'endpoint.
Inserisci un nome visualizzato del job di monitoraggio.
Inserisci una durata della finestra di monitoraggio.
In Email di notifica, inserisci uno o più indirizzi email separati da virgola per ricevere avvisi quando un modello supera una soglia di avviso.
(Facoltativo) Per Canali di notifica, aggiungi i canali Cloud Monitoring per ricevere avvisi quando un modello supera una soglia di avviso. Puoi selezionare i canali Cloud Monitoring esistenti o crearne uno nuovo facendo clic su Gestisci canali di notifica. La console supporta i canali di notifica PagerDuty, Slack e Pub/Sub.
Inserisci una frequenza di campionamento.
(Facoltativo) Inserisci lo schema di input di previsione e lo schema di input di analisi.
Fai clic su Continua. Si apre il riquadro Obiettivo monitoraggio con le opzioni per il rilevamento di disallineamento o deviazione:
Rilevamento del disallineamento
- Seleziona Rilevamento del disallineamento addestramento/produzione.
- In Origine dati di addestramento, fornisci un'origine dati di addestramento.
- In Colonna target, inserisci il nome della colonna nei dati di addestramento che il modello è addestrato a prevedere. Questo campo è escluso dall'analisi di monitoraggio.
- (Facoltativo) In Soglie di avviso, specifica le soglie per attivare gli avvisi. Per informazioni su come formattare le soglie, muovi il cursore sopra l'icona Guida.
- Fai clic su Crea.
Rilevamento della deviazione
- Seleziona Rilevamento della deviazione della previsione.
- (Facoltativo) In Soglie di avviso, specifica le soglie per attivare gli avvisi. Per informazioni su come formattare le soglie, muovi il cursore sopra l'icona Guida.
- Fai clic su Crea.
gcloud
Per creare un job di monitoraggio del deployment del modello utilizzando gcloud CLI, esegui prima il deployment del modello in un endpoint:
Una configurazione del job di monitoraggio si applica a tutti i modelli di cui è stato eseguito il deployment in un endpoint.
Esegui il comando gcloud ai model-monitoring-jobs create
.
gcloud ai model-monitoring-jobs create \ --project=PROJECT_ID \ --region=REGION \ --display-name=MONITORING_JOB_NAME \ --emails=EMAIL_ADDRESS_1,EMAIL_ADDRESS_2 \ --endpoint=ENDPOINT_ID \ [--feature-thresholds=FEATURE_1=THRESHOLD_1, FEATURE_2=THRESHOLD_2] \ [--prediction-sampling-rate=SAMPLING_RATE] \ [--monitoring-frequency=MONITORING_FREQUENCY] \ [--analysis-instance-schema=ANALYSIS_INSTANCE_SCHEMA] \ --target-field=TARGET_FIELD \ --bigquery-uri=BIGQUERY_URI
dove:
PROJECT_ID è l'ID del tuo progetto Google Cloud. Ad esempio,
my-project
.REGION è la posizione del job di monitoraggio. Ad esempio,
us-central1
.MONITORING_JOB_NAME è il nome del job di monitoraggio. Ad esempio,
my-job
.EMAIL_ADDRESS è l'indirizzo email su cui vuoi ricevere gli avvisi di Model Monitoring. Ad esempio,
example@example.com
.ENDPOINT_ID è l'ID dell'endpoint in cui è stato eseguito il deployment del modello. Ad esempio,
1234567890987654321
.(Facoltativo) FEATURE_1=THRESHOLD_1 è la soglia di avviso per ogni funzionalità da monitorare. Ad esempio, se specifichi
Age=0.4
, Model Monitoring registra un avviso quando la distanza statistica tra le distribuzioni di input e di riferimento per la caratteristicaAge
supera 0,4. Per impostazione predefinita, ogni caratteristica categorica e numerica viene monitorata con valori di soglia di 0,3.(Facoltativo) SAMPLING_RATE è la frazione delle richieste di previsione in arrivo che vuoi registrare. Ad esempio,
0.5
. Se non specificato, Model Monitoring registra tutte le richieste di previsione.(Facoltativo) MONITORING_FREQUENCY è la frequenza con cui vuoi eseguire il job di monitoraggio sugli input registrati di recente. La granularità minima è 1 ora. Il valore predefinito è 24 ore. Ad esempio,
2
.(Facoltativo) ANALYSIS_INSTANCE_SCHEMA è l'URI Cloud Storage per il file dello schema che descrive il formato dei dati di input. Ad esempio,
gs://test-bucket/schema.yaml
.(obbligatorio solo per il rilevamento dei disallineamenti) TARGET_FIELD è il campo previsto dal modello. Questo campo è escluso dall'analisi di monitoraggio. Ad esempio,
housing-price
.(obbligatorio solo per il rilevamento dell'asimmetria) BIGQUERY_URI è il link al set di dati di addestramento archiviato in BigQuery, utilizzando il seguente formato:
bq://\PROJECT.\DATASET.\TABLE
Ad esempio,
bq://\my-project.\housing-data.\san-francisco
.Puoi sostituire il flag
bigquery-uri
con link alternativi al set di dati di addestramento:Per un file CSV archiviato in un bucket Cloud Storage, utilizza
--data-format=csv --gcs-uris=gs://BUCKET_NAME/OBJECT_NAME
.Per un file TFRecord archiviato in un bucket Cloud Storage, utilizza
--data-format=tf-record --gcs-uris=gs://BUCKET_NAME/OBJECT_NAME
.Per un set di dati gestito AutoML tabulare, utilizza
--dataset=DATASET_ID
.
SDK Python
Per informazioni sul flusso di lavoro completo dall'inizio alla fine dell'API Model Monitoring, consulta il notebook di esempio.
API REST
Se non l'hai ancora fatto, esegui il deployment del modello su un endpoint. Durante il passaggio Ottieni l'ID endpoint nelle istruzioni di implementazione del modello, prendi nota del valore
deployedModels.id
nella risposta JSON per utilizzarlo in un secondo momento:Crea una richiesta di job di monitoraggio del modello. Le istruzioni riportate di seguito mostrano come creare un job di monitoraggio di base per il rilevamento della deriva. Per personalizzare la richiesta JSON, consulta la sezione Riferimento al job di monitoraggio.
Prima di utilizzare i dati della richiesta, apporta le seguenti sostituzioni:
- PROJECT_ID: è l'ID del tuo progetto Google Cloud. Ad esempio,
my-project
. - LOCATION: è la posizione del job di monitoraggio. Ad esempio,
us-central1
. - MONITORING_JOB_NAME: il nome del tuo job di monitoraggio. Ad esempio,
my-job
. - PROJECT_NUMBER: è il numero del tuo progetto Google Cloud. Ad esempio,
1234567890
. - ENDPOINT_ID è l'ID dell'endpoint in cui è stato eseguito il deployment del modello. Ad esempio,
1234567890
. - DEPLOYED_MODEL_ID: è l'ID del modello di cui è stato eseguito il deployment.
- FEATURE:VALUE è la soglia di avviso per ogni funzionalità da monitorare. Ad esempio, se specifichi
"Age": {"value": 0.4}
, Model Monitoring registra un avviso quando la distanza statistica tra le distribuzioni di input e di riferimento per la funzionalitàAge
supera 0,4. Per impostazione predefinita, ogni caratteristica categorica e numerica viene monitorata con valori di soglia pari a 0,3. - EMAIL_ADDRESS: è l'indirizzo email su cui vuoi ricevere
gli avvisi da Monitoraggio dei modelli. Ad esempio,
example@example.com
. - NOTIFICATION_CHANNELS:
un elenco di
canali di notifica di Cloud Monitoring
in cui vuoi ricevere avvisi da Model Monitoring. Utilizza i nomi delle risorse
per i canali di notifica, che puoi recuperare elencando i canali di notifica
nel tuo progetto. Ad esempio:
"projects/my-project/notificationChannels/1355376463305411567", "projects/my-project/notificationChannels/1355376463305411568"
. - (Facoltativo) ANALYSIS_INSTANCE_SCHEMA è l'URI Cloud Storage
per il file dello schema che descrive il formato dei dati di input. Ad esempio,
gs://test-bucket/schema.yaml
.
Corpo JSON della richiesta:
{ "displayName":"MONITORING_JOB_NAME", "endpoint":"projects/PROJECT_NUMBER/locations/LOCATION/endpoints/ENDPOINT_ID", "modelDeploymentMonitoringObjectiveConfigs": { "deployedModelId": "DEPLOYED_MODEL_ID", "objectiveConfig": { "predictionDriftDetectionConfig": { "driftThresholds": { "FEATURE_1": { "value": VALUE_1 }, "FEATURE_2": { "value": VALUE_2 } } }, }, }, "loggingSamplingStrategy": { "randomSampleConfig": { "sampleRate": 0.5, }, }, "modelDeploymentMonitoringScheduleConfig": { "monitorInterval": { "seconds": 3600, }, }, "modelMonitoringAlertConfig": { "emailAlertConfig": { "userEmails": ["EMAIL_ADDRESS"], }, "notificationChannels": [NOTIFICATION_CHANNELS] }, "analysisInstanceSchemaUri": ANALYSIS_INSTANCE_SCHEMA }
Per inviare la richiesta, espandi una di queste opzioni:
Dovresti ricevere una risposta JSON simile alla seguente:
{ "name": "projects/PROJECT_NUMBER/locations/LOCATION/modelDeploymentMonitoringJobs/MONITORING_JOB_NUMBER", ... "state": "JOB_STATE_PENDING", "scheduleState": "OFFLINE", ... "bigqueryTables": [ { "logSource": "SERVING", "logType": "PREDICT", "bigqueryTablePath": "bq://PROJECT_ID.model_deployment_monitoring_8451189418714202112.serving_predict" } ], ... }
- PROJECT_ID: è l'ID del tuo progetto Google Cloud. Ad esempio,
Dopo aver creato il job di monitoraggio, Model Monitoring registra le richieste di previsione in arrivo in una tabella BigQuery generata denominata PROJECT_ID.model_deployment_monitoring_ENDPOINT_ID.serving_predict
.
Se il logging delle richieste e delle risposte è abilitato, monitoring dei modelli registra le richieste in arrivo nella stessa tabella BigQuery utilizzata per il logging delle richieste e delle risposte.
(Facoltativo) Configura gli avvisi per il job di monitoraggio del modello
Puoi monitorare e eseguire il debug del job di monitoraggio del modello tramite gli avvisi. Il monitoraggio dei modelli ti invia automaticamente notifiche degli aggiornamenti dei job via email, ma puoi anche configurare avvisi tramite i canali di notifica di Cloud Logging e Cloud Monitoring.
Per i seguenti eventi, Model Monitoring invia una notifica via email a ogni indirizzo email specificato durante la creazione del job di Model Monitoring:
- Ogni volta che viene impostato il rilevamento di disallineamenti o deviazioni.
- Ogni volta che viene aggiornata la configurazione di un job esistente di Model Monitoring.
- Ogni volta che un'esecuzione della pipeline di monitoraggio pianificata non va a buon fine.
Cloud Logging
Per attivare i log per le esecuzioni pianificate della pipeline di monitoraggio, imposta il campo enableMonitoringPipelineLogs
nella configurazione modelDeploymentMonitoringJobs
su
true
. I log di debug vengono scritti in Cloud Logging quando viene configurato il job di monitoraggio e a ogni intervallo di monitoraggio.
I log di debug vengono scritti in Cloud Logging con il nome:
model_monitoring
. Ad esempio:
logName="projects/model-monitoring-demo/logs/aiplatform.googleapis.com%2Fmodel_monitoring" resource.labels.model_deployment_monitoring_job=6680511704087920640
Ecco un esempio di voce di log di avanzamento del job:
{ "insertId": "e2032791-acb9-4d0f-ac73-89a38788ccf3@a1", "jsonPayload": { "@type": "type.googleapis.com/google.cloud.aiplatform.logging.ModelMonitoringPipelineLogEntry", "statusCode": { "message": "Scheduled model monitoring pipeline finished successfully for job projects/677687165274/locations/us-central1/modelDeploymentMonitoringJobs/6680511704087920640" }, "modelDeploymentMonitoringJob": "projects/677687165274/locations/us-central1/modelDeploymentMonitoringJobs/6680511704087920640" }, "resource": { "type": "aiplatform.googleapis.com/ModelDeploymentMonitoringJob", "labels": { "model_deployment_monitoring_job": "6680511704087920640", "location": "us-central1", "resource_container": "projects/677687165274" } }, "timestamp": "2022-02-04T15:33:54.778883Z", "severity": "INFO", "logName": "projects/model-monitoring-demo/logs/staging-aiplatform.sandbox.googleapis.com%2Fmodel_monitoring", "receiveTimestamp": "2022-02-04T15:33:56.343298321Z" }
Canali di notifica
Ogni volta che l'esecuzione di una pipeline di monitoraggio pianificata non va a buon fine, Model Monitoring invia una notifica ai canali di notifica di Cloud Monitoring specificati durante la creazione del job di Model Monitoring.
Configurare gli avvisi per le anomalie delle funzionalità
Model Monitoring rileva un'anomalia quando viene superata la soglia impostata per una funzionalità. Il monitoraggio dei modelli ti invia automaticamente una notifica via email per le anomalie rilevate, ma puoi anche configurare avvisi tramite i canali di notifica di Cloud Logging e Cloud Monitoring.
A ogni intervallo di monitoraggio, se la soglia di almeno un'attributo viene superata, Model Monitoring invia un avviso via email a ogni indirizzo email specificato durante la creazione del job di monitoraggio dei modelli. Il messaggio email include quanto segue:
- L'ora in cui è stato eseguito il job di monitoraggio.
- Il nome della caratteristica che presenta un disallineamento o una deviazione.
- La soglia di avviso e la misura della distanza statistica registrata.
Cloud Logging
Per attivare gli avvisi di Cloud Logging, imposta il campo enableLogging
della configurazione di ModelMonitoringAlertConfig
su true
.
A ogni intervallo di monitoraggio, in Cloud Logging viene scritto un log di anomalia se la distribuzione di almeno una funzionalità supera la soglia prevista per quella funzionalità. Puoi inoltrare i log a qualsiasi servizio supportato da Cloud Logging, come Pub/Sub.
Le anomalie vengono scritte in Cloud Logging con il nome di log:
model_monitoring_anomaly
. Ad esempio:
logName="projects/model-monitoring-demo/logs/aiplatform.googleapis.com%2Fmodel_monitoring_anomaly" resource.labels.model_deployment_monitoring_job=6680511704087920640
Ecco un esempio di voce del log di anomalie:
{ "insertId": "b0e9c0e9-0979-4aff-a5d3-4c0912469f9a@a1", "jsonPayload": { "anomalyObjective": "RAW_FEATURE_SKEW", "endTime": "2022-02-03T19:00:00Z", "featureAnomalies": [ { "featureDisplayName": "age", "deviation": 0.9, "threshold": 0.7 }, { "featureDisplayName": "education", "deviation": 0.6, "threshold": 0.3 } ], "totalAnomaliesCount": 2, "@type": "type.googleapis.com/google.cloud.aiplatform.logging.ModelMonitoringAnomaliesLogEntry", "startTime": "2022-02-03T18:00:00Z", "modelDeploymentMonitoringJob": "projects/677687165274/locations/us-central1/modelDeploymentMonitoringJobs/6680511704087920640", "deployedModelId": "1645828169292316672" }, "resource": { "type": "aiplatform.googleapis.com/ModelDeploymentMonitoringJob", "labels": { "model_deployment_monitoring_job": "6680511704087920640", "location": "us-central1", "resource_container": "projects/677687165274" } }, "timestamp": "2022-02-03T19:00:00Z", "severity": "WARNING", "logName": "projects/model-monitoring-demo/logs/staging-aiplatform.sandbox.googleapis.com%2Fmodel_monitoring_anomaly", "receiveTimestamp": "2022-02-03T19:59:52.121398388Z" }
Canali di notifica
A ogni intervallo di monitoraggio, se la soglia di almeno un elemento supera la soglia, Model Monitoring invia un avviso ai canali di notifica di Cloud Monitoring che hai specificato durante la creazione del job di monitoraggio dei modelli. L'avviso include informazioni sul job di monitoraggio del modello che ha attivato l'avviso.
Aggiornare un job di monitoraggio del modello
Puoi visualizzare, aggiornare, mettere in pausa ed eliminare un job di monitoraggio dei modelli. Devi mettere in pausa un job prima di poterlo eliminare.
Console
La messa in pausa e l'eliminazione non sono supportate nella console Google Cloud. Utilizza invece gcloud CLI.
Per aggiornare i parametri di un job di monitoraggio dei modelli:
Nella console Google Cloud, vai alla pagina Endpoint Vertex AI.
Fai clic sul nome dell'endpoint da modificare.
Fai clic su Modifica impostazioni.
Nel riquadro Modifica endpoint, seleziona Monitoraggio del modello o Scopi di monitoraggio.
Aggiorna i campi che vuoi modificare.
Fai clic su Aggiorna.
Per visualizzare le metriche, gli avvisi e le proprietà di monitoraggio di un modello:
Nella console Google Cloud, vai alla pagina Endpoint Vertex AI.
Fai clic sul nome dell'endpoint.
Nella colonna Monitoraggio relativa al modello che vuoi visualizzare, fai clic su Attivato.
gcloud
Esegui questo comando:
gcloud ai model-monitoring-jobs COMMAND MONITORING_JOB_ID \ --PARAMETER=VALUE --project=PROJECT_ID --region=LOCATION
dove:
COMMAND è il comando che vuoi eseguire sul job di monitoraggio. Ad esempio,
update
,pause
,resume
odelete
. Per ulteriori informazioni, consulta la documentazione di riferimento di gcloud CLI.MONITORING_JOB_ID è l'ID del job di monitoraggio. Ad esempio,
123456789
. Puoi trovare l'ID [recuperando le informazioni sull'endpoint][retrieve-id] o visualizzando le proprietà di monitoraggio per un modello nella console Google Cloud. L'ID è incluso nel nome della risorsa del job di monitoraggio nel formatoprojects/PROJECT_NUMBER/locations/LOCATION/modelDeploymentMonitoringJobs/MONITORING_JOB_ID
.(Facoltativo) PARAMETER=VALUE è il parametro da aggiornare. Questo flag è obbligatorio solo se utilizzi il comando
update
. Ad esempio,monitoring-frequency=2
. Per un elenco dei parametri che puoi aggiornare, consulta il riferimento per l'interfaccia a riga di comando gcloud.PROJECT_ID è l'ID del tuo progetto Google Cloud. Ad esempio,
my-project
.LOCATION è la posizione del job di monitoraggio. Ad esempio,
us-central1
.
API REST
Mettere in pausa un job
Prima di utilizzare i dati della richiesta, apporta le seguenti sostituzioni:
- PROJECT_NUMBER: il numero del tuo progetto Google Cloud. Ad esempio,
1234567890
. - LOCATION: posizione del job di monitoraggio. Ad esempio,
us-central1
. - MONITORING_JOB_ID: l'ID del job di monitoraggio. Ad esempio,
0987654321
.
Per inviare la richiesta, espandi una di queste opzioni:
Dovresti ricevere una risposta JSON simile alla seguente:
{}
Elimina un job
Prima di utilizzare i dati della richiesta, apporta le seguenti sostituzioni:
- PROJECT_NUMBER: il numero del tuo progetto Google Cloud. Ad esempio,
my-project
. - LOCATION: posizione del job di monitoraggio. Ad esempio,
us-central1
. - MONITORING_JOB_ID: l'ID del job di monitoraggio. Ad esempio,
0987654321
.
Per inviare la richiesta, espandi una di queste opzioni:
Dovresti ricevere una risposta JSON simile alla seguente:
{ "name": "projects/PROJECT_NUMBER/locations/LOCATION/operations/MONITORING_JOB_ID", ... "done": true, ... }
Analizza i dati su scostamento e deriva
Puoi utilizzare la console Google Cloud per visualizzare le distribuzioni di ogni caratteristica monitorata e scoprire quali modifiche hanno causato uno scostamento o una deriva nel tempo. Puoi visualizzare le distribuzioni dei valori delle caratteristiche sotto forma di istogramma.
Console
Per accedere alle tabelle di distribuzione delle funzionalità nella console Google Cloud, vai alla pagina Endpoint.
Nella pagina Endpoint, fai clic sull'endpoint da analizzare.
Nella pagina dei dettagli dell'endpoint selezionato è presente un elenco di tutti i modelli di cui è stato eseguito il deployment in quell'endpoint. Fai clic sul nome di un modello da analizzare.
La pagina dei dettagli del modello elenca le caratteristiche di input del modello, insieme a informazioni pertinenti, come la soglia di avviso per ogni caratteristica e il numero di avvisi precedenti per la caratteristica.
Per analizzare una funzionalità, fai clic sul nome della funzionalità. Una pagina mostra gli istogrammi della distribuzione delle funzionalità per la funzionalità in questione.
Per ogni funzionalità monitorata, puoi visualizzare le distribuzioni dei 50 job di monitoraggio più recenti nella console Google Cloud. Per il rilevamento del disallineamento, la distribuzione dei dati di addestramento viene visualizzata accanto alla distribuzione dei dati di input:
La visualizzazione della distribuzione dei dati sotto forma di istogrammi consente di comprendere rapidamente ciò che è accaduto nei dati. In seguito, potresti decidere di modificare la pipeline di generazione delle caratteristiche o di conservare il modello.
Passaggi successivi
- Utilizza Model Monitoring seguendo la documentazione dell'API.
- Utilizza Model Monitoring seguendo la documentazione dell'interfaccia a riga di comando gcloud.
- Prova il notebook di esempio in Colab o visualizzalo su GitHub.
- Scopri in che modo il monitoraggio dei modelli calcola il disallineamento tra addestramento e distribuzione e la deviazione della previsione.