Richiesta di spiegazioni

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

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

  • Spiegazione batch: richieste asincrone all'API Vertex AI che restituiscono le previsioni con le attribuzioni delle funzionalità. Le spiegazioni batch sono un componente facoltativo delle richieste di previsione batch.

Prima di iniziare

Prima di ricevere le spiegazioni, devi:

  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 creato nel passaggio precedente a un Endpoint delle risorse.

Ricevere spiegazioni online

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

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

Ricevere spiegazioni sui batch

Sono supportate solo le spiegazioni collettive basate su caratteristiche. Non puoi ottenere spiegazioni collettive basate su esempi.

Per ottenere spiegazioni batch, imposta la classe generateExplanation campo a true quando crei un job di previsione batch.

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

Ottenere spiegazioni localmente nei notebook gestiti dall'utente di Vertex AI Workbench

In Vertex AI Workbench blocchi note gestiti dall'utente, puoi generare spiegazioni per il tuo modello con addestramento personalizzato eseguendo Vertex Explainable AI all'interno del kernel o runtime locale del tuo blocco note senza eseguendo il deployment del modello Vertex AI per ottenere spiegazioni. Le spiegazioni locali ti consentono di provare diverse impostazioni di Vertex Explainable AI senza modificare il deployment del modello Vertex AI per ogni modifica. In questo modo, diventa più facile e più rapidamente per valutare l'impatto usando basi di riferimento diverse, provando impostazioni di visualizzazione diverse per i tuoi spiegazioni o la modifica del numero di passi o percorsi utilizzata per l'algoritmo.

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

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

  • Crea un'istanza di notebook gestiti dall'utente
  • Avvia l'ambiente JupyterLab dall'istanza dei blocchi note gestiti dall'utente, quindi crei o importi un blocco note.
  • Salva l'artefatto del modello nell'ambiente locale del blocco note oppure nel bucket Cloud Storage.
  • Genera e salva i metadati per descrivere il modello e configura la richiesta di spiegazione.

Ottieni spiegazioni simultanee

Explainable AI supporta le spiegazioni simultanee. Le spiegazioni contemporaneamente consentono di richiedere spiegazioni sia basate su funzionalità che 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 ottenere spiegazioni simultanee, carica il modello e configura le spiegazioni basate su esempi o sulla funzionalità. Poi, 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 le spiegazioni simultanee:

  • Le spiegazioni simultanee sono disponibili utilizzando solo la versione dell'API v1beta1. Se utilizzi l'SDK Vertex Python, devi utilizzare il modello preview per usare le spiegazioni simultanee.
  • Le spiegazioni basate su esempi non possono essere richieste dopo il deployment con spiegazioni basate su funzionalità. Se vuoi sia le spiegazioni basate su esempi sia quelle basate sulle caratteristiche, esegui il deployment del modello utilizzando le spiegazioni basate su esempi e richiedi quelle basate sulle caratteristiche utilizzando il campo delle spiegazioni concorrenti.
  • Le spiegazioni batch non sono supportate per 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 notebook gestite dall'utente. All'interno del blocco note, puoi utilizzare l'SDK Explainable AI per salvare l'artefatto del modello e identificare automaticamente i metadati input e output per la richiesta di spiegazione. Puoi anche specificare altri parametri per configurare la richiesta di spiegazione e visualizzare i risultati della spiegazione.

Puoi salvare modelli e metadati nell'ambiente locale del tuo blocco note oppure in un bucket Cloud Storage. Se utilizzi TensorFlow, puoi utilizzare save_model_with_metadata() per dedurre gli input e gli output del modello, e salva questi metadati di spiegazione con il tuo modello.

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

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

Puoi utilizzare il seguente codice di esempio per ottenere spiegazioni locali per un modello TensorFlow 2 all'interno di un'istanza di notebook gestita 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, tra cui configurazioni e parametri diversi, consulta l'interfaccia config.py su GitHub. Scopri di più su Vertex AI Workbench e gestire i blocchi note gestiti dall'utente.

Risoluzione dei problemi

In questa sezione vengono descritti i passaggi per la risoluzione dei problemi che potrebbero essere utili se si verificano problemi durante il recupero delle spiegazioni.

Errore: elenco indice fuori intervallo

Se ricevi 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 un array di oggetti. Ad esempio, se field1 accetta un array di oggetti, il parametro il seguente corpo della richiesta potrebbe causare un errore:

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

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

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

Passaggi successivi