TensorFlow

Aus besserwiki.de
TensorFlow
TensorFlow-Logo
Entwickler(n)Google Brain-Team
Erste VeröffentlichungNovember 9, 2015; vor 7 Jahren
Repositorygithub.com/tensorflow/tensorflow
Geschrieben inPython, C++, CUDA
PlattformLinux, macOS, Windows, Android, JavaScript
TypBibliothek für maschinelles Lernen
LizenzApache-Lizenz 2.0
Websitewww.tensorflow.org

TensorFlow ist eine freie und quelloffene Softwarebibliothek für maschinelles Lernen und künstliche Intelligenz. Sie kann für eine Reihe von Aufgaben verwendet werden, hat aber einen besonderen Schwerpunkt auf dem Training und der Inferenz von tiefen neuronalen Netzen.

TensorFlow wurde vom Google Brain Team für den Google-internen Gebrauch in Forschung und Produktion entwickelt. Die erste Version wurde 2015 unter der Apache License 2.0 veröffentlicht. Google veröffentlichte die aktualisierte Version von TensorFlow, genannt TensorFlow 2.0, im September 2019.

TensorFlow kann in einer Vielzahl von Programmiersprachen verwendet werden, vor allem in Python, aber auch in Javascript, C++ und Java. Diese Flexibilität bietet sich für eine Reihe von Anwendungen in vielen verschiedenen Bereichen an.

Geschichte

DistBelief

2011 begann Google Brain mit der Entwicklung von DistBelief, einem proprietären maschinellen Lernsystem, das auf neuronalen Netzwerken mit tiefem Lernen basiert. Es wurde schnell in verschiedenen Alphabet-Unternehmen sowohl in der Forschung als auch in kommerziellen Anwendungen eingesetzt. Google beauftragte mehrere Informatiker, darunter Jeff Dean, mit der Vereinfachung und Umstrukturierung der Codebasis von DistBelief in eine schnellere, robustere Bibliothek für Anwendungen, die zu TensorFlow wurde. Im Jahr 2009 hatte das Team unter der Leitung von Geoffrey Hinton eine verallgemeinerte Backpropagation und andere Verbesserungen implementiert, die es ermöglichten, neuronale Netze mit wesentlich höherer Genauigkeit zu generieren, z. B. eine 25%ige Verringerung der Fehler bei der Spracherkennung.

TensorFlow

TensorFlow ist das System der zweiten Generation von Google Brain. Die 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 laufen (mit optionalen CUDA- und SYCL-Erweiterungen für Allzweckberechnungen 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 den einfachen Einsatz von Berechnungen auf einer Vielzahl von Plattformen (CPUs, GPUs, TPUs) und von Desktops über Server-Cluster bis hin zu mobilen und Edge-Geräten.

TensorFlow-Berechnungen werden als zustandsabhängige 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 Repositories auf GitHub TensorFlow erwähnten, von denen nur 5 von Google stammten.

Im Dezember 2017 stellten Entwickler von Google, Cisco, RedHat, CoreOS und CaiCloud auf einer Konferenz Kubeflow vor. Kubeflow ermöglicht den Betrieb und die Bereitstellung von TensorFlow auf Kubernetes.

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. Es wurde im September 2019 offiziell verfügbar.

Im Mai 2019 kündigte Google TensorFlow Graphics für Deep Learning in Computergrafik an.

Tensor Processing Unit (TPU)

Im Mai 2016 kündigte Google seine Tensor Processing Unit (TPU) an, eine anwendungsspezifische integrierte Schaltung (ASIC, ein Hardware-Chip), die speziell für maschinelles Lernen entwickelt und auf TensorFlow zugeschnitten wurde. Eine TPU ist ein programmierbarer KI-Beschleuniger, der einen hohen Durchsatz an niedrigpräziser Arithmetik (z. B. 8-Bit) bietet und auf die Verwendung oder Ausführung von Modellen ausgerichtet ist, anstatt sie zu trainieren. Google gab bekannt, dass es TPUs seit mehr als einem Jahr in seinen Rechenzentren einsetzt und festgestellt hat, dass sie eine um eine Größenordnung bessere Leistung pro Watt für maschinelles Lernen bieten.

Im Mai 2017 kündigte Google die zweite Generation sowie die Verfügbarkeit der TPUs in Google Compute Engine an. Die TPUs der zweiten Generation liefern eine Leistung von bis zu 180 Teraflops, und wenn sie in Clustern von 64 TPUs organisiert sind, erreichen sie bis zu 11,5 Petaflops.

Im Mai 2018 kündigte Google die TPUs der dritten Generation an, die eine Leistung von bis zu 420 Teraflops und 128 GB High Bandwidth Memory (HBM) bieten. Cloud TPU v3 Pods bieten eine Leistung von 100+ Petaflops und 32 TB HBM.

Im Februar 2018 kündigte Google an, TPUs in der Beta-Version auf der Google Cloud Platform verfügbar zu machen.

Edge TPU

Im Juli 2018 wurde die Edge TPU angekündigt. Edge TPU ist Googles speziell entwickelter ASIC-Chip, der für die Ausführung von TensorFlow Lite-Modellen für maschinelles Lernen (ML) auf kleinen Client-Computing-Geräten wie Smartphones, auch bekannt als Edge Computing, entwickelt wurde.

TensorFlow Lite

Im Mai 2017 kündigte Google einen Software-Stack speziell für die mobile Entwicklung an, TensorFlow Lite. Im Januar 2019 veröffentlichte das TensorFlow-Team eine Entwicklervorschau der mobilen GPU-Inferenzmaschine mit OpenGL ES 3.1 Compute Shaders auf Android-Geräten und Metal Compute Shaders auf iOS-Geräten. Im Mai 2019 kündigte Google an, dass ihr TensorFlow Lite Micro (auch bekannt als TensorFlow Lite für Mikrocontroller) und ARMs uTensor fusionieren werden.

Pixel Visual Core (PVC)

Im Oktober 2017 veröffentlichte Google das Google Pixel 2 mit dem Pixel Visual Core (PVC), einem vollständig programmierbaren Bild-, Vision- und KI-Prozessor für mobile Geräte. Der PVC unterstützt TensorFlow für maschinelles Lernen (und Halide für die Bildverarbeitung).

TensorFlow 2.0

Da der Marktanteil von TensorFlow unter den Forschungsarbeiten zugunsten von PyTorch zurückging, kündigte das TensorFlow-Team die Veröffentlichung einer neuen Hauptversion der Bibliothek im September 2019 an. TensorFlow 2.0 führte viele Änderungen ein, die wichtigste war TensorFlow eager, das das automatische Differenzierungsschema vom statischen Berechnungsgraphen zum "Define-by-Run"-Schema änderte, das ursprünglich von Chainer und später PyTorch populär gemacht wurde. Andere wichtige Änderungen waren die Entfernung alter Bibliotheken, Kreuzkompatibilität zwischen trainierten Modellen auf verschiedenen Versionen von TensorFlow und signifikante Verbesserungen der Leistung auf GPU.

Eigenschaften

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 in einem Modell berechnen, was für Algorithmen wie Backpropagation nützlich ist, die Gradienten zur Leistungsoptimierung benötigen. Um dies zu tun, muss das Framework die Reihenfolge der Operationen verfolgen, die mit den Eingabe-Tensoren in einem Modell durchgeführt werden, und dann die Gradienten in Bezug auf die entsprechenden Parameter berechnen.

Eifrige Ausführung

TensorFlow beinhaltet einen "eager execution"-Modus, was bedeutet, dass Operationen sofort ausgewertet werden, anstatt einem Berechnungsgraphen hinzugefügt zu werden, der später ausgeführt wird. Eifrig ausgeführter Code kann Schritt für Schritt mit einem Debugger untersucht werden, da die Daten in jeder Codezeile und nicht erst später in einem Berechnungsgraphen ergänzt werden. Dieses Ausführungsparadigma gilt aufgrund seiner schrittweisen Transparenz als einfacher zu debuggen.

Verteilen

Sowohl bei der eifrigen als auch bei der Graphen-Ausführung bietet TensorFlow eine API für die Verteilung von Berechnungen auf mehrere Geräte mit verschiedenen Verteilungsstrategien. Dieses verteilte Rechnen kann oft die Ausführung von Training und Auswertung von TensorFlow-Modellen beschleunigen und ist eine gängige Praxis im Bereich der KI.

Verluste

Um Modelle zu trainieren und zu bewerten, bietet TensorFlow eine Reihe von Verlustfunktionen (auch bekannt als Kostenfunktionen). Einige beliebte Beispiele sind der mittlere quadratische Fehler (MSE) und die binäre Kreuzentropie (BCE). Diese Verlustfunktionen berechnen den "Fehler" oder die "Differenz" zwischen der Ausgabe eines Modells und der erwarteten Ausgabe (allgemeiner gesagt, die Differenz zwischen zwei Tensoren). Für verschiedene Datensätze und Modelle werden unterschiedliche Verlustfunktionen verwendet, um bestimmte Leistungsaspekte in den Vordergrund zu stellen.

Metriken

Um die Leistung von maschinellen Lernmodellen zu bewerten, bietet TensorFlow API-Zugang zu häufig verwendeten Metriken. Beispiele sind verschiedene Genauigkeitsmetriken (binär, kategorisch, spärlich kategorisch) zusammen mit anderen Metriken wie Precision, Recall, und Intersection-over-Union (IoU).

TF.nn

TensorFlow.nn ist ein Modul zur Ausführung von primitiven neuronalen Netzwerkoperationen auf Modellen. Einige dieser Operationen beinhalten Variationen von Faltungen (1/2/3D, Atrous, depthwise), Aktivierungsfunktionen (Softmax, RELU, GELU, Sigmoid, etc.) und deren Variationen, sowie andere Tensor-Operationen (max-pooling, bias-add, etc.).

Optimierer

TensorFlow bietet eine Reihe von Optimierern für das Training neuronaler Netze, einschließlich ADAM, ADAGRAD und Stochastic Gradient Descent (SGD). Beim Training eines Modells bieten verschiedene Optimierer verschiedene Arten der Parametereinstellung, die sich oft auf die Konvergenz und Leistung eines Modells auswirken.

Verwendung und Erweiterungen

TensorFlow

TensorFlow dient als Kernplattform und Bibliothek für maschinelles Lernen. Die APIs von TensorFlow verwenden Keras, damit Benutzer ihre eigenen Modelle für maschinelles Lernen erstellen können. Zusätzlich zum Aufbau und Training ihres Modells kann TensorFlow auch dabei helfen, die Daten zu laden, um das Modell zu trainieren, und es mit TensorFlow Serving einzusetzen.

TensorFlow bietet eine stabile Python API, sowie APIs ohne Rückwärtskompatibilitätsgarantie für Javascript, C++ und Java. Drittanbieter-Sprachbindungspakete sind auch für C#, Haskell, Julia, MATLAB, R, Scala, Rust, OCaml und Crystal verfügbar. Zu den Bindungen, die jetzt archiviert sind und nicht mehr unterstützt werden, gehören Go und Swift.

TensorFlow.js

TensorFlow hat auch eine Bibliothek für maschinelles Lernen in JavaScript. Unter Verwendung der bereitgestellten JavaScript-APIs ermöglicht TensorFlow.js den Benutzern, entweder Tensorflow.js-Modelle oder konvertierte Modelle von TensorFlow oder TFLite zu verwenden, die gegebenen Modelle neu zu trainieren und im Web auszuführen.

TFLite

TensorFlow Lite hat APIs für mobile Anwendungen oder eingebettete Geräte, um TensorFlow-Modelle zu erzeugen und einzusetzen. Diese Modelle sind komprimiert und optimiert, um effizienter zu sein und eine höhere Leistung auf Geräten mit geringerer Kapazität zu haben.

TensorFlow Lite verwendet FlatBuffers als Daten-Serialisierungsformat für Netzwerkmodelle und vermeidet das von Standard-TensorFlow-Modellen verwendete Protocol Buffers-Format.

TFX

TensorFlow Extended (abgekürzt TFX) bietet zahlreiche Komponenten, um alle für die End-to-End-Produktion notwendigen Operationen durchzuführen. Zu den Komponenten gehören das Laden, Validieren und Transformieren von Daten, das Abstimmen, Trainieren und Evaluieren des maschinellen Lernmodells und das Übertragen des Modells in die Produktion.

Integrationen

Numpy

Numpy ist eine der populärsten Python-Datenbibliotheken, und TensorFlow bietet Integration und Kompatibilität mit ihren Datenstrukturen. Numpy NDarrays, der native Datentyp der Bibliothek, werden in TF-Operationen automatisch in TensorFlow Tensoren konvertiert; das gleiche gilt auch umgekehrt. Dies ermöglicht es den beiden Bibliotheken, gemeinsam zu arbeiten, ohne dass der Benutzer explizite Datenkonvertierungen schreiben muss. Darüber hinaus erstreckt sich die Integration auch auf die Speicheroptimierung, indem TF-Tensoren die zugrundeliegenden Speicherrepräsentationen von Numpy NDarrays teilen, wann immer dies möglich ist.

Erweiterungen

TensorFlow bietet auch eine Vielzahl von Bibliotheken und Erweiterungen, um die verwendeten Modelle und Methoden zu verbessern und zu erweitern. Zum Beispiel sind TensorFlow Recommenders und TensorFlow Graphics Bibliotheken für ihre jeweiligen Funktionalitäten in Empfehlungssystemen und Grafiken, TensorFlow Federated bietet ein Framework für dezentralisierte Daten, und TensorFlow Cloud erlaubt es Benutzern, direkt mit Google Cloud zu interagieren, um ihren lokalen Code in Google Cloud zu integrieren. Andere Add-ons, Bibliotheken und Frameworks sind TensorFlow Model Optimization, TensorFlow Probability, TensorFlow Quantum und TensorFlow Decision Forests.

Google Colab

Google hat auch Colaboratory veröffentlicht, eine TensorFlow Jupyter-Notebook-Umgebung, die keine Einrichtung erfordert. Es läuft auf der Google Cloud und ermöglicht den Nutzern freien Zugang zu GPUs und die Möglichkeit, Notebooks auf Google Drive zu speichern und zu teilen.

Google JAX

Google JAX ist ein Framework für maschinelles Lernen zur Umwandlung numerischer Funktionen. Es wird als eine Kombination aus einer modifizierten Version von Autograd (automatische Gewinnung der Gradientenfunktion durch Differenzierung einer Funktion) und TensorFlows XLA (Accelerated Linear Algebra) beschrieben. Es ist so konzipiert, dass es der Struktur und dem Arbeitsablauf von NumPy so nah wie möglich folgt und sowohl mit TensorFlow als auch mit anderen Frameworks wie PyTorch funktioniert. Die Hauptfunktionen von JAX sind:

  1. grad: automatische Differenzierung
  2. jit: Kompilierung
  3. vmap: automatische Vektorisierung
  4. pmap: SPMD-Programmierung

Anwendungen

Medizinische

GE Healthcare verwendete TensorFlow, um die Geschwindigkeit und Genauigkeit von MRTs bei der Identifizierung bestimmter Körperteile zu erhöhen. Google nutzte TensorFlow, um DermAssist zu entwickeln, eine kostenlose mobile Anwendung, mit der Nutzer Fotos ihrer Haut machen und mögliche Gesundheitskomplikationen erkennen können. Sinovation Ventures nutzte TensorFlow zur Identifizierung und Klassifizierung von Augenkrankheiten anhand von OCT-Scans (optische Kohärenztomographie).

Soziale Medien

Twitter implementierte TensorFlow, um Tweets nach ihrer Wichtigkeit für einen bestimmten Nutzer zu ordnen, und änderte seine Plattform, um Tweets in der Reihenfolge dieser Rangfolge anzuzeigen. Zuvor wurden die Tweets einfach in umgekehrter chronologischer Reihenfolge angezeigt. Die Foto-Sharing-App VSCO nutzte TensorFlow, um individuelle Filter für Fotos vorzuschlagen.

Suchmaschine

Google hat am 26. Oktober 2015 offiziell RankBrain veröffentlicht, das von TensorFlow unterstützt wird.

Bildung

InSpace, eine virtuelle Lernplattform, nutzte TensorFlow, um giftige Chat-Nachrichten in Klassenzimmern herauszufiltern. Liulishuo, eine Online-Lernplattform für Englisch, nutzte TensorFlow, um einen adaptiven Lehrplan für jeden Schüler zu erstellen. TensorFlow wurde verwendet, um die aktuellen Fähigkeiten eines Schülers genau zu bewerten und half auch bei der Entscheidung über die besten zukünftigen Inhalte, die auf der Grundlage dieser Fähigkeiten gezeigt werden sollten.

Einzelhandel

Die E-Commerce-Plattform Carousell nutzte TensorFlow, um personalisierte Empfehlungen für Kunden bereitzustellen. Das Kosmetikunternehmen ModiFace nutzte TensorFlow, um ein Augmented-Reality-Erlebnis für Kunden zu schaffen, bei dem sie verschiedene Schattierungen von Make-up auf ihrem Gesicht testen können.

2016 Vergleich des Originalfotos (links) und des mit TensorFlow bearbeiteten neuronalen Stils (rechts)

Forschung

TensorFlow ist die Grundlage für die automatische Bildbeschreibungssoftware DeepDream.

Beispiel

In der Forschung und im Produktivbetrieb wird TensorFlow derzeit in kommerziellen Google-Produkten wie der Spracherkennung, Gmail, Google Fotos und Google Suche verwendet. So wird der Kartendienst Maps durch Analyse der von Street View aufgenommenen Fotos von Straßenschildern verbessert, die mit Hilfe eines auf TensorFlow basierenden neuronalen Netzes analysiert werden. Viele dieser Produkte nutzten früher die Vorgängersoftware DistBelief.

In TensorFlow werden mathematische Operationen in Form eines Graphen dargestellt. Der Graph repräsentiert hierbei den sequenziellen Ablauf aller von TensorFlow durchzuführenden Operationen. Das folgende Beispiel soll die grundlegende Funktionsweise unter Verwendung von Python darstellen: Zunächst wird die TensorFlow-Bibliothek geladen.

Anschließend wird die Session definiert, unter der TensorFlow die Evaluierung der mathematischen Operationen vornimmt.

Zwei Konstanten, x und y werden definiert, die miteinander multipliziert werden.

Zur Bestimmung des Ergebnisses wird der Graph an der Stelle z ausgeführt.

Tensor Processing Unit (TPU)

Von Google wurden Tensor Processing Units, also anwendungsspezifische Chips, entwickelt, um das maschinelle Lernen zu unterstützen bzw. zu beschleunigen. Mit dieser Spezialhardware werden die Algorithmen der Programmbibliothek TensorFlow besonders schnell und effizient verarbeitet.

TensorFlow-Releases

2.0: TensorFlow 2.0

Mit der am 30. September 2019 veröffentlichten Version 2.0 von TensorFlow wurde die API aufgeräumt und erweitert. Insbesondere wurde die Keras-Schnittstelle zur neuen Standard-API für die Modellierung von Deep-Learning-Modellen. Einzelne Funktionen wurden erweitert; so speichert TensorFlow 2 Modelle nun inklusive Gewichten und Berechnungen, was die Weitergabe deutlich vereinfacht.