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 funzionalità 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 che sia un modello tabulare AutoML o dati tabulari importati di addestramento personalizzato.
- 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 della deviazione, i dati di addestramento obbligatorio.
(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, il job rimane in uno in stato di attesa finché Model Monitoring non riesce analizzare lo schema delle prime 1000 richieste di previsione ricevute dal modello.
Crea un job di monitoraggio del modello
Crea un modello per configurare il rilevamento del disallineamento o della deviazione il job di monitoraggio del deployment:
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 modello, seleziona un modello personalizzato di addestramento o un modello AutoML tabulare.
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. Qualsiasi impostazione di monitoraggio configurata 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.
Per Email di notifica, inserisci uno o più indirizzi email separati da virgole 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 di 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/distribuzione.
- In Origine dati di addestramento, fornisci un'origine dati di addestramento.
- In Colonna di destinazione, inserisci il nome della colonna dai dati di addestramento addestrato a prevedere. Questo campo è escluso dall'analisi di monitoraggio.
- (Facoltativo) In Soglie di avviso, specifica le soglie a cui attivare gli avvisi. Per informazioni su come formattare le soglie, mantieni premuto 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, tieni il puntatore sopra Icona Guida di .
- 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 sotto il quale 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 le distanza 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 di 0,3.(Facoltativo) SAMPLING_RATE è la frazione del traffico in entrata richieste di previsione 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 che il job di monitoraggio venga eseguito su input registrati di recente. Il minimo è di 1 ora. Il valore predefinito è 24 ore. Ad esempio,
2
.(Facoltativo) ANALYSIS_INSTANCE_SCHEMA è l'URI di 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 dalla l'analisi del monitoraggio. Ad esempio,
housing-price
.(obbligatorio solo per il rilevamento del disallineamento) BIGQUERY_URI è il link alla di addestramento archiviato in BigQuery, utilizzando formato:
bq://\PROJECT.\DATASET.\TABLE
Ad esempio,
bq://\my-project.\housing-data.\san-francisco
.Puoi sostituire il flag
bigquery-uri
con link alternativi al tuo 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 tabulare gestito da AutoML, 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 lo hai già fatto, esegui il deployment del modello in 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 deviazione. Per personalizzare il file JSON consulta il riferimento del job di Monitoring.
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 job di monitoraggio. Per
ad esempio
my-job
. - PROJECT_NUMBER: è il numero del tuo progetto Google Cloud. Per
ad esempio
1234567890
. - ENDPOINT_ID è l'ID dell'endpoint in cui viene 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 distanza statistica tra le distribuzioni di input e di riferimento per la funzionalitàAge
è maggiore di 0,4. Per impostazione predefinita, ogni caratteristica categorica e numerica viene monitorata con valori di soglia di 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
per ricevere avvisi da Model Monitoring. Utilizza i nomi delle risorse
per i canali di notifica, che puoi recuperare
elencare 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 di 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 la creazione del job di monitoraggio, Model Monitoring registra
richieste di previsione in entrata in una tabella BigQuery generata denominata
PROJECT_ID.model_deployment_monitoring_ENDPOINT_ID.serving_predict
.
Se il logging per richieste di risposte è abilitato,
Model Monitoring registra le richieste in entrata nello stesso
Tabella BigQuery utilizzata per il logging di richiesta-risposta.
(Facoltativo) Configurare gli avvisi per il job di monitoraggio dei modelli
Puoi monitorare e eseguire il debug del job di monitoraggio del modello tramite gli avvisi. Model Monitoring avvisa automaticamente gli aggiornamenti sulle offerte via email, ma puoi anche impostare avvisi 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 abilitare i log per le esecuzioni pianificate della pipeline di monitoraggio, imposta il campo enableMonitoringPipelineLogs
nella configurazione di 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 log:
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 del 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 ciascun intervallo di monitoraggio, se la soglia di almeno una caratteristica supera soglia, Model Monitoring invia un avviso via email ogni indirizzo email specificato durante la creazione del monitoraggio del modello un lavoro. 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 ModelMonitoringAlertConfig
su true
.
A ogni intervallo di monitoraggio, viene scritto un log di anomalie in Cloud Logging 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, ad esempio Pub/Sub.
Le anomalie vengono scritte in Cloud Logging con il nome del 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.
Aggiorna un job di monitoraggio dei modelli
Puoi visualizzare, aggiornare, mettere in pausa ed eliminare un modello di monitoraggio un lavoro. 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 la con gcloud CLI.
Per aggiornare i parametri di un job di monitoraggio dei modelli:
Nella console Google Cloud, vai alla pagina Vertex AI Endpoints.
Fai clic sul nome dell'endpoint da modificare.
Fai clic su Modifica impostazioni.
Nel riquadro Modifica endpoint, seleziona Monitoraggio del modello o Monitoring degli obiettivi.
Aggiorna i campi che vuoi modificare.
Fai clic su Aggiorna.
Per visualizzare le metriche, gli avvisi e le proprietà di monitoraggio per un modello:
Nella console Google Cloud, vai alla pagina Vertex AI Endpoints.
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 che vuoi aggiornare. Questo flag è obbligatorio solo se viene usato 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 località 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. Per
ad esempio
1234567890
. - LOCATION: posizione del job di monitoraggio. Ad esempio:
us-central1
. - MONITORING_JOB_ID: ID del job di monitoraggio. Per
ad esempio
0987654321
.
Per inviare la richiesta, espandi una delle seguenti 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: località del job di monitoraggio. Ad esempio,
us-central1
. - MONITORING_JOB_ID: ID del job di monitoraggio. Per
ad esempio
0987654321
.
Per inviare la richiesta, espandi una delle seguenti opzioni:
Dovresti ricevere una risposta JSON simile alla seguente:
{ "name": "projects/PROJECT_NUMBER/locations/LOCATION/operations/MONITORING_JOB_ID", ... "done": true, ... }
Analizzare i dati di disallineamento e deviazione
Puoi utilizzare la console Google Cloud per visualizzare le distribuzioni di ogni funzionalità monitorata e scoprire quali cambiamenti hanno portato a disallineamenti o deviazioni nel tempo. Puoi visualizza 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 con informazioni pertinenti, come la soglia di avviso per ogni caratteristica e il numero di avvisi precedenti per la funzionalità.
Per analizzare un elemento, fai clic sul suo nome. 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 è visualizzata accanto ai dati di input distribuzione:
La visualizzazione della distribuzione dei dati sotto forma di istogrammi consente di concentrarti rapidamente delle modifiche apportate ai dati. In seguito, potresti decidere di modificare la pipeline di generazione delle caratteristiche o di conservare il modello.
Passaggi successivi
- Lavora con il monitoraggio dei modelli seguendo le documenti relativi alle API.
- Lavora con il monitoraggio dei modelli seguendo le documenti dell'interfaccia a riga di comando gcloud.
- Prova il blocco note di esempio in Colab oppure visualizzalo su GitHub.
- Scopri come Model Monitoring calcola addestramento-distribuzione il disallineamento e la deviazione della previsione.