Die optimierte TensorFlow-Laufzeit optimiert die Modelle für eine schnellere und kostengünstigere Inferenz als die auf Open Source basierenden vordefinierten TensorFlow Serving-Container. Die optimierte TensorFlow-Laufzeit erreicht dies durch die Nutzung von Googles proprietären und Open-Source-Technologien.
Je größer das Modell für maschinelles Lernen (ML-Modell) ist, desto höher sind die Kosten für die Bereitstellung. Mit der optimierten TensorFlow-Laufzeit können die Kosten für die Bereitstellung Ihres ML-Modells und die Inferenzgeschwindigkeit im Vergleich zur Verwendung einer Open-Source-basierten TensorFlow-Laufzeit geringer sein. Wenn Sie die optimierte TensorFlow-Laufzeit bei der Verwendung von Vertex AI Prediction nutzen möchten, müssen Sie keinen Code ändern. Stattdessen wählen Sie ein Bereitstellungscontainer-Image aus, das es verwendet.
Die optimierte TensorFlow-Laufzeit ist abwärtskompatibel mit vordefinierten TensorFlow Serving-Containern. Wenn Sie TensorFlow-Modelle mit einem vordefinierten Container ausführen, können Sie mit minimalem Aufwand zu einem optimierten TensorFlow-Laufzeitcontainer wechseln.
Während sich die Leistung des Modells verbessert, wenn Sie die optimierte TensorFlow-Laufzeit verwenden, sollte die Leistungsauswirkung für die verschiedenen Modelltypen variieren.
Optimierte TensorFlow-Laufzeitübersicht
Die optimierte TensorFlow-Laufzeit verwendet Modelloptimierungen und neue proprietäre Google-Technologien, um die Geschwindigkeit zu verbessern und die Inferenzkosten im Vergleich zu auf Open Source basierenden vordefinierten TensorFlow Serving-Containern zu senken.
Die Optimierung tritt auf, wenn Vertex AI ein Modell hochlädt, bevor es ausgeführt wird. Nachdem Sie ein Modell auf einem Endpunkt bereitgestellt haben, wird das Optimierungslog dem Vorhersagelog hinzugefügt. Sie können diese Logs verwenden, um Probleme zu beheben, die während der Optimierung auftreten können.
In den folgenden Themen werden Optimierungsverbesserungen der optimierten TensorFlow-Laufzeit beschrieben.
Modelloptimierungen
Die folgenden drei Modelloptimierungen sind in der optimierten TensorFlow-Laufzeit enthalten.
Modell-XLA-Vorkompilierung
Bei einem TensorFlow-Modell werden alle Vorgänge einzeln ausgeführt. Der Aufwand für die Ausführung einzelner Vorgänge ist gering. Die optimierte TensorFlow-Laufzeit kann einen Teil dieses Overheads vermeiden, wenn sie XLA verwendet, um den gesamten oder einen Teil des TensorFlow-Graphen in größere Kernel vorzukompilieren.
Die XLA-Vorkompilierung des Modells ist optional und standardmäßig deaktiviert. Informationen zum Aktivieren der Modell-ASL-Vorkompilierung während einer Bereitstellung finden Sie unter Modell-XLA-Vorkompilierung aktivieren.
Modellkomprimierungsoptimierungen
Die optimierte TensorFlow-Laufzeit kann einige Modelle schneller ausführen, mit einer geringen Auswirkung auf die Modellgenauigkeit, was eine Optimierung der Modellkompression ermöglicht. Wenn die Optimierung der Modellkomprimierung aktiviert ist, verwendet die optimierte TensorFlow-Laufzeit Techniken wie Quantisierung und Gewichtungsbereinigung, um Modelle schneller auszuführen.
Das Feature zur Modellkomprimierung ist standardmäßig deaktiviert. Informationen zum Aktivieren der Optimierung der Modellkomprimierung während einer Bereitstellung finden Sie unter Optimierung der Modellkomprimierung aktivieren.
Verbesserte tabellarische Modellleistung für GPUs
Tabellarische TensorFlow-Modelle werden normalerweise auf CPUs bereitgestellt, da sie Beschleuniger nicht effektiv nutzen können. Die optimierte TensorFlow-Laufzeit adressiert dieses Problem durch die Ausführung rechenintensive Teile des Modells auf GPUs. Der Rest des Modells wird auf CPUs ausgeführt. Dazu wird die Kommunikation zwischen Host und Beschleuniger minimiert. Durch das Ausführen der teuren Teile des Modells auf GPUs und der Rest auf CPUs wird die Bereitstellung von Tabellenmodellen schneller und kostengünstiger.
Die optimierte TensorFlow-Laufzeit optimiert die Bereitstellung der folgenden tabellarischen Modelltypen.
Automatische Modelloptimierung für Cloud TPU
Die vordefinierten optimierten TensorFlow-Laufzeitcontainer, die Cloud TPUs unterstützen, können Ihre Modelle automatisch für die Ausführung auf TPUs partitionieren und optimieren. Weitere Informationen finden Sie unter In Cloud TPU bereitstellen.
Verwendung der TensorFlow-Laufzeit (TFRT)
Die optimierte TensorFlow-Laufzeit kann die TensorFlow-Laufzeit (TFRT) verwenden. Der TFRT nutzt effizient Multithreading-Host-CPUs, unterstützt asynchrone Programmiermodelle und ist für Low-Level-Effizienz optimiert.
Die TFRT-CPU ist in allen optimierten TensorFlow-Laufzeit-CPU-Container-Images außer Version 2.8 aktiviert. Setzen Sie das Flag use_tfrt
auf false
, um die TFRT-CPU zu deaktivieren.
Die TFRT-GPU ist für Versionen 2.13 und höher von nächtlich optimierten TensorFlow-Laufzeit-GPU-Container-Images und stabilen optimierten TensorFlow-Laufzeit-GPU-Container-Images verfügbar. Um die TFRT-GPU zu aktivieren, legen Sie die Flags use_tfrt
und allow_precompilation
auf true
fest.
TFRT auf einem GPU-Container-Image minimiert den Datenübertragungsaufwand zwischen der Host-CPU und der GPU. Nachdem Sie TFRT aktiviert haben, funktioniert es mit der XLA-Kompilierung. Da die XLA-Vorkompilierung aktiviert ist, kann es bei der ersten Anfrage zu einigen Nebeneffekten kommen, wie z. B. eine höhere Latenz.
Weitere Informationen finden Sie unter Modell-XLA-Vorkompilierung aktivieren.
Verwendung der Google-Laufzeit
Da die optimierte TensorFlow-Laufzeit mit dem internen Google-Stack erstellt wird, kann sie die Ausführung auf der proprietären Laufzeitumgebung von Google nutzen.
Optimierte TensorFlow-Laufzeitcontainer-Images
Vertex AI Prediction bietet zwei Arten von optimierten TensorFlow-Laufzeitcontainer-Images: stabile und nächtliche Arbeitslasten.
Stabile Container-Images
Stabile TensorFlow-Laufzeitcontainer sind an eine bestimmte TensorFlow-Version gebunden, wie die auf Open Source basierenden vordefinierten TensorFlow Serving-Container. Optimierte TensorFlow-Laufzeitcontainer, die an eine bestimmte Version gebunden sind, werden für dieselbe Dauer wie der Open-Source-Build verwaltet, der an dieselbe Version gebunden ist. Die optimierten TensorFlow-Laufzeit-Builds haben dieselben Attribute wie die Open-Source-TensorFlow-Builds, aber mit einer schnelleren Inferenz.
Builds sind abwärtskompatibel. Das bedeutet, dass Sie Modelle, die mit älteren TensorFlow-Versionen trainiert wurden, in einem neueren Container ausführen können. Neuere Container sollten eine bessere Leistung erzielen als ältere. In seltenen Fällen funktioniert ein Modell, das mit einer älteren TensorFlow-Version trainiert wurde, möglicherweise nicht mit einem aktuelleren Container.
Nacht-Container-Images
Nächtlich optimierte TensorFlow-Laufzeit-Builds enthalten die neuesten Verbesserungen und Optimierungen, sind aber möglicherweise nicht so zuverlässig wie stabile Builds. Sie werden hauptsächlich für experimentelle Zwecke verwendet. Nightly Build-Namen enthalten das Label nightly
. Im Gegensatz zu den stabilen Container-Images sind nächtliche Container nicht durch das Service Level Agreement (SLA) für Vertex AI abgedeckt.
Verfügbare Container-Images
Die folgenden nächtlichen und stabilen optimierten TensorFlow-Docker-Container-Images sind verfügbar.
ML-Framework-Version | Unterstützte Beschleuniger (und gegebenenfalls CUDA-Version) | Ende des Patch- und Supportdatums | Ende der Verfügbarkeit | Unterstützte Bilder |
---|---|---|---|---|
nächtlich | Nur CPU | Nicht zutreffend | Nicht zutreffend |
|
nächtlich | GPU (CUDA 12.x) | Nicht zutreffend | Nicht zutreffend |
|
nächtlich | Cloud TPU | Nicht zutreffend | Nicht zutreffend |
|
2,16 | Nur CPU | 26. Apr. 2024 | 26. Apr. 2025 |
|
2,16 | GPU (CUDA 12.x) | 26. Apr. 2024 | 26. Apr. 2025 |
|
2,16 | Cloud TPU | 26. Apr. 2024 | 26. Apr. 2025 |
|
2.15 | Nur CPU | 15. Aug. 2024 | 15. Aug. 2025 |
|
2.15 | GPU (CUDA 12.x) | 15. Aug. 2024 | 15. Aug. 2025 |
|
2.15 | Cloud TPU | 15. Aug. 2024 | 15. Aug. 2025 |
|
2.14 | Nur CPU | 15. Aug. 2024 | 15. Aug. 2025 |
|
2.14 | GPU (CUDA 12.x) | 15. Aug. 2024 | 15. Aug. 2025 |
|
2,13 | Nur CPU | 15. Aug. 2024 | 15. Aug. 2025 |
|
2,13 | GPU (CUDA 11.x) | 15. Aug. 2024 | 15. Aug. 2025 |
|
2,12 | Nur CPU | 15. Mai 2024 | 15. Mai 2025 |
|
2,12 | GPU (CUDA 11.x) | 15. Mai 2024 | 15. Mai 2025 |
|
2.11 | Nur CPU | 15. Nov. 2023 | 15. Nov. 2024 |
|
2.11 | GPU (CUDA 11.x) | 15. Nov. 2023 | 15. Nov. 2024 |
|
2.10 | Nur CPU | 15. Nov. 2023 | 15. Nov. 2024 |
|
2.10 | GPU (CUDA 11.x) | 15. Nov. 2023 | 15. Nov. 2024 |
|
2,9 | Nur CPU | 15. Nov. 2023 | 15. Nov. 2024 |
|
2,9 | GPU (CUDA 11.x) | 15. Nov. 2023 | 15. Nov. 2024 |
|
2,8 | Nur CPU | 15. Nov. 2023 | 15. Nov. 2024 |
|
2,8 | GPU (CUDA 11.x) | 15. Nov. 2023 | 15. Nov. 2024 |
|
Optimierte TensorFlow-Laufzeit mit einem privaten Endpunkt verwenden
Die Verwendung privater Endpunkte für die Bereitstellung von Onlinevorhersagen mit Vertex AI bietet eine sichere Verbindung mit niedriger Latenz zum Vertex AI-Onlinevorhersagedienst, der schneller als die Verwendung öffentlicher Endpunkte ist. Die optimierte TensorFlow-Laufzeit stellt wahrscheinlich latenzempfindliche Modelle bereit, sodass Sie sie mit privaten Endpunkten verwenden können. Weitere Informationen finden Sie unter Private Endpunkte für Onlinevorhersagen verwenden.
Modell mit der optimierten TensorFlow-Laufzeit bereitstellen
Der Vorgang zum Bereitstellen eines Modells für die Vorhersage mithilfe der optimierten TensorFlow-Laufzeit ist fast identisch mit dem Vorgang zum Bereitstellen von Modellen mit auf Open Source basierenden vordefinierten TensorFlow Serving-Containern. Der einzige Unterschied besteht darin, dass Sie beim Erstellen des Modells ein Container-Image angeben, das die optimierte TensorFlow-Laufzeit verwendet, und Sie können die zuvor in diesem Dokument beschriebenen Optimierungs-Flags aktivieren. Wenn Sie beispielsweise Ihr Modell mit dem us-docker.pkg.dev/vertex-ai/prediction/tf2-cpu.2-8:latest
-Container bereitgestellt haben, können Sie dasselbe Modell mit der optimierten TensorFlow-Laufzeit mithilfe des Containers us-docker.pkg.dev/vertex-ai-restricted/prediction/tf_opt-cpu.2-8:latest
bereitstellen.
Im folgenden Codebeispiel wird gezeigt, wie Sie ein Modell mit dem optimierten TensorFlow-Laufzeitcontainer us-docker.pkg.dev/vertex-ai-restricted/prediction/tf_opt-cpu.nightly:latest
erstellen. Zum Bereitstellen dieses Modells verwenden Sie denselben Prozess, den Sie zum Bereitstellen eines Modells mit anderen vordefinierten TensorFlow Serving-Containern verwenden.
Weitere Informationen zu dem in diesem Beispiel verwendeten ModelServiceClient
finden Sie unter Class ModelServiceClient.
Weitere Informationen zum Bereitstellen von Modellen mit Vertex AI finden Sie unter Modell mit der Vertex AI API bereitstellen.
Weitere Informationen zu den Einstellungen allow_precompilation
und allow_compression
finden Sie unter Modelloptimierungen, die weiter oben in diesem Dokument beschrieben wurden.
from google.cloud.aiplatform import gapic as aip PROJECT_ID = PROJECT_ID REGION = LOCATION API_ENDPOINT = f"{REGION}-aiplatform.googleapis.com" PARENT = f"projects/{PROJECT_ID}/locations/{REGION}" client_options = {"api_endpoint": API_ENDPOINT} model_service_client = aip.ModelServiceClient(client_options=client_options) tf_opt_model_dict = { "display_name": "DISPLAY_NAME", "metadata_schema_uri": "", "artifact_uri": "MODEL_URI", "container_spec": { "image_uri": "us-docker.pkg.dev/vertex-ai-restricted/prediction/tf_opt-cpu.nightly:latest", "args": [ # The optimized TensorFlow runtime includes the following # options that can be set here. # "--allow_precompilation=true" - enable XLA precompilation # "--allow_compression=true" - enable # model compression optimization ], }, } tf_opt_model = model_service_client.upload_model( parent=PARENT, model=tf_opt_model_dict).result(timeout=180).model
Flags für die Modelloptimierung
Wenn Sie ein Modell mit der optimierten TensorFlow-Laufzeit bereitstellen, können Sie zwei Funktionen aktivieren, die die Bereitstellung von TensorFlow-Modellen weiter optimieren.
Sie können die Modell-XLA-Vorkompilierung und die Optimierung der Modellkomprimierung gleichzeitig aktivieren. In den folgenden Abschnitten wird beschrieben, wie Sie diese Optionen während der Bereitstellung mithilfe von Flags aktivieren.
Modell-XLA-Vorkompilierung aktivieren
Zur Konfiguration der optimierten TensorFlow-Laufzeit zum Vorkompilieren von Modellen setzen Sie das Flag allow_precompilation
auf true
. Die Modell-XLA-Vorkompilierung funktioniert für verschiedene Arten von Modellen und verbessert in den meisten Fällen die Leistung. Die XLA-Vorkompilierung funktioniert am besten für Anfragen mit großen Batchgrößen.
Die Modell-XLA-Vorkompilierung erfolgt, wenn die erste Anfrage mit der neuen Batchgröße ankommt. Damit die Laufzeit vor der ersten Anfrage initialisiert wird, können Sie eine Datei mit Aufwärmanfragen einfügen. Weitere Informationen finden Sie in der TensorFlow-Dokumentation unter Aufwärmphase von SavedModel.
Die XLA-Vorkompilierung dauert je nach Komplexität des Modells zwischen mehreren Sekunden und mehreren Minuten. Wenn Sie die Modell-XLA-Vorkompilierung verwenden, sollten Sie Folgendes berücksichtigen.
Wenn Sie eine Aufwärmdatei verwenden, versuchen Sie, Anfragen mit Batchgrößen aufzunehmen, die die Batchgrößen darstellen, die Ihr Modell erhalten soll. Das Bereitstellen einer großen Anzahl von Anfragen in der Aufwärmdatei verlangsamt den Start Ihres Modellservers.
Wenn Sie erwarten, dass Ihr Modell Anfragen mit unterschiedlichen Batchgrößen empfängt, können Sie die serverseitige Batchverarbeitung mit einer Reihe von festen Werten für
allow_batch_sizes
aktivieren. Weitere Informationen zum Aktivieren von serverseitigenBatching finden Sie in der TensorFlow-Dokumentation unter Serverseitige Batchverarbeitung von Anfragen für TensorFlow aktivieren.
Da die XLA-Vorkompilierung einen zusätzlichen Speicheraufwand verursacht, können einige große Modelle mit einem Out of memory-Fehler auf der GPU fehlschlagen.
Es wird empfohlen, die XLA-Vorkompilierung Ihres Modells zu testen, bevor Sie dieses Feature in der Produktion aktivieren.
Optimierung der Modellkomprimierung aktivieren
Wenn Sie die optimierte TensorFlow-Laufzeit für die Verwendung der Optimierung der Modellkomprimierung konfigurieren möchten, setzen Sie das Flag allow_compression
auf true
. Testen Sie, wie sich das Aktivieren dieses Flags auf die Genauigkeit Ihres Modells auswirkt, und dann ermitteln Sie, ob Sie es in der Produktion aktivieren möchten.
Optimierungen deaktivieren
Wenn Sie die optimierte TensorFlow-Laufzeit für die Ausführung von Modellen ohne Optimierung konfigurieren möchten, legen Sie das Flag disable_optimizer
auf true
fest.
Optimierte TensorFlow-Laufzeitlimits
Für die optimierte TensorFlow-Laufzeit gelten die folgenden Einschränkungen:
- Die optimierte TensorFlow-Laufzeit ist nicht mit älteren NVIDIA-GPUs wie Tesla P4 und Tesla P100 kompatibel.
- Die optimierte TensorFlow-Laufzeit unterstützt derzeit nur die Sampled Shapley-Erklärbarkeit.
Preise
Das Bereitstellen von Modellen mit der optimierten TensorFlow-Laufzeit umfasst keine zusätzlichen Gebühren. Die Kosten entsprechen anderen Vorhersagebereitstellungen, bei denen Sie die Anzahl der verwendeten VMs und Beschleuniger berechnen. Weitere Informationen finden Sie unter Vertex AI-Preise.