Menyiapkan metadata untuk AI Explanations

Saat men-deploy model, Anda harus mengirimkan file metadata penjelasan untuk mengonfigurasi permintaan penjelasan. File metadata ini harus menyertakan input dan output model Anda, untuk memilih fitur bagi permintaan penjelasan Anda. Secara opsional, Anda juga dapat menyertakan dasar pengukuran input dan mengonfigurasi setelan visualisasi untuk data gambar.

Panduan ini menjelaskan cara menggunakan Explainable AI SDK untuk membuat file metadata penjelasan saat Anda mem-build model baru dengan TensorFlow 2.x atau TensorFlow 1.15, atau menggunakan model TensorFlow 2.x yang ada. Untuk meminta penjelasan untuk model TensorFlow 1.x yang ada, Anda harus membuat file metadata penjelasan secara manual.

Ringkasan metadata penjelasan

File metadata penjelasan diperlukan untuk deployment model di Penjelasan AI. Dengan menentukan input dan output model, Anda dapat memilih fitur tertentu untuk permintaan penjelasan. Anda membuat file bernama explanation_metadata.json dan menguploadnya ke bucket Cloud Storage di direktori yang sama dengan SavedModel Anda. Explainable AI SDK menangani proses ini untuk Anda, saat Anda mem-build dan menyimpan model.

Anda juga dapat menambahkan setelan opsional ke file metadata penjelasan:

Pelajari file metadata penjelasan lebih lanjut di referensi API.

Menginstal Explainable AI SDK

Explainable AI SDK adalah SDK Python yang mendukung model yang dibuat menggunakan:

  • TensorFlow 1.15 dan TensorFlow 2.x
  • Python 3.7 atau yang lebih baru.

Instal Explainable AI SDK:

pip3 install explainable_ai_sdk

Menemukan input dan output dengan Explainable AI SDK

Explainable AI SDK membantu Anda menemukan input dan output saat mem-build atau melatih model TensorFlow. Dalam setiap kasus ini, Anda mem-build file metadata penjelasan tepat setelah mem-build model. Untuk model Keras dan Estimator, Explainable AI SDK menyimpulkan input dan output dari grafik model Anda.

Sebelum menyimpan file metadata, Anda dapat memperbarui nilai input dan output yang dihasilkan Explainable AI SDK dan menambahkan kolom tambahan, seperti dasar pengukuran input dan preferensi visualisasi.

Contoh Explainable AI SDK untuk TensorFlow 2.x

SavedModelMetadataBuilder berfungsi untuk setiap SavedModel yang dibuat menggunakan TensorFlow 2.x. Dalam contoh ini, Explainable AI SDK membuat dan mengupload file metadata penjelasan Anda ke direktori bucket Cloud Storage yang sama dengan model Anda:

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.

Jika ingin, Anda dapat menggunakan fungsi get_metadata() untuk memeriksa metadata yang dihasilkan sebelum menyimpan dan menguploadnya.

Jika menggunakan fungsi TensorFlow untuk menyimpan dan mengupload model, Anda dapat menggunakan save_metadata() untuk mem-build dan mengekspor metadata penjelasan saja:

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)

Contoh ini juga menunjukkan cara menetapkan dasar pengukuran input untuk data gambar, menggunakan derau acak sebagai dasar pengukuran. Gunakan dasar pengukuran input yang paling sesuai dengan set data Anda. Sebagai titik awal, lihat dasar pengukuran contoh AI Explanations. Untuk memperbarui metadata dan menambahkan lebih banyak kolom, gunakan fungsi penyetel yang cocok dengan jenis data Anda: set_numeric_metadata(), set_categorical_metadata(), atau set_image_metadata().

Contoh Explainable AI SDK untuk TensorFlow 1.15

Explainable AI SDK mendukung model TensorFlow 1.15 yang dibuat dengan tf.keras, tf.estimator, atau tf.Graph.

Keras

Explainable AI SDK mendukung model Keras yang dibuat dengan Sequential dan Functional API, serta model kustom yang dibuat dengan membuat subclass class Model. Pelajari lebih lanjut berbagai jenis model 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)

Setelah membuat model, gunakan builder metadata untuk mendapatkan input dan output.

Estimator

Explainable AI SDK mendukung model Estimator. Untuk builder metadata, Anda menentukan kolom fitur input, fungsi input penayangan, dan kunci 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

Grafik

Explainable AI SDK juga mendukung model TensorFlow yang dibuat tanpa Keras atau Estimator API.

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)

Setelah membuat grafik model, Anda akan membuat metadata penjelasan dengan satu atau beberapa input model, dan satu output. Explainable AI SDK menyediakan fungsi untuk membantu Anda menambahkan metadata untuk setiap jenis input: numerik, kategoris, gambar, dan teks.

File explanation_metadata.json yang dihasilkan akan terlihat seperti ini:

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

Setelan metadata penjelasan opsional

Secara default, Explainable AI SDK menghasilkan file metadata penjelasan dengan hanya informasi yang diperlukan tentang input dan output model Anda. Sebelum menyimpan file metadata penjelasan, Anda dapat menyertakan konfigurasi opsional untuk dasar pengukuran input dan setelan visualisasi gambar. Atau, Anda dapat mengedit file metadata penjelasan setelah dibuat.

Menetapkan dasar pengukuran input

Dasar pengukuran input mewakili fitur yang tidak menyediakan informasi tambahan. Dasar pengukuran untuk model tabel dapat berupa nilai median, minimum, maksimum, atau acak yang terkait dengan data pelatihan Anda. Demikian pula, untuk model gambar, dasar pengukuran Anda dapat berupa gambar hitam, gambar putih, gambar abu-abu, atau gambar dengan nilai piksel acak.

Sebaiknya mulai dengan satu dasar pengukuran. Jika perlu, Anda dapat mengubah dasar pengukuran atau menggunakan beberapa dasar pengukuran. Lihat contoh cara menyesuaikan dasar pengukuran.

Mengonfigurasi setelan visualisasi untuk data gambar

Jika menggunakan data gambar, Anda dapat mengonfigurasi cara hasil penjelasan ditampilkan dengan menambahkan konfigurasi visualisasi ke file metadata penjelasan. Jika Anda tidak menambahkannya, Penjelasan AI akan menggunakan setelan default.

Lihat contoh opsi visualisasi, atau pelajari lebih lanjut setelan di referensi API.

Langkah selanjutnya