Neuronale Netze erfüllen viele Aufgaben besser als herkömmliche Algorithmen und manches können nur sie allein. Allerdings kostet ihr Training enorm viel Rechenzeit und Geld. Dank Erkenntnissen von ETH-Forschenden soll dieses Training aber beschleunigt werden – gute Nachrichten, insbesondere für künftige Nutzer des Supercomputers Alps am CSCS. Zurzeit ist das der ETH angeschlossene Nationale Computer-Hochleistungszentrum der Schweiz CSCS dabei, einen neuen Supercomputer aufzubauen. Die Maschine namens Alps wird das derzeitige Schweizer Flaggschiff unter den Hochleistungscomputern, Piz Daint, bis im Frühling 2023 ersetzen. Aufgrund der Architektur seiner Grafikprozessoren und seines Dateisystems wird Alps einer der leistungsstärksten auf künstliche Intelligenz optimierten Rechner der Welt.
"Das System ist besonders gut auf Machine-Learning-Anwendungen angepasst und wird hochgradig parallele Rechenoperationen mit riesigen Datenmengen ermöglichen", sagt Torsten Hoefler, Professor an der ETH Zürich und Leiter des Scalable Parallel Computing Lab der ETH. Zudem unterstützt es speziell für Deep Learning entwickelte Funktionen wie das sogenannte Sparsity – eine Funktion, die das Speichern und Verarbeiten überflüssiger Daten verhindert und dadurch neuronale Netze beschleunigt.
Teures Training
Um aber ein derart leistungsstarkes System so effizient wie möglich zu nutzen, müssen auch die Anwendungen intelligenter werden. Mit diesem Ziel haben zwei Wissenschaftler aus Torsten Hoeflers Team, Roman Boehringer und Nikoli Dryden, eine Software entwickelt, die das Training von Deep-Learning-Anwendungen beschleunigt. Denn bei der Arbeit mit neuronalen Netzen und Deep-Learning-Anwendungen ist deren Training der aufwendigste und teuerste Arbeitsschritt überhaupt. So kann ein einziger Trainingslauf eines ausgefeilten Spracherkennungs-Modells rund zehn Millionen Dollar kosten. Die neue Software namens NoPFS (Near-optimal Pre-Fetching System) kurbelt diesen Prozess durch ein Mittel namens "Clairvoyance" an, zu Deutsch "Hellseherei": Sie nutzt einen vorhersagbaren Vorgang beim Training aus – und zwar konsequenter, als andere Programme dies bisher tun.
Während des Trainings von neuronalen Netzen werden diese mit Datenproben sowie den gewünschten Labels für diese Proben gefüttert. Bei einer Bilderkennungsanwendung beispielsweise sind diese Datenbeispiele Bilder von Objekten – beispielsweise eine Katze. Wenn die Anwendung das Bild zunächst falsch klassifiziert, als Hund etwa, korrigiert und aktualisiert sie sich auf der Grundlage des wahren Werts "Katze" selbst. So wird sie das Tier beim nächsten Mal mit grösserer Wahrscheinlichkeit richtig identifizieren. Sofern dieser Zyklus mit genügend Proben aus dem Datensatz wiederholt wird, tippt die Anwendung schliesslich annähernd jedes Mal richtig.
Dieser Lernprozess ist jedoch sehr langsam. Um zu lernen, benötigen neuronale Netze Hunderttausende, manchmal Millionen von Datenproben, und dazu wiederum braucht es unzählige Schritte zum Laden der Daten und zum Aktualisieren der Werte. Diese Lade- und Speicherschritte bilden den zeitaufwändigsten und teuersten Teil des Trainings. In der Praxis verschlingt dies bis zu 85 Prozent der gesamten Trainingszeit.
Blick in die Kristallkugel
Hier nun kommt die neue Software NoPFS ins Spiel. Sie nutzt das Konzept der "Clairvoyance", um das Laden der Trainingsdaten zu beschleunigen. Die Datenbeispiele, die ein Deep-Learning-Modell zu sehen bekommt, werden eigentlich zufällig ausgewählt. Sie werden nach dem Zufallsprinzip in sogenannte Mini-Batches aus beispielsweise 32 Datenelementen zusammengestellt und dem Modell nach und nach vorgelegt. Dieses Sampling der Daten in Mini-Batches benötigt jedoch zu Beginn bekannten einen gewissen Startwert. Das macht den Prozess pseudo-zufällig: Ist der Startwert einmal ausgewählt, ist die Reihenfolge der Datenproben festgelegt und kann vorhergesagt werden.
"Genau das macht NoPFS", sagt Nikoli Dryden, Postdoktorand in Hoeflers Forschungsgruppe und Hauptentwickler der Software. Diese prognostiziert während eines Trainingslaufs, in welcher Reihenfolge und mit welcher Häufigkeit die Datenbeispiele geladen werden, um sie dem Modell zu zeigen. "Dieses Wissen nutzen wir, um häufig genutzten Datenelemente im Voraus zu laden. So werden die Daten vorzeitig bereitgestellt, was das Training beschleunigt", sagt Dryden. Die am häufigsten genutzten Elemente werden direkt im RAM zwischengespeichert, die weniger populären auf einer lokalen Festplatte oder einem anderen Computer Node.
Halbierte Trainingszeit
Die Forschenden prüften NoFPS in Trainingsläufen von verschiedenen Deep-Learning-Modellen auf verschiedenen Supercomputern, darunter Piz Daint am CSCS. Sie testeten die Software an CosmoFlow, einer Deep-Learning-Anwendung zur Vorhersage von Parametern zur dunklen Materie im Universum, und am Bilderkennungsmodell ResNet-50 mit zwei unterschiedlich grossen Trainingsdatensätzen, ImageNet-1k und ImageNet-22k. Dabei verglichen sie die Leistung von NoFPS mit zwei weiteren Datenladesystemen, dem des Deep Learning Frameworks PyTorch und mit der NVIDIA Data Loading Library (DALI).
Die Ergebnisse zeigten, dass NoFPS das Training tatsächlich beschleunigt, allerdings abhängig von der Anzahl der verwendeten Grafikprozessoren, dem jeweiligen Supercomputer und der Grösse des Trainingsdatensatzes unterschiedlich stark. Im besten Fall war das Training CosmoFlow um einen Faktor 2,1 schneller, für ImageNet-22k 2,4 Mal und für ImageNet-1k sogar 5,4 Mal schneller.
"Generell erzielen wir grössere Leistungsverbesserungen, je mehr GPUs wir verwenden", sagt Torsten Hoefler.
Besonders relevant für wissenschaftliche Anwendungen
Das Konzept von NoPFS ist nicht völlig neu. Andere Deep-Learning-Frameworks nutzen eine vereinfachte Version desselben Prinzips. Allerdings hat bisher kein Tool diese Möglichkeit zur Voraussage so konsequent ausgereizt wie NoPFS – über den gesamten Trainingslauf hinweg.
"Die kürzere Trainingszeit mit NoPFS wird besonders für Anwendungen und Modelle in der Forschung und damit für das CSCS und seine Nutzer relevant sein", sagt Hoefler.