Equivalence Checking of ML GPU Kernels
Dit artikel introduceert Volta, de eerste klank en volledige equivalentiechecker voor GPU-kernels, die de correctheid formeel verifieert van door de hand, compilers of LLM's geoptimaliseerde machine learning-berekeningen.
Oorspronkelijk artikel gelicentieerd onder CC BY 4.0 (http://creativecommons.org/licenses/by/4.0/). Dit is een AI-gegenereerde uitleg van het onderstaande artikel. Het is niet geschreven of goedgekeurd door de auteurs. Raadpleeg het oorspronkelijke artikel voor technische nauwkeurigheid. Lees de volledige disclaimer
In de enorme, onzichtbare machinerie van moderne kunstmatige intelligentie vindt het meest cruciale werk niet plaats in de cloud, maar op gespecialiseerde computerchips die GPU's worden genoemd. Deze chips zijn ontworpen om miljoenen kleine berekeningen tegelijkertijd uit te voeren, een noodzaak voor het trainen van de grote taalmodellen die nu code schrijven, talen vertalen en kunst genereren. Om deze modellen snel genoeg te laten draaien om bruikbaar te zijn, moeten ingenieurs zeer gespecialiseerde instructies schrijven, bekend als kernels, die de GPU precies vertellen hoe gegevens te verplaatsen en wiskunde uit te voeren. De afgelopen jaren zijn bedrijven begonnen met het gebruik van kunstmatige intelligentie zelf om deze kernels te schrijven, in de hoop snellere manieren te vinden om het werk te doen dan menselijke ingenieurs kunnen. Deze snelheid brengt echter een risico met zich mee: wanneer een AI of een compiler een stuk code herschrijft om sneller te zijn, kan het per ongeluk subtiele fouten introduceren. Deze fouten kunnen ervoor zorgen dat de computer het verkeerde antwoord geeft, of erger nog, dat hij stilzwijgend crasht op manieren die bijna onmogelijk te vinden zijn via standaardtesten. De kernuitdaging is dat deze chips duizenden threads van werk tegelijkertijd uitvoeren, en als ze niet perfect samenwerken, kunnen ze op elkaars tenen staan, wat een raceconditie creëert waarbij het uiteindelijke resultaat afhangt van de onvoorspelbare volgorde waarin dingen gebeuren.
Een team van onderzoekers heeft een nieuwe tool ontwikkeld genaamd Volta om dit probleem op te lossen. In plaats van te gokken of een nieuwe, snellere versie van een kernel correct is, fungeert Volta als een formele verifieerder die wiskundig bewijst dat de twee versies identieke resultaten produceren. De onderzoekers hebben een systeem gebouwd dat de instructies op laag niveau van een referentiekernel — de originele, vertrouwde versie — en de geoptimaliseerde kernel — de nieuwe, snellere versie — neemt en deze door een symbolische engine stuurt. In plaats van de code specifieke getallen te voeden en te zien wat er uitkomt, behandelt de engine de inputs als abstracte symbolen. Het volgt elk mogelijk pad dat de code zou kunnen nemen, waarbij het bijhoudt hoe gegevens door de duizenden parallelle threads bewegen en hoe zij met elkaar synchroniseren. Als de code probeert geheugen toe te passen op een manier die een conflict kan veroorzaken, of als de threads eeuwig blijven wachten op elkaar, signaleert de tool de fout onmiddellijk. Als de code zonder problemen draait, vertaalt de tool de uiteindelijke output van beide kernels naar complexe wiskundige expressies en controleert of die expressies fundamenteel hetzelfde zijn, ongeacht de specifieke getallen die erin worden gevoed.
De onderzoekers testten Volta op een breed scala aan real-world machine learning-taken, waaronder matrixvermenigvuldigingen, convoluties en de aandachtmechanismen (attention mechanisms) die grote taalmodellen aandrijven. Ze ontdekten dat de tool kernels kon verifiëren die handmatig waren geoptimaliseerd, door compilers, en zelfs door grote taalmodellen. In één instantie onderzochten ze een kernel gegenereerd door een AI die was geoptimaliseerd door dertien ronden van automatische verbetering. Volta bevestigde dat deze door AI gegenereerde code wiskundig equivalent was aan de oorspronkelijke door mensen geschreven referentie, wat bewees dat de agressieve optimalisaties de logica niet hadden gebroken. De tool bewees ook zijn waarde door fouten te detecteren die andere methoden misten. Bijvoorbeeld, het detecteerde data races in een populaire, veel geciteerde tutorial voor GPU-programmering die al jaren door duizenden ontwikkelaars werd gebruikt. Deze fouten waren verborgen omdat ze alleen optraden onder zeer specifieke timingcondities die standaardtesten zelden vangen. De tool identificeerde ook een bug in een door AI gegenereerde kernel waarbij de code probeerde gegevens te lezen van een geheugenlocatie die niet bestond; hoewel de huidige hardware deze fout toevallig negeerde, toonden de onderzoekers aan dat de code fundamenteel onveilig was en op toekomstige machines zou kunnen falen.
De kracht van deze aanpak ligt in het vermogen om de unieke complexiteit van GPU-programmering aan te pakken, waarbij duizenden threads hun acties moeten coördineren. Eerdere tools konden single-threaded programma's of hoogwaardige wiskundige operaties controleren, maar ze worstelden met het deconstrueren van de massale parallelliteit van een GPU in beheersbare stukken. Volta overwint dit door ervan uit te gaan dat de kernels die het analyseert een specifiek, gestructureerd patroon volgen dat gebruikelijk is in machine learning, waarbij het aantal threads en de omvang van de gegevens vooraf bekend zijn. Binnen dit kader kan de tool met zekerheid bewijzen dat een raceconditie bestaat als de threads niet goed zijn gesynchroniseerd, en het kan bewijzen dat twee verschillende versies van een programma equivalent zijn als ze hetzelfde symbolische resultaat produceren. De onderzoekers demonstreerden dat hun tool deze eigenschappen binnen enkele seconden of minuten kon verifiëren, zelfs voor kernels die honderdduizenden instructies bevatten. Ze bewezen ook dat de wiskundige logica achter hun tool solide is, wat betekent dat als de tool zegt dat twee programma's gelijk zijn, ze ook werkelijk gelijk zijn voor alle mogelijke inputs.
Dit werk vormt een belangrijke stap naar het veiliger en betrouwbaarder maken van de ontwikkeling van kunstmatige intelligentie. Nu bedrijven steeds vaker vertrouwen op geautomatiseerde systemen om de code te genereren die hun modellen aandrijft, wordt de behoefte aan een rigoureuze manier om die code te controleren cruciaal. De onderzoekers hebben aangetoond dat het mogelijk is om verder te gaan dan eenvoudige testen, die slechts een beperkt aantal scenario's kunnen controleren, naar een methode die een formele garantie van juistheid biedt. Door de equivalentie van geoptimaliseerde kernels te verifiëren, geeft Volta ontwikkelaars het vertrouwen om snellere, agressievere optimalisaties te gebruiken zonder angst voor het introduceren van stille bugs. De tool is momenteel beschikbaar voor gebruik, en de onderzoekers hebben hun code en de bewijzen daarachter openbaar gemaakt, zodat anderen op dit fundament kunnen voortbouwen. Hoewel de tool nog niet elk mogelijk type GPU-code dekt, handelt het succesvol de overgrote meerderheid van de kernels af die de moderne machine learning aandrijven, en biedt het een nieuwe standaard voor vertrouwen in de geautomatiseerde generatie van high-performance computing-code.
Verdrinkt u in papers in uw vakgebied?
Ontvang dagelijkse digests van de nieuwste papers die bij uw onderzoekswoorden passen — met technische samenvattingen, in uw taal.