Préparer les métadonnées pour AI Explanations

Lors du déploiement de votre modèle, vous devez envoyer un fichier de métadonnées d'explication pour configurer votre requête d'explications. Ce fichier de métadonnées doit inclure les entrées et les sorties de votre modèle afin que vous puissiez sélectionner des caractéristiques pour votre requête d'explications. Vous pouvez également inclure des références en entrée et configurer des paramètres de visualisation pour les données d'image.

Ce guide explique comment utiliser le SDK Explainable AI pour créer un fichier de métadonnées d'explication lors de la création d'un modèle avec TensorFlow 2.x ou TensorFlow 1.15, ou avec un modèle TensorFlow 2.x existant. Pour effectuer une requête d'explications sur un modèle TensorFlow1.x existant, vous devez créer manuellement votre fichier de métadonnées d'explication.

Présentation des métadonnées d'explication

Le fichier de métadonnées d'explication est requis lors du déploiement d'un modèle sur AI Explanations. La spécification des entrées et des sorties de votre modèle vous permet de sélectionner les caractéristiques propres de votre requête d'explications. Créez un fichier nommé explanation_metadata.json, puis importez-le dans votre bucket Cloud Storage, dans le même répertoire que votre SavedModel. Le SDK Explainable AI se charge de ce processus à votre place, tandis que vous créez et enregistrez le modèle.

Vous pouvez également ajouter des paramètres facultatifs à votre fichier de métadonnées d'explication :

Obtenez plus d'informations sur le fichier de métadonnées d'explication dans la documentation de référence de l'API.

Installer le SDK Explainable AI

Le SDK Explainable AI est un SDK Python compatible avec les modèles créés avec :

  • TensorFlow 1.15 et TensorFlow 2.x ;
  • Python 3.7 ou uneversion ultérieure.

Installez le SDK Explainable AI :

pip3 install explainable_ai_sdk

Rechercher des entrées et des sorties avec le SDK Explainable AI

Le SDK Explainable AI vous aide à trouver les entrées et les sorties lorsque vous créez ou entraînez un modèle TensorFlow. Dans chacun de ces cas, vous construisez votre fichier de métadonnées d'explication juste après avoir créé votre modèle. Dans le cas des modèles Keras et Estimator, le SDK Explainable AI déduit les entrées et les sorties du graphe de votre modèle.

Avant d'enregistrer votre fichier de métadonnées, vous pouvez mettre à jour les valeurs d'entrée et de sortie que le SDK Explainable AI génère et ajouter des champs supplémentaires, tels que des valeurs de référence d'entrée et des préférences de visualisation.

Exemples du SDK Explainable AI pour TensorFlow2.x

Le modèle SavedModelMetadataBuilder fonctionne pour tous les SavedModel créés à l'aide de TensorFlow2.x. Dans cet exemple, le SDK Explainable AI crée et importe le fichier de métadonnées d'explication dans le même répertoire de bucket Cloud Storage que votre modèle :

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.

Si vous le souhaitez, vous pouvez utiliser la fonction get_metadata() pour vérifier les métadonnées générées avant de les enregistrer et de lesimporter.

Si vous utilisez une fonction TensorFlow pour enregistrer et importer votre modèle, vous pouvez utiliser save_metadata() pour créer et exporter uniquement vos métadonnées d'explication :

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)

Cet exemple montre également comment définir une référence d'entrée pour des données d'image, en utilisant un bruit aléatoire comme référence. Utilisez une référence d'entrée la mieux adaptée à votre ensemble de données. Pour commencer, reportez-vous aux références de l'exemple de AI Explanations. Pour mettre à jour vos métadonnées et ajouter des champs, utilisez la fonction "setter" correspondant à votre type de données : set_numeric_metadata(), set_categorical_metadata() ou set_image_metadata().

Exemples du SDK Explainable AI pour TensorFlow1.15

Le SDK Explainable AI est compatible avec les modèles TensorFlow1.15 créés avec tf.keras, tf.estimator ou tf.Graph.

Keras

Le SDK Explainable AI est compatible avec les modèles Keras créés à l'aide des API séquentielles et fonctionnelles, ainsi qu'avec des modèles personnalisés créés en sous-classant la classe Model. Découvrez les différents types de modèles 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)

Après avoir créé votre modèle, utilisez le compilateur de métadonnées pour obtenir les entrées et les sorties.

Estimator

Le SDK Explainable AI est compatible avec les modèles Estimator. Pour le compilateur de métadonnées, vous devez spécifier des colonnes de caractéristiques d'entrée, la fonction d'entrée de diffusion et une clé de sortie.

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

Graphique

Le SDK Explainable AI est également compatible avec les modèles TensorFlow créés sans les APIKeras ou 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)

Après avoir créé le graphique du modèle, vous allez générer vos métadonnées d'explication avec une ou plusieurs entrées de modèle, ainsi qu'une sortie. Le SDK Explainable AI fournit une fonction pour vous aider à ajouter des métadonnées pour chaque type d'entrée : numérique, catégorielle, image et texte.

Le fichier explanation_metadata.json obtenu ressemble à ceci :

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

Paramètres de métadonnées d'explication facultatifs

Par défaut, le SDK Explainable AI génère un fichier de métadonnées d'explication contenant uniquement les informations requises sur les entrées et les sorties de votre modèle. Avant d'enregistrer le fichier de métadonnées d'explication, vous pouvez inclure des configurations facultatives pour les références en entrée et les paramètres de visualisation d'images. Vous pouvez également modifier le fichier de métadonnées d'explication après sa création.

Définir des références en entrée

Les références en entrée représentent une caractéristique qui ne fournit pas d'informations supplémentaires. Les références des modèles tabulaires peuvent être des valeurs médianes, minimales, maximales ou aléatoires par rapport à vos données d'entraînement. De même, pour les modèles d'images, les références peuvent être une image noire, une image blanche, une image grise ou une image avec des valeurs de pixels aléatoires.

Nous vous recommandons de commencer avec une référence. Si nécessaire, vous pouvez modifier votre référence ou en utiliser plusieurs. Consultez des exemples d'ajustement de la référence.

Configurer les paramètres de visualisation des données d'image

Si vous travaillez avec des données d'image, vous pouvez configurer le mode d'affichage des résultats d'explication en ajoutant une configuration de visualisation à votre fichier de métadonnées d'explication. Si vous n'ajoutez pas cette option, AI Explanations utilise les paramètres par défaut.

Consultez des exemples d'options de visualisation ou apprenez-en plus sur les paramètres dans la documentation de référence de l'API.

Étape suivante