Como salvar modelos do TensorFlow para AI Explanations

Nesta página, explicamos como salvar um modelo do TensorFlow para uso com a AI Explanations, independentemente de você usar o TensorFlow 2.x ou o TensorFlow 1.15.

TensorFlow 2

Se você estiver trabalhando com o TensorFlow 2.x, use tf.saved_model.save para salvar seu modelo.

Uma opção comum para otimizar modelos salvos do TensorFlow é oferecer assinaturas. É possível especificar assinaturas de entrada ao salvar seu modelo. Se você tiver apenas uma assinatura de entrada, o AI Explanations usará automaticamente a função de exibição padrão para suas solicitações de explicação, seguindo o comportamento padrão de tf.saved_model.save. Saiba mais sobre como especificar assinaturas de exibição no TensorFlow.

Várias assinaturas de entrada

Se o modelo tiver mais de uma assinatura de entrada, o AI Explanations não conseguirá determinar automaticamente qual definição de assinatura usar ao recuperar uma previsão do seu modelo. Portanto, é preciso especificar qual definição de assinatura você quer que o AI Explanations use. Quando salvar o modelo, especifique a assinatura da função padrão de veiculação em uma chave exclusiva, xai-model:

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

Nesse caso, a AI Explanations usa a assinatura da função de modelo que você forneceu com a chave xai_model para interagir com seu modelo e gerar explicações. Use a string exata xai_model para a chave. Consulte esta visão geral dos padrões de assinatura para ver mais informações.

Funções de pré-processamento

Se você usar uma função de pré-processamento, será necessário especificar as assinaturas da função de pré-processamento e da função de modelo ao salvar o modelo. Use a chave xai_preprocess para especificar a função de pré-processamento:

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

Nesse caso, o AI Explanations usa a função de pré-processamento e a função de modelo para as solicitações de explicação. Verifique se o resultado da função de pré-processamento corresponde à entrada que a função do modelo espera.

Teste os notebooks completos do TensorFlow 2:

TensorFlow 1.15

Se você estiver usando o TensorFlow 1.15, não use o tf.saved_model.save. Essa função não recebe suporte do AI Explanations ao usar o TensorFlow 1. Em vez disso, use tf.estimator.export_savedmodel com uma tf.estimator.export.ServingInputReceiver apropriada.

Modelos criados com o Keras

Se você criar e treinar seu modelo no Keras, será necessário convertê-lo em um Estimator do TensorFlow e, em seguida, exportá-lo para um SavedModel. Nesta seção, nos concentramos em salvar um modelo. Para um exemplo completo de trabalho, consulte os notebooks de exemplo.

Depois de criar, compilar, treinar e avaliar o modelo do Keras, faça o seguinte:

  • Converta o modelo Keras em um Estimator do TensorFlow usando tf.keras.estimator.model_to_estimator.
  • Forneça uma função de entrada de exibição usando tf.estimator.export.build_raw_serving_input_receiver_fn.
  • Exporte o modelo como SavedModel, usando 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)

A seguir