Cette page explique comment enregistrer un modèle TensorFlow à utiliser avec AI Explanations, que vous utilisiez TensorFlow 2.x ou TensorFlow 1.15.
TensorFlow 2
Si vous utilisez TensorFlow 2.x, enregistrez votre modèle à l'aide de tf.saved_model.save
.
Une option courante pour optimiser les modèles TensorFlow enregistrés consiste à permettre aux utilisateurs de fournir des signatures. Vous pouvez spécifier des signatures d'entrée lorsque vous enregistrez votre modèle.
Si vous n'avez qu'une seule signature d'entrée, AI Explanations utilise automatiquement la fonction de diffusion par défaut pour vos requêtes d'explications, conformément au comportement par défaut de tf.saved_model.save
. Apprenez-en plus sur la spécification de signatures de diffusion dans TensorFlow.
Signatures d'entrée multiples
Si votre modèle comporte plusieurs signatures d'entrée, AI Explanations ne peut pas déterminer automatiquement la définition de signature à utiliser lors de la récupération d'une prédiction à partir de votre modèle. Par conséquent, vous devez spécifier la définition de signature que vous souhaitez utiliser dans AI Explanations. Lorsque vous enregistrez votre modèle, spécifiez la signature de votre fonction de diffusion par défaut dans une clé unique, xai-model
:
tf.saved_model.save(m, model_dir, signatures={
'serving_default': serving_fn,
'xai_model': my_signature_default_fn # Required for AI Explanations
})
Dans ce cas, AI Explanations utilise la signature de fonction de modèle que vous avez fournie avec la clé xai_model
pour interagir avec votre modèle et générer des explications. Utilisez la chaîne exacte xai_model
pour la clé. Consultez cette présentation des définitions de signature pour plus de contexte.
Fonctions de prétraitement
Si vous utilisez une fonction de prétraitement, vous devez spécifier les signatures pour
votre fonction de prétraitement et celle de modèle
lorsque vous enregistrez le modèle. Utilisez la clé xai_preprocess
pour spécifier votre fonction de prétraitement:
tf.saved_model.save(m, model_dir, signatures={
'serving_default': serving_fn,
'xai_preprocess': preprocess_fn, # Required for AI Explanations
'xai_model': model_fn # Required for AI Explanations
})
Dans ce cas, AI Explanations utilise votre fonction de prétraitement et votre fonction de modèle pour vos requêtes d'explication. Assurez-vous que la sortie de votre fonction de prétraitement correspond à l'entrée attendue par votre fonction de modèle.
Testez les exemples complets de notebooks TensorFlow 2 :
- Exemple de notebook pour les données tabulaires pour TensorFlow 2
- Exemple de notebook pour les données d'image pour TensorFlow 2
TensorFlow 1.15
Si vous utilisez TensorFlow 1.15, n'utilisez pas tf.saved_model.save
.
Cette fonction n'est pas compatible avec AI Explanations lors de l'utilisation de TensorFlow 1. Utilisez plutôt tf.estimator.export_savedmodel
conjointement avec une
tf.estimator.export.ServingInputReceiver
Modèles créés avec Keras
Si vous créez et entraînez votre modèle dans Keras, vous devez le convertir en estimateur TensorFlow, puis l'exporter vers un modèle SavedModel. Cette section porte sur l'enregistrement d'un modèle. Pour obtenir un exemple fonctionnel complet, consultez les exemples de notebooks :
- Exemple de notebook pour les données tabulaires pour TensorFlow 1.15
- Exemple de notebook pour les données d'image pour TensorFlow 1.15
Après avoir créé, compilé, entraîné et évalué votre modèle Keras, vous devez procéder comme suit:
- convertir le modèle Keras en un estimateur TensorFlow, à l'aide de
tf.keras.estimator.model_to_estimator
; - spécifier une fonction d'entrée de diffusion, à l'aide de
tf.estimator.export.build_raw_serving_input_receiver_fn
; - Exporter le modèle en tant que modèle SavedModel à l'aide de
tf.estimator.export_saved_model
.
# Build, compile, train, and evaluate your Keras model
model = tf.keras.Sequential(...)
model.compile(...)
model.fit(...)
model.predict(...)
## Convert your Keras model to an Estimator
keras_estimator = tf.keras.estimator.model_to_estimator(keras_model=model, model_dir='export')
## Define a serving input function appropriate for your model
def serving_input_receiver_fn():
...
return tf.estimator.export.ServingInputReceiver(...)
## Export the SavedModel to Cloud Storage using your serving input function
export_path = keras_estimator.export_saved_model(
'gs://' + 'YOUR_BUCKET_NAME', serving_input_receiver_fn).decode('utf-8')
print("Model exported to: ", export_path)
Étape suivante
- Apprenez à utiliser le SDK Explainable AI.
- Pour visualiser vos explications, vous pouvez utiliser l'outil de simulation What-If. Reportez-vous aux exemples de notebooks pour en savoir plus.