TensorFlow

Darum geht's beim führenden KI-Framework

29.10.2019
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 eine von Google entwickelte Machine- und Deep-Learning-Plattform, die Entwicklern als Open-Source-Lösung frei zur Verfügung steht. Geboten wird ein breit gefächertes Ökosystem an Tools, Bibliotheken und Community-Ressourcen für das Entwickeln und Trainieren von Machine-Learning- und Deep-Learning-Anwendungen.

Als aktuelles Release steht Entwicklern nun die finale Version von TensorFlow 2.0 zur Verfügung. Es 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.