Beschäftigte GPUs: Die Sampling- und Pipelining-Methode beschleunigt das Deep Learning auf großen Graphen PlatoBlockchain Data Intelligence. Vertikale Suche. Ai.

Ausgelastete GPUs: Die Sampling- und Pipelining-Methode beschleunigt das Deep Learning auf großen Graphen

Graphen, ein potenziell umfangreiches Netz von Knoten, die durch Kanten verbunden sind, können verwendet werden, um Beziehungen zwischen Daten auszudrücken und abzufragen, wie soziale Verbindungen, Finanztransaktionen, Verkehr, Energienetze und molekulare Interaktionen. Da Forscher mehr Daten sammeln und diese grafischen Bilder erstellen, benötigen Forscher schnellere und effizientere Methoden sowie mehr Rechenleistung, um Deep Learning in Form von Graph Neural Networks (GNN) durchzuführen.  

Jetzt verbessert eine neue Methode namens SALIENT (Sampling, SLIcing, and Data MovemeNT), die von Forschern des MIT und IBM Research entwickelt wurde, die Trainings- und Inferenzleistung, indem sie drei Hauptengpässe bei der Berechnung angeht. Dadurch wird die Laufzeit von GNNs auf großen Datensätzen, die beispielsweise in der Größenordnung von 100 Millionen Knoten und 1 Milliarde Kanten enthalten, drastisch verkürzt. Darüber hinaus stellte das Team fest, dass sich die Technik gut skalieren lässt, wenn die Rechenleistung von einer bis zu 16 grafischen Verarbeitungseinheiten (GPUs) hinzugefügt wird. Die Arbeit wurde auf der Fifth Conference on Machine Learning and Systems vorgestellt.

„Wir begannen, uns mit den Herausforderungen zu befassen, denen aktuelle Systeme bei der Skalierung modernster maschineller Lerntechniken für Diagramme auf wirklich große Datensätze ausgesetzt sind. Es stellte sich heraus, dass noch viel zu tun war, da viele der bestehenden Systeme vor allem bei kleineren Datensätzen, die in den GPU-Speicher passen, eine gute Leistung erzielten“, sagt Tim Kaler, Hauptautor und Postdoc am MIT Computer Science und Labor für künstliche Intelligenz (CSAIL).

Mit riesigen Datensätzen meinen Experten Skalen wie das gesamte Bitcoin-Netzwerk, wo bestimmte Muster und Datenbeziehungen Trends oder Foulspiel aussagen könnten. „Es gibt fast eine Milliarde Bitcoin-Transaktionen auf der Blockchain, und wenn wir illegale Aktivitäten innerhalb eines solchen gemeinsamen Netzwerks identifizieren wollen, dann stehen wir vor einem Diagramm dieser Größenordnung“, sagt Co-Autor Jie Chen, leitender Forschungswissenschaftler und Manager von IBM Research und dem MIT-IBM Watson AI Lab. „Wir wollen ein System bauen, das mit dieser Art von Diagrammen umgehen kann und eine möglichst effiziente Verarbeitung ermöglicht, weil wir jeden Tag mit der Geschwindigkeit der neu generierten Daten Schritt halten wollen.“

Zu den Co-Autoren von Kaler und Chen gehören Nickolas Stathas MEng '21 von Jump Trading, der SALIENT als Teil seiner Abschlussarbeit entwickelt hat; ehemalige MIT-IBM Watson AI Lab-Praktikantin und MIT-Doktorandin Anne Ouyang; MIT CSAIL-Postdoc Alexandros-Stavros Iliopoulos; MIT CSAIL-Forschungswissenschaftler Tao B. Schardl; und Charles E. Leiserson, Edwin Sibley Webster Professor für Elektrotechnik am MIT und Forscher am MIT-IBM Watson AI Lab.     

Für dieses Problem hat das Team bei der Entwicklung seiner Methode einen systemorientierten Ansatz gewählt: SALIENT, sagt Kaler. Zu diesem Zweck implementierten die Forscher die ihrer Ansicht nach wichtigen grundlegenden Optimierungen von Komponenten, die in bestehende Frameworks für maschinelles Lernen passen, wie PyTorch Geometric und die Deep Graph Library (DGL), die Schnittstellen zum Erstellen eines Modells für maschinelles Lernen sind. Laut Stathas ist der Prozess wie das Austauschen von Motoren, um ein schnelleres Auto zu bauen. Ihre Methode wurde so konzipiert, dass sie in bestehende GNN-Architekturen passt, sodass Domänenexperten diese Arbeit problemlos auf ihre spezifischen Bereiche anwenden können, um das Modelltraining zu beschleunigen und Erkenntnisse während der Inferenz schneller zu gewinnen. Der Trick, so das Team, bestand darin, die gesamte Hardware (CPUs, Datenverbindungen und GPUs) ständig beschäftigt zu halten: während die CPU den Graphen abtastet und Mini-Batches von Daten vorbereitet, die dann über die Datenverbindung übertragen werden , arbeitet die kritischere GPU daran, das maschinelle Lernmodell zu trainieren oder Rückschlüsse zu ziehen. 

Die Forscher begannen mit der Analyse der Leistung einer häufig verwendeten maschinellen Lernbibliothek für GNNs (PyTorch Geometric), die eine erstaunlich geringe Auslastung der verfügbaren GPU-Ressourcen zeigte. Durch Anwendung einfacher Optimierungen verbesserten die Forscher die GPU-Auslastung von 10 auf 30 Prozent, was zu einer 1.4- bis 50.4-fachen Leistungssteigerung im Vergleich zu öffentlichen Benchmark-Codes führte. Dieser schnelle Basiscode könnte in XNUMX Sekunden einen vollständigen Durchgang über einen großen Trainingsdatensatz durch den Algorithmus (eine Epoche) ausführen.                          

Auf der Suche nach weiteren Leistungsverbesserungen machten sich die Forscher daran, die Engpässe zu untersuchen, die am Anfang der Datenpipeline auftreten: die Algorithmen für das Graph-Sampling und die Mini-Batch-Vorbereitung. Im Gegensatz zu anderen neuronalen Netzwerken führen GNNs eine Nachbarschaftsaggregationsoperation durch, die Informationen über einen Knoten mithilfe von Informationen berechnet, die in anderen nahe gelegenen Knoten im Diagramm vorhanden sind – beispielsweise in einem Diagramm eines sozialen Netzwerks Informationen von Freunden von Freunden eines Benutzers. Mit zunehmender Anzahl von Schichten im GNN kann die Anzahl der Knoten, die das Netzwerk für Informationen erreichen muss, explodieren und die Grenzen eines Computers überschreiten. Nachbarschafts-Sampling-Algorithmen helfen, indem sie eine kleinere zufällige Teilmenge von Knoten zum Sammeln auswählen; Die Forscher fanden jedoch heraus, dass aktuelle Implementierungen davon zu langsam waren, um mit der Verarbeitungsgeschwindigkeit moderner GPUs Schritt zu halten. Als Reaktion darauf identifizierten sie eine Mischung aus Datenstrukturen, algorithmischen Optimierungen usw., die die Abtastgeschwindigkeit verbesserten und letztendlich allein den Abtastvorgang um etwa das Dreifache verbesserten, wodurch die Laufzeit pro Epoche von 50.4 auf 34.6 Sekunden stieg. Sie fanden auch heraus, dass während der Inferenz eine Stichprobennahme mit angemessener Rate durchgeführt werden kann, wodurch die Gesamtenergieeffizienz und -leistung verbessert wird, ein Punkt, der in der Literatur übersehen wurde, stellt das Team fest.      

In früheren Systemen war dieser Sampling-Schritt ein Multi-Prozess-Ansatz, der zusätzliche Daten und unnötige Datenbewegungen zwischen den Prozessen erzeugte. Die Forscher machten ihre SALIENT-Methode flinker, indem sie einen einzelnen Prozess mit leichtgewichtigen Threads erstellten, der die Daten auf der CPU im gemeinsam genutzten Speicher hielt. Darüber hinaus nutzt SALIENT einen Cache moderner Prozessoren, sagt Stathas, und parallelisiert Feature Slicing, das relevante Informationen von interessierenden Knoten und ihren umliegenden Nachbarn und Kanten im gemeinsam genutzten Speicher des CPU-Kern-Cache extrahiert. Dies reduzierte die Gesamtlaufzeit pro Epoche erneut von 34.6 auf 27.8 Sekunden.

Der letzte Engpass, den die Forscher angegangen sind, bestand darin, Mini-Batch-Datenübertragungen zwischen CPU und GPU mithilfe eines Prefetching-Schritts zu leiten, der Daten unmittelbar vor dem Bedarf vorbereitet. Das Team berechnete, dass dies die Bandbreitennutzung in der Datenverbindung maximieren und die Methode perfekt auslasten würde; Sie sahen jedoch nur etwa 90 Prozent. Sie haben einen Leistungsfehler in einer beliebten PyTorch-Bibliothek identifiziert und behoben, der unnötige Round-Trip-Kommunikation zwischen CPU und GPU verursachte. Nachdem dieser Fehler behoben war, erreichte das Team mit SALIENT eine Laufzeit von 16.5 Sekunden pro Epoche.

„Unsere Arbeit hat meiner Meinung nach gezeigt, dass der Teufel im Detail steckt“, sagt Kaler. „Wenn Sie beim Trainieren eines neuronalen Graphnetzwerks genau auf die Details achten, die sich auf die Leistung auswirken, können Sie eine große Anzahl von Leistungsproblemen lösen. Mit unseren Lösungen wurden wir schließlich durch die GPU-Berechnung vollständig blockiert, was das ideale Ziel eines solchen Systems ist.“

Die Geschwindigkeit von SALIENT wurde auf drei Standarddatensätzen ogbn-arxiv, ogbn-products und ogbn-papers100M sowie in Multi-Maschinen-Einstellungen mit unterschiedlichen Fanout-Stufen (Datenmenge, die die CPU für die GPU vorbereiten würde) und bewertet über mehrere Architekturen, einschließlich der neuesten hochmodernen, GraphSAGE-RI. In jeder Einstellung übertraf SALIENT PyTorch Geometric, insbesondere beim großen ogbn-papers100M-Datensatz mit 100 Millionen Knoten und über einer Milliarde Kanten. Hier war es dreimal schneller und lief auf einer GPU als die optimierte Baseline, für die ursprünglich erstellt wurde diese Arbeit; mit 16 GPUs war SALIENT zusätzlich achtmal schneller. 

Während andere Systeme etwas andere Hardware und Versuchsaufbauten hatten, sodass es nicht immer ein direkter Vergleich war, übertraf SALIENT sie dennoch. Unter den Systemen, die eine ähnliche Genauigkeit erreichten, umfassen die repräsentativen Leistungszahlen 99 Sekunden mit einer GPU und 32 CPUs und 13 Sekunden mit 1,536 CPUs. Im Gegensatz dazu betrug die Laufzeit von SALIENT mit einer GPU und 20 CPUs 16.5 Sekunden und mit 16 GPUs und 320 CPUs nur zwei Sekunden. „Wenn Sie sich die Zahlen ansehen, die frühere Arbeiten gemeldet haben, ist unsere 16-GPU-Laufzeit (zwei Sekunden) um eine Größenordnung schneller als andere Zahlen, die zuvor für diesen Datensatz gemeldet wurden“, sagt Kaler. Die Forscher führten ihre Leistungsverbesserungen teilweise auf ihren Ansatz zurück, ihren Code für eine einzelne Maschine zu optimieren, bevor sie zur verteilten Umgebung übergingen. Stathas sagt, dass die Lektion hier lautet, dass es für Ihr Geld „sinnvoller ist, die vorhandene Hardware effizient und bis zum Äußersten zu nutzen, bevor Sie mit der Skalierung auf mehrere Computer beginnen“, was zu erheblichen Einsparungen bei Kosten und COXNUMX-Emissionen führen kann das kann mit Modelltraining kommen.

Diese neue Kapazität ermöglicht es Forschern nun, immer größere Diagramme anzugehen und tiefer in sie einzutauchen. Zum Beispiel enthielt das zuvor erwähnte Bitcoin-Netzwerk 100,000 Knoten; Das SALIENT-System kann einen 1,000-mal (oder drei Größenordnungen) größeren Graphen handhaben.

„In Zukunft möchten wir dieses Trainingssystem für neuronale Graphennetzwerke nicht nur auf den vorhandenen Algorithmen ausführen, die wir zum Klassifizieren oder Vorhersagen der Eigenschaften jedes Knotens implementiert haben, sondern wir möchten auch tiefer gehende Aufgaben ausführen, z Gemeinsame Muster in einem Diagramm (Subgraph-Muster) zu identifizieren, [die] tatsächlich interessant sein können, um Finanzkriminalität anzuzeigen“, sagt Chen. „Wir wollen auch Knoten in einem Diagramm identifizieren, die sich in dem Sinne ähneln, dass sie möglicherweise demselben schlechten Akteur bei einer Finanzkriminalität entsprechen würden. Diese Aufgaben würden die Entwicklung zusätzlicher Algorithmen und möglicherweise auch neuronaler Netzwerkarchitekturen erfordern.“

Diese Forschung wurde vom MIT-IBM Watson AI Lab und teilweise vom US Air Force Research Laboratory und dem US Air Force Artificial Intelligence Accelerator unterstützt.

Zeitstempel:

Mehr von Blockchain-Berater