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, per indicare se un elemento aiuta a eseguire il push della 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 tra addestramento e distribuzione dell'attribuzione delle caratteristiche e deviazione della previsione

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 caratteristica in la produzione si discosta dal punteggio di attribuzione dell'elemento nella dati di addestramento.

  • La deviazione della previsione si verifica quando il punteggio di attribuzione di una caratteristica in produzione cambiano significativamente nel corso del tempo.

Puoi abilitare il rilevamento del disallineamento se fornisci il set di dati di addestramento originale il modello; altrimenti dovresti abilitare 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 del disallineamento, carica i dati di addestramento o l'output di un job di spiegazione batch per il tuo di addestramento in Cloud Storage BigQuery. Ottenere 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 che sia un modello tabulare AutoML o dati tabulari importati tipo di addestramento personalizzato:

  3. Configura il tuo modello per utilizzare Vertex Explainable AI quando crei, importare o eseguire il deployment del modello. La Il campo ExplanationSpec.ExplanationParameters deve essere compilate per il modello.

  4. (Facoltativo) Per i modelli con addestramento personalizzato, carica l'istanza di analisi schema per il tuo modello in Cloud Storage. Model Monitoring richiede lo schema per iniziare del processo di monitoraggio e calcolare la distribuzione di base 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.

Attiva il rilevamento di disallineamenti o deviazioni

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:

  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 personalizzato di addestramento o un modello AutoML tabulare.

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

  7. Fai clic su Continua.

  8. Nel riquadro Monitoraggio del modello, assicurati che Abilita il monitoraggio del modello per l'attivazione di questo endpoint. 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 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: selezionare canali Cloud Monitoring per ricevere avvisi quando del 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 Monitoring, con delle opzioni per il rilevamento di disallineamenti o deviazioni:

    Rilevamento del disallineamento

    1. Seleziona Rilevamento del disallineamento addestramento/distribuzione.
    2. In Origine dati di addestramento, fornisci un'origine dati di addestramento.
    3. In Colonna di destinazione, inserisci il nome della colonna dai dati di addestramento addestrato a prevedere. Questo campo è escluso da l'analisi del monitoraggio.
    4. (Facoltativo) In Soglie di avviso, specifica le soglie a cui 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 a cui attivare gli avvisi. Per informazioni su come formattare le soglie, tieni il puntatore sopra Icona Guida di .
    3. Fai clic su Crea.

gcloud

Per creare un job di monitoraggio del deployment del modello utilizzando gcloud CLI, esegui il deployment del modello su 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 a cui vuoi ricevere di monitoraggio del modello. Ad esempio: example@example.com.

  • ENDPOINT_ID è l'ID dell'endpoint sotto il quale del modello di machine learning. Ad esempio, 1234567890987654321.

  • (Facoltativo) FEATURE_1=THRESHOLD_1 è la soglia di avviso per ciascuna caratteristica che vuoi monitorare. Ad esempio, se specifichi Age=0.4, Model Monitoring registra un avviso quando [statistical distanza][stat-distanza] tra le distribuzioni di input e di riferimento per La funzionalità Age supera 0,4.

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

  • (obbligatorio solo per il rilevamento del disallineamento) TARGET_FIELD è il campo che viene 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 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 modello di cui è stato eseguito il deployment ottenendo le informazioni sull'endpoint. Nota come DEPLOYED_MODEL_ID, ovvero 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 disallineamento rilevamento, aggiungi l'oggetto explanationBaseline campo explanationConfig nel corpo JSON della richiesta e fornire uno dei seguenti:

    Per ulteriori 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. 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 viene eseguito il deployment del modello. Per 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 rispettiva base di riferimento superano il valore 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 a cui vuoi ricevere di monitoraggio del modello. 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 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 delle seguenti 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 per richieste di risposte è abilitato, Model Monitoring registra le richieste in entrata nello stesso Tabella BigQuery utilizzata per il logging di richiesta-risposta.

Consulta Utilizzo del monitoraggio del modello per istruzioni su come eseguire le seguenti attività facoltative:

  • Aggiornare un job di monitoraggio dei modelli.

  • configura gli avvisi per il job di monitoraggio dei modelli

  • Configurare 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 causato uno scostamento o una deriva. Per informazioni sull'analisi dei dati sulla distribuzione delle caratteristiche, consulta Analisi di disallineamenti e di 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, l'importanza relativa delle funzionalità rimane in genere relativamente invariata 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 upstream nelle 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 variazione delle prestazioni del modello (che cambia il significato del ).
    • 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 caratteristiche sono sempre numerico, indipendentemente dal tipo di caratteristica 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 delle funzionalità. L'attribuzione a una funzionalità tiene conto del contributo della funzionalità alla previsione, sia singolarmente sia in base alle sue interazioni con altre funzionalità. Se le interazioni di un elemento caratteristiche, distribuzioni di attribuzioni a un cambiamento di caratteristica, anche se la distribuzione marginale della caratteristica rimane la stessa.

  • 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. Questa attribuzione a livello di gruppo può essere monitorata per le modifiche nel gruppo di caratteristiche.

Passaggi successivi