Preparazione dei metadati per le AI Explanations

Quando esegui il deployment del modello, devi inviare un file di metadati delle spiegazioni per configurare la richiesta di spiegazioni. Questo file di metadati deve includere gli input e gli output del tuo modello per selezionare le funzionalità per la richiesta di spiegazioni. Se vuoi, puoi anche includere le linee di base di input e configurare le impostazioni di visualizzazione per i dati delle immagini.

Questa guida spiega come utilizzare l'SDK Explainable AI per creare il file dei metadati dell'evidenziazione durante la creazione di un nuovo modello con TensorFlow 2.x o TensorFlow 1.15 oppure utilizzando un modello TensorFlow 2.x esistente. Per richiedere spiegazioni per un modello TensorFlow 1.x esistente, devi creare manualmente il file dei metadati delle spiegazioni.

Panoramica dei metadati delle spiegazioni

Il file di metadati della spiegazione è necessario per il deployment del modello in AI Explanations. La specifica degli input e degli output del modello ti consente di selezionare determinate funzionalità per la richiesta di spiegazioni. Crea un file denominato explanation_metadata.json e caricalo nel tuo bucket Cloud Storage nella stessa directory del tuo SavedModel. L'SDK Explainable AI gestisce questo processo per te, mentre crei e salvi il modello.

Puoi anche aggiungere impostazioni facoltative al file dei metadati della spiegazione:

Scopri di più sul file di metadati della spiegazione nel riferimento all'API.

Installazione dell'SDK Explainable AI

L'SDK Explainable AI è un SDK Python che supporta i modelli creati utilizzando:

  • TensorFlow 1.15 e TensorFlow 2.x
  • Python 3.7 o versioni successive.

Installa l'SDK Explainable AI:

pip3 install explainable_ai_sdk

Trovare input e output con l'SDK Explainable AI

L'SDK Explainable AI ti aiuta a trovare gli input e gli output quando crei o addestri un modello TensorFlow. In tutti questi casi, devi creare il file di metadati della spiegazione subito dopo aver creato il modello. Per i modelli Keras ed Estimator, l'SDK Explainable AI deducono gli input e gli output dal grafo del modello.

Prima di salvare il file dei metadati, puoi aggiornare i valori di input e output generati dall'SDK Explainable AI e aggiungere campi aggiuntivi, come le linee di base di input e le preferenze di visualizzazione.

Esempi di SDK Explainable AI per TensorFlow 2.x

SavedModelMetadataBuilder funziona per qualsiasi SavedModel creato utilizzando TensorFlow 2.x. In questo esempio, l'SDK Explainable AI crea e carica il file dei metadati dell'evidenziazione nella stessa directory del bucket Cloud Storage del modello:

from explainable_ai_sdk.metadata.tf.v2 import SavedModelMetadataBuilder
builder = SavedModelMetadataBuilder(
    model_path)
builder.save_model_with_metadata('gs://my_bucket/model')  # Save the model and the metadata.

Se vuoi, puoi utilizzare la funzione get_metadata() per controllare i metadati generati prima di salvarli e caricarli.

Se utilizzi una funzione TensorFlow per salvare e caricare il modello, puoi usare save_metadata() per creare ed esportare solo i metadati dell'evidenziazione:

from explainable_ai_sdk.metadata.tf.v2 import SavedModelMetadataBuilder
# We want to explain 'xai_model' signature.
builder = SavedModelMetadataBuilder(export_path, signature_name='xai_model')
random_baseline = np.random.rand(192, 192, 3)
builder.set_image_metadata(
    'numpy_inputs',
    input_baselines=[random_baseline.tolist()])
builder.save_metadata(export_path)

Questo esempio mostra anche come impostare una linea di base di input per i dati delle immagini, utilizzando il rumore casuale come linea di base. Utilizza una linea di base di input più appropriata per il tuo set di dati. Come punto di partenza, consulta le linee di base di esempio di AI Explanations. Per aggiornare i metadati e aggiungere altri campi, utilizza la funzione di impostazione corrispondente al tuo tipo di dati: set_numeric_metadata(), set_categorical_metadata() o set_image_metadata().

Esempi di SDK Explainable AI per TensorFlow 1.15

L'SDK Explainable AI supporta i modelli TensorFlow 1.15 creati con tf.keras, tf.estimator o tf.Graph.

Keras

L'SDK Explainable AI supporta i modelli Keras creati con le API Sequential e Functional, nonché i modelli personalizzati creati sottoclassificando la classe Model. Scopri di più sui diversi tipi di modelli Keras.

import tensorflow.compat.v1.keras as keras
from explainable_ai_sdk.metadata.tf.v1 import KerasGraphMetadataBuilder

# Build a model.
model = keras.models.Sequential()
model.add(keras.layers.Dense(32, activation='relu', input_dim=10))
model.add(keras.layers.Dense(1, activation='sigmoid'))
model.compile(loss='binary_crossentropy', metrics=['accuracy'])
model.fit(
    np.random.random((1, 10)),
    np.random.randint(2, size=(1, 1)),
    epochs=10,
    batch_size=32)

# Set the path to your model.
model_path = MODEL_PATH

# Build the metadata.
builder = KerasGraphMetadataBuilder(model)
builder.save_model_with_metadata(model_path)

Dopo aver creato il modello, utilizza lo strumento per la creazione di metadati per ottenere gli input e gli output.

Estimator

L'SDK Explainable AI supporta i modelli di stimatori. Per lo strumento per la creazione di metadati, specifica le colonne delle funzionalità di input, la funzione di input per la pubblicazione e una chiave di output.

import tensorflow.compat.v1 as tf
from explainable_ai_sdk.metadata.tf.v1 import EstimatorMetadataBuilder


# Build a model.
language = tf.feature_column.categorical_column_with_vocabulary_list(
    key='language',
    vocabulary_list=('english', 'korean'),
    num_oov_buckets=1)
language_indicator = tf.feature_column.indicator_column(language)
class_identity = tf.feature_column.categorical_column_with_identity(
    key='class_identity', num_buckets=4)
class_id_indicator = tf.feature_column.indicator_column(class_identity)
age = tf.feature_column.numeric_column(key='age', default_value=0.0)
classifier_dnn = tf.estimator.DNNClassifier(
    hidden_units=[4],
    feature_columns=[age, language_indicator, language_embedding, class_id_indicator])
classifier_dnn.train(input_fn=_train_input_fn, steps=5)

# Build the metadata.
md_builder = EstimatorMetadataBuilder(
    classifier_dnn, [age, language, class_identity],  _get_json_serving_input_fn, 'logits')
model_path = MODEL_PATH

Grafico

L'SDK Explainable AI supporta anche i modelli TensorFlow creati senza le API Keras o Estimator.

import tensorflow.compat.v1 as tf
from explainable_ai_sdk.metadata.tf.v1 import GraphMetadataBuilder

# Build a model.
sess = tf.Session(graph=tf.Graph())
with sess.graph.as_default():
  x = tf.placeholder(shape=[None, 10], dtype=tf.float32, name='inp')
  weights = tf.constant(1., shape=(10, 2), name='weights')
  bias_weight = tf.constant(1., shape=(2,), name='bias')
  linear_layer = tf.add(tf.matmul(x, weights), bias_weight)
  prediction = tf.nn.relu(linear_layer)

# Build the metadata.
builder = GraphMetadataBuilder(
    session=sess, tags=['serve'])
builder.add_numeric_metadata(x)
builder.add_output_metadata(prediction)
model_path = os.path.join('gs://', 'BUCKET_NAME', 'PATH_TO_MODEL')
builder.save_model_with_metadata(model_path)

Dopo aver creato il grafo del modello, crea i metadati della spiegazione con uno o più input del modello e un output. L'SDK Explainable AI fornisce una funzione per aiutarti ad aggiungere metadati per ogni tipo di input: numerico, categorico, immagine e testo.

Il file explanation_metadata.json risultante è simile al seguente:

{
  "outputs": {
    "Relu": {
      "output_tensor_name": "Relu:0"
    }
  },
  "inputs": {
    "inp": {
      "input_tensor_name": "inp:0",
      "encoding": "identity",
      "modality": "numeric"
    }
  },
  "framework": "Tensorflow",
  "tags": [
    "explainable_ai_sdk"
  ]
}

Impostazioni facoltative dei metadati della spiegazione

Per impostazione predefinita, l'SDK Explainable AI genera un file di metadati delle spiegazioni contenente solo le informazioni richieste sugli input e sugli output del modello. Prima di salvare il file di metadati della spiegazione, puoi includere configurazioni facoltative per le linee di base di input e le impostazioni di visualizzazione delle immagini. In alternativa, puoi modificare il file dei metadati della spiegazione dopo averlo creato.

Impostazione delle basi di input

Le basi di input rappresentano una caratteristica che non fornisce informazioni aggiuntive. Le basi per i modelli tabulari possono essere valori mediani, minimi, massimi o casuali in relazione ai dati di addestramento. Analogamente, per i modelli di immagini, le basi possono essere un'immagine nera, un'immagine bianca, un'immagine grigia o un'immagine con valori di pixel casuali.

Ti consigliamo di iniziare con una linea di riferimento. Se necessario, puoi modificare la linea di base o utilizzare più linee di base. Consulta esempi di come regolare la base di riferimento.

Configurazione delle impostazioni di visualizzazione per i dati delle immagini

Se stai lavorando con dati delle immagini, puoi configurare la modalità di visualizzazione dei risultati dell'espiazione aggiungendo una configurazione di visualizzazione al file dei metadati dell'espiazione. Se non lo aggiungi, le AI Explanations utilizzano le impostazioni predefinite.

Consulta gli esempi di opzioni di visualizzazione o scopri di più sulle impostazioni nel riferimento all'API.

Passaggi successivi