Metadaten für AI Explanations vorbereiten

Wenn Sie das Modell bereitstellen, müssen Sie eine Erläuterungsmetadatendatei senden, um Ihre Erklärungsanfrage zu konfigurieren. Diese Metadatendatei muss die Ein- und Ausgaben Ihres Modells enthalten, damit Sie Merkmale für Ihre Erläuterungsanfrage auswählen können. Sie können auch Eingabe-Baselines angeben und die Visualisierungseinstellungen für Bilddaten konfigurieren.

In dieser Anleitung wird erläutert, wie Sie mithilfe des Explainable AI SDK die Erläuterungsmetadatendatei erstellen, während Sie ein neues Modell mit TensorFlow 2.x oder TensorFlow 1.15 erstellen oder ein vorhandenes TensorFlow 2.x-Modell verwenden. Wenn Sie Erläuterungen für ein vorhandenes TensorFlow 1.x-Modell anfordern möchten, müssen Sie die Erläuterungsmetadatendatei manuell erstellen.

Übersicht über Erläuterungsmetadaten

Die Erklärungs-Metadatendatei wird für die Modellbereitstellung in AI Explanations benötigt. Wenn Sie die Ein- und Ausgaben Ihres Modells angeben, können Sie bestimmte Features für Ihre Erläuterungsanfrage auswählen. Sie erstellen eine Datei mit dem explanation_metadata.json-Namen und laden sie in Ihren Cloud Storage-Bucket hoch, der sich im selben Verzeichnis wie das SavedModel befindet. Das Explainable AI SDK übernimmt diesen Prozess für Sie, während Sie das Modell erstellen und speichern.

Sie können der Erläuterungsmetadatendatei auch optionale Einstellungen hinzufügen:

Weitere Informationen zur Erläuterungsmetadatendatei finden Sie in der API-Referenz.

Explainable AI SDK installieren

Das Explainable AI SDK ist ein Python SDK, das folgende Modelle unterstützt:

  • TensorFlow 1.15 und TensorFlow 2.x
  • Python 3.7 oder höher.

Installieren Sie das Explainable AI SDK:

pip3 install explainable_ai_sdk

Eingaben und Ausgaben mit dem Explainable AI SDK finden

Mit dem Explainable AI SDK finden Sie die Ein- und Ausgaben, wenn Sie ein TensorFlow-Modell erstellen oder trainieren. In jedem dieser Fälle erstellen Sie die Erklärungsmetadatendatei direkt nach dem Erstellen des Modells. Bei Keras- und Estimator-Modellen leitet das Explainable AI SDK die Eingaben und Ausgaben aus der Modellgrafik ab.

Vor dem Speichern der Metadatendatei können Sie alle Eingabe- und Ausgabewerte aktualisieren, die vom Explainable AI SDK generiert werden. Außerdem haben Sie die Möglichkeit, zusätzliche Felder wie Eingabe-Baselines und Visualisierungseinstellungen hinzuzufügen.

Explainable AI SDK-Beispiele für TensorFlow 2.x

Der SavedModelMetadataBuilder funktioniert für jedes SavedModel, das mit TensorFlow 2.x erstellt wurde. In diesem Beispiel wird die Erläuterungsmetadatendatei mit dem Explainable AI SDK erstellt und in das Cloud Storage-Bucket-Verzeichnis Ihres Modells hochgeladen:

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.

Optional können Sie mit der Funktion get_metadata() die Metadaten prüfen, die vor dem Speichern und Hochladen generiert werden.

Wenn Sie eine TensorFlow-Funktion zum Speichern und Hochladen des Modells verwenden, können Sie mit save_metadata() nur die Erläuterungsmetadaten erstellen und exportieren:

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)

In diesem Beispiel wird auch gezeigt, wie eine Eingabe-Baseline für Bilddaten festgelegt wird, wobei zufälliges Rauschen als Baseline verwendet wird. Verwenden Sie eine Eingabe-Baseline, die für Ihr Dataset am besten geeignet ist. Weitere Informationen finden Sie in den Beispielen zu AI Explanations. Verwenden Sie die Setter-Funktion, die Ihrem Datentyp entspricht, um Ihre Metadaten zu aktualisieren und weitere Felder hinzuzufügen: set_numeric_metadata(), set_categorical_metadata() oder set_image_metadata().

Explainable AI SDK-Beispiele für TensorFlow 1.15

Das Explainable AI SDK unterstützt TensorFlow 1.15-Modelle, die mit tf.keras, tf.estimator oder tf.Graph erstellt wurden.

Keras

Das Explainable AI SDK unterstützt Keras-Modelle, die mit den Sequential- und Functional APIs erstellt wurden, sowie benutzerdefinierte Modelle, die mithilfe von abgeleiteten Klassen von Model erstellt wurden. Weitere Informationen zu verschiedenen Arten von Keras-Modellen

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)

Nachdem Sie das Modell erstellt haben, rufen Sie mit dem Metadaten-Builder die Eingaben und Ausgaben ab.

Estimator

Das Explainable AI SDK unterstützt Estimator-Modelle. Für den Metadaten-Builder geben Sie Eingabe-Featurespalten, die Bereitstellungseingabefunktion und einen Ausgabeschlüssel an.

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

Grafik

Das Explainable AI SDK unterstützt auch TensorFlow-Modelle, die ohne die APIs Keras oder Estimator erstellt wurden.

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)

Nachdem Sie die Modellgrafik erstellt haben, erstellen Sie die Erklärungsmetadaten mit einer oder mehreren Modelleingaben und einer Ausgabe. Das Explainable AI SDK bietet eine Funktion, mit der Sie Metadaten für jeden Eingabetyp hinzufügen können: numerisch, kategorial, Bild und Text.

Die resultierende explanation_metadata.json-Datei sieht in etwa so aus:

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

Optionale Einstellungen für Erläuterungsmetadaten

Standardmäßig erstellt das Explainable AI SDK eine Erläuterungsmetadatendatei mit den erforderlichen Informationen zu Eingaben und Ausgaben Ihres Modells. Bevor Sie die Erläuterungsmetadatendatei speichern, können Sie optionale Konfigurationen für Eingabe-Baseline- und Bildvisualisierungseinstellungen hinzufügen. Alternativ können Sie die Erläuterungsmetadatendatei bearbeiten, nachdem sie erstellt wurde.

Eingabe-Baselines einstellen

Eingabe-Baselines stellen ein Feature dar, das keine zusätzlichen Informationen liefert. Baselines für tabellarische Modelle können Medianwerte, Mindest-, Höchst- oder Zufallswerte in Bezug auf Ihre Trainingsdaten sein. Ebenso können Sie bei Bildmodellen ein schwarzes Bild, ein weißes Bild, ein graues Bild oder ein Bild mit zufälligen Pixelwerten als Baseline verwenden.

Wir empfehlen, mit einer Baseline zu beginnen. Bei Bedarf können Sie die Baseline ändern oder mehrere Baselines verwenden. Beispiele zum Anpassen der Baseline

Visualisierungseinstellungen für Bilddaten konfigurieren

Wenn Sie mit Bilddaten arbeiten, können Sie festlegen, wie die Erläuterungsergebnisse angezeigt werden. Fügen Sie dazu zu Ihrer Erklärungsmetadatendatei eine Visualisierungskonfiguration hinzu. Wenn Sie dies nicht hinzufügen, verwendet AI Explanations Standardeinstellungen.

Siehe Beispiele der Visualisierungsoptionen oder weitere Informationen zu den Einstellungen in der API-Referenz.

Nächste Schritte