Monitoraggio di disallineamenti e deviazioni delle attribuzioni delle caratteristiche

Questa pagina descrive come utilizzare Vertex AI Model Monitoring con Vertex Explainable AI per rilevare disallineamenti e deviazioni per le attribuzioni delle caratteristiche delle caratteristiche di input categorico e numerico.

Panoramica del monitoraggio basato sull'attribuzione delle funzionalità

Le attribuzioni delle caratteristiche indicano in che misura ciascuna caratteristica del modello ha contribuito alle previsioni per ogni determinata istanza. Quando richiedi previsioni, ottieni i valori previsti appropriati per il tuo modello. Quando richiedi le spiegazioni, ricevi le previsioni insieme alle informazioni di attribuzione delle caratteristiche.

I punteggi di attribuzione sono proporzionali al contributo della caratteristica alla previsione di un modello. In genere sono firmati, a indicare se una funzionalità aiuta a eseguire il push della previsione verso l'alto o verso il basso. Le attribuzioni di tutte le caratteristiche devono corrispondere al punteggio di previsione del modello.

Monitorando le attribuzioni delle caratteristiche, il monitoraggio dei modelli tiene traccia dei cambiamenti nel contributo di una caratteristica alle previsioni di un modello nel tempo. Una modifica nel punteggio di attribuzione di una funzionalità chiave spesso indica che la funzionalità è cambiata in modo da influire sull'accuratezza delle previsioni del modello.

Per informazioni su come viene calcolato il punteggio di attribuzione delle caratteristiche, consulta Metodi di attribuzione delle funzionalità.

Disallineamento dell'addestramento e distribuzione dell'attribuzione delle caratteristiche e deviazione della previsione

Quando crei un job di monitoraggio per un modello in cui è abilitato Vertex Explainable AI, Model Monitoring monitora il disallineamento o la deviazione sia per le distribuzioni delle caratteristiche sia per le attribuzioni delle caratteristiche. Per informazioni su disallineamento e deriva della distribuzione delle caratteristiche, consulta Introduzione a Vertex AI Model Monitoring.

Per le attribuzioni delle caratteristiche:

  • Un disallineamento addestramento/produzione si verifica quando il punteggio di attribuzione di una funzionalità in produzione devia dal punteggio di attribuzione della funzionalità nei dati di addestramento originali.

  • La deviazione della previsione si verifica quando il punteggio di attribuzione di una funzionalità in produzione cambia in modo significativo nel tempo.

Puoi abilitare il rilevamento del disallineamento se fornisci il set di dati di addestramento originale per il modello; in caso contrario, devi abilitare il rilevamento delle deviazioni. Puoi anche abilitare il rilevamento dell'inclinazione e della deviazione.

Prerequisiti

Per utilizzare il monitoraggio dei modelli con Vertex Explainable AI, completa i seguenti passaggi:

  1. Se stai abilitando il rilevamento del disallineamento, carica i dati di addestramento o l'output di un job di spiegazione batch per il set di dati di addestramento in Cloud Storage o BigQuery. Recupera il link dell'URI ai dati. Per il rilevamento delle deviazioni, non sono richiesti dati di addestramento o la base di riferimento per la spiegazione.

  2. Disporre di un modello disponibile in Vertex AI che sia un AutoML tabulare o un tipo di addestramento personalizzato tabulare importato:

  3. Configura il modello per utilizzare Vertex Explainable AI durante la creazione, l'importazione o il deployment del modello. Il campo ExplanationSpec.ExplanationParameters deve essere compilato per il modello.

  4. (Facoltativo) Per i modelli con addestramento personalizzato, carica lo schema dell'istanza di analisi per il tuo modello in Cloud Storage. Model Monitoring richiede che lo schema inizi il processo di monitoraggio e calcoli la distribuzione di riferimento per il rilevamento del disallineamento. Se non fornisci lo schema durante la creazione del job, quest'ultimo rimane in stato In attesa finché Model Monitoring non riesce ad analizzare automaticamente lo schema delle prime 1000 richieste di previsione ricevute dal modello.

Attiva il rilevamento dell'inclinazione o della deviazione

Per configurare il rilevamento del disallineamento o delle deviazioni, crea un job di monitoraggio del deployment del modello:

Console

Per creare un job di monitoraggio del deployment dei modelli utilizzando la console Google Cloud, crea un endpoint:

  1. Nella console Google Cloud, vai alla pagina Vertex AI Endpoints.

    Vai a Endpoints

  2. Fai clic su Crea endpoint.

  3. Nel riquadro Nuovo endpoint, assegna un nome all'endpoint e imposta una regione.

  4. Fai clic su Continua.

  5. Nel campo Nome modello, seleziona un modello AutoML tabulare o di addestramento personalizzato importato.

  6. Nel campo Versione, seleziona una versione del modello.

  7. Fai clic su Continua.

  8. Nel riquadro Monitoraggio del modello, assicurati che l'opzione Abilita il monitoraggio del modello per questo endpoint sia attivata. Qualsiasi impostazione di monitoraggio configurata viene applicata a tutti i modelli di cui è stato eseguito il deployment nell'endpoint.

  9. Inserisci un Nome visualizzato del job di monitoraggio.

  10. Inserisci un valore in Lunghezza della finestra di Monitoring.

  11. In Email di notifica, inserisci uno o più indirizzi email separati da virgole per ricevere avvisi quando un modello supera una soglia di avviso.

  12. (Facoltativo) Per Canali di notifica, seleziona 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.

  13. Inserisci una Frequenza di campionamento.

  14. (Facoltativo) Inserisci lo schema di input della previsione e lo schema di input dell'analisi.

  15. Fai clic su Continua. Si apre il riquadro Obiettivo di Monitoring, con le opzioni per il rilevamento dell'inclinazione o della deviazione:

    Rilevamento del disallineamento

    1. Seleziona Rilevamento del disallineamento addestramento/produzione.
    2. In Origine dati di addestramento, fornisci un'origine dati di addestramento.
    3. In Colonna di destinazione, inserisci il nome della colonna nei dati di addestramento che il modello è addestrato a prevedere. Questo campo è escluso dall'analisi di monitoraggio.
    4. (Facoltativo) In Soglie di avviso, specifica le soglie su cui attivare gli avvisi. Per informazioni su come formattare le soglie, tieni il puntatore del mouse sull'icona della Guida di .
    5. Fai clic su Crea.

    Rilevamento delle deviazioni

    1. Seleziona Rilevamento della deviazione della previsione.
    2. (Facoltativo) In Soglie di avviso, specifica le soglie su cui attivare gli avvisi. Per informazioni su come formattare le soglie, tieni il puntatore del mouse sull'icona della Guida di .
    3. Fai clic su Crea.

gcloud

Per creare un job di monitoraggio del deployment dei modelli mediante gcloud CLI, devi prima eseguire il deployment del modello in un endpoint.

La configurazione di un 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 \
  --target-field=TARGET_FIELD \
  --bigquery-uri=BIGQUERY_URI

dove:

  • PROJECT_ID è l'ID del tuo progetto Google Cloud. Ad esempio, my-project.

  • REGION è la località 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 a cui vuoi ricevere avvisi da Model Monitoring. Ad esempio, [email protected].

  • ENDPOINT_ID è l'ID dell'endpoint in cui viene eseguito il deployment del modello. Ad esempio, 1234567890987654321.

  • (Facoltativo) FEATURE_1=THRESHOLD_1 è la soglia di avviso per ogni funzionalità che vuoi monitorare. Ad esempio, se specifichi Age=0.4, il monitoraggio dei modelli registra un avviso quando la [distanza statistica][dist-distance] tra le distribuzioni di input e di riferimento per la funzionalità Age supera 0,4.

  • (Facoltativo) SAMPLING_RATE è la frazione delle richieste di previsione in entrata 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 che il job di monitoraggio venga eseguito sugli input registrati di recente. La granularità minima è di 1 ora. Il valore predefinito è 24 ore. Ad esempio, 2.

  • (obbligatorio solo per il rilevamento del disallineamento) TARGET_FIELD è il campo previsto dal modello. Questo campo è escluso dall'analisi di monitoraggio. Ad esempio, housing-price.

  • (obbligatorio solo per il rilevamento del disallineamento) BIGQUERY_URI è il link al set di dati di addestramento archiviato in BigQuery nel 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 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 gestito da AutoML tabulare][dataset-id], utilizza --dataset=DATASET_ID.

SDK Python

Per informazioni sul flusso di lavoro completo dell'API Model Monitoring end-to-end, consulta il blocco note di esempio.

API REST

  1. Se non lo hai già fatto, esegui il deployment del modello su un endpoint.

  2. Recupera l'ID modello di cui hai eseguito il deployment per il tuo modello recuperando le informazioni sull'endpoint. Prendi nota di DEPLOYED_MODEL_ID, che corrisponde al valore deployedModels.id nella risposta.

  3. Creare 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 delle deviazioni con le attribuzioni. Per il rilevamento del disallineamento, aggiungi l'oggetto explanationBaseline al campo explanationConfig nel corpo JSON della richiesta e fornisci uno dei seguenti valori:

    Per maggiori dettagli, consulta il riferimento sul job di monitoraggio.

    Prima di utilizzare i dati della richiesta, effettua le seguenti sostituzioni:

    • PROJECT_ID: è l'ID del tuo progetto Google Cloud. Ad esempio, my-project.
    • LOCATION: è la località del job di monitoraggio. Ad esempio, us-central1.
    • MONITORING_JOB_NAME: è il nome del 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 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à che vuoi monitorare. Ad esempio: "housing-latitude": {"value": 0.4}. Viene registrato un avviso quando la distanza statistica tra la distribuzione delle caratteristiche di input e la base di riferimento corrispondente supera la soglia specificata. Per impostazione predefinita, ogni caratteristica categorica e numerica viene monitorata, con valori di soglia pari a 0,3.
    • EMAIL_ADDRESS: è l'indirizzo email a cui vuoi ricevere avvisi da Model Monitoring. Ad esempio, [email protected].
    • NOTIFICATION_CHANNELS: un elenco di canali di notifica di Cloud Monitoring dove vuoi 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".

    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
                   }
                }
             },
            "explanationConfig": {
                "enableFeatureAttributes": true
            }
          }
      },
      "loggingSamplingStrategy": {
         "randomSampleConfig":  {
            "sampleRate":  0.5,
         },
      },
      "modelDeploymentMonitoringScheduleConfig": {
         "monitorInterval": {
            "seconds": 3600,
         },
      },
      "modelMonitoringAlertConfig": {
         "emailAlertConfig": {
            "userEmails": ["EMAIL_ADDRESS"],
         },
         "notificationChannels": [NOTIFICATION_CHANNELS]
      }
    }
    

    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"
        }
      ],
      ...
    }
    

Una volta 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 richiesta-risposta è abilitato, il monitoraggio dei modelli registra le richieste in entrata nella stessa tabella BigQuery utilizzata per il logging richiesta-risposta.

Per istruzioni su come eseguire le seguenti attività facoltative, consulta Utilizzo del monitoraggio dei modelli:

  • Aggiorna un job di monitoraggio dei modelli.

  • Configura avvisi per il job di monitoraggio dei modelli

  • Configura gli avvisi per le anomalie.

Analizzare i dati di disallineamento e deviazione dell'attribuzione delle caratteristiche

Puoi utilizzare la console Google Cloud per visualizzare le attribuzioni delle funzionalità di ogni funzionalità monitorata e scoprire quali modifiche hanno portato a un'inclinazione o a deviazioni. Per informazioni sull'analisi dei dati sulla distribuzione delle caratteristiche, consulta Analizzare i dati di disallineamento e deriva.

Scorecard che mostra un esempio di attribuzione della funzionalità dei dati di previsione e di attribuzione della funzionalità dei dati di addestramento per il rilevamento del disallineamento.

In un sistema di machine learning stabile, l'importanza relativa delle caratteristiche in genere rimane relativamente stabile nel tempo. Se una funzionalità importante perde l'importanza, potrebbe indicare che qualcosa è cambiato. Le cause più comuni della deviazione o del disallineamento dell'importanza delle caratteristiche sono le seguenti:

  • Modifiche all'origine dati.
  • Modifiche allo schema dei dati e al logging.
  • Cambiamenti nel mix o nel comportamento degli utenti finali (ad esempio, dovuti a variazioni stagionali o eventi anomali).
  • Modifiche upstream alle caratteristiche generate da un altro modello di machine learning. Ecco alcuni esempi:
    • Aggiornamenti del modello che causano un aumento o una diminuzione della copertura (complessivamente o per un singolo valore di classificazione).
    • Una modifica delle prestazioni del modello (che cambia il significato della funzionalità).
    • Aggiornamenti alla pipeline di dati, che possono causare una diminuzione della copertura complessiva.

Inoltre, quando analizzi i dati relativi al disallineamento e alla deriva dell'attribuzione delle caratteristiche, tieni presente quanto segue:

  • Monitora le funzionalità più importanti. Un cambiamento significativo nell'attribuzione a una caratteristica significa che il suo contributo alla previsione è cambiato. Poiché il punteggio di previsione equivale alla somma dei contributi alle funzionalità, una grande deviazione dell'attribuzione delle caratteristiche più importanti di solito indica una grande deviazione nelle previsioni del modello.

  • Monitora tutte le rappresentazioni delle funzionalità. Le attribuzioni delle caratteristiche sono sempre numeriche, indipendentemente dal tipo di elemento sottostante. Data la loro natura additiva, le attribuzioni a una caratteristica multidimensionale come gli incorporamenti possono essere ridotte a un singolo valore numerico sommando le attribuzioni nelle varie dimensioni. In questo modo puoi utilizzare metodi univariati standard per il rilevamento delle deviazioni per tutti i tipi di caratteristiche.

  • Tieni conto delle interazioni con le funzionalità. L'attribuzione a una caratteristica tiene conto del suo contributo alla previsione, sia individualmente sia in base alle sue interazioni con altre caratteristiche. Se le interazioni di una funzionalità con altre funzionalità cambiano, le distribuzioni delle attribuzioni a una modifica cambiano anche se la distribuzione marginale dell'elemento rimane la stessa.

  • Monitora i gruppi di caratteristiche. Poiché le attribuzioni sono cumulative, puoi sommare le attribuzioni a caratteristiche correlate per ottenere l'attribuzione di un gruppo di caratteristiche. Ad esempio, in un modello di prestito del credito, combina l'attribuzione a tutte le caratteristiche relative al tipo di prestito (ad esempio "grado", "sub_grade", "scopo") per ottenere una singola attribuzione di prestito. L'attribuzione a livello di gruppo può essere monitorata per monitorare le modifiche al gruppo di funzionalità.

Passaggi successivi