TensorFlow ist eine Softwarebibliothek für maschinelles Lernen und künstliche Intelligenz, die hauptsächlich für das Training und die Inferenz von neuronalen Netzen verwendet wird. Es ist eines der beliebtesten Deep-Learning-Frameworks, neben anderen wie PyTorch. TensorFlow wurde als freie und Open-Source-Software unter der Apache-Lizenz 2.0 veröffentlicht und vom Google-Brain-Team für Googles interne Forschung und Produktionsnutzung entwickelt. Die erste Version wurde 2015 veröffentlicht, gefolgt von einer aktualisierten Version, TensorFlow 2.0, im September 2019. TensorFlow unterstützt eine Vielzahl von Programmiersprachen, darunter Python, JavaScript, C++ und Java, was seine Verwendung in vielen Sektoren erleichtert.
Geschichte
DistBelief
Ab 2011 entwickelte Google Brain DistBelief als ein proprietäres System für maschinelles Lernen, das auf neuronalen Netzen mit Deep Learning basierte. Seine Nutzung wuchs schnell in verschiedenen Alphabet-Unternehmen sowohl in der Forschung als auch in kommerziellen Anwendungen. Google beauftragte mehrere Informatiker, darunter Jeff Dean, die Codebasis von DistBelief zu vereinfachen und in eine schnellere, robustere anwendungsreife Bibliothek umzugestalten, die zu TensorFlow wurde. Im Jahr 2009 hatte das Team unter der Leitung von Geoffrey Hinton generalisiertes Backpropagation und andere Verbesserungen implementiert, die die Erzeugung neuronaler Netze mit erheblich höherer Genauigkeit ermöglichten, beispielsweise eine Reduzierung der Fehler bei der Spracherkennung um 25%.
TensorFlow
TensorFlow ist die zweite Generation des Systems von Google Brain. Version 1.0.0 wurde am 11. Februar 2017 veröffentlicht. Während die Referenzimplementierung auf einzelnen Geräten läuft, kann TensorFlow auf mehreren CPUs und GPUs ausgeführt werden (mit optionalen CUDA- und SYCL-Erweiterungen für allgemeine Berechnungen auf Grafikprozessoren). TensorFlow ist auf 64-Bit-Linux, macOS, Windows und mobilen Computerplattformen einschließlich Android und iOS verfügbar. Seine flexible Architektur ermöglicht eine einfache Verteilung von Berechnungen auf verschiedene Plattformen (CPUs, GPUs, TPUs) und von Desktops über Servercluster bis hin zu mobilen und Edge-Geräten.
TensorFlow-Berechnungen werden als zustandsbehaftete Datenflussgraphen ausgedrückt. Der Name TensorFlow leitet sich von den Operationen ab, die solche neuronalen Netze auf mehrdimensionalen Datenarrays durchführen, die als Tensoren bezeichnet werden. Während der Google-I/O-Konferenz im Juni 2016 erklärte Jeff Dean, dass 1.500 Repositorys auf GitHub TensorFlow erwähnten, von denen nur fünf von Google stammten.
Im März 2018 kündigte Google TensorFlow.js Version 1.0 für maschinelles Lernen in JavaScript an. Im Januar 2019 kündigte Google TensorFlow 2.0 an, das offiziell im September 2019 verfügbar wurde. Im Mai 2019 kündigte Google TensorFlow Graphics für Deep Learning in der Computergrafik an.
Tensor Processing Unit (TPU)
Im Mai 2016 kündigte Google seine Tensor Processing Unit (TPU) an, einen anwendungsspezifischen integrierten Schaltkreis (ASIC), der speziell für maschinelles Lernen gebaut und auf TensorFlow zugeschnitten ist. Eine TPU ist ein programmierbarer KI-Beschleuniger, der für einen hohen Durchsatz von Arithmetik mit geringer Präzision (z. B. 8-Bit) ausgelegt ist und eher auf die Verwendung oder das Ausführen von Modellen als auf deren Training ausgerichtet ist. Google gab an, dass TPUs seit mehr als einem Jahr in ihren Rechenzentren eingesetzt wurden und eine um eine Größenordnung besser optimierte Leistung pro Watt für maschinelles Lernen lieferten.
Im Mai 2017 kündigte Google die TPUs der zweiten Generation sowie deren Verfügbarkeit in Google Compute Engine an. Die TPUs der zweiten Generation liefern bis zu 180 Teraflops Leistung und bieten in Clustern von 64 TPUs bis zu 11,5 Petaflops. Im Mai 2018 kündigte Google die TPUs der dritten Generation an, die bis zu 420 Teraflops Leistung und 128 GB High Bandwidth Memory (HBM) liefern. Cloud-TPU-v3-Pods bieten über 100 Petaflops Leistung und 32 TB HBM. Im Februar 2018 gab Google bekannt, dass TPUs in der Beta-Version auf der Google Cloud Platform verfügbar gemacht werden.
Edge TPU
Im Juli 2018 wurde die Edge TPU angekündigt. Die Edge TPU ist ein zweckgebauter ASIC-Chip von Google, der entwickelt wurde, um TensorFlow-Lite-Modelle für maschinelles Lernen (ML) auf kleinen Client-Computergeräten wie Smartphones auszuführen, bekannt als Edge Computing.
TensorFlow Lite
Im Mai 2017 kündigte Google TensorFlow Lite als Software-Stack zur Unterstützung von Modellen für maschinelles Lernen auf mobilen und eingebetteten Geräten an und stellte im November 2017 die Entwicklervorschau bereit. Im Januar 2019 veröffentlichte das TensorFlow-Team eine Entwicklervorschau der mobilen GPU-Inferenz-Engine mit OpenGL-ES-3.1-Compute-Shadern auf Android-Geräten und Metal-Compute-Shadern auf iOS-Geräten. Im Mai 2019 gab Google bekannt, dass TensorFlow Lite Micro (auch bekannt als TensorFlow Lite für Mikrocontroller) und ARMs uTensor fusionieren würden. Es wurde 2024 in LiteRT umbenannt.
TensorFlow 2.0
Da der Marktanteil von TensorFlow unter Forschungsarbeiten zugunsten von PyTorch zurückging, kündigte das TensorFlow-Team im September 2019 die Veröffentlichung einer neuen Hauptversion der Bibliothek an. TensorFlow 2.0 führte viele Änderungen ein, die bedeutendste war TensorFlow Eager, das das Schema der automatischen Differenzierung vom statischen Berechnungsgraphen auf das "Define-by-Run"-Schema umstellte, das ursprünglich von Chainer und später von PyTorch populär gemacht wurde. Weitere wichtige Änderungen umfassten die Entfernung alter Bibliotheken, die Kreuzkompatibilität zwischen trainierten Modellen auf verschiedenen TensorFlow-Versionen und erhebliche Verbesserungen der GPU-Leistung.
Funktionen
AutoDifferentiation
AutoDifferentiation ist der Prozess der automatischen Berechnung des Gradientenvektors eines Modells in Bezug auf jeden seiner Parameter. Mit dieser Funktion kann TensorFlow automatisch die Gradienten für die Parameter eines Modells berechnen, was für Algorithmen wie Backpropagation nützlich ist, die Gradienten zur Leistungsoptimierung benötigen. Dazu muss das Framework die Reihenfolge der Operationen verfolgen, die an den Eingabetensoren eines Modells durchgeführt werden, und dann die Gradienten in Bezug auf die entsprechenden Parameter berechnen.
Eager Execution
TensorFlow enthält einen "Eager Execution"-Modus, was bedeutet, dass Operationen sofort ausgewertet werden, anstatt zu einem Berechnungsgraphen hinzugefügt zu werden, der später ausgeführt wird. Eager ausgeführter Code kann schrittweise mit einem Debugger untersucht werden, da Daten in jeder Codezeile augmentiert werden, anstatt später in einem Berechnungsgraphen. Dieses Ausführungsparadigma gilt als einfacher zu debuggen, da es eine schrittweise Transparenz bietet.
Verteilung
Sowohl bei der Eager- als auch bei der Graphenausführung bietet TensorFlow eine API zur Verteilung von Berechnungen auf mehrere Geräte mit verschiedenen Verteilungsstrategien. Diese verteilte Berechnung kann oft die Ausführung des Trainings und der Bewertung von TensorFlow-Modellen beschleunigen und ist eine gängige Praxis im Bereich der KI.
Verlustfunktionen
Zum Trainieren und Bewerten von Modellen bietet TensorFlow eine Reihe von Verlustfunktionen (auch als Kostenfunktionen bekannt). Einige beliebte Beispiele sind der mittlere quadratische Fehler, die kategoriale Kreuzentropie und der Hinge-Verlust. Diese Funktionen messen die Differenz zwischen vorhergesagten und tatsächlichen Ausgaben und leiten den Optimierungsprozess während des Trainings.
Auswirkungen und Annahme
TensorFlow ist zu einem grundlegenden Werkzeug im Bereich des maschinellen Lernens geworden, das Forschern und Entwicklern ermöglicht, Deep-Learning-Modelle in großem Maßstab zu erstellen und bereitzustellen. Seine Integration mit Google Cloud und die Unterstützung für neuronale Netzwerk-Architekturen haben es zu einer Standardwahl sowohl in der Wissenschaft als auch in der Industrie gemacht. Die Veröffentlichung von TensorFlow trug zur breiteren Annahme von Technologien der künstlichen Intelligenz bei und beeinflusste nachfolgende Frameworks und Werkzeuge. Ab 2024 bleibt TensorFlow weit verbreitet, obwohl es in Forschungsumgebungen Konkurrenz durch PyTorch gibt. Seine fortlaufende Entwicklung befasst sich weiterhin mit Herausforderungen in Bezug auf Leistung, Benutzerfreundlichkeit und Bereitstellung, um seine Relevanz in der sich entwickelnden Landschaft der KI zu sichern.