Monitoraggio di disallineamenti e deviazioni delle attribuzioni delle caratteristiche

Mantieni tutto organizzato con le raccolte Salva e classifica i contenuti in base alle tue preferenze.

In questa pagina viene descritto come utilizzare Vertex AI Model Monitoring con Vertex Explainable AI per rilevare il disallineamento e lo scostamento delle attribuzioni delle funzionalità di funzionalità di input numeriche e categoriche.

Panoramica del monitoraggio basato sull'attribuzione delle funzionalità

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

I punteggi di attribuzione sono proporzionali al contributo della funzionalità alla previsione di un modello. In genere vengono firmati, il che indica se una funzionalità contribuisce a spingere la previsione verso l'alto o verso il basso. Le attribuzioni per tutte le caratteristiche devono corrispondere al punteggio di previsione del modello.

Monitorando le attribuzioni delle funzionalità, il monitoraggio dei modelli monitora le modifiche ai contributi di un elemento alle previsioni di un modello nel tempo. Una modifica nel punteggio di attribuzione di una funzionalità chiave spesso indica che la funzionalità è stata modificata in un modo che può influire sulla precisione delle previsioni del modello.

Puoi attivare il rilevamento del disallineamento se fornisci il set di dati di addestramento originale per il modello; in caso contrario, dovresti attivare il rilevamento della deviazione. Per ulteriori informazioni, consulta la pagina Introduzione a Vertex AI Model Monitoring.

Prerequisiti

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

  1. Se stai attivando 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 URI ai dati. Per il rilevamento delle deviazioni, non sono richiesti dati di addestramento o spiegazioni.

  2. Avere un modello disponibile in Vertex AI che sia di tipo tabulabile AutoML 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.

Attiva rilevamento di deviazione o deviazione

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. In Google Cloud Console, vai alla pagina Vertex AI Endpoints.

    Vai a Endpoint

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

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

  7. Fai clic su Continua.

  8. Nel riquadro Monitoraggio modelli, assicurati che l'opzione Abilita il monitoraggio dei modelli 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. Fai clic su Continua. Viene visualizzato il riquadro Obiettivo Monitoring, con opzioni per il rilevamento di disallineamento o deviazione:

    Rilevamento disallineamenti

    1. Seleziona Rilevamento del disallineamento addestramento/produzione.
    2. In Origine dati addestramento, fornisci un'origine dati addestramento.
    3. In Colonna target, inserisci il nome della colonna dei 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 in base alle quali attivare gli avvisi. Per informazioni su come formattare le soglie, tieni il puntatore del mouse sopra l'icona della Guida .
    5. Fai clic su Crea.

    Rilevamento delle deviazioni

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

gcloud

Per creare un job di monitoraggio del deployment del modello utilizzando l'interfaccia a riga di comando gcloud, esegui 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à in cui si trova il 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 gli 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, Monitoraggio modelli registra un avviso quando la [distanza statale][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, il monitoraggio dei modelli registra tutte le richieste di previsione.

  • Facoltativo: MONITORING_FREQUENCY è la frequenza con cui vuoi eseguire il job di monitoraggio sugli input registrati di recente. La granularità minima è di 1 ora. L'impostazione predefinita è 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 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 in un endpoint.

  2. Recupera l'ID modello di cui è stato eseguito il deployment per il tuo modello recuperando le informazioni dell'endpoint. Prendi nota di DEPLOYED_MODEL_ID, che è il 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 di disallineamento, aggiungi l'oggetto explanationBaseline nel campo explanationConfig nel corpo del file JSON della richiesta e fornisci uno dei seguenti elementi:

    Per maggiori dettagli, consulta la documentazione di riferimento per il 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: si tratta del 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 per l'endpoint in cui viene eseguito il deployment del modello. Ad esempio, 1234567890.
    • DEPLOYED_MODEL_ID: è l'ID per il 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 funzionalità di input e la rispettiva base di riferimento supera la soglia specificata. Per impostazione predefinita, vengono monitorate tutte le funzionalità categoriche e numeriche, con valori di soglia pari a 0,3.
    • EMAIL_ADDRESS: è l'indirizzo email a cui vuoi ricevere avvisi in Monitoring. Ad esempio: example@example.com.

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

    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 le richieste di previsione in arrivo in una tabella BigQuery generata denominata PROJECT_ID.model_deployment_monitoring_ENDPOINT_ID.serving_predict. Se il log di richiesta-risposta è abilitato, il monitoraggio dei modelli registra le richieste in entrata nella stessa tabella BigQuery utilizzata per il logging delle richieste-risposta.

Consulta l'articolo sull'utilizzo del monitoraggio dei modelli per istruzioni su come eseguire le seguenti attività facoltative:

  • Aggiorna un job di monitoraggio dei modelli.

  • Configura avvisi per il job di monitoraggio dei modelli

  • Configurare avvisi per le anomalie.

Analizzare i dati di disallineamento e deviazione

Puoi utilizzare Google Cloud Console per visualizzare le attribuzioni delle funzionalità di ogni funzionalità monitorata e scoprire quali modifiche hanno portato a una disallineamento o una deviazione. Puoi visualizzare le distribuzioni dei valori delle funzionalità come serie temporali o istogrammi.

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

In un sistema di machine learning stabile, le caratteristiche relative a un'importanza relativa generalmente rimangono relativamente stabili nel tempo. Se un'importante funzionalità diminuisce di importanza, è possibile che qualcosa sia cambiato. Le cause più comuni di deviazioni o distorsioni di importanza sono le seguenti:

  • Modifiche all'origine dati.
  • Modifiche allo schema dei dati e alla registrazione.
  • Modifiche al mix o al comportamento degli utenti finali, ad esempio a causa di variazioni stagionali o di eventi anomali.
  • 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 (nel complesso o per un singolo valore di classificazione).
    • Una modifica nelle prestazioni del modello (che modifica il significato della funzionalità).
    • Aggiornamenti alla pipeline di dati, che possono causare una diminuzione della copertura complessiva.

Inoltre, tieni presente quanto segue durante l'analisi del disallineamento dell'attribuzione delle caratteristiche e della deviazione dei dati:

  • Monitora le funzionalità più importanti. Una modifica significativa dell'attribuzione a una funzionalità significa che il suo contributo alla previsione è cambiato. Poiché il punteggio di previsione è uguale alla somma dei contributi delle caratteristiche, la più grande deviazione di attribuzione delle caratteristiche più importanti solitamente indica una grande deviazione nelle previsioni del modello.

  • Monitora tutte le rappresentazioni delle funzionalità. Le attribuzioni delle caratteristiche sono sempre numeriche, a prescindere dal tipo di caratteristica sottostante. Grazie alla loro natura additiva, le attribuzioni a una funzionalità multidimensionale, come gli incorporamenti, possono essere ridotte a un singolo valore numerico sommando le attribuzioni tra più dimensioni. In questo modo puoi utilizzare i metodi standard di rilevamento delle deviazioni univariate per tutti i tipi di caratteristiche.

  • Considera le interazioni con le funzionalità. L'attribuzione a una funzionalità tiene conto del contributo della funzionalità alla previsione, sia individualmente sia tramite 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à resta invariata.

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

Passaggi successivi