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, agar dapat memilih fitur untuk 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 membuat model baru dengan TensorFlow 2.x atau TensorFlow 1.15, atau menggunakan model TensorFlow 2.x yang sudah ada. Untuk meminta penjelasan tentang model TensorFlow 1.x yang ada, Anda harus membuat file metadata penjelasan secara manual.

Ringkasan metadata penjelasan

File metadata penjelasan diperlukan untuk deployment model pada AI Explanations. Menentukan input dan output model memungkinkan Anda memilih fitur tertentu untuk permintaan penjelasan. Anda membuat file bernama explanation_metadata.json dan menguploadnya ke bucket Cloud Storage di direktori yang sama denganSavedModel Anda. Explainable AI SDK menangani proses ini untuk Anda, saat Anda membangun 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 Python SDK 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 akan menyimpulkan input dan output dari grafik model Anda.

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

Contoh AI SDK yang dapat dijelaskan untuk TensorFlow 2.x

SavedModelMetadataBuilder berfungsi untuk setiap SaveModel yang di-build menggunakan TensorFlow 2.x. Dalam contoh ini, Explainable AI SDK membuat dan mengupload file metadata penjelasan 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.

Atau, 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 {i>dataset<i} Anda. Sebagai titik awal, lihat contoh dasar pengukuran Penjelasan AI. Untuk memperbarui metadata dan menambahkan kolom lainnya, gunakan fungsi penyetel yang cocok dengan jenis data Anda: set_numeric_metadata(), set_categorical_metadata(), atau set_image_metadata().

Contoh AI SDK yang dapat dijelaskan untuk TensorFlow 1.15

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

Keras

Explainable AI SDK mendukung model Keras yang dibuat dengan API Sequential dan Functional, serta model kustom yang dibuat dengan membuat subclass dari class Model. Pelajari berbagai jenis model Keras lebih lanjut.

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 harus 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 dibangun 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 mem-build 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 terlihat mirip dengan 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"
  ]
}

Penjelasan opsional tentang setelan metadata

Secara default, Explainable AI SDK menghasilkan file metadata penjelasan hanya dengan 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 file tersebut 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.

Dianjurkan untuk memulai dengan satu garis dasar. Jika perlu, Anda dapat mengubah baseline atau menggunakan beberapa baseline. Lihat contoh cara menyesuaikan dasar pengukuran Anda.

Mengonfigurasi setelan visualisasi untuk data gambar

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

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

Langkah selanjutnya