Mit TensorFlow bietet Google den Entwicklern eine Python-freundliche Open-Source-Bibliothek für numerische Berechnungen, die maschinelles Lernen um ein Vielfaches schneller und vor allem einfacher machen kann. [...]
Maschinelles Lernen ist eine sehr komplexe Disziplin. Doch Modelle maschinellen Lernens zu implementieren, ist heute weit weniger schwierig als früher – dank gewisser Machine Learning Frameworks wie Googles TensorFlow, die den Prozess der Datenakquirierung, das Trainieren von Modellen, die Prognosen und die Entwicklung zukünftiger Ergebnisse stark vereinfachen.
Von Google Brain entwickelt, ist Tensor Flow eine Open-Source-Bibliothek für numerische Berechnungen und großangelegtes maschinelles Lernen. Es vereint die Vorgänge des maschinellen Lernens mit Modellen und Algorithmen des tieferen Lernens (aka neurolnale Netzwerke) und macht sie sich über eine gemeinsame Metapher zu Nutze. Dabei benutzt es Python, um eine geeignete Front-End-API zur Programmierung neuer Anwendungen mit dem Framework zu gewährleisten und führt diese Anwendungen dann in leistungsstarkem C++ aus.
TensorFlow kann tiefe neuronale Netzwerke zur handschriftlichen Ziffernklassifizierung, Bilderkennung, Worteinbettung, Sequenz-zu-Sequenz-Modelle maschineller Übersetzung, die Verarbeitung natürlicher Sprache und PDE (partielle Diefferenzialgleichungen) basierte Simulationen trainieren und betreiben. Zusätzlich unterstützt es Produktionsvorhersagen im großen Stil, wobei es die selben Modelle verwendet wie für das Training selbst.
So funktioniert TensorFlow
Mit TensorFlow können Entwickler Datenflussdiagramme erstellen, die beschreiben, wie sich Daten durch ein Diagramm oder eine Reihe von Verarbeitungsknoten bewegen. Jeder Knoten im Graphen stellt eine mathematische Operation dar, und jede Verbindung oder Kante zwischen den Knoten ist ein mehrdimensionales Datenarray oder „Tensor“.
TensorFlow bietet dem Programmierer all das in der Sprache Python. Python ist recht einfach zu lernen, es lässt sich leicht damit arbeiten und bietet praktische Möglichkeiten, um auszudrücken, wie High-Level-Abstraktionen miteinander kombiniert werden können. Während Knoten und Tensoren in TensorFlow Python-Objekte sind, funktionieren TensorFlow-Anwendungen selbst wie Python–Anwendungen.
Sie sehen gerade einen Platzhalterinhalt von YouTube. Um auf den eigentlichen Inhalt zuzugreifen, klicken Sie auf die Schaltfläche unten. Bitte beachten Sie, dass dabei Daten an Drittanbieter weitergegeben werden.
Der YouTube-Chanel Cognitive Class erklärt TensorFlow kurz und verständlich.
Die eigentlichen mathematischen Operationen werden jedoch nicht in Python ausgeführt: Die Sammlungen unterschiedlicher Transformationen, die über TensorFlow verfügbar sind, werden als leistungsstarke C++-Binärdateien geschrieben. Python lenkt nur den Datenverkehr zwischen den einzelnen Teilen und bietet High-Level Programmierabstraktionen, um sie miteinander zu verbinden.
TensorFlow-Anwendungen können auf fast jedem Gerät ausgeführt werden, was durchaus angenehm ist: auf einem lokalen Computer, einem Cluster in der Cloud, auf iOS- und Android-Geräten, CPUs oder GPUs. Wenn Sie die Google-eigene Cloud verwenden, können Sie TensorFlow auf Googles spezieller TensorFlow Processing Unit (TPU) „Silicon“ ausführen. Die daraus resultierenden Modelle von TensorFlow können wiederum auf fast jedem Gerät bereitgestellt werden.
Die Vorteile von TensorFlow
Der einzig große Vorteil, den TensorFlow zur Entwicklung von maschinellem Lernen bietet, ist Abstraktion. Statt sich mit den wesentlichen Details der Implementierung von Algorithmen aufzuhalten oder geeignete Wege finden zu müssen, um die die Ausgabe einer Funktion an die Eingabe einer anderen zu knüpfen, kann sich der Entwickler auf die Gesamtlogik der Anwendung konzentrieren. TensorFlow kümmert sich dann hinter den Kulissen um die Details.
TensorFlow bietet zusätzliche Annehmbarkeiten für Entwickler, die eine Einsicht in TensorFlow-Apps haben oder diese debuggen müssen. Mit dem fähigen Ausführungsmodus können Sie jede Diagrammoption getrennt und transparent bewerten bzw. ändern, anstatt den gesamten Graphen als ein einzelnes undurchsichtiges Objekt konstruieren und gleichzeitig noch bewerten zu müssen. Mit der TensorBoard-Visualisierungssuite können Sie die Funktionsweise von Diagrammen über ein interaktives, webbasiertes Dashboard prüfen und grafisch darstellen.
Und natürlich enthält TensorFlow viele Vorteile durch die Unterstützung durch Google, denn Google hat nicht nur die schnelle Entwicklung des Projekts gefördert, sondern auch viele wichtige Angebote rund um TensorFlow geschaffen, die die Bereitstellung erleichtern und einfacher zu nutzen sind: das oben erwähnte TPU Silikon für eine beschleunigte Leistung in der Google–Cloud, ein Online-Hub für den Austausch von Modellen, die mit dem Framework erstellt wurden, In-Browser- und Mobile-freundliche Verkörperungen des Frameworks und vieles mehr.
Einen Vorbehalt gibt es jedoch: Manche Details der TensorFlow-Implementierung machen es schwierig, für einige Trainingsaufgaben vollkommen deterministische Modell– Trainingsergebnisse zu erhalten. Manchmal unterscheidet sich ein Modell, das auf einem System trainiert wird, leicht von einem Modell, das auf einem anderen trainiert wurde, selbst dann, wenn es genau die gleichen Daten enthält. Die Gründe dafür sind schwierig zu erfassen – z.B. wie und wo Zufallszahlen gesetzt werden oder wie bestimmte nicht-deterministische Verhaltensweisen bei Verwendung von GPUs funktionieren. Es ist allerdings möglich, diese Probleme zu umgehen, und das TensorFlow-Team erwägt noch mehr Kontrollen, um den Determinismus in einem Workflow weiter zu beeinflussen.
TensorFlow und die Konkurrenz
TensorFlow konkurriert mit einer Vielzahl anderer Machine-Learning-Frameworks: PyTorch, CNTK und MXNet sind beispielsweise drei wichtige Frameworks, die zumeist die selben Bedürfnisse bedienen. Im Folgenden zeigen wir Ihnen, wie sie sich gegen TensorFlow abheben.
- PyTorch ist nicht nur mit Python gebaut worden, es weist außerdem viele weitere Ähnlichkeiten mit TensorFlos auf: Es enthält hardwarebeschleunigte Komponenten, ein hochgradig interaktives Entwicklungsmodell nach dem Motto „Design-As-You-Go“ und viele weitere nützliche Komponenten. PyTorch ist im Allgemeinen eine bessere Wahl für die schnellere Entwicklung von Projekten, die in kürzester Zeit ausgeführt werden müssen, doch TensorFlow setzt sich auf lange Sicht für größere Projekte und komplexere Arbeitsabläufe durch.
- CNTK, das „Cognitive Toolkit“ von Microsoft, nutzt wie TensorFlow eine Diagrammstruktur, um den Datenfluss sichtbar zu machen, konzentriert sich jedoch am meisten auf die Erstellung von tiefenlernenden, neuronalen Netzwerken. CNTK verarbeitet viele neuronale Netzwerkaufgaben schneller und verfügt über eine breitere Palette von APIs (Python, C++. C#, Java), doch ist es nicht so einfach zu erlernen oder zu implementieren wie TensorFlow.
- Apache MXNet, das von Amazon als führendes Deep-Learning-Framwork für AWS eingeführt wurde, kann fast linear über mehrere GPUs und mehrere Maschinen gleichzeitig skaliert werden. Es ebenfalls eine breite Palette von Sprach-APIs wie Python, C++. Scala, R, JavaScript, Julia, Perl und Go, wobei seine nativen APIs in der Verwendung nicht so angenehm sind wie TensorFlow.
Serdar Yegulalp* ist Senior Writer bei InfoWorld.
Be the first to comment