TensorFlow ist eine Python-freundliche Open-Source-Library für numerische Berechnungen, die maschinelles Lernen und die Entwicklung neuronaler Netzwerke schneller und einfacher macht. [...]
Maschinelles Lernen ist eine komplexe Disziplin, aber die Implementierung von maschinellen Lernmodellen ist weit weniger entmutigend als früher, dank maschineller Lern-Frameworks wie TensorFlow von Google, die den Prozess der Datenerfassung, des Trainings von Modellen, der Bereitstellung von Vorhersagen und der Verfeinerung zukünftiger Ergebnisse erleichtern.
TensorFlow ist eine Open-Source-Library für numerische Berechnungen und maschinelles Lernen in großem Maßstab, die vom Google Brain-Team entwickelt und 2015 erstmals der Öffentlichkeit zugänglich gemacht wurde. TensorFlow bündelt eine Reihe von Machine-Learning- und Deep-Learning-Modellen und -Algorithmen (auch bekannt als neuronale Netze) und macht sie durch gemeinsame programmatische Metaphern nutzbar. Es verwendet Python oder JavaScript, um eine bequeme Front-End-API für die Erstellung von Anwendungen bereitzustellen, während diese Anwendungen in leistungsstarkem C++ ausgeführt werden.
TensorFlow, das mit Frameworks wie PyTorch und Apache MXNet konkurriert, kann tiefe neuronale Netze für die Klassifizierung handgeschriebener Ziffern, Bilderkennung, Worteinbettungen, rekurrente neuronale Netze, Sequenz-zu-Sequenz-Modelle für die maschinelle Übersetzung, die Verarbeitung natürlicher Sprache und PDE-Simulationen (partielle Differentialgleichungen) trainieren und ausführen. Und das Beste ist, dass TensorFlow die Produktionsvorhersage in großem Umfang unterstützt, wobei dieselben Modelle für das Training verwendet werden.
TensorFlow hat auch eine breite Bibliothek an vortrainierten Modellen, die in Ihren eigenen Projekten verwendet werden können. Sie können auch Code aus dem TensorFlow Model Garden als Beispiele für Best Practices für das Training Ihrer eigenen Modelle verwenden.
So funktioniert TensorFlow
Mit TensorFlow können Entwickler Datenflussgraphen erstellen – Strukturen, die beschreiben, wie sich Daten durch einen Graphen oder eine Reihe von verarbeitenden Nodes bewegen. Jeder Node im Graphen repräsentiert eine mathematische Operation, und jede Verbindung oder Kante zwischen Nodes ist ein mehrdimensionales Datenarray oder ein Tensor.
TensorFlow-Anwendungen können auf fast jedem geeigneten Objekt ausgeführt werden: einer lokalen Maschine, einem Cluster in der Cloud, iOS- und Android-Geräten, CPUs oder GPUs. Wenn Sie Googles eigene Cloud nutzen, können Sie TensorFlow auf Googles benutzerdefiniertem TensorFlow Processing Unit (TPU) Silizium zur weiteren Beschleunigung ausführen. Die von TensorFlow erstellten Modelle können jedoch auf fast jedem Gerät eingesetzt werden, auf dem sie für Vorhersagen verwendet werden.
TensorFlow 2.0, das im Oktober 2019 veröffentlicht wurde, hat das Framework auf der Grundlage von Nutzerfeedback in vielerlei Hinsicht überarbeitet, um die Arbeit damit zu erleichtern (zum Beispiel durch die Verwendung der relativ einfachen Keras-API für das Modelltraining) und die Leistung zu erhöhen. Dezentralisiertes Training ist dank einer neuen API einfacher auszuführen, und die Unterstützung von TensorFlow Lite macht es möglich, Modelle auf einer größeren Anzahl von Plattformen einzusetzen. Allerdings muss Code, der für frühere Versionen von TensorFlow geschrieben wurde, umgeschrieben werden – manchmal nur geringfügig, manchmal erheblich – um den maximalen Nutzen aus den neuen TensorFlow 2.0 Features zu ziehen.
Ein trainiertes Modell kann verwendet werden, um Vorhersagen als Dienst über einen Docker-Container mit REST- oder gRPC-APIs zu liefern. Für fortgeschrittenere Serving-Szenarien können sie auch Kubernetes verwenden.
TensorFlow mit Python verwenden
TensorFlow bietet dem Programmierer all diese Möglichkeiten mit Hilfe der Sprache Python. Python ist einfach zu erlernen und zu verwenden und bietet bequeme Wege, um auszudrücken, wie High-Level-Abstraktionen miteinander verbunden werden können. TensorFlow wird von den Python-Versionen 3.7 bis 3.10 unterstützt, und während es auf früheren Python-Versionen funktionieren kann, ist dies nicht garantiert.
Nodes und Tensoren in TensorFlow sind Python-Objekte, und TensorFlow-Anwendungen sind ihrerseits Python-Anwendungen. Die eigentlichen mathematischen Operationen werden jedoch nicht in Python durchgeführt. Die durch TensorFlow verfügbaren Transformations-Libraries sind als leistungsstarke C++-Binärprogramme geschrieben. Python leitet nur den Verkehr zwischen den Teilen und bietet High-Level-Programmierabstraktionen, um sie miteinander zu verbinden.
Die Arbeit auf hoher Ebene in TensorFlow – das Erstellen von Nodes und Schichten und deren Verknüpfung – verwendet die Keras-Library. Die Keras-API ist sehr einfach; ein grundlegendes Modell mit drei Schichten kann in weniger als 10 Zeilen Code definiert werden, und der Trainingscode für dasselbe benötigt nur ein paar weitere Zeilen Code. Wenn Sie jedoch die Haube öffnen und feinere Arbeiten durchführen möchten, wie z. B. das Schreiben einer eigenen Trainingsschleife, steht Ihnen diese Möglichkeit ebenfalls zur Verfügung.
TensorFlow mit JavaScript verwenden
Python ist die beliebteste Sprache für die Arbeit mit TensorFlow und maschinelles Lernen im Allgemeinen. Aber JavaScript ist mittlerweile auch eine erstklassige Sprache für TensorFlow, und einer der großen Vorteile von JavaScript ist, dass es überall läuft, wo es einen Webbrowser gibt.
TensorFlow.js, wie die JavaScript-TensorFlow-Library genannt wird, verwendet die WebGL-API, um Berechnungen mit Hilfe der im System verfügbaren GPUs zu beschleunigen. Es ist auch möglich, ein WebAssembly-Backend für die Ausführung zu verwenden, was schneller ist als das reguläre JavaScript-Backend, wenn Sie nur auf einer CPU arbeiten, obwohl es am besten ist, GPUs zu verwenden, wann immer es möglich ist. Vorgefertigte Modelle ermöglichen es Ihnen, mit einfachen Projekten loszulegen, damit Sie eine Vorstellung davon bekommen, wie das Ganze funktioniert.
TensorFlow Lite
Trainierte TensorFlow-Modelle können auch auf Edge-Computing- oder Mobilgeräten, wie iOS- oder Android-Systemen, eingesetzt werden. Das TensorFlow Lite Toolset optimiert TensorFlow Modelle so, dass sie gut auf solchen Geräten laufen, indem es Ihnen erlaubt, Kompromisse zwischen Modellgröße und Genauigkeit zu machen. Ein kleineres Modell (d.h. 12MB gegenüber 25MB oder sogar 100+MB) ist weniger genau, aber der Verlust an Genauigkeit ist im Allgemeinen gering und wird durch die Geschwindigkeit und Energieeffizienz des Modells mehr als ausgeglichen.
Warum TensorFlow?
Der größte Vorteil, den TensorFlow für die Entwicklung von maschinellem Lernen bietet, ist die Abstraktion. Anstatt sich mit den kleinsten Details der Implementierung von Algorithmen zu befassen oder herauszufinden, wie man die Ausgabe einer Funktion an die Eingabe einer anderen ankoppelt, kann sich der Entwickler auf die gesamte Anwendungslogik konzentrieren. TensorFlow kümmert sich um die Details hinter den Kulissen.
TensorFlow bietet zusätzliche Annehmlichkeiten für Entwickler, die TensorFlow-Anwendungen debuggen und einsehen müssen. Jede Graph-Operation kann separat und transparent ausgewertet und modifiziert werden, anstatt den gesamten Graphen als ein einziges undurchsichtiges Objekt zu konstruieren und es auf einmal auszuwerten. Dieser sogenannte „eager execution mode“, der in älteren Versionen von TensorFlow als Option angeboten wurde, ist nun Standard.
Die TensorBoard-Visualisierungssuite ermöglicht es Ihnen, die Art und Weise, wie Graphen ausgeführt werden, mit Hilfe eines interaktiven, webbasierten Dashboards zu untersuchen und zu profilieren. Ein Dienst, Tensorboard.dev (gehostet von Google), ermöglicht es Ihnen, in TensorFlow geschriebene Experimente zum maschinellen Lernen zu hosten und zu teilen. Die Nutzung ist kostenlos und bietet Speicherplatz für bis zu 100M Skalare, 1GB Tensor-Daten und 1GB binäre Objektdaten. (Beachten Sie, dass alle Daten, die in Tensorboard.dev gehostet werden, öffentlich sind, verwenden Sie es also nicht für vertrauliche Projekte).
TensorFlow profitiert auch von der Unterstützung eines kommerziellen Großunternehmens wie Google. Google hat das schnelle Entwicklungstempo hinter dem Projekt angekurbelt und viele wichtige Angebote geschaffen, die den Einsatz und die Verwendung von TensorFlow erleichtern. Das oben erwähnte TPU-Silizium für beschleunigte Leistung in Googles Cloud ist nur eines der Beispiele.
Deterministisches Modelltraining mit TensorFlow
Einige Details der TensorFlow-Implementierung machen es schwierig, völlig deterministische Modelltrainingsergebnisse für einige Trainingsaufgaben zu erhalten. Manchmal weicht ein Modell, das auf einem System trainiert wurde, leicht von einem Modell ab, das auf einem anderen System trainiert wurde, selbst wenn sie mit genau denselben Daten gefüttert wurden. Die Gründe für diese Abweichung sind unterschiedlich – ein Grund ist, wie und wo die Zufallszahlen gesetzt werden; ein anderer hängt mit bestimmten nicht-deterministischen Verhaltensweisen bei der Verwendung von GPUs zusammen. Der 2.0-Zweig von TensorFlow hat eine Option, um Determinismus über einen gesamten Arbeitsablauf mit ein paar Zeilen Code zu aktivieren. Diese Funktion geht jedoch auf Kosten der Leistung und sollte nur beim Debuggen eines Workflows verwendet werden.
TensorFlow vs. PyTorch, CNTK und MXNet
TensorFlow konkurriert mit einer Reihe von anderen Frameworks für maschinelles Lernen. PyTorch, CNTK und MXNet sind drei wichtige Frameworks, die viele der gleichen Anforderungen erfüllen. Lassen Sie uns abschließend einen kurzen Blick darauf werfen, wo sie sich von TensorFlow abheben und wo sie nicht mithalten können:
- PyTorch ist mit Python aufgebaut und hat viele andere Ähnlichkeiten mit TensorFlow: Hardware-beschleunigte Komponenten unter der Haube, ein hochgradig interaktives Entwicklungsmodell, das Design-as-you-go-Arbeit ermöglicht, und viele nützliche Komponenten bereits enthalten. PyTorch ist im Allgemeinen die bessere Wahl für die schnelle Entwicklung von Projekten, die in kurzer Zeit einsatzbereit sein müssen, aber TensorFlow gewinnt bei größeren Projekten und komplexeren Arbeitsabläufen.
- CNTK, das Microsoft Cognitive Toolkit, verwendet wie TensorFlow eine Graphenstruktur zur Beschreibung des Datenflusses, aber es konzentriert sich hauptsächlich auf die Erstellung von neuronalen Netzen für Deep Learning. CNTK verarbeitet viele neuronale Netzwerkaufgaben schneller und verfügt über eine breitere Palette von APIs (Python, C++, C#, Java). Aber es ist derzeit nicht so einfach zu erlernen oder einzusetzen wie TensorFlow. Es ist auch nur unter der GNU GPL 3.0 Lizenz verfügbar, während TensorFlow unter der liberaleren Apache Lizenz verfügbar ist. Und CNTK wird nicht so aggressiv weiterentwickelt; die letzte größere Version stammt aus dem Jahr 2019.
- Apache MXNet, das von Amazon als führendes Deep-Learning-Framework auf AWS übernommen wurde, kann fast linear über mehrere GPUs und mehrere Maschinen skalieren. MXNet unterstützt auch eine breite Palette von Sprach-APIs – Python, C++, Scala, R, JavaScript, Julia, Perl, Go -, obwohl seine nativen APIs nicht so angenehm zu bedienen sind wie die von TensorFlow. Es hat auch eine viel kleinere Nutzer- und Entwicklergemeinschaft.
*Serdar Yegulalp ist Senior-Autor bei InfoWorld und konzentriert sich auf maschinelles Lernen, Containerisierung, Devops, das Python-Ökosystem und regelmäßige Reviews.
Be the first to comment