InfoWorld Award 2019

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

08.03.2019 von Jens Dose
Wir stellen die besten Tools für Softwareentwicklung, Cloud-Computing, Big Data Analytics und Machine Learning vor.

Die COMPUTERWOCHE-Schwesterpublikation InfoWorld wählt mit den Technology of the Year Awards jährlich die besten, innovativsten und wichtigsten Produkte der IT-Landschaft aus. Dieses Jahr sind Container, Cloud-native Anwendungs-Stacks, verteilte Datenverarbeitungssysteme und Machine Learning die großen Themen.

Der diesjährige InfoWorld Award kürt die besten Tools für Softwareentwicklung, Cloud-Computing, Big Data Analytics und Machine Learning.

Unter den Gewinnern befinden sich drei große Machine-Learning-Libraries, ein verteiltes Training-Framework, das Deep Learning beschleunigt, und eine automatisierte Plattform, die Laien durch Feature Engineering, Model Selection, Training und Optimierung für Predictive Analytics führt. Damit gibt es mehr Gewinner im Bereich Machine Learning als in jeder anderen Produkt-Kategorie, einschließlich Softwareentwicklung.

Drei Datenbanken haben es auf die diesjährige Gewinner-Liste geschafft. Mit dabei sind eine wide-Column-Datenbank, ein Mehrzweck-Datenspeicher und eine Datenbank, die sowohl Anwendungsplattform als auch Datenspeicher ist. Weil sich Daten immer bewegen, vorzugsweise in Echtzeit, wurden zudem zwei Plattformen mit aufgenommen, die es ermöglichen, Stream-Processing-Applikationen zu bauen.

Kubernetes

Kubernetes

Kubernetes (alias K8s) erlebte in den letzten Jahren einen kometenhaften Aufstieg. Ursprünglich eines von zahlreichen Systemen für die Container-Orchestrierung, entwickelte es sich schnell zur Standard-Plattform. Zum Einsatz kommt Kubernetes bei den großen Cloud-Anbietern und in On-premise-Installationen großer Unternehmen gleichermaßen. Verantwortliche im Operations-Bereich sollten sich also eingehend mit dem Open-Source-Projekt auseinanderzusetzen.

Kubernetes wurde 2015 von einer Hand voll Google-Entwicklern gegründet und baut auf Erfahrungen, die über zehn Jahre hinweg beim Betrieb der Rechenzentren des Internetgiganten gesammelt wurden. Es ist eine Plattform, um Container-basierte Anwendungen und Workloads über große Cluster hinweg bereitzustellen, zu skalieren und zu überwachen. Die jüngsten Kubernetes-Releases brachten einige Verbesserungen, wie beispielsweise eine Überarbeitung des Speichers. Weitere neue Funktionen beinhalten:

Auch der Kern-Stack von Kubernetes bekam wichtige Komponenten spendiert. So wurde Istio in Kubernetes integriert. Istio definiert ein sogenanntes Service Mesh für verteilte Systeme und Microservice-Architekturen. Damit wird es einfacherer, die zunehmend komplexer werdenden Microservice-Landschaften innerhalb großer Anwendungen zu verwalten, zu überwachen und abzusichern. Zudem tauchten spezialisierte Frameworks wie Kubeflow auf, das TensorFlow oder PyTorch Machine-Learning-Pipelines (siehe weiter unten) in Kubernetes einfach und skalierbar bereitstellen soll.

Um spezifische Management-Aufgaben in Kubernetes zu vereinfachen, stellen immer mehr Drittanbieter Tools und Frameworks zur Verfügung. Sie vereinfachen beispielsweise die Definitionen von Apps oder die Überwachung mehrerer Cluster.

Firebase

Firebase

Auf den ersten Blick erscheint Firebase wie eine einfache Speicherlösung für Paare aus Schlüsseln und den zugehörigen Werten - im Grunde nichts anderes, als andere angemessen konsistent gehaltene NoSQL-Datenbanken. Google erweiterte die Funktionen von Firebase aber kontinuierlich, so dass sie immer mehr Aufgaben übernehmen konnte, die eigentlich Cloud-basierten Web-Anwendungen zustehen. Die Kalifornier haben sogar angefangen, Firebase als eine mobile Plattform zu bezeichnen.

Das Team von Firebase fand heraus, dass die Synchronisierungs-Routinen, um die Datenbank konsistent zu halten, sich ideal dazu eignen, Daten mit mobilen Clients auszutauschen. Es ist also kein Problem mehr, Daten auf einem Client zwischenzuspeichern, wenn das Internet nicht optimal läuft. Sie öffneten den Synchronisierungsprozess, so dass der Code beispielsweise keine komplizierten Algorithmen für Handshakes mehr ausführen muss. Was übertragen werden soll, wird einfach an Firebase übergeben und es erscheint in der Kopie auf dem Mobilgerät. Es ist im Grunde eine große Datenbank, wobei die Server- und Client-Routinen aus einem gemeinsamen Pool lesen und schreiben.

Google erweitert Firebase kontinuierlich, während es mit den restlichen Lösungen der Kalifornier integriert wird. So lässt beispielsweise die Authentifizierung über den Social-Log-In via Facebook oder den Google-Account Nutzer auf die passenden Teile der Datenbank zugreifen. Google zieht nach und nach alle ihre Lösungen etwa für Analytics, Hosting und Messaging unter den Mantel der Datenbank. Auch Machine Learning ist bereits als Beta-Option in Firebase verfügbar, wenn es gilt, die Schlüssel-Wert-Paare in der Datenbank zu analysieren.

Serverless Framework

Serverless Framework

Die erste Cloud-Generation sparte Unternehmen durch anmietbare Server Zeit, indem sie ihnen die mühsame Hardware-Verwaltung abnahm. Server standen bei den Anbietern, so dass sie sich darum kümmern mussten, sie zu beheizen, zu kühlen und zu warten. Die nächste Generation will nun auch die Server abschaffen - zumindest dem Namen nach. So sollen nicht nur Sorgen um Updates und Patches für das Betriebssystem der Vergangenheit angehören, sondern auch, was die Anwendungsbereitstellung betrifft.

Es gibt zwar immer noch Server-Hardware und ein Betriebssystem irgendwo unter dem Code, aber für das meiste davon wird die Verantwortung abgegeben. Statt sich mit Root-Zugang und ähnlichem aufzuhalten, können Unternehmen einfach ihre Funktionen hochladen und sie vom Software-Stack des Cloud-Betreibers ausführen lassen. Ein Beispiel hierfür wäre AWS Lambda.

Allerdings gibt es Herausforderungen. Im Serverless Computing müssen technische Architekturen neu gedacht werden. Wenn Unternehmen sich auf Events und asynchrone Warteschlangen (Queues) für die zu nutzenden Services verlassen, gilt es, Anwendungen in ordentlich getrennte Aufgaben umzuwandeln. Zwar gibt es bereits ein paar Hilfestellungen für die Tool-Bereitstellung, vieles bedarf aber noch der Klärung, darunter Fehlersuche (Debugging) von Integrationen, verteilte Überwachung, Paketierung der Bereitstellung sowie die Versionierung der Funktionen.

Außerdem droht die Abhängigkeit (Vendor Lock-In) von den führenden Function-as-a-Service (FaaS)-Anbietern. AWS Lamdba, Microsoft Azure Functions und Google Cloud Functions haben alle individuelle Methoden für Bereitstellung und Betrieb.

Hier schafft das Serverless Framework Abhilfe. Es zieht eine Abstraktionsebene über die herstellerspezifischen Implementierungen ein, um die App-Bereitstellung zu beschleunigen. Mit dem Open Source Framework lassen sich die eigenen Funktionen komfortabel testen und bei verschiedenen Cloud-Anbietern bereitstellen. Konfigurations-Updates werden vereinfacht durch eine gemeinsame YAML-Datei, während gleichzeitig zahlreiche Features für Funktions-Management und Sicherheit bereitstehen.

Neben den großen Drei unterstützt das Serverless Framework auch

Zudem bietet sie Support für zahlreiche Sprachen und Features, um persistente Verbindungen zu verarbeiten.

Serverless Computing ist weder ausgereift noch die Geheimwaffe für jeden Use Case. Die Wirtschaftlichkeit und Effizienz der Technologie machen sie jedoch attraktiv. Das Serverless Framework hilft dabei, Schlaglöcher auf dem Weg zu weniger Betriebskosten und schnellerer Bereitstellung zu umfahren.

Elastic Stack

Elastic Stack

In kundenseitigen Web-Anwendungen sind ausgeklügelte Suchfunktionen ein Muss. Anwender bekommen stets Freitext-Suchmasken präsentiert, die ihre Rechtschreibung korrigieren, automatisch alternative Formulierungen vorschlagen und Suchergebnisse hervorheben, um ihnen zu zeigen, warum bestimmte Ergebnisse angezeigt werden.

Der Elastic Stack erfüllt all diese Anforderungen und noch einiges mehr. Seine Hauptkomponenten sind:

Mit diesem Aufbau unterstützt Elastic Stack Aufgaben wie kundenseitige Dokumentensuche, zentralisierte Log-Aggregation und Analytics.

Mit Logstash und Beats können Log-Daten aus einer beliebigen Anzahl von verschiedenen Services gesammelt werden. In einem zentralen Elasticsearch-Cluster ist es möglich, diese Daten für Fehlersuche und Analytics weiter zu verarbeiten. Elasticsearch lässt die Nutzer einzelne oder Gruppen von Dokumenten aus fast jeder Sprache schnell indexieren, inklusive der wahrscheinlichsten Mapping-Typen für alle Felder (ähnlich den Spalten-Datentypen in relationalen Datenbanken). Sobald die Log-Dateien indexiert sind, steht Kibana bereit, um Charts und Dashboards zu erstellen, die den Status des Systems auf einen Blick darstellen.

Damit haben Unternehmen eine vollwertige Such-API, die Fuzzy-Suche und die Hervorhebung und Facettensuchergebnisse unterstützt. Kombiniert mit einem Frontend-Tool wie Searchkit erhalten Anwender schnell einen Prototyp für facettierte Freitextsuche.

DataStax Enterprise

DataStax Enterprise

Apache Cassandra ist ein verteiltes, spaltenorientiertes NoSQL Datenbank-Managementsystem (DBMS). Die Open-Source-Lösung eignet sich dazu, hochskalierbare globale Dateninfrastrukturen zu betreiben. Da sie auf eine Master-Slave-Struktur mit einer übergeordneten Steuerungseinheit verzichtet (masterless), besitzt sie keinen Single Point of Failure (SPOF) und kann viele verschiedene Cloud-Anwendungen mit hohem Durchsatz ausführen.

Auf der anderen Seite ist das System aber umständlich in der Bereitstellung und Verwaltung. Zudem lassen die Fähigkeiten einiges zu wünschen übrig, wenn es gilt, verschiedene Anwendungsarten wie Analytics, Suche und Graph-Funktionen auszuführen. DataStax Enterprise (alias DSE) ergänzt das DBMS um diese Features. Gleichzeitig verbessert die Lösung die Performance, Sicherheit und Verwaltung. Außerdem bietet sie:

Wie Cassandra ist DataStax Enterprise am besten für große Datenbanken im Terabyte- bis Petabyte-Bereich geeignet. Für den größten Nutzen wird sie mit einem denormalisierten Schema verwendet, das mehrere Spalten pro Zeile hat. DataStax- und Cassandra-Anwender nutzen es hauptsächlich für sehr große Anwendungen. Ebay setzt beispielsweise DataStax Enterprise ein, um 250 TB an Auktionsdaten mit sechs Milliarden Schreib- und fünf Milliarden Lesezugriffen täglich zu speichern.

Mit der sechsen Version bekam DataStax Enterprise 2018 einige neue Features für DSE Analytics, DSE Graph, und DSE Search spendiert sowie detailliertere Sicherheits-Einstellungen. Verbesserungen im Entwickler-Tool DataStax Studio beinhalten Unterstützung für Spark SQL zur Analyse von Daten in DSE-Clustern und erweiterten Support der integrierten Entwicklungsumgebung (IDE) für DSE Graph mit interaktiven Graphen.

Einige Benchmarks wollen belegen, DSE 6 sei um ein Vielfaches schneller als Cassandra.

Apache Kafka

Apache Kafka

Seit mittlerweile acht Jahren bietet das Projekt Apache Kafka eine verteilte Open-Source-Plattform für Data-Streaming-Anwendungen. Ob Unternehmen sie mit Apache Storm oder Apache Spark für die Verarbeitung erweitern oder die eingebauten Tools von Apache Kafka verwenden: Anwendungen mit geringen Latenzen sind für die Plattform kein Problem. Durch ihren Log-basierten Speicher ist sie gut geeignet für Szenarien, bei denen es auf Verlässlichkeit ankommt.

Kafka Connect sorgt mit einer Reihe an Konnektoren für Microsoft SQL Server, Elasticsearch, HDFS, Amazon S3 und einigen mehr für die Anbindung von Datenbanken und andere Datenquellen. Um Daten in den Apache Kafka Cluster zu leiten, muss also lediglich eine Konfigurationsdatei bearbeitet werden. So kann beispielsweise eine komplette Pipeline aus einer Datenbank nach Amazon S3 aufgebaut werden, ohne eine einzige Zeile eigenen Code schreiben oder Java-Code modifizieren zu müssen.

Confluent, einer der Hauptentwickler von Apache Kafka, bietet eine Plattform, die auf dem Open-Source-Fundament aufbaut. Zum einen erweitert es das Grundgerüst um gängige Unternehmens-Features wie bessere operative Nutzer-Interfaces. Zum anderen beinhaltet es KSQL, eine Library, mit der die Daten in Kafka-Topics (Containern) mithilfe einfacher SQL abgefragt und verarbeitet werden können.

Will ein Unternehmen Kafka nicht selbst betreiben, bietet Google gemeinsam mit Confluent eine Managed Platform. Auch Amazon entwickelt gerade einen Service namens Managed Streaming for Kafka (Amazon MSK), der als öffentliche Vorversion verfügbar ist und wahrscheinlich 2019 fertiggestellt wird.

Apache Beam

Apache Beam

Das Programmiermodell Apache Beam verfolgt einen zukunftsweisenden Ansatz bei der Entwicklung von Pipelines für die Batch- und Datenstrom-Verarbeitung. Anders als die meisten Plattformen abstrahiert Beam die Programmiersprache von der endgültigen Execution Engine. Entwickler können die Pipeline in Java, Python oder Go schreiben und dann eine passende Laufzeit-Engine auswählen. So eignet sich beispielsweise Apache Spark für In-Memory-Aufgaben oder Apache Flink, wenn es um Performance mit niedriger Latenz geht.

Die Business-Logik ist nicht an eine bestimmte Execution Engine gebunden, so dass Unternehmen sich nicht von Technologien abhängig machen. Außerdem müssen Entwickler sich nicht mit den Einzelheiten der Runner-Konfiguration auseinandersetzen.

Beam verwaltet alle Mechaniken der zeitlichen Event-Verarbeitung wie vordefinierte Batches oder unvorhergesehene Übertragungen von unregelmäßig ausgelösten IoT-Sensoren. Beam sammelt mehrere Ereignisfenster an und wartet darauf, dass seine Onborad-Heuristik feststellt, dass genug Daten angehäuft wurden. Anschließend startet es die Verarbeitung inklusive Umwandlungen, Datenanreicherung und Flussüberwachung.

Beam unterstützt eine Vielzahl an Runners (Spart, Flink, Google Dataflow), I/O Umwandlern (Cassandra, HBase, Google BigQuery), Messaging (Kinesis, Kafka, Google Pub/Sub) und Dateiquellen (HDFS, Amaozon S3, Google Cloud Storage).

Apache Beam bietet nicht nur eine solide Engine, um verteilte ETL-Prozesse (Daten aus einem Quellsystemen extrahieren, umwandeln, integrieren und in ein Zielsystem schreiben), Datenanalysen in Echtzeit und Machine-Learning-Pipelines zu verarbeiten. In gewisser Weise sorgt es auch dafür, dass die Investition eines Unternehmens zukunftssicher ist.

Redis

Redis

Redis ist eine NoQL-Datenbank, ein In-Memory-Cache, ein Message Broker und noch ein bisschen mehr. Redis bietet so viele nützliche Funktionen in einer Lösung, dass der sogenannte In-Memory-Datenstruktur-Speicher zu einem integralen Teil moderner Web-Anwendungs-Stacks geworden ist. Sein Library-Support umfasst beinahe jede relevante Programmiersprache.

Mit Redis können Entwickler mit genau dem Maß an Komplexität und Leistung arbeiten, das sie für eine bestimmte Aufgabe brauchen. Geht es nur um einen einfachen In-Memory-Cache für Datenfragmente, ist Redis in wenigen Minuten eingerichtet und funktioniert mit der Anwendung. Wird ein Festplatten-gesichertes NoSQL-System mit verschiedenen Datenstrukturen und individuellen Cache-Eviction-Schemata benötigt, ist auch das mit ein bisschen mehr Aufwand möglich.

Redis 5.0 führte einige neue Features ein. Das wichtigste ist der "Stream Data Type", eine Log-artige Datenstruktur, zu der nur hinzugefügt werden kann (append-only). Damit ist es möglich, mit Redis Messaging-Systeme zu entwickeln, die Apache Kafka ähneln. Darüber hinaus beinhaltet die neue Version bessere Memory-Verwaltung und Fragmentierungskontrolle - beides wichtige Leistungsverbesserungen für ein System, das hauptsächlich um In-Memory-Speicher herum aufgebaut ist.

Visual Studio Code

Visual Studio Code

Das Entwickler-Tool Visual Studio Code passt sich den Bedürfnissen der Nutzer an. Es kann als schneller, leichter Code-Editor dienen oder zu einer ausgewachsenen Entwicklungs-Plattform anwachsen, dank Plug-Ins und Erweiterungen für beinahe jede gängige Programmiersprache oder Laufzeitumgebung. Python, Java, Kotlin, Go, Rust, JavaScript, TypeScript, und Node.js (ganz zu schweigen von Microsofts eigenen .Net-Sprachen) werden alle unterstützt, genauso wie zusätzliche Dokument-Formate wie Markdown, HTML, reStructuredText, und LLVM IR.

Neben dem breiten Support und großem Anklang bei den Nutzern tut sich Visual Studio Code durch kontinuierliche Produktverbesserungen und Erweiterungen hervor. Kein Funktionsbereich wurde ignoriert und so bietet das Tool starken Support unter anderem für Git, Team Foundation Server, Docker, Code Linting (statische Analyse von Quellcode, um Fehler zu finden), Refaktorisierung (automatische Strukturverbesserung des Codes) und Large-File-Support. Visual Studio Code kann auch in einem eigenständigen Verzeichnis ausgeführt werden. Anschließend kann das Tool als eigenständige Umgebung neu verpackt werden.

.Net Core

.Net Core

2016 veröffentlichte Microsoft einen Teil der Funktionalität seines .Net Frameworks als Open-Source-Tool .Net Core. Die Community bekam damit eine abgespeckte Laufzeitumgebung mit einem offenen Entwicklungsprozess, einer Cross-Plattform-Philosophie und eine Kompatibilitätsbrücke zurück in das Haupt-.Net-Framework für Apps, die es brauchen.

Version 2.1 brachte viele Features, die diese Ausrichtung weiter vorantrieben. Darunter sind:

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:

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 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 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.

Horovod

Horovod

Horovod ist ein verteiltes Trainings-Framework für TensorFlow, Keras und PyTorch, das von Uber entwickelt wurde. Horovod soll verteiltes Deep Learning schnell und einfach in der Handhabung machen. Horovod stützt sich auf Ideen von Baidus Versuchsimplementierung des TensorFlow Ring-Allreduce-Algorithmus'.

Uber versuchte ursprünglich, Distributed TensorFlow mit Parameter-Servern zu verwenden. Die Ingenieure fanden heraus, dass das MPI-Modell unkomplizierter war und weniger Code-Anpassungen brauchte. Uber behauptet, das Horovod-System ermögliche es, ein KI-Modell ungefähr doppelt so schnell trainieren zu können wie eine traditionelle TensorFlow-Implementierung.

Horovod benutzt Open MPI (oder eine andere MPI-Implementierung), um Nachrichten zwischen Knoten auszutauschen, und Nvidia NCCL für seine hoch-optimierte Version von Ring Allreduce. Horovod erreicht 90 Prozent Scaling-Effizienz für Inception-v3 und ResNet-101. Für VGG-16 erzielt es auf bis zu 512 Nvidia Pascal GPUs eine Scaling-Effizienz von 68 Prozent.

Im Dezember 2018 kündigte Uber an, dass sie das Horovod-Projekt unter die Ägide der LF Deep Learning Foundation für Open-Source-KI-Software der Linux-Foundation gibt.

XGBoost

XGBoost

XGBoost (eXtreme Gradient Boosting) ist eine Open-Source Machine Learning Library, die verteiltes Gradienten-Boosting für Python, R, Java, Julia und andere Programmiersprachen implementiert. Der Kern-Code des Projekts ist C++.

XGBoost bietet einen parallelen Baum-Boosting-Algorithmus, der viele Data-Sciene-Probleme auf schnelle und akkurate Weise löst. Derselbe Code läuft auf einzelnen Maschinen und in verteilten Umgebungen (wie Hadoop, MPI oder Spark). Die verteilte Version kann skalieren, um Probleme mit Milliarden von Beispielen zu lösen.

XGBoost wurde in Data-Science-Kreisen bekannt, als es einige Wettbewerbe der Kaggle-Community gewann. Es nahm seinen Anfang in einem Forschungsprojekt der University of Washington. Das Paper zu XGBoost von Tianqi Chen und Carlos Guestrin aus dem Jahr 2016 erklärt die Gradienten-Baum-Boosting-Algorithmen. Zudem beschreibt die Arbeit vorgenommene Verbesserungen an XGBoost wie Cache-aware Prefetch und Spracity-Awareness.

Außerdem testen die Forscher XGBoost gegen pGBRT (parallel gradient boosted regression trees) im Learning-to-rank-Problem. Dabei handelt es sich im Grunde um ein Optimierungs-Problem in Bezug auf Metriken, die bewerten, wie gut ein Algorithmus anhand von Daten lernt. Learning to rank bedeutet, Suchmaschinen mit Machine-Learning zu kombinieren und Nutzern so ein Ergebnis zu liefern, bei dem die die Gesamtheit aller zur Suchanfrage passenden gefundenen Ergebnisse nach Relevanz für den Nutzer geordnet ist.

H2O Driverless AI

H2O Driverless AI

Wenn es darum geht, Rohdaten in Predictive Analytics umzuwandeln, glänzt H2O Driverless AI durch seine automatisierte Einfachheit. Best-Practice-Leitlinien und Wegweiser helfen KI-Laien, versteckte Muster durch überwachtes sowie unbeaufsichtigtes maschinelles Lernen zu entdecken.

Anwender stellen die Daten bereit und isolieren die abhängigen Variablen. Die selbstgeschriebenen Algorithmen von H2O übernehmen dann den Löwenanteil des Feature Engineering, der Modell-Auswahl und Optimierung.

Nutzer brauchen immer noch ein Verständnis ihres Datensets und Kapazitäten zur Interpretation des Outputs. Die visuellen Tools und klaren Erklärungen von H2O helfen aber dabei, eine gemeinsame Sprache und Verständnis zwischen Unternehmensabteilungen, IT und Data Scientists zu schaffen.

Data Scientists und Entwickler können Modell-Parameter verfeinern und Funktionen mit Python und R ausbauen. Jupyter Notebook-Webanwendungen exportieren Code aus der Machine Learning Pipeline für die Produktivumgebung. H2O kann On-Premise und in der Cloud mit der bestehenden Big-Data-Infrastruktur wie Hadoop oder Spark arbeiten. Es kann Daten aus HDFS, Amazon S3 oder Azure Data Lake aufnehmen und Nvidia GPU-Verarbeitung nutzen für zusätzliche Geschwindigkeit.

2018 bekam H2O wichtige Updates. Darunter in den Bereichen:

Visuelle Entscheidungsbäume leiten Nutzer jetzt grafisch durch den Prozess, "wie" eine Vorhersage entstanden ist - um beispielsweise zu klären, warum ein Versicherungsfall als betrügerisch gekennzeichnet wurde. H2O hat sogar angefangen, seine Algorithmen in den Amazon- und Microsoft-Clouds direkt verfügbar zu machen.

H2O Driverless AI wird Data Engineers nicht den Job kosten oder jedes fortschrittliche Machine-Learning-Problem lösen. Es bietet aber eine schlanke Alternative dazu, eine KI von Grund auf aufzubauen. Damit verkürzt sich die Zeit, bis ein Unternehmen Predictive statt reaktiv wird.