Richiesta di spiegazioni

Questa guida descrive come ottenere spiegazioni da una risorsa Model su Vertex AI. Puoi ottenere 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 del Model creato nel passaggio precedente in una risorsa Endpoint.

Ricevere spiegazioni online

Per ottenere spiegazioni online, segui la maggior parte della procedura utilizzata per ottenere 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 preparare e inviare richieste di spiegazione online:

Richiesta di spiegazioni per i batch

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

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

Per istruzioni dettagliate su come preparare e creare job di previsione batch, consulta Ottenere previsioni batch.

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

Nei notebook gestiti dall'utente di Vertex AI Workbench, puoi generare spiegazioni per il tuo modello addestrato in base alle tue esigenze eseguendo Vertex Explainable AI all'interno del kernel o del runtime locale del notebook senza eseguire il deployment del modello in Vertex AI per ottenere le spiegazioni. L'utilizzo delle spiegazioni locali ti consente di provare diverse impostazioni di Vertex Explainable AI senza modificare il deployment del modello Vertex AI per ogni modifica. In questo modo, è più facile e veloce valutare l'impatto dell'utilizzo di linee di base diverse, provare diverse impostazioni di visualizzazione per le spiegazioni o regolare il numero di passaggi o percorsi utilizzati 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 un'istanza di notebook gestita dall'utente:

  • Crea un'istanza di notebook 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 blocco note o in un 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 solo utilizzando 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 funzionalità, esegui il deployment del modello utilizzando le spiegazioni basate su esempi e richiedi quelle basate sulle funzionalità utilizzando il campo delle spiegazioni concorrenti.
  • Le spiegazioni batch non sono supportate per le spiegazioni simultanee. Le spiegazioni online sono l'unico modo per utilizzare questa funzionalità.

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

L'SDK Explainable AI è preinstallato nelle istanze di notebook gestite dall'utente. Nel tuo notebook, puoi utilizzare l'SDK Explainable AI per salvare l'elemento 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 visualizzare i risultati della spiegazione.

Puoi salvare i modelli e i metadati nell'ambiente locale del tuo notebook o in un bucket Cloud Storage. Se utilizzi TensorFlow, puoi utilizzare il metodo save_model_with_metadata() per dedurre gli input e gli output del modello e salvare questi metadati di spiegazione con il 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 di IA spiegabile, tra cui diverse configurazioni e parametri, consulta il file config.py dell'SDK su GitHub. Scopri di più sui notebook gestiti dall'utente di Vertex AI Workbench.

Risoluzione dei problemi

Questa sezione descrive i passaggi per la risoluzione dei problemi che potresti trovare utili se riscontri problemi durante la ricezione delle spiegazioni.

Errore: indice di elenco 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 a 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