Preparazione dei metadati per AI Explanations

Quando esegui il deployment del modello, devi inviare un file dei metadati esplicativi a configurare la richiesta di spiegazioni. Questo file di metadati deve includere il tuo input e output del modello, in modo da selezionare le caratteristiche per le spiegazioni richiesta. Facoltativamente, puoi anche includere basi di input e configurare impostazioni di visualizzazione per i dati immagine.

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

Panoramica dei metadati della spiegazione

Il file di metadati della spiegazione è obbligatorio per il deployment del modello in Explanations for AI. Specificare gli input e gli output del modello consente di selezionare funzionalità particolari per la tua richiesta di spiegazione. Crei un file denominato explanation_metadata.json e caricalo nel bucket Cloud Storage della stessa directory del SavedModel. L'SDK Explainable AI gestisce questo processo mentre crei e salvi il modello.

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

Scopri di più sul file dei metadati di spiegazione nel Riferimento API.

Installazione dell'SDK Explainable AI

L'SDK Explainable AI è un SDK Python che supporta 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 aiuta a trovare gli input e gli output quando crei o crei per addestrare un modello TensorFlow. In ognuno di questi casi, crei la tua spiegazione subito dopo aver creato il modello. Per i modelli Keras e Estimator, l'SDK Explainable AI deduce input e output dal grafico del modello.

Prima di salvare il file dei metadati, puoi aggiornare tutti i valori di input e output generati dall'SDK Explainable AI e aggiungendo altri campi, come le basi di riferimento 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 utilizzare save_metadata() per creare ed esportare solo i metadati della spiegazione:

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 base di input per i dati di immagine, utilizzando il rumore casuale come base. Utilizza una base di input più appropriata con il tuo set di dati. Come punto di partenza, consulta le basi di esempio di AI Explanations. Per aggiornare i metadati e aggiungere altri campi, utilizza la funzione setter il 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 oppure 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ù su 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, usa il generatore di metadati per ottenere gli input e come output.

Strumento di stima

L'SDK Explainable AI supporta i modelli di stima. Per lo strumento per la creazione dei 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 Keras o le API 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 grafico del modello, crei i metadati della spiegazione con uno o più input del modello e un output. L'SDK Explainable AI fornisce una funzione per ti aiutano ad aggiungere metadati per ogni tipo di input: numerico, categorico, immagine e testo.

Il file explanation_metadata.json risultante ha un aspetto 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 produce un file di metadati spiegazione contenente solo le informazioni richieste sugli input e 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 di metadati di spiegazione dopo la sua creazione.

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 mediana, minima, massima o casuale rispetto ai dati di addestramento. Analogamente, per i modelli di immagine, le basi possono essere un'immagine nera, un'immagine bianca, un'immagine grigia o un'immagine con con valori di pixel casuali.

Ti consigliamo di iniziare con un valore basale. Se necessario, puoi modificare base di riferimento o utilizzare più basi di riferimento. Vedi esempi di come regolare il tuo valore basale.

Configurazione delle impostazioni di visualizzazione per i dati immagine

Se lavori con i dati immagine, puoi configurare il modo in cui i risultati vengono mostrati aggiungendo una configurazione di visualizzazione ai tuoi dei metadati di spiegazione. Se non lo aggiungi, AI Explanations utilizza il valore predefinito impostazioni.

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

Passaggi successivi