Sie können Ihre trainierten Modelle in AI Platform Prediction bereitstellen und dort für Vorhersagen verwenden. Dazu müssen Sie sie zuerst in das TensorFlow SavedModel-Format exportieren.
Auf dieser Seite werden einige wichtige Punkte behandelt, die Sie beim Erstellen Ihres SavedModel berücksichtigen müssen. Weitere Informationen zum Exportieren in ein SavedModel finden Sie unter TensorFlow-Anleitung zu SavedModels und den TensorFlow-Leitfaden zum Speichern von Keras Modelle Ausführliche Informationen zum Bereitstellen eines SavedModel in AI Platform Prediction für das Abrufen von Vorhersagen erhalten Sie im Leitfaden zum Bereitstellen von Modellen. Allgemeine Hintergrundinformationen zu Vorhersagen finden Sie auf der Seite "Vorhersageübersicht".
Benutzerdefinierte Vorhersageroutinen
Alternativ zum Bereitstellen eines SavedModel können Sie auch eine benutzerdefinierte Vorhersageroutine erstellen und bereitstellen. Mit einer benutzerdefinierten Vorhersageroutine lässt sich ein SavedModel oder ein auf andere Weise gespeichertes trainiertes Modell mit anderen Trainingsartefakten und mit Ihrem Python-Code kombinieren, um die Verarbeitung von Vorhersageanfragen durch AI Platform Prediction individuell anzupassen. Diese Flexibilität ermöglicht beispielsweise die Vorverarbeitung der Vorhersageeingabe, bevor Ihr Modell eine Vorhersage erstellt.
Weitere Informationen finden Sie im Handbuch zu benutzerdefinierten Vorhersageroutinen.
Trainings- und Bereitstellungsgrafiken – Grundlagen
Wenn Sie Ihr Modell trainiert und als SavedModel exportiert haben, müssen Sie einige wichtige Schritte ausführen, bevor Sie damit Vorhersagen bereitstellen können.
Trainingsgrafiken und Bereitstellungsgrafiken unterscheiden sich in einigen wesentlichen Punkten. Trainingsgrafiken umfassen Funktionen, die für die Bereitstellung irrelevant sind. Dazu gehören:
- Dateileser
- Eingabewarteschlangen
- Dropout-Ebenen
- Verlustfunktionen
- Optimierungstools
Da die Bereitstellung von Vorhersagen andere Anforderungen hat als der Trainingsprozess, empfiehlt es sich, eine eigene Grafik nur für die Bereitstellung von Vorhersagen zu exportieren.
SavedModel – Grundlagen
Ein SavedModel ist das von TensorFlow empfohlene Format zum Speichern von Modellen und das erforderliche Format zum Bereitstellen trainierter TensorFlow-Modelle in AI Platform Prediction. Wenn Sie das trainierte Modell als SavedModel exportieren, wird die Trainingsgrafik mit ihren Assets, Variablen und Metadaten in einem mit AI Platform Prediction kompatiblen Format gespeichert. Dort kann sie dann für Vorhersagen verwendet und wiederhergestellt werden.
Nach dem Export eines SavedModel haben Sie ein SavedModel-Verzeichnis, das Folgendes enthält:
- In SavedModel-Protokollpuffern gespeicherte Trainingsgrafik(en)
- Externe Dateien, die Assets genannt werden
- Variablen, die als Prüfpunktdateien gespeichert werden
Wenn Sie das SavedModel in AI Platform Prediction bereitstellen, müssen Sie dazu das gesamte SavedModel-Verzeichnis angeben und nicht nur die SavedModel-Protokollpufferdatei mit der Grafik und deren Metadaten. Diese Datei hat in der Regel die Erweiterung .pb
oder .pbtxt
.
Mit dem SavedModel können Sie mehrere Versionen einer Grafik speichern, die dieselben Assets und Variablen (oder Checkpoints) aufweisen. So ließen sich beispielsweise zwei Versionen derselben Grafik entwickeln, um eine davon auf CPUs und die andere auf GPUs auszuführen.
Weitere Informationen zur Struktur eines SavedModel-Verzeichnisses finden Sie hier.
Aus verschiedenen TensorFlow APIs exportieren
Es gibt mehrere Möglichkeiten, SavedModels aus Ihrem TensorFlow-Trainingscode zu exportieren. In der folgenden Liste werden verschiedene Möglichkeiten für verschiedene TensorFlow APIs beschrieben:
- Wenn Sie Keras für das Training verwendet haben, nutzen Sie
tf.keras.Model.save
, um ein SavedModel zu exportieren. - Wenn Sie einen Estimator für das Training verwenden, nutzen Sie
tf.estimator.Estimator.export_saved_model
, um ein SavedModel zu exportieren. - Andernfalls verwenden Sie
tf.saved_model.save
odertf.saved_model.SavedModelBuilder
(tf.compat.v1.saved_model.Builder
in TensorFlow 2).
Kompatibilität mit AI Explanations
Wenn Sie AI Explanations mit Ihrem Modell verwenden möchten, lesen Sie sich die Informationen zu zusätzlichen Anforderungen für Ihr SavedModel durch.
Modellgröße prüfen und anpassen
Ihr SavedModel muss 500 MB oder kleiner sein, wenn es in einer Modellversion mit einem Legacy-Maschinentyp (MLS1) bereitgestellt werden soll. Es kann eine Größe von bis zu 10 GB haben, wenn Sie einen Compute Engine-Maschinentyp (N1) verwenden. Weitere Informationen zu Maschinentypen für die Onlinevorhersage
Diese Größenbeschränkung beinhaltet alle Assets und Variablen im SavedModel-Verzeichnis und nicht nur die SavedModel-Protokollpufferdatei selbst, also saved_model.pb
oder saved_model.pbtxt
.
Zur Bestimmung der Modellgröße während der Entwicklung exportieren Sie ein SavedModel und prüfen die Dateigröße des Verzeichnisses.
Wenn das SavedModel das Limit von 500 MB überschreitet, gehen Sie so vor:
- Achten Sie darauf, dass Sie nur die für die Vorhersage benötigten Elemente in die zu exportierende Grafik aufnehmen.
- Verringern Sie die Modellgröße, indem Sie die Genauigkeit von Gewichtungen und Daten reduzieren.
Wenn Sie diese Schritte ausführen, können Sie das SavedModel unter das Limit von 500 MB bringen und die Latenz von Vorhersagen verringern. Sie profitieren dann nicht nur von einer Leistungssteigerung, sondern sparen sich auch das Anfordern einer Kontingenterhöhung und die damit verbundene Wartezeit.
Wenn Sie dennoch ein größeres Kontingent benötigen, lesen Sie die Informationen zum Anfordern einer Kontingenterhöhung.
Optimale Vorhersagegrafik erstellen
Beim Training werden mehrere Checkpoints generiert, die zur Bereitstellung von Vorhersagen nicht verwendet werden. Achten Sie darauf, dass das hochgeladene Verzeichnis solche Artefakte nicht enthält, sondern nur das bereitzustellende Modell.
Wenn Sie beispielsweise Zusammenfassungen während des Trainingsprozesses für die Visualisierung in TensorBoard exportieren, sollten Sie dafür sorgen, dass diese nicht in das SavedModel einbezogen werden. Diese TensorBoard-Zusammenfassungen sind für eine Vorhersagegrafik nicht erforderlich.
Genauigkeit zur Verringerung der Dateigröße reduzieren
Die Reduzierung der Genauigkeit von Variablen und Eingabedaten verringert zwar die Modellgröße erheblich, allerdings zulasten der Vorhersagegenauigkeit. Daten mit hoher Genauigkeit werden weniger effizient gespeichert als Daten mit niedriger Genauigkeit. Obwohl Daten mit niedriger Genauigkeit eine Rauschquelle darstellen, kann ein neuronales Netzwerk dieses Rauschen "ignorieren" und dennoch ziemlich genaue Vorhersagen treffen.
Wenn die Verwendung dieser Methoden in Ihrem Anwendungsfall zu einem zu großen Verlust an Vorhersagegenauigkeit führt, sollten Sie eine Kontingenterhöhung anfordern.
Verringern Sie die Dateigröße, indem Sie Gewichtungen verkleinern, die standardmäßig Gleitkommazahlen sind, deren effiziente Speicherung schwierig ist. Diese ineffizient gespeicherten Gewichtungen tragen am meisten zur Gesamtdateigröße des Modells bei.
Quantisieren Sie die kontinuierlichen Daten. Damit lässt sich die Größe des Modells ohne signifikante Genauigkeitseinbußen um bis zu 75 % verringern.
Verwenden Sie Variablen mit niedrigerer Genauigkeit. Ändern Sie beispielsweise den Datentyp (
dtype
) vonint64
inint32
.Verkleinern Sie andere Eingabefeatures im Ordner
assets
Ihres SavedModel-Verzeichnisses. Verwenden Sie beispielsweise kleinere Vokabulargrößen für Textdaten.Lesen Sie den ausführlichen Artikel über Techniken zum Optimieren von TensorFlow-Modellen für die Vorhersage und arbeiten Sie Beispiele zur Anwendung dieser Techniken durch. Die verlinkten Techniken gelten nur, wenn Sie TensorFlow 1 verwenden.
Tools zum Prüfen von SavedModels und Grafiken
TensorFlow bietet eine Befehlszeilenschnittstelle, mit der Sie eine Integritätsprüfung für Aspekte des SavedModels ausführen können, z. B. für die Eingabeformatierung und SignatureDefs
.
Weitere Informationen zur SavedModel-Befehlszeilenschnittstelle
Mit dem Graph Transform Tool in TensorFlow können Sie das Modell für die Bereitstellung optimieren. Obwohl die Verwendung dieses Tools im Kontext der mobilen Bereitstellung erläutert wird, kann es auch zur Optimierung von Modellen verwendet werden, die nicht mobil bereitgestellt werden.
Bereitstellungseingabefunktionen erstellen
Wenn Sie Ihr SavedModel mit tf.keras.Model.save
exportieren, müssen Sie keine Bereitstellungseingabefunktion angeben.
Andernfalls bestimmen Sie beim Export des SavedModels eine Bereitstellungseingabefunktion. In Bezug auf den gesamten Trainingsprozess kann das zu folgenden Zeitpunkten geschehen:
- In der Endphase des Trainingsprozesses
- Nach Abschluss des Trainings als separater Prozess
Die folgenden Beispiele zeigen, wie das für einen trainierten Estimator möglich ist. Weitere Informationen zu Bereitstellungseingabefunktionen für Estimators
Bereitstellungsgrafik während des Trainings erstellen
Dies erfolgt normalerweise am Ende des Trainingsprozesses, ist jedoch noch Teil des Trainings.
Sie definieren eine Bereitstellungseingabefunktion. Achten Sie darauf, dass die äußerste Dimension der Features in Ihrer Funktion
None
ist. Dies entspricht Ihrer Batchgröße und wird unten gezeigt, wenn Sie den Wert von Elementen in Ihrem Feature-Wörterbuch mithilfe vontf.placeholder
definieren. Der folgende Beispielcode stammt aus unserem Datenerhebungsbeispiel:Exportieren Sie mithilfe von
tf.estimator.Estimator.export_saved_model
ein SavedModel aus dem Estimator. Übergeben Sie dabei den Pfad zum Modell im Parameterexport_dir_base
und den Namen der Bereitstellungseingabefunktion im Parameterserving_input_fn
. Im Beispiel der Datenerhebung (Census) wird ein Estimator vom Typtf.estimator.DNNLinearCombinedClassifier
verwendet.
Bereitstellungsgrafik außerhalb des Trainings erstellen
Wenn Sie Ihr Modell bereits trainiert haben, können Sie Vorhersagen ohne ein erneutes Training abrufen. Dieser Prozess ähnelt stark dem Erstellen einer Bereitstellungsgrafik während des Trainings. Der Hauptunterschied besteht darin, dass Sie die Bereitstellungsgrafik in einem eigenen Python-Skript erstellen, das Sie nach Abschluss des Trainings ausführen müssen. Die Grundidee ist,
konstruieren Sie die Estimator
mit demselben model_dir
wie für das Training, dann
Anruf
tf.estimator.Estimator.export_saved_model
wie im vorherigen Abschnitt beschrieben.
Wie beim Training definieren Sie eine Bereitstellungseingabefunktion in Ihrem Python-Skript:
Achten Sie beim Erstellen des
Estimator
darauf, dass Sie den Parametermodel_dir
auf denselben Wert wie für das Training einstellen. Damit stehen demEstimator
Prüfpunkte aus dem zuvor gespeicherten Modell zur Verfügung.Verwenden Sie schließlich
Estimator
für den folgenden Anruf:tf.estimator.Estimator.export_saved_model
übergeben Sie den Pfad zu Ihrem Modell alsexport_dir_base
-Parameter. Den Namen der Bereitstellungseingabefunktion alsserving_input_fn
-Parameter.
TensorFlow-Tags und -Signaturen
Wenn Sie ein SavedModel aus
tf.keras
oder aus einem TensorFlow-
Schätzer
ist das exportierte Diagramm
standardmäßig bereit für die Bereitstellung.
In anderen Fällen, zum Beispiel beim Erstellen einer TensorFlow-Vorhersagegrafik, müssen Sie dafür die korrekten Werte für die Tags und Signaturen der Grafik angeben. TensorFlow stellt Konstanten für diese Tag- und Signaturwerte bereit, die für folgende Zwecke verwendet werden:
- Um eine Grafik im SavedModel zur Bereitstellung von Vorhersagen auszuwählen
- Als Anzeige dafür, dass Sie eine Vorhersagesignatur für die Vorhersagegrafik erstellen
Signaturen definieren die Eingaben und Ausgaben für die Grafik. Wenn Sie eine
für die Vorhersagegrafik verwenden möchten, müssen Sie eine gültige Signatur
konstant
als method_name
-Parameter in
build_signature_def
Für Vorhersagen ist die beste Wahl normalerweise PREDICT_METHOD_NAME
.
Mit einem Tag müssen Sie angeben, welche Grafik im SavedModel zur Bereitstellung von Vorhersagen verwendet wird. In add_meta_graph_and_variables
hinzufügen
tag_constants.SERVING
zu deiner tags
-Liste hinzufügen.
In diesem Beispiel sehen Sie, wie eine Vorhersagegrafik mit den richtigen Konstanten für Tags und Signaturen erstellt wird.
Nächste Schritte
- Bereitstellung eines exportierten Modells in AI Platform Prediction für den Abruf von Vorhersagen