iX 10/2019
S. 78
Report
Machine Learning

Machine-Learning-Frameworks und -Services im Vergleich

Gehirnbaukästen

Tim Schürmann

Zahlreiche optimierte Bibliotheken, Frameworks und Cloud-Dienste wollen Entwickler und teilweise auch Nicht-­Programmierer bei der Implementierung von ML-Anwendungen unterstützen. Doch nicht jedes Framework eignet sich für jede Anwendung.

Beim Machine Learning lernen Algorithmen anhand von Beispieldaten ein bestimmtes Verhalten. Verfüttert man beispielsweise Katzenbilder an einen solchen Algorithmus, kann dieser später auch neue Katzenfotos als solche erkennen. Um den eigenen Rechner lernen zu lassen, könnte man sich seine Lieblingsprogrammiersprache schnappen, die zu analysierenden Daten in die dort ange­botenen Datenstrukturen laden und dann einen passenden Algorithmus implementieren. In C++ könnte man etwa für die Neuronen eines neuronalen Netzes jeweils entsprechende Klassen erstellen. Allerdings muss man dann auch die notwendigen Algorithmen auswählen, implementieren und optimieren. Diese aufwendige Arbeit wollen zahlreiche Bibliotheken, Frameworks und mittlerweile sogar Cloud-Dienste drastisch erleichtern.

Die meisten Frameworks sind dabei auf Python zugeschnitten. Diese Skriptsprache haben die Entwickler von künstlicher Intelligenz scheinbar besonders ins Herz geschlossen. Häufig existieren jedoch auch Anbindungen an andere Sprachen. Die Frame­works nutzen optimierte Algorithmen und können im Idealfall die Grafikkarte einspannen, um die notwendigen Berechnungen zu beschleunigen. Dies erfolgt durchweg über die von NVIDIA entwickelte Schnittstelle CUDA.

TensorFlow – populär und viel genutzt

Zu den beliebtesten und bekanntesten Frame­works zählt TensorFlow. Maßgeblich von Google entwickelt, setzt es das Unternehmen vor allem bei der Sprach- und Bildverarbeitung ein. Weitere Anwender sind unter anderem Airbnb, Airbus und Coca-Cola. Seit 2015 steht TensorFlow unter der Apache-2.0-Lizenz. Obwohl Tensor­Flow als Python-Modul implementiert ist, existieren auch Bindings für Java, C++, Go und Swift (Dokumentation dazu unter ix.de/z2np). JavaScript-Entwickler können zur Implementierung zu TensorFlow.js greifen, für viele weitere Sprachen haben Freiwillige passende Bindings erstellt. C#-Anwender beispielsweise können zwischen TensorFlow.NET und Tensor­Flow­Sharp wählen.

Ihre Machine-Learning-Algorithmen geben Entwickler in Form eines Graphen vor. Dieser besteht aus Knoten, die über Kanten miteinander verbunden sind. Jeder Knoten repräsentiert dabei eine mathematische Operation. Der so zusammengestöpselte Computation Graph erhält als Eingabe sogenannte Tensoren, bei denen es sich (stark vereinfacht gesprochen) um multidimensionale Arrays handelt. Die Daten fließen dann über die Kanten durch die Knoten. Der Computation Graph dient zudem als Basis für ein neuronales Netz.

TensorFlow führt den Code wahlweise auf dem Prozessor oder auf Grafikkarten aus. Das Framework kann zudem die von Google entwickelten Rechenbeschleuniger Tensor Processing Units nutzen, die aber bislang nicht frei erhältlich sind.

Zum Redaktionsschluss lag TensorFlow 2.0 als Release Candidate vor. Diese neue Version vereinfacht die Entwicklung, indem sie unter anderem Operationen sofort ausführt, ohne dass Entwickler einen Graphen aufbauen müssen (Eager Execution). Code für TensorFlow 1.x soll bis auf wenige Ausnahmen unverändert unter TensorFlow 2.0 laufen. Zu TensorFlow existiert eine breite Palette an Literatur, Tutorials und Video­trainings, die den Einstieg erleichtern. Hinzu kommen Konferenzen und eine große Community, die bei Fragen hilft.

Zu TensorFlow gehört auch das TensorBoard, das die Berechnungen visualisiert und so beim Debuggen und Optimieren hilft (Abb. 1).

Beliebte Alternativen zu TensorFlow sind das von Facebook initiierte PyTorch und Microsofts Cognitive Toolkit (CNTK). Beide arbeiten ähnlich wie TensorFlow mit Graphen. Das CNTK nutzt Microsoft unter anderem zur Spracherkennung und Bildverarbeitung, etwa bei Cortana. PyTorch ist unter anderem bei Uber im Einsatz. Während das CNTK unter der MIT License steht, gilt für PyTorch eine eigene Open-Source-Lizenz.

Kommentieren