Machine Learning: TensorFlow bekommt eine neue Runtime
Die TensorFlow RunTime ist auf die direkte Codeausführung optimiert, die seit TensorFlow 2 als Standard gilt.
- Rainald Menge-Sonnentag
Google hat eine neue Laufzeitumgebung für TensorFlow auf GitHub bereitgestellt. Die TensorFlow RunTime (TFRT) trägt den veränderten Voraussetzungen an das Machine-Learning-Framework (ML) seit dessen erster Veröffentlichung vor viereinhalb Jahren Rechnung. Das gilt zum einen für die Unterschiede bei der zugrundeliegenden Hardware und zum anderen für die Art, wie TensorFlow die Modelle verarbeitet.
Die ursprüngliche Laufzeitumgebung war für das Verarbeiten von Graphen optimiert. Anfang 2018 hat das ML-Framework in Version 1.5 als Alternative dazu die sogenannte Eager Execution zum direkten Verarbeiten von in Python verfassten TensorFlow-Befehlen eingeführt. Seit Version 2 setzt TensorFlow standardmäßig auf diese Form der Ausführung.
Der Wandel von Graph Zahl
Die TensorFlow-APIs schicken die in der Eager Execution anfallenden Befehle direkt an die TFRT. Für die Graph Execution findet vor der Übergabe an die Laufzeitumgebung eine Umwandlung in Binaries statt, die auf die Zielplattform optimiert sind.
Zum Übersetzen in das TFRT Binary Executable Format (BEF) kommt MLIR zum Einsatz, bei der die ersten beiden Buchstaben ausnahmsweise nicht für "Machine Learning" stehen: Die Multi-Level Intermediate Representation ist ein hybrider Zwischencode für unterschiedliche Anforderungen wie eben Graphen in TensorFlow und ähnlichen Frameworks. TFRT nutzt das Typsystem von MLIR, um Tensor-spezfisiche Beschränkungen zu umgehen und stattdessen beliebige C++-Typen für die Ausführung verwenden zu können. Außerdem bietet die Runtime eine direkte Integration mit der MLIR-Compiler-Infrastruktur.
Feintuning unter der Haube
Bei der nebenläufigen Verarbeitung von Befehlen zielt die neue Runtime auf einen möglichst geringen Overhead für die Synchronisierung der Prozesse. API-Aufrufe in der Eager Execution erfolgen asynchron. TFRT ist auf eine modulare und erweiterbare Architektur ausgelegt.
Die Runtime bietet eigene Kernels für die unterschiedlichen Hardwarekomponenten wie CPU, GPU, Tensor Processing Unit (TPU) und für Mobile. Sie arbeiten unabhängig von der Host-Runtime, die für die zentrale Verteilung verantwortlich ist.
Schrittweise Integration
Das TensorFlow-Team will im Lauf des Jahres TFRT in den Stack des ML-Frameworks integrieren. Dabei sieht es im ersten Schritt ein Opt-in-Modell vor, um die Performance zu optimieren und auftretende Probleme zu beheben. Anschließend soll die neue Runtime standardmäßig aktiviert sein.
Weitere Details zu TFRT lassen sich dem TensorFlow-Blog entnehmen. Für das Projekt existiert zwar ein Repository auf GitHub, aber die Mitarbeit ist derzeit nur begrenzt möglich. (rme)