TensorFlow-Modelle für AI Explanations speichern

Auf dieser Seite wird erläutert, wie Sie ein TensorFlow-Modell für AI Explanations speichern, unabhängig davon, ob Sie TensorFlow 2.x oder TensorFlow 1.15 verwenden.

TensorFlow 2

Wenn Sie mit TensorFlow 2.x arbeiten, verwenden Sie tf.saved_model.save zum Speichern für das Modell.

Eine gängige Option zur Optimierung gespeicherter TensorFlow-Modelle ist die Bereitstellung von Signaturen. Sie können beim Speichern Ihres Modells Eingabesignaturen angeben. Wenn Sie nur eine Eingabesignatur haben, verwendet AI Explanations automatisch die Standardbereitstellungsfunktion für Ihre Erläuterungsanfragen. Beachten Sie dabei das Standardverhalten von tf.saved_model.save. Weitere Informationen finden Sie im Abschnitt zum Festlegen von Bereitstellungssignaturen in TensorFlow.

Mehrere Eingabesignaturen

Wenn Ihr Modell mehrere Eingabesignaturen hat, kann AI Explanations nicht automatisch ermitteln, welche Signaturdefinition beim Abrufen einer Vorhersage aus Ihrem Modell verwendet werden soll. Daher müssen Sie angeben, welche Signaturdefinition Sie verwenden möchten, um AI Explanations zu verwenden. Wenn Sie das Modell speichern, geben Sie die Signatur Ihrer Bereitstellungsstandardfunktion in einem eindeutigen Schlüssel (xai-model) an:

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

In diesem Fall verwendet AI Explanations die von Ihnen mit dem Schlüssel xai_model bereitgestellte Modellfunktionssignatur, um mit Ihrem Modell zu interagieren und Erklärungen zu generieren. Verwenden Sie für den Schlüssel exakt den String xai_model. Weitere Informationen finden Sie in dieser Übersicht zum Thema "Signature".

Vorverarbeitungsfunktionen

Wenn Sie eine Vorverarbeitungsfunktion verwenden, müssen Sie auch die Signaturen für die Vorverarbeitungsfunktion und Ihre Modellfunktion angeben, wenn Sie das Modell speichern. Verwenden Sie den Schlüssel xai_preprocess, um die Vorverarbeitungsfunktion anzugeben:

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

In diesem Fall nutzt AI Explanations die Vorverarbeitungsfunktion und die Modellfunktion für Ihre Erläuterungsanfragen. Die Ausgabe der Vorverarbeitungsfunktion muss der Eingabe entsprechen, die Ihre Modellfunktion erwartet.

Testen Sie die vollständigen TensorFlow 2 Beispiel-Notebooks:

TensorFlow 1.15

Wenn Sie TensorFlow 1.15 verwenden, verwenden Sie nicht tf.saved_model.save. Diese Funktion wird bei AI Explanations nicht unterstützt, wenn TensorFlow 1 verwendet wird. Verwenden Sie stattdessen tf.estimator.export_savedmodel in Verbindung mit einer geeigneten tf.estimator.export.ServingInputReceiver.

Mit Keras erstellte Modelle

Wenn Sie Ihr Modell in Keras erstellen und trainieren, müssen Sie es in einen TensorFlow Estimator konvertieren und anschließend in ein SavedModel exportieren. In diesem Abschnitt geht es hauptsächlich um das Speichern eines Modells. Ein vollständig funktionierendes Beispiel finden Sie in den Beispiel-Notebooks.

Nachdem Sie Ihr Keras-Modell erstellt, kompiliert, trainiert und bewertet haben, müssen Sie:

  • Das Keras-Modell mithilfe von tf.keras.estimator.model_to_estimator in einen TensorFlow Estimator konvertieren
  • Eine Bereitstellungseingabefunktion mithilfe von tf.estimator.export.build_raw_serving_input_receiver_fn bereitstellen
  • Das Modell mithilfe von tf.estimator.export_saved_model als SavedModel exportieren.
# 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)

Nächste Schritte