InfoWorld Award 2019

Die besten Tools für Cloud, Analytics und Machine Learning

08.03.2019
Von 
Jens Dose ist Editor in Chief von CIO. Seine Kernthemen drehen sich rund um CIOs, ihre IT-Strategien und Digitalisierungsprojekte.

LLVM

LLVM
LLVM

Auf den ersten Blick mag LLVM, ein Toolkit um Compiler für Programmiersprachen zu bauen, eine seltsame Wahl für einen Award zu sein. Aber die Möglichkeiten von LLVM bilden den Kern einiger hochkarätiger Projekte: Clang, Rust, Swift, Julia und viele andere innovative Programmiersprachen-Initiativen.

LLVM versetzt Entwickler in die Lage, Machine-native Code automatisch zu erstellen. Zudem müssen sie nicht die Eigenarten jeder gewünschten Architektur und Plattform kennen. Der offensichtliche Einsatzbereich sind Sprachen-Compiler, aber LLVM kann noch für viele andere Zwecke verwendet werden. PostgreSQL benutzt LLVM beispielsweise, um Code dynamisch zu generieren, der SQL-Anfragen beschleunigt. Auf ähnliche Weise verwendet das Numba Projekt LLVM, um langsamen Python-Code in schnelle Assemblersprache für Anwendungen umzuwandeln, die mit hoher Geschwindigkeit Berechnungen anstellen.

Die beiden Haupt-Releases von LLVM 2018 führten einige Verbesserungen ein:

  • Unterstützung für neuere Intel-Prozessoren;

  • Multi-Prozessor-Szenarios;

  • Schutz vor gängigen Prozessor-Fehlern;

  • Werkzeuge, um die Performance von erstelltem Code auf spezifischen CPU-Architekturen zu bewerten;

  • Verbesserungen an LLD, dem LLVM-Linker (ein Dienstprogramm, das Teilprogramme miteinander verbindet und daraus lauffähige Anwendungsprogramme zu machen), der eigenständige Executables aus LLVM über mehrere Plattformen hinweg erstellen kann.

TensorFlow

TensorFlow
TensorFlow

TensorFlow ist ein Open-Source Machine Learning Framework. Genauer gesagt ist es eine Library für numerische Berechnungen anhand von Datenstrom-Graphen. Die Graph-Knoten repräsentieren mathematische Rechenoperationen, während die Kanten des Graphen multidimensionale Daten-Arrays (Tensors) repräsentieren, die zwischen ihnen fließen.

Diese flexible Architektur ermöglicht es, Berechnungen auf einer oder mehrerer CPUs oder GPUs in einem Desktop-PC, Server oder Mobilgerät bereitzustellen, ohne Code umschreiben zu müssen. TensorFlow beinhaltet auch TensorBoard, ein Toolkit für Datenvisualisierung.

Mit Version 1.12 ist TensorFlow das am meisten genutzte Deep-Learning-Framework im Markt. Es unterstützt zwar noch seine ursprüngliche Low-level-API. Aber mittlerweile ist tf.keras die bevorzugte High-level-API, eine Implementierung des Keras API-Standards für TensorFlow, die TensorFlow-spezifische Verbesserungen enthält. (s. Keras unten)

Während mit TensorFlow immer noch Datenfluss-Graphen gebaut und später in Sessions ausgeführt werden können, unterstützt es jetzt in vollem Umfang den Eager-Execution-Modus. Das ist ein imperatives Define-by-run-Interface, das Operationen sofort berechnet, ohne einen Graphen zu bauen. Der Eager-Execution-Modus unterstützt automatische Differenzierung über die tf.GradientTape-API. Eine der Verbesserungen in tf.keras ist Support für Eager Execution.

Sowohl die Keras-API, als auch Eager Execution werden in TensorFlow 2.0 enthalten sein. Während einige andere APIs in 2.0 fallen gelassen werden, ist ein Konversations-Tool für bestehenden Code geplant, zusätzlich zu einer Kompatibilitäts-Library.

Estimators sind die skalierbarsten und produktionsorientiertesten Modell-Typen für Machine Learning von TensorFlow. Unternehmen können entweder die vorgefertigten Estimators von Google verwenden oder eigene schreiben. Estimators selber sind auf tf.keras.layers gebaut, was die Individualisierung vereinfacht. Normalerweise ist es einfacher, Modelle mit Estimators zu bauen, satt mit den Low-level-APIs von TensorFlow. Vorgefertigte Estimators ermöglichen es, auf einer höheren konzeptionellen Ebene zu arbeiten als mit den Basis-TensorFlow-APIs.

Keras

Keras
Keras

Keras ist eine High-level-API für neuronale Netze. Sie ist in Python geschrieben und kann auf TensorFlow, CNTK, oder Theano aufsetzend laufen. Zusätzliche Backends wie MXNet oder PlaidML werden von Drittenbietern unterstützt.

Die Implementierung von Keras in TensorFlow besitzt einige TensorFlow spezifische Verbesserungen. Keras ist nicht die einzige vereinfachte High-level-API um Neuronale-Netz-Modelle zu bauen, aber die steigende Beliebtheit von TensorFlow unterstreicht seine Qualität und Bedeutung.

Keras wurde im Hinblick auf Nutzerfreundlichkeit entwickelt. Es sollte modular und leicht auszubauen sein sowie mit Python arbeiten. Die API sei für "Menschen und nicht Maschinen entwickelt" und folge Best Practices, die die kognitive Belastung bei der Bedienung reduzieren sollen.

Neuronale Schichten, Kostenfunktionen, Optimierer, Initialisierungsschemata, Aktivierungsfunktionen und Regulierungsschemata sind in Keras alles eigenständige Module. Sie können kombiniert werden, um neue Modelle zu erstellen. Neue Modelle lassen sich wiederum einfach als neue Klassen und Funktionen hinzufügen. Modelle sind in Python-Code definiert anstatt als separate Modell-Konfigurations-Dateien.

Die Hauptgründe für die Verwendung von Keras liegen in den verfolgten Design-Prinzipien, allen voran der Fokus auf Nutzerfreundlichkeit. Es ist leicht zu lernen und Modelle lassen sich einfach bauen. Darüber hinaus besitzt Keras die Vorteile einer großen Nutzerbasis, unterstützt eine breite Palette von Bereitstellungsoptionen, mehrere GPUs und verteiltes Training. Google, Microsoft, Amazon, Apple, Nvidia, Uber und viele andere unterstützen das Tool.

PyTorch

PyTorch
PyTorch

PyTorch ist eine auf Machine Learning ausgerichtete Open-Source-Programmbibliothek, um Tensoren und dynamische neuronale Netze in Python mit starker GPU-Beschleunigung zu entiwckeln. Es ist momentan das am dritthäufigsten genannte neuronale Netzwerk-Framework nach TensorFlow und Keras. Ein dynamisches neuronales Netzwerk lässt sich von Durchlauf zu Durchlauf ändern. Dadurch kann ein PyTorch-Modell während des Trainings Zwischenlagen (hidden layers) hinzufügen und entfernen, um die Genauigkeit und Allgemeingültigkeit zu verbessern. PyTorch erstellt den Graphen im laufenden Prozess bei jeder Wiederholung neu.

PyTorch integriert Beschleunigungs-Libraries wie Intel MKL, Nvidia cuDNN und Nvidia NCCL, um ein Maximum an Geschwindigkeit zu erreichen. Sein zentraler CPU- und GPU-Tensor und die neuronalen Netzwerk-Backends - TH (Torch), THC (Torch Cuda), THNN (Torch Neural Network) und THCUNN (Torch Cuda Neural Network) - sind in unabhängigen Libraries mit einer C99-API geschrieben. Gleichzeitig ist PyTorch kein Python-Binding in ein monolithisches C++-Framework. PyTorch soll tief mit Python integriert sein und es ermöglichen, andere Python-Libraries zu verwenden.

PyTorch kann Snapshots von Tensoren anfertigen, wann immer sie sich ändern. Das Framework nähert sich den Gradienten bei jedem gespeicherten Tensor, indem es sie Unterschiede zwischen diesem Punkt und den vorherigen betrachtet. Das wird als "autograd" bezeichnet und beschleunigt die Gradienten-Berechnung um das bis zu dreifache. Da die steilsten Abstiegs-Optimierer auf Gradienten angewiesen sind, kann das den gesamten Trainingsprozess bis zu dreimal schneller machen. TensorFlow besitzt dieselbe Funktionalität.

PyTorch wird hauptsächlich von Facebook unterstützt, andere Sponsoren und Mitwirkende sind Twitter, Salesforce und Microsoft. Letztere trugen Technologie aus ihrem eigenen CNTK Framework bei, um die Fähigkeiten zu erweitern, die PyTorch aus Torch and Caffe übernommen hat.