Monitoraggio di disallineamenti e deviazioni delle attribuzioni delle caratteristiche

Questa pagina descrive come utilizzare Vertex AI Model Monitoring con Vertex Explainable AI per rilevare il disallineamento e la deviazione per la caratteristica attribuzioni di caratteristiche di input categoriche e numeriche.

Panoramica del monitoraggio basato sull'attribuzione delle caratteristiche

Le attribuzioni delle caratteristiche indicano il contributo di ogni caratteristica nel modello le previsioni per ogni istanza. Quando richiedi previsioni, ottieni i valori previsti appropriati per il modello. Quando richiedi spiegazioni, ottieni le previsioni e le informazioni sull'attribuzione delle caratteristiche.

I punteggi di attribuzione sono proporzionali al contributo della caratteristica alla previsione di un modello. In genere sono firmati, il che indica se una funzionalità contribuisce ad aumentare o diminuire la previsione. Le attribuzioni in tutte le funzionalità devono aggiungere fino al punteggio di previsione del modello.

Monitorando le attribuzioni delle funzionalità, il monitoraggio dei modelli monitora le variazioni dei contributi di una funzionalità alle previsioni di un modello nel tempo. Una modifica del punteggio di attribuzione di un elemento chiave spesso indica che l'elemento ha modificata in modo da poter influire sull'accuratezza delle previsioni del modello.

Per informazioni su come viene calcolato il punteggio di attribuzione delle caratteristiche, consulta la sezione Caratteristica metodi di attribuzione.

Disallineamento addestramento/produzione e deviazione della previsione dell'attribuzione delle caratteristiche

Quando crei un job di monitoraggio per un modello con Vertex Explainable AI abilitato, Model Monitoring monitora il disallineamento o la deviazione per entrambi distribuzioni e attribuzioni delle caratteristiche. Per informazioni sulla funzione disallineamento e deviazione della distribuzione, consulta Introduzione Vertex AI Model Monitoring.

Per le attribuzioni delle funzionalità:

  • Il disallineamento addestramento/produzione si verifica quando il punteggio di attribuzione di una funzionalità in produzione si discosta da quello 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 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. Puoi anche attivare il rilevamento sia del disallineamento sia della deriva.

Prerequisiti

Per utilizzare Model Monitoring con Vertex Explainable AI, completa la seguenti:

  1. Se attivi il rilevamento dello scostamento, 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. Ottieni il link URI ai dati. Per il rilevamento della deviazione, i dati di addestramento o la spiegazione di base non sono richiesti.

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

  3. Configura il modello per utilizzare l'AI spiegabile di Vertex quando lo crei, lo importi o lo esegui. La Il campo ExplanationSpec.ExplanationParameters deve essere compilate per il modello.

  4. (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.

Attivare il rilevamento di disallineamenti o deviazioni

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:

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

    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 con addestramento personalizzato importato.

  6. Nel campo Versione, seleziona una versione per il modello.

  7. Fai clic su Continua.

  8. 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.

  9. Inserisci un nome visualizzato del job di monitoraggio.

  10. Inserisci una lunghezza della finestra di Monitoring.

  11. Per le email di notifica, inserisci uno o più indirizzi email separati da virgola 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 una delle risorse Cloud Monitoring canali di notifica o creane uno nuovo facendo clic su Gestisci canali di notifica. La console supporta PagerDuty, Slack e Pub/Sub canali di notifica.

  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 monitoraggio con le opzioni per il rilevamento di disallineamento o deviazione:

    Rilevamento del disallineamento

    1. Seleziona Rilevamento del disallineamento addestramento/distribuzione.
    2. In Origine dati di addestramento, fornisci un corso origine dati.
    3. In Colonna di destinazione, inserisci il nome della colonna dai dati di addestramento addestrato a prevedere. Questo campo è escluso dall'analisi di monitoraggio.
    4. (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 .
    5. Fai clic su Crea.

    Rilevamento della deviazione

    1. Seleziona Rilevamento della deviazione della previsione.
    2. (Facoltativo) In Soglie di avviso, specifica le soglie per attivare gli avvisi. Per informazioni su come formattare le soglie, mantieni premuto il cursore sopra l' icona Guida.
    3. 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 \
  --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 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][stat-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 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 che il job di monitoraggio venga eseguito su input registrati di recente. La granularità minima è 1 ora. Il valore predefinito è 24 ore. Ad esempio, 2.

  • (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 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 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 dall'inizio alla fine dell'API Model Monitoring, consulta il notebook di esempio.

API REST

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

  2. Recupera l'ID del modello di cui hai eseguito il deployment recuperando l'endpoint informazioni. Prendi nota di 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 attribuzioni. Per il rilevamento delle distorsioni, aggiungi l'oggetto explanationBaseline al campo explanationConfig nel corpo JSON della richiesta e fornisci uno dei seguenti valori:

    Per ulteriori dettagli, consulta il 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. Per 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 è 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 caratteristica 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 della rete, 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".

    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 richieste di previsione in entrata 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.

Consulta Utilizzare il monitoraggio del modello per istruzioni su come svolgere le seguenti attività facoltative:

  • Aggiornare un job di monitoraggio dei modelli.

  • Configura gli avvisi per il job di monitoraggio del modello

  • Configura gli avvisi per le anomalie.

Analizzare i dati su disallineamento e deviazione delle attribuzioni delle caratteristiche

Puoi utilizzare la console Google Cloud per visualizzare le attribuzioni delle caratteristiche ciascuna caratteristica monitorata e scoprire quali cambiamenti hanno portato a disallineamenti o deviazioni. Per informazioni sull'analisi dei dati sulla distribuzione delle caratteristiche, consulta Analisi di disallineamenti e come la deviazione dei dati.

Scorecard che mostra un esempio di attribuzione delle caratteristiche dei dati di previsione e di attribuzione delle caratteristiche dei dati di addestramento per il rilevamento del disallineamento.

In un sistema di machine learning stabile, importanza relativa in generale rimane relativamente stabile nel tempo. Se una funzionalità importante viene inclusa importante, potrebbero significare che sono state apportate modifiche a una determinata caratteristica. Le cause comuni della deviazione o del disallineamento dell'importanza delle caratteristiche includono le seguenti:

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

Inoltre, quando analizzi il disallineamento dell'attribuzione delle caratteristiche e dati di deviazione:

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

  • Monitorare tutte le rappresentazioni delle caratteristiche. Le attribuzioni delle funzionalità sono sempre numeriche, indipendentemente dal tipo di funzionalità sottostante. A causa della loro natura additiva, le attribuzioni a una funzionalità multi-dimensionale come gli incorporamenti possono essere ridotte a un singolo valore numerico sommando le attribuzioni nelle varie dimensioni. Ciò ti consente di utilizzare i metodi standard di rilevamento della deviazione univariata per per tutti i tipi di caratteristiche.

  • Tieni conto delle interazioni tra le funzionalità. L'attribuzione a una funzionalità tiene conto del contributo della funzionalità alla previsione, sia singolarmente sia per le sue interazioni con altre funzionalità. Se le interazioni di una funzionalità con altre funzionalità cambiano, le distribuzioni delle attribuzioni a una funzionalità cambiano, anche se la distribuzione marginale della funzionalità rimane invariata.

  • Monitorare i gruppi di caratteristiche. Poiché le attribuzioni sono cumulative, puoi attribuzioni a caratteristiche correlate per ottenere l'attribuzione di una caratteristica gruppo. Ad esempio, in un modello di prestito, combina attribuzione a tutte le funzionalità relative al tipo di prestito (ad es. "grado", "sub_grade", "scopo") per ottenere un unico prestito l'attribuzione dei contenuti. Questo tipo di attribuzione a livello di gruppo può essere monitorata per rilevare eventuali modifiche nel gruppo di funzionalità.

Passaggi successivi