Guarda modelos de TensorFlow para AI Explanations

En esta página, se explica cómo guardar un modelo de TensorFlow para usarlo con AI Explanations, ya sea que uses TensorFlow 2.x o TensorFlow 1.15.

TensorFlow 2

Si estás trabajando con TensorFlow 2.x, usa tf.saved_model.save para guardar tu modelo.

Una opción común para optimizar los modelos guardados de TensorFlow es que los usuarios proporcionen firmas. Puedes especificar firmas de entrada cuando guardas el modelo. Si solo tienes una firma de entrada, AI Explanations usa de forma automática la función de entrega predeterminada para las solicitudes de explicaciones y sigue el comportamiento predeterminado de tf.saved_model.save. Obtén más información para especificar firmas de entrega en TensorFlow.

Varias firmas de entrada

Si tu modelo tiene más de una firma de entrada, AI Explanations no puede determinar automáticamente qué definición de firma usar cuando se recupera una predicción de tu modelo. Por lo tanto, debes especificar qué definición de firma deseas que use AI Explanations. Cuando guardes tu modelo, especifica la firma de tu función predeterminada de entrega en una clave única, xai-model:

tf.saved_model.save(m, model_dir, signatures={
    'serving_default': serving_fn,
    'xai_model': my_signature_default_fn # Required for AI Explanations
    })

En este caso, AI Explanations usa la firma de la función de modelo que proporcionaste con la clave xai_model para interactuar con tu modelo y generar explicaciones. Usa la string exacta xai_model para la clave. Consulta esta descripción general de definiciones de firmas para obtener más información.

Funciones de procesamiento previo

Si usas una función de procesamiento previo, debes especificar las firmas para tu función de procesamiento previo y tu función de modelo cuando guardes tu modelo. Usa la clave xai_preprocess para especificar tu función de procesamiento previo:

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

En este caso, Explicaciones de IA usa la función de procesamiento previo y la función de modelo para tus solicitudes de explicación. Asegúrate de que el resultado de tu función de procesamiento previo coincida con la entrada que espera la función del modelo.

Prueba los notebooks de ejemplo completos de TensorFlow 2:

TensorFlow 1.15

Si usas TensorFlow 1.15, no uses tf.saved_model.save. Esta función no es compatible con AI Explanations cuando se usa TensorFlow 1. En su lugar, usa tf.estimator.export_savedmodel junto con un tf.estimator.export.ServingInputReceiver apropiado.

Modelos compilados con Keras

Si compilas y entrenas el modelo en Keras, debes convertirlo en un Estimador de TensorFlow y, luego, exportarlo a un modelo guardado. En esta sección, nos enfocamos en cómo guardar un modelo. Para ver un ejemplo completo, consulta los notebooks de ejemplo.

Después de compilar, compilar, entrenar y evaluar el modelo de Keras, debes hacer lo siguiente:

  • Convertir el modelo de Keras en un Estimador de TensorFlow mediante tf.keras.estimator.model_to_estimator
  • Proporcionar una función de entrada de entrega mediante tf.estimator.export.build_raw_serving_input_receiver_fn
  • Exportar el modelo como modelo guardado mediante 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)

¿Qué sigue?