KI, AI, ML

Entwickler-Frameworks für Machine Learning

Serdar Yegulalp ist als Autor bei der CW-Schwesterpublikation InfoWorld tätig und betreibt unter anderem den InfoWorld Tech Watch news analysis blog.
Simon verantwortet auf Computerwoche online redaktionell leitend überwiegend alle Themen rund um IT-Sicherheit, Risiko-Management, Compliance und Datenschutz. Er entwickelt darüber hinaus innovative Darstellungsformate, beschäftigt sich besonders gerne mit Datenanalyse und -visualisierung und steht für Reportagen und Interviews vor der Kamera. Außerdem betreut der studierte Media Producer den täglichen Früh-Newsletter der Computerwoche. Aufgaben in der Traffic- und Keyword-Analyse, dem Content Management sowie die inoffizielle Funktion "redaktioneller Fußballexperte" runden sein Profil ab.
Systeme für Künstliche Intelligenz werden Mainstream - nicht nur dank billigerer Cloud-Umgebungen und leistungsstärkerer Hardware. Auch durch das wachsende Angebot an Frameworks für Maschinelles Lernen (ML).

In den vergangenen Monaten kamen eine ganze Reihe Entwicklungs- und Verwaltungs-Frameworks für KI-Systeme neu oder stark überarbeitet auf den Markt. Da sie allesamt Open Source sind, können interessierte Entwickler problemlos darauf zugreifen und neue Ideen für selbstlernende Systeme umsetzen. Wir stellen Ihnen 13 dieser Plattformen vor.

Apache Spark MLlib

Apache Spark ist wohl am ehesten als Teil der Hadoop-Familie bekannt; entstanden ist das Datenverarbeitungs-Framework auf In-Memory-Basis aber außerhalb des Hadoop-Universums. Durch seine immer größer werdende Algorithmen-Bibliothek, mit der In-Memory-Daten in Hochgeschwindigkeit verarbeitet werden können, macht sich Spark heute einen Namen als Machine-Learning-Werkzeug.

Die Spark-Algorithmen werden ständig überarbeitet und erweitert, der letztjährige Release von Version 1.5 brachte eine Menge neuer Codes mit, zudem die MLlib-Unterstützung für Python. Aktuell ist Spark 1.6 draußen, in der unter anderem ML-Prozesse erstmals dank stabiler Pipelines unterbrochen und fortgesetzt werden können.

Apache Singa

Frameworks für "Deep Learning" unterstützen fortgeschrittene ML-Funktionen wie Natural-Language-Prozesse und Bilderkennung. Singa, seit kurzem Teil des Apache Incubator, ist ein Open-Source-Framework, das Deep-Learning-Mechanismen auf große Datenvolumen hin "trainieren" soll. Singa stellt ein simples Programmierungsmodell für Deep-Learning-Netzwerke bereit und unterstützt dabei diverse Entwicklungsroutinen wie Convolutional Neural Network, Restricted Boltzmann machine und rekurrente neuronale Netze. Modelle lassen sich taktsynchron (eines nach dem anderen) oder asynchron (nebeneinander) trainieren, abhängig vom jeweiligen Fall. Apache Singa vereinfacht zudem das Cluster-Setup mit Apache Zookeeper.

Caffe

Das Deep-Learning-Framework Caffe wurde 2013 von kalifornischen Studenten als "Machine Vision Project" ins Leben gerufen. Seitdem wurde es stetig um neue Anwendungen ergänzt. Da Caffe viel Wert auf Geschwindigkeit legt, ist es komplett in C++ geschrieben und unterstützt die Nvidia-Programmiertechnik CUDA, mit der Programmteile durch den Grafikprozessor (GPU) abgearbeitet werden können. Dadurch kann der Anwender frei entscheiden, ob nun Hauptprozessor (CPU) oder GPU angesprochen werden sollen. Caffe umfasst ein ganzes Set von frei verfügbaren Referenzmodellen für gängige Klassifizierungsroutinen; die gewachsene Caffe-Community steuert weitere Modelle bei.

Microsoft Azure ML Studio

Um Machine Learning zu praktizieren, braucht es Rechenpower. Und wo findet man mehr Rechenleistung als in der Cloud? Weil die Cloud also die ideale Umgebung für ML-Anwendungen darstellt, hat Microsoft seine Azure-Cloud mit einem eigenen ML-Service auf der Basis von "pay as you go" ausgestattet: Mit Azure ML Studio können Nutzer KI-Modelle entwickeln und trainieren und anschließend in APIs umwandeln, um diese wiederum Anderen zur Verfügung zur stellen.

Website von Microsoft Azure ML Studio
Website von Microsoft Azure ML Studio

So wurde Microsofts Projekt "HowOldRobot" beispielsweise komplett auf diese Weise entwickelt. Pro Account stehen 10 GB Speicherplatz zur Verfügung - die Verknüpfung mit bereits vorhandenem Azure-Storage für größere Projekte ist aber problemlos möglich. Microsoft stellt eine größere Auswahl Algorithmen bereit - sowohl eigene als auch welche von Drittanbietern. Um Azure ML Studio zu testen, braucht es nicht einmal einen Account: Wer möchte, kann sich anonym einwählen und acht Stunden lang nach Herzenslust ausprobieren.

Amazon Machine Learning

Amazons Herangehensweise an das Thema Cloud-Dienste folgt einem bestimmten Muster: Stelle die Basis bereit, besorge eine Kernzielgruppe, die sich dafür interessiert, lass sie die Aufbauarbeit leisten, und finde dann heraus, was die Anwender wirklich noch brauchen, um es zu liefern.

Ähnlich verhält es sich mit Amazons Ausflug in die Welt des Maschinellen Lernens. Amazon Machine Learning arbeitet mit Daten, die in einer Amazon-Cloud wie S3, Redshift oder RDS liegen und kann mithilfe binärer Klassifizierungen und Multiklassen-Kategorisierung von vorgegebenen Daten neue KI-Modelle bauen. Natürlich ist der gesamte Service sehr Amazon-lastig - lediglich bei Amazon gespeicherte Daten können verarbeitet werden, eine Import/Export-Funktion steht nicht zur Verfügung, die entwickelten Modelle dürfen nicht größer als 100 GB werden.

Microsoft Distributed Machine Learning Toolkit

Je mehr Computer sich mit der Lösung eines ML-Problems beschäftigen, desto besser. Es ist aber nicht immer ganz einfach, mehrere Maschinen zusammenzuschalten und ML-Anwendungen zu entwickeln, die auf diesem Verbund reibungslos funktionieren. Das DMTK (Distributed Machine Learning Toolkit) von Microsoft geht dieses Problem an, indem es verschiedene Arten von ML-Routinen über einen System-Cluster hinweg distribuiert.

DMTK ist mehr Framework als "Out-of-the-box-Lösung", entsprechend klein ist die Zahl der inkludierten Algorithmen. Das Design erlaubt aber durchaus eine spätere Erweiterung in alle Richtungen - so hat jeder Cluster-Knoten einen lokalen Zwischenspeicher, der das Datenaufkommen auf dem zentralen Server, der Parameter für laufende Routinen verwaltet, spürbar reduziert.

Google TensorFlow

Genau wie Microsofts DMTK soll Google TensorFlow über mehrere Maschinen skalieren. Zunächst war es als internes Google-Tool geplant, wurde dann aber schnell als Open-Source-Projekt öffentlich zugänglich gemacht. TensorFlow basiert auf sogenannten Data-Flow-Graphen, in denen Bündel von Daten ("Tensors") durch eine Reihe von Algorithmen verarbeitet werden, die durch einen Graph beschrieben sind. Die Bewegungsmuster der Daten innerhalb des Systems heißen "Flows". Die Graphen lassen sich mittels C++ und Python zusammenbauen und via CPU oder GPU verarbeiten. Googles Plan ist es, TensorFlow durch Drittanbieter weiter ausarbeiten zu lassen.

Microsoft Computational Network Toolkit

Im Zuge des DMTK-Releases brachte Microsoft gleich noch ein zweites ML-Framework heraus, das Computational Network Toolkit - kurz CNTK. Es funktioniert ähnlich wie Google TensorFlow: Neuronale Netze lassen sich durch gerichtete Graphen erzeugen. Microsofts eigener Beschreibung zufolge lässt sich CNTK außerdem mit Projekten wie Caffe, Theano und Torch vergleichen - sei aber schneller und könne im Gegensatz zu den genannten gar parallel auf Prozessor- und Grafikprozessorleistung zugreifen.

Das CTNK-Framework in Verbindung mit Multi-GPU-Ressourcen in der Azure-Cloud sollen laut Microsoft beispielsweise dafür gesorgt haben, dass die Entwicklung des Cortana-Sprachassistenzsystems um ein Vielfaches schneller von der Hand gegangen sei als ursprünglich gedacht. CNTK entstand schließlich im Rahmen der Microsoft-Forschung zu Spracherkennungssystemen und wurde erstmals im April 2015 unter Open-Source-Lizenz veröffentlicht. Mittlerweile steht es auf GitHub unter einer deutlich freieren MIT-ähnlichen Lizenz zur allgemeinen Verfügung.

Veles (Samsung)

Veles ist eine dezentrale Plattform für Deep-learning-Anwendungen wie TensorFlow und DMTK, geschrieben in C++ mit einem "Hauch" Python für Automatisierungs- und Koordinierungs-Routinen. Sie ist dazu gedacht, Datensätze zu analysieren und automatisch zu normalisieren, bevor sie in den Produktivbetrieb übergehen - was wiederum durch eine eigene API namens REST sofort möglich ist - vorausgesetzt, die eingesetzte Hardware hat genügend Power. Der Python-Einsatz in Veles umfasst auch ein eigenes Analyse- und Visualisierungstool namens Jupyter (früher IPython) für die Darstellung einzelner Anwendungs-Cluster. Die von Samsung betriebene ML-Plattform soll bald unter Open-Source-Lizenz gestellt werden, um künftige Entwicklungen - beispielsweise Schnittstellen zu Windows und Mac OS X - zu beschleunigen.

Veles soll bald Open Source werden.
Veles soll bald Open Source werden.

Brainstorm

Von den Doktoranden Klaus Greff und Rupesh Srivastava am IDSIA (Institute Dalle Molle for Artifical Intelligence) im schweizerischen Lugano im vergangenen Jahr entwickelt, soll das Projekt "Brainstorm" "neuronale Netze schnell, flexibel und spaßig" machen. Eine Reihe rekurrenter neuronaler Netze wie LSTM werden bereits unterstützt. Brainstorm setzt auf Python, um zwei Data-Management-APIs ("Handers" genannt) bereitzustellen - eine für CPU-Prozessing durch die Bibliothek "Numpy" und eine für GPU-Verarbeitung via CUDA. Die meiste Arbeit erledigen Python-Skripte - erwarten Sie also keine bedienerfreundliche Oberfläche. Der langfristige Plan sieht aber durchaus eine eigene GUI vor, die multiplattformfähig ist und Erfahrungswerte aus früheren Open-Source-Projekten berücksichtigen soll.

mlpack 2

Die neue Version der in C++ geschriebenen Machine-Learning-Bibliothek mlpack, die erstmals im Jahr 2011 erschien, bringt eine Menge Neuerungen mit - darunter neue Algorithmen und überarbeitete alte. Leider unterstützt mlpack2 von Haus aus noch immer keine andere Programmiersprache als C++ - Entwickler, die eher auf R oder Python setzen, können die Bibliothek nicht benutzen, solange niemand sich erbarmt und geeignete mlpack-"Wandler" veröffentlicht. Immerhin wird MATLAB unterstützt, was aber im ML-Umfeld nicht die ganz große Rolle spielt.

Marvin

Marvin, ein Framework für neuronale Netze, ist noch relativ frisch und kommt von der Princeton Vision Group. Es wurde "geboren um gehackt zu werden" - so seine Schöpfer in der Projektdokumentation - und setzt auf einigen wenigen Codezeilen auf, die in C++ und im CUDA-GPU-Framework geschrieben wurden. Aber auch wenn der Programmcode minimalistisch daherkommt, bringt Marvin einige vortrainierte Modelle mit, die sinnvoll weiterverwendet werden können.

Neon

Das Unternehmen NervanaSystems hat eine eigene Hard- und Software-Plattform für Deep Learning geschrieben. Mit Neon stellt es nun auch ein Open-Source-Framework zur Verfügung, das auf ein- und abschaltbaren Modulen basiert und KI-Prozesse via CPU, GPU oder Nervanas eigener Hardware ermöglicht. Neon wurde in Python und in Teilen in C++ programmiert. Damit steht es allen Python-Entwicklern und denen, die auf Python-freundlichen Frameworks entwickeln, offen.

Dieser Beitrag erschien im englischen Original bei unserer US-Schwesterpublikation InfoWorld.