Richiesta di spiegazioni

Questa guida descrive come ottenere spiegazioni da una risorsa Model su Vertex AI. Puoi visualizzare le spiegazioni in due modi:

  • Spiegazioni online: richieste sincrone all'API Vertex AI, simili alle previsioni online che restituiscono previsioni con attribuzioni delle funzionalità.

  • Spiegazioni batch: richieste asincrone all'API Vertex AI che restituiscono previsioni con attribuzioni delle caratteristiche. Le spiegazioni batch sono una parte facoltativa delle richieste di previsione batch.

Prima di iniziare

Prima di ricevere spiegazioni, segui questi passaggi:

  1. Questo passaggio varia in base al tipo di modello di machine learning utilizzato:

  2. Se vuoi ricevere spiegazioni online, esegui il deployment di Model che hai creato nel passaggio precedente a una risorsa Endpoint.

Ricevi spiegazioni online

Per ricevere spiegazioni online, svolgi la maggior parte degli stessi passaggi che utilizzeresti per ottenere previsioni online. Tuttavia, anziché inviare una richiesta projects.locations.endpoints.predict all'API Vertex AI, invia una richiesta projects.locations.endpoints.explain.

Le seguenti guide forniscono istruzioni dettagliate per la preparazione e l'invio di richieste di spiegazione online:

Recupero spiegazioni batch

Sono supportate solo le spiegazioni batch basate sulle funzionalità; non puoi ottenere spiegazioni batch basate su esempi.

Per ricevere spiegazioni batch, imposta il campo generateExplanation su true quando crei un job di previsione batch.

Per istruzioni dettagliate sulla preparazione e sulla creazione di job di previsione batch, consulta Ottenere previsioni batch.

Ricevi spiegazioni localmente nei blocchi note gestiti dall'utente di Vertex AI Workbench

In blocchi note gestiti dall'utente di Vertex AI Workbench, puoi generare spiegazioni per il tuo modello addestrato personalizzato eseguendo Vertex Explainable AI nel kernel o nel runtime locale del blocco note senza eseguire il deployment del modello in Vertex AI per ricevere spiegazioni. L'utilizzo di spiegazioni locali consente di provare diverse impostazioni di Vertex Explainable AI senza regolare il deployment del modello Vertex AI per ogni modifica. Ciò semplifica e velocizza la valutazione dell'impatto dell'utilizzo di basi di riferimento diverse, di diverse impostazioni di visualizzazione per le spiegazioni o di modifica del numero di passi o percorsi utilizzati per l'algoritmo.

Le spiegazioni locali sono disponibili solo all'interno dei blocchi note gestiti dall'utente, pertanto questa funzionalità non funziona nei blocchi note Jupyter eseguiti al di fuori di un'istanza di blocchi note gestiti dall'utente.

Per generare spiegazioni localmente in un'istanza di blocchi note gestiti dall'utente:

  • Crea un'istanza di blocchi note gestiti dall'utente
  • Avvia l'ambiente JupyterLab dall'istanza di blocchi note gestiti dall'utente, quindi crea o importa un blocco note.
  • Salva l'artefatto del modello nell'ambiente locale del tuo blocco note o in un bucket Cloud Storage.
  • Genera e salva i metadati per descrivere il modello e configurare la richiesta di spiegazione.

Recupero spiegazioni simultanee

Explainable AI supporta spiegazioni simultanee. Le spiegazioni concomitanti consentono di richiedere spiegazioni basate sulle funzionalità e basate su esempi dallo stesso endpoint del modello di cui è stato eseguito il deployment, senza dover eseguire il deployment del modello separatamente per ogni metodo di spiegazione.

Per ricevere spiegazioni simultanee, carica il modello e configura le spiegazioni basate su esempi o basate sulle funzionalità. Quindi, esegui il deployment del modello come di consueto.

Dopo aver eseguito il deployment del modello, puoi richiedere le spiegazioni configurate come di consueto. Inoltre, puoi richiedere spiegazioni simultanee specificando concurrent_explanation_spec_override.

Tieni presente quanto segue quando utilizzi spiegazioni simultanee:

  • Le spiegazioni simultanee sono disponibili utilizzando solo la versione dell'API v1beta1. Se usi l'SDK Vertex python, devi usare il modello preview per usare spiegazioni simultanee.
  • Non è possibile richiedere spiegazioni basate su esempi dopo il deployment con spiegazioni basate sulle funzionalità. Se vuoi utilizzare sia una spiegazione basata su esempi sia spiegazioni basate sulle funzionalità, esegui il deployment del modello utilizzando le spiegazioni basate su esempi e richiedi una spiegazione basata sulle funzionalità utilizzando il campo della spiegazione contemporanea.
  • Le spiegazioni batch non sono supportate per le spiegazioni simultanee. Le spiegazioni online sono l'unico modo per utilizzare questa funzionalità.

Utilizza l'SDK Explainable AI nei blocchi note gestiti dall'utente

L'SDK Explainable AI è preinstallato nelle istanze di blocchi note gestiti dall'utente. All'interno del blocco note, puoi utilizzare l'SDK Explainable AI per salvare l'artefatto del modello e identificare automaticamente i metadati relativi agli input e agli output del modello per la richiesta di spiegazione. Puoi anche specificare altri parametri per configurare la richiesta di spiegazione e quindi visualizzare i risultati della spiegazione.

Puoi salvare modelli e metadati nell'ambiente locale del tuo blocco note o in un bucket Cloud Storage. Se usi TensorFlow, puoi usare il metodo save_model_with_metadata() per dedurre gli input e gli output del modello e salvare i metadati di questa spiegazione con il modello.

Quindi, carica il modello nell'SDK Explainable AI utilizzando load_model_from_local_path(). Se necessario, puoi modificare la configurazione per lo specifico algoritmo Vertex Explainable AI. Ad esempio, puoi modificare il numero di percorsi da utilizzare per Shapley campionato o il numero di passaggi da utilizzare per gradienti integrati o XRAI.

Infine, chiama explain() con le istanze di dati e visualizza le attribuzioni delle funzionalità.

Puoi usare il codice di esempio seguente per ricevere spiegazioni locali per un modello TensorFlow 2 in un'istanza di blocchi note gestiti dall'utente:

# This sample code only works within a user-managed notebooks instance.
import explainable_ai_sdk
from explainable_ai_sdk.metadata.tf.v2 import SavedModelMetadataBuilder

metadata_and_model_builder = SavedModelMetadataBuilder('LOCAL_PATH_TO_MODEL')
metadata_and_model_builder.save_model_with_metadata('LOCAL_PATH_TO_SAVED_MODEL_ARTIFACT')

# Load the model and adjust the configuration for Explainable AI parameters
num_paths = 20
model_artifact_with_metadata = explainable_ai_sdk.load_model_from_local_path(
    'LOCAL_PATH_TO_SAVED_MODEL_ARTIFACT',
    explainable_ai_sdk.SampledShapleyConfig(num_paths))

# Explainable AI supports generating explanations for multiple predictions
instances = [{feature_a: 10, feature_2: 100,...}, ... ]
explanations = model_artifact_with_metadata.explain(instances)
explanations[0].visualize_attributions()

Per ulteriori informazioni sull'SDK Explainable AI, inclusi i diversi parametri e configurazioni, consulta il file config.py dell'SDK su GitHub. Scopri di più sui blocchi note gestiti dall'utente di Vertex AI Workbench.

Risoluzione dei problemi

Questa sezione descrive i passaggi per la risoluzione dei problemi che potrebbero essere utili in caso di problemi durante la ricezione delle spiegazioni.

Errore: elenco indice non compreso nell'intervallo

Se viene visualizzato il seguente messaggio di errore quando richiedi spiegazioni:

"error": "Explainability failed with exception: listindex out of range"

Assicurati di non passare un array vuoto in un campo che prevede un array di oggetti. Ad esempio, se field1 accetta un array di oggetti, il seguente corpo della richiesta potrebbe generare un errore:

{
  "instances": [
    {
      "field1": [],
    }
  ]
}

Assicurati invece che l'array non sia vuoto, ad esempio:

{
  "instances": [
    {
      "field1": [
        {}
      ],
    }
  ]
}

Passaggi successivi