Das kann das Deep-Learning-Framework Torch

Autor / Redakteur: Dipl. Betriebswirt Otto Geißler / Sebastian Gerstl

Torch ist ein wissenschaftliches Deep Learning Framework mit beachtlichem Support an Algorithmen für das maschinelle Lernen. Auf Grund der einfachen Skriptsprache Lua und der C/CUDA-Implementierung ist das Open-Source-Paket sehr anwenderfreundlich und sorgt für beschleunigte Prozesse.

Anbieter zum Thema

Torch (im Bild das Logo des Projektes) wird ständig weiterentwickelt und bei Facebook, Google, Twitter, NYU, IDIAP, Purdue und vielen anderen Unternehmen sowie Forschungslabors verwendet.
Torch (im Bild das Logo des Projektes) wird ständig weiterentwickelt und bei Facebook, Google, Twitter, NYU, IDIAP, Purdue und vielen anderen Unternehmen sowie Forschungslabors verwendet.
(Bild: torch.ch)

Das Open Source Framework Torch kombiniert Machine-Learning-Bibliotheken für neuronale Netze, ein Framework für wissenschaftliche Berechnungen und die Skriptsprache Lua. Torch ist vor allem im Facebook „AI Lab“ und bei Google DeepMind im Einsatz. Neben den Facebook-Experten haben auch Programmierer von Google DeepMind und Twitter zur Entwicklung von Torch beigetragen.

Torch ist ein bewährtes Framework zur Erstellung von Modellen für Deep Learning, das zügige Implementierungen herkömmlicher algebraischer Operationen sowohl auf herkömmlichen CPUs (OpenMP/SSE) oder auf einer GPU (CUDA) realisiert.

Deep Learning à la Facebook

Wie bei Googles TensorFlow sind auch bei Facebooks Torch Tensoren am Werk. Das bedeutet, Torch bietet eine Vielzahl von Algorithmen für Deep Learning, womit Entwickler Tensoren oder sogenannte N-dimensionale Arrays bearbeiten und per Zusatzpakete auch neuronale Netze erarbeitet werden können. Solche Zusatzpakete gibt es für Signal-, Parallel-, Bild-, Video- und Audioverarbeitungen sowie Computer Vision.

Vor allem Facebook steuerte selbst viele gut gepflegte Zusatzpakete bei. Das Soziale Netzwerk betont, dass die Eigenentwicklung auf den neuesten GPU mit der NVIDIA Pascal-Architektur bis zu 70 Prozent schneller läuft. Das bedeutet, dass die Netzwerke innerhalb weniger Stunden anstatt mehrerer Tage trainiert werden können.

Für die Verarbeitung natürlicher Sprache und Spracherkennung stellt Facebook eine Reihe von Modulen und Programmen bereit. Torch eignet sich vor allem für das schnellere Lernen durch Convolutional Neural Networks (ConvNets). Mithilfe dieser ConvNets ist Torch in der Lage, biologische Prozesse durch eine überlappende Anordnung von Neuronen künstlich nachzubilden.

Zur Zeit der Veröffentlichung von Torch galt diese Methode, sofern der Code auf GPU zurückgreift, als die beste, um Objekte und Gesichter zu erkennen. Zu diesem Zweck kommt Nvidias CUDA zum Einsatz. Indem Container einen parallelen Zugriff auf mehrere Prozessoren erlauben, kann parallel trainiert werden. Das heißt, die Trainingszeit dieser Modelle reduziert sich und Forschungs- und Entwicklungsprojekte erleben einen kräftigen Schub.

Die Kernfunktionen von Torch sind

  • Leistungsfähiges N-dimensionales Array,
  • eine große Anzahl an Routinen zum Indizieren, Slicen, Transponieren,
  • eine Schnittstelle zu C, über Lua,
  • lineare Algebra-Routinen,
  • Neuronale Netzwerke,
  • numerische Optimierungsroutinen,
  • eine schnelle und effiziente GPU-Unterstützung und zudem ist Torch
  • integrierbar mit Ports zu iOS und Android-Backends.

Was spricht für Torch?

Torch bietet eine hohe Flexibilität und Geschwindigkeit beim Erstellen neuronaler Netze mit komplexen Topologien. Gleichzeitig gestalten sich die Prozesse als extrem einfach. Zudem wartet Torch mit einem großen Ökosystem von Community-Paketen auf. Den Kern von Torch bilden neuronale Netzwerk- und Optimierungsbibliotheken. Damit können beliebige Graphen von neuronalen Netzen erstellt und diese auf effiziente Weise über Prozessoren parallelisiert werden.

Da der Social-Network-Gigant Facebook hinter Torch steht, kann der User eine der vitalsten Open Source Communities sowie eine ansehnliche Anzahl an Open Source Codes aus der Grundlagenforschung erwarten. Zudem lässt sich Lua sehr leicht erlernen. Torch wird kontinuierlich weiterentwickelt und kommt neben Facebook auch bei Google, Twitter, NYU, IDIAP, Purdue und vielen anderen Unternehmen und Forschungslabors zum Einsatz.

Abstraktionsschicht in Lua

Torch gehört zwar zu den wichtigsten Frameworks für das maschinelle Lernen, kann jedoch keine Abstraktionen sowie keine Boilerplate-Codes für maschinelle Lernexperimente bieten. Das ist ein wesentlicher Nachteil, denn die Programmierer müssen so ihre Experimente stets aufs Neue kodieren und die gleiche experimentelle Logik von Grund auf neu erstellen.

Das heißt, die Entwickler marschieren immer wieder über das gleiche „Terrain“, machen womöglich immer wieder die gleichen Fehler und ziehen unter Umständen auch noch die falschen Schlüsse daraus, was den Entwicklungsprozess behindern kann.

Deshalb bietet das weiterentwickelte Torchnet unter anderem für das maschinelle Lernen so genannte Boilerplate-Codes, die auf Torch basieren. Diese Sammlung an Boilerplate-Codes (Schlüsselabstraktionen bzw. Referenzimplementierungen) können sowohl zusammengebaut, zerlegt und später wiederverwendet werden.

Lego-System by Torchnet

Das hat zur Folge, dass die Programme modularisierbar werden und sich auf diese Weise die Entwicklungen nochmal erheblich beschleunigen lassen. Überdies reduziert der modulare Programmieransatz das Fehlerrisiko und vereinfacht gleichzeitig das asynchrone, parallele Laden von Daten sowie effiziente Multi-GPU-Berechnungen. Damit ist zum Beispiel die Realisierung eines Experiments auf einem anderen Datensatz genauso kinderleicht wie das Anschließen eines anderen (Bare-Bone-)Datenladers.

Das umfassende Design von Torchnet erinnert etwas an das Lego-Baustein-Prinzip: Eine überschaubare Anzahl von klaren Richtlinien ermöglicht ein simples „Zusammenschnappen“ der einzelnen Bausteine, die einerseits fest zusammenpassen und andererseits trotzdem leicht durch andere Teile ersetzt werden können. Die Abstraktion von Torchnet soll auch die Integration in andere Deep-Learning-Frameworks wie zum Beispiel Caffe oder TensorFlow zulassen.

Systemanforderungen und Installation

Für die GPU-fähige Version von Torch gelten folgende Anforderungen:

  • Ubuntu 14.x (oder ein beliebiges anderes 64-Bit-Linux-System, wenn das Framework anhand des Quellcodes erstellt werden soll).
  • Nvidia CUDA 7.5 oder aktueller (für Pascal-Grafikprozessoren: CUDA 8.0 oder aktueller).
  • cuDNN v5.0 oder aktueller

Es sind Nvidia-GPU erforderlich, die mindestens Compute Capability 3.0 unterstützen. Der Nvidia Tesla P100 und der M40 sind auf Workloads für maschinelles Lernen ausgerichtet. Es werden P100 und M40 für Server und TitanX für PC empfohlen.

Torch hat eine modulare Struktur und basiert auf LuaRocks, einem Paketmanager für Lua. Die geläufigsten Torch-Module sind unter einer Open-Source-Lizenz von BSD auf GitHub verfügbar. Es wird die Verwendung eines vorab erstellten Torch-Debian-Pakets (nur Ubuntu 14.x) empfohlen.

Dieser Beitrag stammt von unserem Partnerportal BigData-Insider.de. Verantwortlicher Redakteur: Nico Litzel.

Artikelfiles und Artikellinks

(ID:45347254)