Zephyrnet-logo

Drukke GPU's: methode voor bemonstering en pipelining versnelt diep leren op grote grafieken

Datum:

Grafieken, een potentieel uitgebreid web van knooppunten verbonden door randen, kunnen worden gebruikt om relaties tussen gegevens uit te drukken en te onderzoeken, zoals sociale verbanden, financiële transacties, verkeer, energienetwerken en moleculaire interacties. Naarmate onderzoekers meer gegevens verzamelen en deze grafische afbeeldingen uitbouwen, zullen onderzoekers snellere en efficiëntere methoden nodig hebben, evenals meer rekenkracht, om er diepgaand leren over uit te voeren, in de vorm van grafische neurale netwerken (GNN).  

Nu verbetert een nieuwe methode, genaamd SALIENT (SAmpling, sLIcing, and data movemeNT), ontwikkeld door onderzoekers van MIT en IBM Research, de trainings- en inferentieprestaties door drie belangrijke knelpunten in de berekening aan te pakken. Dit verkort de looptijd van GNN's op grote datasets, die bijvoorbeeld op de schaal van 100 miljoen knooppunten en 1 miljard randen bevatten, drastisch. Verder ontdekte het team dat de techniek goed schaalbaar is wanneer rekenkracht wordt toegevoegd van één tot 16 grafische verwerkingseenheden (GPU's). Het werk werd gepresenteerd op de vijfde conferentie over machine learning en systemen.

“We begonnen te kijken naar de uitdagingen waarmee huidige systemen worden geconfronteerd bij het opschalen van geavanceerde machine learning-technieken voor grafieken naar echt grote datasets. Het bleek dat er veel werk aan de winkel was, omdat veel van de bestaande systemen goede prestaties behaalden, voornamelijk op kleinere datasets die in het GPU-geheugen pasten”, zegt Tim Kaler, de hoofdauteur en een postdoc in de MIT Computer Science en het laboratorium voor kunstmatige intelligentie (CSAIL).

Met enorme datasets bedoelen experts schalen zoals het hele Bitcoin-netwerk, waar bepaalde patronen en gegevensrelaties trends of vals spel kunnen beschrijven. "Er zijn bijna een miljard Bitcoin-transacties op de blockchain, en als we illegale activiteiten binnen zo'n gezamenlijk netwerk willen identificeren, dan hebben we te maken met een grafiek van zo'n schaal", zegt co-auteur Jie Chen, senior onderzoeker en manager van IBM Research en het MIT-IBM Watson AI Lab. "We willen een systeem bouwen dat dat soort grafieken aankan en de verwerking zo efficiënt mogelijk maakt, omdat we elke dag het tempo willen bijhouden van de nieuwe gegevens die worden gegenereerd."

Tot de co-auteurs van Kaler en Chen behoren Nickolas Stathas MEng '21 van Jump Trading, die SALIENT ontwikkelde als onderdeel van zijn afstudeerwerk; voormalig MIT-IBM Watson AI Lab-stagiaire en MIT-afgestudeerde Anne Ouyang; MIT CSAIL-postdoc Alexandros-Stavros Iliopoulos; MIT CSAIL Onderzoeker Tao B. Schardl; en Charles E. Leiserson, de Edwin Sibley Webster Professor of Electrical Engineering aan het MIT en een onderzoeker bij het MIT-IBM Watson AI Lab.     

Voor dit probleem koos het team voor een systeemgerichte benadering bij het ontwikkelen van hun methode: SALIENT, zegt Kaler. Om dit te doen, implementeerden de onderzoekers wat zij zagen als belangrijke, basisoptimalisaties van componenten die passen in bestaande machine-learning-frameworks, zoals PyTorch Geometric en de deep graph library (DGL), die interfaces zijn voor het bouwen van een machine-learning-model. Stathas zegt dat het proces is als het verwisselen van motoren om een ​​snellere auto te bouwen. Hun methode was ontworpen om te passen in bestaande GNN-architecturen, zodat domeinexperts dit werk gemakkelijk konden toepassen op hun gespecificeerde velden om modeltraining te versnellen en inzichten tijdens inferentie sneller te ontrafelen. De truc, zo stelde het team vast, was om alle hardware (CPU's, datalinks en GPU's) te allen tijde bezig te houden: terwijl de CPU de grafiek bemonstert en mini-batches met gegevens voorbereidt die vervolgens via de datalink worden overgedragen. , hoe kritischer de GPU werkt aan het trainen van het machine-learningmodel of het uitvoeren van gevolgtrekkingen. 

De onderzoekers begonnen met het analyseren van de prestaties van een veelgebruikte machine-learningbibliotheek voor GNN's (PyTorch Geometric), die een verrassend laag gebruik van beschikbare GPU-bronnen liet zien. Door eenvoudige optimalisaties toe te passen, verbeterden de onderzoekers het GPU-gebruik van 10 naar 30 procent, wat resulteerde in een prestatieverbetering van 1.4 tot twee keer ten opzichte van openbare benchmarkcodes. Deze snelle basislijncode kan in 50.4 seconden een volledige doorgang over een grote trainingsdataset door het algoritme (een tijdvak) uitvoeren.                          

Op zoek naar verdere prestatieverbeteringen, gingen de onderzoekers op zoek naar de knelpunten die zich voordoen aan het begin van de datapijplijn: de algoritmen voor grafiekbemonstering en mini-batchvoorbereiding. In tegenstelling tot andere neurale netwerken voeren GNN's een buurtaggregatiebewerking uit, die informatie over een knooppunt berekent met behulp van informatie die aanwezig is in andere nabijgelegen knooppunten in de grafiek - bijvoorbeeld in een grafiek van een sociaal netwerk, informatie van vrienden van vrienden van een gebruiker. Naarmate het aantal lagen in het GNN toeneemt, kan het aantal knooppunten dat het netwerk moet bereiken voor informatie exploderen, waardoor de limieten van een computer worden overschreden. Algoritmen voor buurtbemonstering helpen door een kleinere willekeurige subset van te verzamelen knooppunten te selecteren; de onderzoekers ontdekten echter dat de huidige implementaties hiervan te traag waren om de verwerkingssnelheid van moderne GPU's bij te houden. Als reactie daarop identificeerden ze een mix van datastructuren, algoritmische optimalisaties, enzovoort die de bemonsteringssnelheid verbeterde, waardoor uiteindelijk de bemonsteringsbewerking alleen al met ongeveer drie keer werd verbeterd, waardoor de looptijd per tijdperk van 50.4 naar 34.6 seconden werd gebracht. Ze ontdekten ook dat bemonstering, met een passend tempo, kan worden gedaan tijdens inferentie, waardoor de algehele energie-efficiëntie en prestaties worden verbeterd, een punt dat in de literatuur over het hoofd was gezien, merkt het team op.      

In eerdere systemen was deze bemonsteringsstap een multi-procesbenadering, waardoor extra gegevens en onnodige gegevensverplaatsing tussen de processen ontstonden. De onderzoekers maakten hun SALIENT-methode wendbaarder door een enkel proces te creëren met lichtgewicht threads die de gegevens op de CPU in gedeeld geheugen hielden. Verder profiteert SALIENT van een cache van moderne processors, zegt Stathas, parallelliserende feature slicing, die relevante informatie extraheert van interessante knooppunten en hun omringende buren en randen, binnen het gedeelde geheugen van de CPU-kerncache. Dit verminderde opnieuw de totale looptijd per tijdperk van 34.6 naar 27.8 seconden.

Het laatste knelpunt dat de onderzoekers hebben aangepakt, was het pijplijnen van mini-batchgegevensoverdrachten tussen de CPU en GPU met behulp van een prefetching-stap, die gegevens zou voorbereiden net voordat ze nodig zijn. Het team berekende dat dit het bandbreedtegebruik in de datalink zou maximaliseren en de methode tot een perfect gebruik zou brengen; ze zagen echter slechts ongeveer 90 procent. Ze identificeerden en repareerden een prestatiefout in een populaire PyTorch-bibliotheek die onnodige retourcommunicatie tussen de CPU en GPU veroorzaakte. Nu deze bug is verholpen, behaalde het team een ​​runtime van 16.5 seconden per tijdperk met SALIENT.

"Ons werk toonde, denk ik, aan dat de duivel in de details zit", zegt Kaler. “Als je goed let op de details die van invloed zijn op de prestaties bij het trainen van een neuraal netwerk, kun je een groot aantal prestatieproblemen oplossen. Met onze oplossingen werden we uiteindelijk volledig gehinderd door GPU-berekeningen, wat het ideale doel is van zo’n systeem.”

De snelheid van SALIENT werd geëvalueerd op drie standaard datasets ogbn-arxiv, ogbn-products en ogbn-papers100M, evenals in instellingen voor meerdere machines, met verschillende niveaus van fanout (hoeveelheid gegevens die de CPU zou voorbereiden op de GPU), en over verschillende architecturen, waaronder de meest recente state-of-the-art, GraphSAGE-RI. In elke setting presteerde SALIENT beter dan PyTorch Geometric, met name op de grote ogbn-papers100M dataset, met 100 miljoen knooppunten en meer dan een miljard randen. Hier was het drie keer sneller, draaiend op één GPU, dan de geoptimaliseerde basislijn die oorspronkelijk was gemaakt voor dit werk; met 16 GPU's was SALIENT nog eens acht keer sneller. 

Terwijl andere systemen iets andere hardware en experimentele opstellingen hadden, dus het was niet altijd een directe vergelijking, presteerde SALIENT nog steeds beter. Onder systemen die een vergelijkbare nauwkeurigheid bereikten, omvatten representatieve prestatiecijfers 99 seconden met één GPU en 32 CPU's, en 13 seconden met 1,536 CPU's. Daarentegen was de runtime van SALIENT met één GPU en 20 CPU's 16.5 seconden en slechts twee seconden met 16 GPU's en 320 CPU's. "Als je kijkt naar de bottom-line cijfers die eerder werk rapporteert, is onze 16 GPU-runtime (twee seconden) een orde van grootte sneller dan andere cijfers die eerder in deze dataset zijn gerapporteerd", zegt Kaler. De onderzoekers schreven hun prestatieverbeteringen gedeeltelijk toe aan hun aanpak om hun code voor een enkele machine te optimaliseren voordat ze naar de gedistribueerde instelling gingen. Stathas zegt dat de les hier is dat voor uw geld "het logischer is om de hardware die u heeft efficiënt en tot het uiterste te gebruiken voordat u begint op te schalen naar meerdere computers", wat aanzienlijke besparingen op kosten en koolstofemissies kan opleveren. dat kan komen met modeltraining.

Deze nieuwe capaciteit stelt onderzoekers nu in staat om steeds grotere grafieken aan te pakken en dieper te graven. Het eerder genoemde Bitcoin-netwerk bevatte bijvoorbeeld 100,000 knooppunten; het SALIENT-systeem kan een grafiek aan die 1,000 keer (of drie ordes van grootte) groter is.

"In de toekomst zouden we niet alleen kijken naar het uitvoeren van dit grafische neurale netwerktrainingssysteem op de bestaande algoritmen die we hebben geïmplementeerd voor het classificeren of voorspellen van de eigenschappen van elk knooppunt, maar we willen ook meer diepgaande taken uitvoeren, zoals het identificeren van gemeenschappelijke patronen in een grafiek (subgraafpatronen), [wat] eigenlijk interessant kan zijn om financiële misdaden aan te geven', zegt Chen. "We willen ook knooppunten in een grafiek identificeren die vergelijkbaar zijn in de zin dat ze mogelijk overeenkomen met dezelfde boosdoener bij een financiële misdaad. Voor deze taken zouden aanvullende algoritmen moeten worden ontwikkeld, en mogelijk ook neurale netwerkarchitecturen.”

Dit onderzoek werd ondersteund door het MIT-IBM Watson AI Lab en deels door het US Air Force Research Laboratory en de US Air Force Artificial Intelligence Accelerator.

<!–
->

spot_img

Laatste intelligentie

spot_img