TensorFlow

Darum geht's beim führenden KI-Framework

26.02.2020
Von 
Martin Heller schreibt als freier Autor für die CW-Schwesterpublikation InfoWorld.
An TensorFlow kommt niemand vorbei, der sich mit Machine Learning und Deep Learning beschäftigt. Wir stellen das Open-Source-Framework und seine Komponenten vor.

TensorFlow ist ein von Google entwickeltes Framework für Machine- und Deep-Learning, das Entwicklern als Open-Source-Lösung frei zur Verfügung steht. Geboten ist ein breit gefächertes Ökosystem an Tools, Bibliotheken und Community-Ressourcen für das Entwickeln und Trainieren von KI-Anwendungen. Die Spezialität von TensorFlow liegt auf Deep-Learning-Anwendungen, unter anderem in den Bereichen semantischer Textanalyse und Bilderkennung.

TensorFlow wird von der Open Source Community weiterentwickelt, wobei Google die Finger drauf hat, indem das Unternehmen die GitHub-Prozesse sowie Anfragen managt. Interessant für Entwickler ist die große Bibliothek an vortrainierten Modellen, darunter etwa ResNet für die Erkennung von Objekten in Bildern oder BERT für das Erkennen gesprochener Sprache. (siehe auch: PyTorch - Alternative zu TensorFlow?)

Googles TensorFlow-Version für Firmen

Im Herbst 2019 hat Google TensorFlow Enterprise vorgestellt, einen auf dem hauseigenen Cloud-Angebot aufsetzenden Dienst für maschinelles Lernen, der ausreichend Support, Performance und Managed Services für Unternehmen mitbringen soll. Basierend auf dem TensorFlow-Framework bietet der Service laut Google Deep-Learning-VMs, Deep-Learning-Container sowie KI-Plattform-Training und -Prediction.

Der Dienst soll Entwicklern helfen, schnell skalierbare und möglichst fehlerfreie Machine- und Deep-Learning-Modelle zu schreiben, um so zu besonders zuverlässigen KI-Anwendungen auf Enterprise-Level zu gelangen. Für ausreichende Rechenpower sollen Nvidia-GPUs oder die hauseigenen Server mit TensorFlow Processing Units (TPUs) sorgen.

Die Bestandteile von TensorFlow 2.0

Als aktuelles TensorFlow-Release steht Entwicklern heute die finale Version 2.0 zur Verfügung. Sie enthält vier zentrale Bestandteile:

  • den TensorFlow Core - eine Open-Source-Bibliothek für das Entwickeln und Trainieren von Machine-Learning-Modellen,

  • TensorFlow.js - eine JavaScript-Library, um Modelle im Browser und auf Node.js zu trainieren und bereitzustellen,

  • TensorFlow Lite - eine leichtgewichtige Bibliothek, mit der sich Modelle auf mobilen Endgeräten und Embedded Systems bereitstellen lassen und

  • TensorFlow Extended - eine Plattform für das Vorbereiten von Daten und das Trainieren, Validieren und Deployen von Modellen in Produktivumgebungen.

Entwickler, die bereits TensorFlow-1.x-Projekte betreiben, erhalten mit der Migrationsanleitung und dem Upgrade-Guide die Möglichkeit, auf die neue Version umzurüsten. Zwar lässt sich bestehender 1.x-Code auch unverändert in TensorFlow 2.0 ausführen, allerdings muss dabei auf die Verbesserungen des neuen Frameworks verzichtet werden.

TensorFlow 2.0 ist insgesamt einfacher und aufgeräumter als seine Vorgängerversionen. Das quelloffene, in Python geschriebene Keras-API hat für das Entwickeln und Trainieren von Machine-Learning-Modellen eine Schlüsselrolle inne. Es reduziert die Menge des zu schreibenden Codes erheblich: Entwickler können neuronale Netzwerke mit Keras bauen, indem sie pro Layer nur noch eine Codezeile nutzen oder sogar weniger, wenn sie die Vorteile von Loop-Konstruktionen nutzen. Als Open-Source-Produkt ist Keras auch für andere Backends wie MXNet (mit Gluon), PyTorch, Scikit-learn und Spark MLlib einsetzbar. Bei den beiden letzteren handelt es sich eher um Machine-Learning-Frameworks, für Deep Learning sind sie weniger geeignet. Generell müssen sich User aber gar nicht auf ein Framework festlegen, sie können zum Beispiel Daten mit Scikit-learn aufbereiten und ein Modell mit TensorFlow trainieren.

TensorFlow kommt in zahlreichen Google-Produkten zum Einsatz. Es bietet verschiedene Abstraktionslevel, um Modelle zu bauen und zu trainieren. Mit Version 2.0 wird das schon länger angebotene Eager Execution zum Standard. Es handelt sich um eine inzwischen per Default eingestellte Funktion, die dafür sorgt, dass Operationen sofort nach einem Python-Aufruf ausgeführt werden und nicht erst in einer späteren Session, nachdem zuvor Nodes und Edges den Graphen hinzugefügt wurden.

TensorFlow.js - entwickeln in JavaScript

TensorFlow.js ist eine Bibliothek für das Entwickeln und Trainieren von Machine-Learning-Modellen in JavaScript sowie deren Bereitstellung in einem Browser oder auf Node.js. Mit ml5.js gibt es auch eine High-Level-Bibliothek, die auf TensorFlow.js basiert und die Komplexität von Tensoren und Optimierern verbirgt.

TensorFlow.js unterstützt im Browser sowohl mobile Endgeräte als auch Desktops. Wenn der Browser WebGL-Shader-APIs unterstützt, kann TensorFlow.js diese verwenden und die Vorteile einer GPU nutzen. Im Vergleich zu einem CPU-Backend kann das eine bis zu 100-fache Beschleunigung bringen. Auf Node.js kann TensorFlow.js eine installierte Version von TensorFlow als Backend verwenden oder das zugrundeliegende CPU-Backend nutzen. Dabei handelt es sich um reines JavaScript, es ist nicht sonderlich gut parallelisierbar.

Anwender können offizielle TensorFlow.js-Modelle ausführen, Python-Modelle konvertieren, Transfer Learning für die Anpassung von Modellen an die eigenen Daten nutzen und Modelle direkt in JavaScript erstellen und trainieren.

TensorFlow Lite - Modelle für mobile Endgeräte

TensorFlow Lite ist ein Deep Learning Framework, mit dem sich Modelle auf mobilen Endgeräten ausführen lassen - um beispielsweise Vorhersagen auf der Basis neu eintreffender Daten zu ermöglichen (Inferenz = Schlussfolgerung). Derzeit werden Modelle für iOS, ARM64 und Raspberry Pi erstellt. Die beiden Hauptkomponenten von TensorFlow Lite sind ein Interpreter und ein Konverter. Der Interpreter führt speziell optimierte Modelle auf verschiedenen Hardwaretypen aus. Der Konverter überträgt TensorFlow-Modelle in ein effizientes Format, damit der Interpreter sie nutzen kann. Er kann Optimierungen laufen lassen, um die Performance zu verbessern.

Es gibt vortrainierte Modelle für die Klassifizierung von Bildern, das Erkennen von Objekten, das Generieren intelligenter Antworten, für Posenschätzung und Segmentierung. Außerdem existieren Beispielanwendungen für Gestenerkennung, Bildklassifizierung sowie Objekt- und Spracherkennung.

TensorFlow Extended - Plattform für Profis

TensorFlow Extended ist eine End-to-End-Plattform für das Bereitstellen von Machine-Learning-Pipelines für produktive Umgebungen. Sie kommt dann zum Einsatz, wenn Modelle aus dem Trainings- und Forschungsstadium in skalierbare, hochperformante Machine-Learning-Szenarien überführt werden sollen.

Ein Element ist die TensorFlow Data Validation. Sie hilft Entwicklern zu verstehen und zu kontrollieren, wie sich ihre ML-Daten unter unterschiedlichen Skalenbedingungen verhalten. TensorFlow Transform hilft dabei, Daten in ein geeignetes Format zu überführen und so aufzubereiten, dass sie für ML-Aufgaben herangezogen werden können.

Damit Entwickler die Leistung ihrer Modelle vorab berechnen können und ein besseres Verständnis ihrer Datenmodelle erlangen, steht ihnen TensorFlow Model Analysis zur Verfügung. Sie können damit herausfinden, ob gesetzte Qualitätsmaßstäbe erreicht und alle relevanten Datenelemente sich so verhalten wie gewünscht. TensorFlow Serving schließlich hilft, dass viele Modelle gleichzeitig mit hohem Durchsatz die Power von Hardwarebeschleunigern (GPUs, TPUs) nutzen können und keine Latenzzeiten auftreten. Bei Google verarbeitet TensorFlow Serving zehn Millionen Inferenzen pro Sekunde.