Enregistrer des modèles TensorFlow pour AI Explanations

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 quelle 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 pour votre fonction de modèle lorsque vous enregistrez votre 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 :

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 lorsque vous utilisez TensorFlow 1. Utilisez plutôt tf.estimator.export_savedmodel conjointement avec un tf.estimator.export.ServingInputReceiver approprié.

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 :

Après avoir créé, compilé, entraîné et évalué votre modèle Keras, vous devez effectuer les opérations suivantes:

  • 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)

Étapes suivantes