Überblick
TensorFlow ist eine Softwarebibliothek für maschinelles Lernen und künstliche Intelligenz. Sie kann für eine Reihe von Aufgaben eingesetzt werden, wird aber hauptsächlich für das Training und die Inferenz von neuronalen Netzen verwendet. Es ist eines der beliebtesten Deep-Learning-Frameworks, neben anderen wie PyTorch. TensorFlow ist freie und quelloffene Software, die unter der Apache-Lizenz 2.0 veröffentlicht wurde.
Geschichte
DistBelief
Ab 2011 entwickelte Google Brain DistBelief als ein proprietäres System für maschinelles Lernen, das auf tiefen neuronalen Netzen 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, damit, den Code von DistBelief zu vereinfachen und in eine schnellere, robustere anwendungsorientierte Bibliothek umzuschreiben, aus der 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 deutlich höherer Genauigkeit ermöglichten, beispielsweise eine 25-prozentige Reduzierung von Fehlern bei der Spracherkennung.
TensorFlow
TensorFlow ist das System der zweiten Generation 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 für 64-Bit-Linux, macOS, Windows und mobile Plattformen wie 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 Server-Cluster 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 im September 2019 offiziell 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 Ausführung von Modellen als auf deren Training ausgerichtet ist. Google gab bekannt, dass TPUs seit mehr als einem Jahr in seinen Rechenzentren eingesetzt wurden und eine um eine Größenordnung besser optimierte Leistung pro Watt für maschinelles Lernen liefern. 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 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 für mobile und eingebettete Geräte 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 an 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 Optimierung der Leistung benötigen. Dazu muss das Framework die Reihenfolge der Operationen verfolgen, die an den Eingabe-Tensoren in einem Modell 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 Schritt für Schritt 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.
Verteilen
Sowohl bei Eager- als auch bei Graphenausführung bietet TensorFlow eine API zum Verteilen von Berechnungen auf mehrere Geräte mit verschiedenen Verteilungsstrategien. Dieses verteilte Rechnen kann die Ausführung von Training und Bewertung von TensorFlow-Modellen oft 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 Werten und leiten den Optimierungsprozess während des Trainings.
Metriken
TensorFlow enthält ein Metrikmodul, das Funktionen zur Bewertung der Modellleistung bereitstellt, wie Genauigkeit, Präzision, Recall und Fläche unter der ROC-Kurve. Diese Metriken werden häufig verwendet, um den Fortschritt von Training und Validierung zu überwachen.
Optimierer
TensorFlow bietet eine Vielzahl von Optimierern zur Aktualisierung von Modellparametern während des Trainings, darunter stochastischer Gradientenabstieg (SGD), Adam, RMSProp und Adagrad. Diese Optimierer implementieren verschiedene Aktualisierungsregeln, um die Verlustfunktion effizient zu minimieren.
Keras
TensorFlow integriert Keras, eine High-Level-API für neuronale Netze, die das Erstellen und Trainieren von Modellen vereinfacht. Keras bietet eine benutzerfreundliche Oberfläche zum Definieren von Schichten, Modellen und Trainingsschleifen und ist sowohl für Anfänger als auch für Experten zugänglich.
TensorBoard
TensorBoard ist ein Visualisierungstool, das in TensorFlow enthalten ist und es Benutzern ermöglicht, Trainingsmetriken zu überwachen, Modellgraphen zu visualisieren und Embeddings zu inspizieren. Es hilft beim Debuggen und Verstehen des Modellverhaltens.
TensorFlow Serving
TensorFlow Serving ist ein flexibles, leistungsstarkes Serving-System für Modelle des maschinellen Lernens, das für Produktionsumgebungen entwickelt wurde. Es unterstützt Modellversionierung, Rollouts und kann mehrere Modelle gleichzeitig verarbeiten.
TensorFlow Hub
TensorFlow Hub ist eine Bibliothek für wiederverwendbare Module des maschinellen Lernens. Sie ermöglicht es Benutzern, vortrainierte Modellkomponenten zu teilen und zu entdecken, was Transfer Learning erleichtert und die Notwendigkeit verringert, Modelle von Grund auf zu trainieren.
TensorFlow Extended (TFX)
TensorFlow Extended (TFX) ist eine End-to-End-Plattform für die Bereitstellung von Produktions-ML-Pipelines. Sie umfasst Komponenten für Datenvalidierung, Vorverarbeitung, Training und Serving und ermöglicht skalierbare und zuverlässige ML-Workflows.
Anwendungen
TensorFlow wird in einer Vielzahl von Anwendungen eingesetzt, darunter Bilderkennung, Verarbeitung natürlicher Sprache, Spracherkennung und Empfehlungssysteme. Es wird auch in Forschung und Industrie für Aufgaben wie Objekterkennung, Stimmungsanalyse und generative Modellierung verwendet. Seine Flexibilität und Skalierbarkeit machen es sowohl für Experimente als auch für die groß angelegte Bereitstellung geeignet.
Siehe auch
- Künstliche Intelligenz
- Maschinelles Lernen
- Deep Learning
- Neuronales Netz
- Großes Sprachmodell
- Transformer
- OpenAI
- Google DeepMind
- Generative KI
- PyTorch
Referenzen
- Offizielle TensorFlow-Dokumentation
- Wikipedia: TensorFlow
- Google AI Blog
- TensorFlow-Versionshinweise