Grafikai, potencialiai platus briaunomis sujungtų mazgų tinklas, gali būti naudojami duomenų santykiams, pvz., socialiniams ryšiams, finansinėms operacijoms, srautui, energijos tinklams ir molekulinėms sąveikoms, išreikšti ir tirti. Kadangi mokslininkai renka daugiau duomenų ir kuria šias grafines nuotraukas, tyrėjams reikės greitesnių ir efektyvesnių metodų, taip pat daugiau skaičiavimo galios, kad galėtų atlikti gilų jų mokymąsi grafinių neuronų tinklų (GNN) būdu.
Dabar naujas metodas, vadinamas SALIENT (SAmpling, SLIcing ir data movemeNT), sukurtas MIT ir IBM tyrimų tyrėjų, pagerina mokymą ir išvadų našumą pašalindamas tris pagrindines skaičiavimo kliūtis. Tai labai sumažina GNN veikimo laiką dideliuose duomenų rinkiniuose, kuriuose, pavyzdžiui, yra 100 milijonų mazgų ir 1 milijardas kraštų. Be to, komanda išsiaiškino, kad ši technika gerai keičiasi, kai skaičiavimo galia pridedama nuo vieno iki 16 grafinių procesorių (GPU). Darbas buvo pristatytas Penktojoje mašininio mokymosi ir sistemų konferencijoje.
„Pradėjome nagrinėti iššūkius, su kuriais susiduria dabartinės sistemos, kai pažangiausius mašininio mokymosi metodus grafikams pritaikysime iki tikrai didelių duomenų rinkinių. Paaiškėjo, kad reikia daug nuveikti, nes daugelis esamų sistemų veikė gerai, visų pirma naudojant mažesnius duomenų rinkinius, kurie telpa į GPU atmintį“, – sako Tim Kaler, pagrindinis autorius ir MIT Computer Science postdoc. ir Dirbtinio intelekto laboratorija (CSAIL).
Didžiuliais duomenų rinkiniais ekspertai turi omenyje tokias svarstykles kaip visas Bitcoin tinklas, kur tam tikri modeliai ir duomenų ryšiai gali parodyti tendencijas ar nesąžiningus žaidimus. „Blokų grandinėje yra beveik milijardas Bitcoin operacijų ir, jei norime nustatyti neteisėtą veiklą tokiame jungtiniame tinkle, mes susiduriame su tokio masto grafiku“, – sako bendraautorius Jie Chen, vyresnysis mokslo darbuotojas ir vadovas. IBM tyrimų ir MIT-IBM Watson AI Lab. „Mes norime sukurti sistemą, kuri galėtų apdoroti tokio tipo grafikus ir leistų apdorojimui būti kuo veiksmingesniam, nes kiekvieną dieną norime neatsilikti nuo naujų generuojamų duomenų tempo.”
Kaler ir Chen bendraautoriai yra Nickolas Stathas MEng ’21 iš Jump Trading, kuris sukūrė SALIENT kaip savo studijų dalį; buvusi MIT-IBM Watson AI Lab praktikantė ir MIT absolventė Anne Ouyang; MIT CSAIL postdoc Alexandros-Stavros Iliopoulos; MIT CSAIL tyrėjas Tao B. Schardl; ir Charles E. Leiserson, Edwin Sibley Webster, MIT elektros inžinerijos profesorius ir MIT-IBM Watson AI laboratorijos tyrėjas.
Šiai problemai spręsti komanda pasirinko į sistemas orientuotą metodą, kurdama savo metodą: SALIENT, sako Kaler. Norėdami tai padaryti, mokslininkai įgyvendino, jų nuomone, svarbius, pagrindinius komponentų, kurie tinka esamoms mašininio mokymosi sistemoms, pvz., PyTorch Geometric ir giliųjų grafų biblioteką (DGL), optimizavimą, kurie yra sąsajos mašininio mokymosi modeliui kurti. Stathas sako, kad procesas yra tarsi variklių keitimas, kad būtų sukurtas greitesnis automobilis. Jų metodas buvo sukurtas taip, kad tilptų į esamas GNN architektūras, kad domenų ekspertai galėtų lengvai pritaikyti šį darbą savo nurodytose srityse, kad paspartintų modelių mokymą ir greičiau atskleistų įžvalgas darant išvadas. Komanda nusprendė, kad gudrybė buvo nuolat užimti visą aparatinę įrangą (CPU, duomenų ryšius ir GPU): kol procesorius atrenka grafiką ir parengia mini duomenų paketus, kurie vėliau bus perkeliami per duomenų ryšį. , tuo svarbesnis GPU dirba, kad išmokytų mašininio mokymosi modelį arba padarytų išvadas.
Tyrėjai pradėjo analizuodami GNN dažniausiai naudojamos mašininio mokymosi bibliotekos (PyTorch Geometric), kuri parodė stebėtinai žemą turimų GPU išteklių panaudojimą. Taikydami paprastą optimizavimą, mokslininkai pagerino GPU panaudojimą nuo 10 iki 30 procentų, todėl našumas pagerėjo 1,4–2 kartus, palyginti su viešaisiais etaloniniais kodais. Šis greitas bazinis kodas gali atlikti vieną pilną perėjimą per didelį mokymo duomenų rinkinį per algoritmą (epochą) per 50,4 sekundės.
Siekdami toliau tobulinti našumą, mokslininkai nusprendė ištirti kliūtis, kurios atsiranda duomenų perdavimo pradžioje: grafikų atrankos ir mažos partijos paruošimo algoritmus. Skirtingai nuo kitų neuroninių tinklų, GNN atlieka kaimynystės agregavimo operaciją, kuri apskaičiuoja informaciją apie mazgą, naudodama informaciją, esančią kituose gretimuose grafiko mazguose, pavyzdžiui, socialinio tinklo schemoje, informaciją iš vartotojo draugų draugų. Didėjant GNN sluoksnių skaičiui, mazgų, kuriuos tinklas turi pasiekti, kad gautų informaciją, skaičius gali sprogti ir viršyti kompiuterio ribas. Kaimynystės atrankos algoritmai padeda rinkti mažesnį atsitiktinį mazgų poaibį; tačiau mokslininkai nustatė, kad dabartinis šio diegimo procesas buvo per lėtas, kad neatsiliktų nuo šiuolaikinių GPU apdorojimo greičio. Reaguodamos į tai, jie nustatė duomenų struktūrų, algoritminių optimizacijų ir tt derinį, kuris pagerino atrankos greitį, galiausiai maždaug tris kartus pagerino vien atrankos operaciją, o kiekvienai epochai trukus nuo 50,4 iki 34,6 sekundės. Jie taip pat nustatė, kad mėginių ėmimas tinkamu greičiu gali būti atliekamas darant išvadas, pagerinant bendrą energijos vartojimo efektyvumą ir našumą, o tai literatūroje buvo nepastebėta, pažymi komanda.
Ankstesnėse sistemose šis atrankos žingsnis buvo kelių procesų metodas, sukuriantis papildomų duomenų ir nereikalingą duomenų judėjimą tarp procesų. Tyrėjai padarė savo SALIENT metodą lankstesnį, sukurdami vieną procesą su lengvomis gijomis, kurios CPU duomenis saugojo bendroje atmintyje. Be to, SALIENT naudojasi šiuolaikinių procesorių talpyklos pranašumais, teigia Stathas, lygiagrečią funkcijų pjaustymą, kuris ištraukia atitinkamą informaciją iš dominančių mazgų ir juos supančių kaimynų bei kraštų bendrojoje procesoriaus branduolio talpyklos atmintyje. Tai vėl sumažino bendrą epochos vykdymo laiką nuo 34,6 iki 27,8 sekundės.
Paskutinė kliūtis, kurią išsprendė tyrėjai, buvo mažo paketinio duomenų perdavimo tarp procesoriaus ir GPU suplanavimas naudojant išankstinio gavimo veiksmą, kuris paruoštų duomenis prieš pat jų prireikus. Komanda apskaičiavo, kad tai maksimaliai padidins duomenų perdavimo pralaidumo naudojimą ir metodą iki tobulo išnaudojimo; tačiau jie matė tik apie 90 proc. Jie nustatė ir ištaisė našumo klaidą populiarioje „PyTorch“ bibliotekoje, kuri sukėlė nereikalingą ryšį tarp procesoriaus ir GPU. Ištaisius šią klaidą, komanda su SALIENT pasiekė 16,5 sekundės veikimo laiką per epochą.
„Manau, kad mūsų darbas parodė, kad velnias slypi detalėse“, – sako Kaleris. „Kai treniruodami grafiko neuroninį tinklą atkreipiate dėmesį į detales, turinčias įtakos našumui, galite išspręsti daugybę našumo problemų. Su savo sprendimais mus visiškai kliudė GPU skaičiavimas, o tai yra idealus tokios sistemos tikslas.
SALIENT greitis buvo įvertintas naudojant tris standartinius duomenų rinkinius ogbn-arxiv, ogbn-products ir ogbn-papers100M, taip pat kelių mašinų nustatymuose su skirtingais fanout lygiais (duomenų kiekis, kurį CPU paruoštų GPU) ir keliose architektūrose, įskaitant naujausią naujausią GraphSAGE-RI. Kiekviename nustatyme SALIENT pranoko PyTorch Geometric, ypač dideliame ogbn-papers100M duomenų rinkinyje, kuriame yra 100 milijonų mazgų ir daugiau nei milijardas kraštų. Čia jis buvo tris kartus greitesnis, veikiant vienu GPU, nei optimizuota bazinė linija, kuri iš pradžių buvo sukurta Šis darbas; su 16 GPU, SALIENT buvo dar aštuonis kartus greitesnis.
Nors kitos sistemos turėjo šiek tiek kitokią aparatinę ir eksperimentinę sąranką, todėl tai ne visada buvo tiesioginis palyginimas, SALIENT vis tiek pranoko jas. Tarp sistemų, kurios pasiekė panašų tikslumą, tipiniai našumo skaičiai apima 99 sekundes naudojant vieną GPU ir 32 CPU ir 13 sekundžių naudojant 1536 procesorius. Priešingai, SALIENT veikimo laikas, naudojant vieną GPU ir 20 procesorių, buvo 16,5 sekundės ir tik dvi sekundės su 16 GPU ir 320 procesorių. „Jei pažvelgsite į apatinius skaičius, kuriuos praneša ankstesnis darbas, mūsų 16 GPU vykdymo laikas (dvi sekundes) yra daug greičiau nei kiti skaičiai, kurie buvo pateikti anksčiau šiame duomenų rinkinyje“, – sako Kaleris. Tyrėjai savo našumo patobulinimus iš dalies priskyrė prie metodo optimizuoti savo kodą vienai mašinai prieš pereinant prie paskirstytojo nustatymo. Stathas sako, kad čia pamoka yra ta, kad už savo pinigus „prasmingiau naudoti turimą aparatinę įrangą efektyviai ir iki kraštutinumo prieš pradedant naudoti kelis kompiuterius“, o tai gali žymiai sutaupyti išlaidų ir sumažinti anglies dvideginio išmetimą. tai gali būti su modelio mokymu.
Šis naujas pajėgumas dabar leis tyrėjams spręsti ir gilintis į vis didesnius grafikus. Pavyzdžiui, anksčiau minėtame Bitcoin tinkle buvo 100 000 mazgų; SALIENT sistema gali apdoroti 1000 kartų (arba trimis dydžiais) didesnį grafiką.
„Ateityje mes stengsimės ne tik paleisti šią grafinio neuroninio tinklo mokymo sistemą pagal esamus algoritmus, kuriuos įdiegėme klasifikuodami arba numatydami kiekvieno mazgo savybes, bet ir norime atlikti išsamesnes užduotis, pvz. nustatyti bendrus grafiko modelius (pografo šablonus), [which] iš tikrųjų gali būti įdomu nurodant finansinius nusikaltimus“, – sako Chen. „Mes taip pat norime grafike nustatyti mazgus, kurie yra panašūs tam tikra prasme, kad jie galbūt atitiktų tą patį blogą finansinio nusikaltimo veikėją. Šioms užduotims reikės sukurti papildomus algoritmus ir galbūt neuroninių tinklų architektūras.
Šį tyrimą palaikė MIT-IBM Watson AI laboratorija ir iš dalies JAV oro pajėgų tyrimų laboratorija ir JAV oro pajėgų dirbtinio intelekto greitintuvas.