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 il contributo di ogni caratteristica del modello alle previsioni per ogni istanza specificata. Quando richiedi le 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 essere sommate 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 sulla precisione delle previsioni del modello.

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

Disallineamento e deviazione della previsione per l'addestramento dell'attribuzione delle caratteristiche

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

Per le attribuzioni delle caratteristiche:

  • Il disallineamento addestramento/produzione si verifica quando il punteggio di attribuzione di una funzionalità in produzione si discosta 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 attivare il rilevamento sia dell'inclinazione che delle deviazioni.

Prerequisiti

Per utilizzare il monitoraggio dei modelli con Vertex Explainable AI, completa quanto segue:

  1. Se stai abilitando il rilevamento del disallineamento, carica i dati di addestramento o l'output di un job di spiegazione batch per il tuo set di dati di addestramento su 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. In Vertex AI dispone di un modello AutoML tabulare o di tipo addestramento personalizzato tabulare importato:

  3. Configura il modello per utilizzare Vertex Explainable AI quando crei, importi o esegui 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. Il monitoraggio dei modelli 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 fino a quando il monitoraggio dei modelli non è in grado di analizzare automaticamente lo schema dalle prime 1000 richieste di previsione ricevute dal modello.

Attiva il rilevamento di inclinazioni o deviazioni

Per configurare il rilevamento del disallineamento o il rilevamento 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 Create Endpoint (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 che configuri viene applicata a tutti i modelli di cui è stato eseguito il deployment nell'endpoint.

  9. Inserisci un nome visualizzato del job di Monitoring.

  10. Inserisci una 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 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 di disallineamenti o deviazioni:

    Rilevamento inclinazione

    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 proveniente dai 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 sulla formattazione delle 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 sulla formattazione delle 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 di modelli utilizzando 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 dal monitoraggio dei modelli. Ad esempio, example@example.com.

  • 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][stat-distanza] tra le distribuzioni dell'input e della base 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, il monitoraggio dei modelli 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, 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 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 tabulare AutoML][dataset-id], utilizza --dataset=DATASET_ID.

SDK Python

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

API REST

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

  2. Recupera l'ID modello di cui hai eseguito il deployment per il modello recuperando le informazioni sull'endpoint. Nota DEPLOYED_MODEL_ID, che è il valore deployedModels.id nella risposta.

  3. 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 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 per i job di Monitoring.

    Prima di utilizzare qualsiasi dato 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à da 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 dal monitoraggio dei modelli. Ad esempio, example@example.com.
    • 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 elencando 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: