A Modern Multimodal Assistant on a 6 GB 2011 GPU: Stage-Validated, All-GPU CUDA Inference for Fermi
Dit artikel demonstreert de haalbaarheid van het volledig draaien van een moderne multimodale assistent op een 2011 6GB Fermi GPU door een volledig op de GPU gebouwde inference-engine te ontwerpen die hardwarebeperkingen overwint via geoptimaliseerde dequantized GEMMs, gechunkte recurrente lagen en geheugenefficiënte attention-kernels, waarmee end-to-end beeld-vraag beantwoording in 1,7 seconden wordt bereikt.
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
Stel je voor dat je een superintelligent robotbrein hebt dat plaatjes kan zien en vragen over die plaatjes kan beantwoorden. Normaal gesproken zijn deze hersenen zo groot en hongerig naar stroom dat ze een enorme, dure computer nodig hebben om te draaien, of dat ze opgedeeld moeten worden zodat delen van het brein in het geheugen van de computer leven terwijl andere delen op de processor leven. Maar wat als je zo'n superbrein op een computeronderdeel wilt draaien dat veertien jaar oud is? Dat is de uitdaging waar dit artikel een aanpak voor biedt. Het is alsoals proberen een moderne, high-definition videogame te draaien op een laptop uit 2011. Het kernidee hier is "inferentie", wat gewoon een deftig woord is voor het feit dat de robot daadwerkelijk denkt en een vraag beantwoordt nadat hij is onderwezen. De vraag in dit artikel is: kunnen we een moderne, beeldlezende AI volledig laten draaien op een zeer oude, zwakke videokaart zonder hulp nodig te hebben van de hoofdcomputer? Om dit te doen, moesten de onderzoekers ongelooflijk slim zijn in hoe ze de wiskunde organiseerden, omdat de oude kaart veel van de speciale hulpmiddelen mist die moderne kaarten wel hebben.
Het verhaal in dit artikel gaat over een team van ingenieurs die een gloednieuwe, moderne AI-assistent genaamd MiniCPM-V-4.6 hebben genomen en deze hebben gedwongen om te draaien op een NVIDIA-videokaart uit 2011 (de Tesla C2075) die slechts 6 GB aan geheugen heeft. Normaal gesproken wordt deze kaart als "verlaten" beschouwd door de softwarewereld, wat betekent dat er niemand meer nieuwe programma's voor schrijft. De onderzoekers wilden zien of ze het hele systeem volledig op deze oude kaart konden laten werken, zonder dat er gegevens heen en weer gestuurd hoeven te worden naar de hoofdcomputer. Ze slaagden erin, maar niet door te gokken; ze slaagden erin door alles te meten en te beseffen dat hun eerste vermoedens vaak fout waren.
Dit is wat ze ontdekten en hoe ze het deden:
1. De "Oude Gereedschappen" waren beter dan de Nieuwe
Het team begon met het proberen te schrijven van hun eigen aangepaste wiskundige tools (kernels) om de AI sneller te laten draaien. Ze dachten dat hun beste handgeschreven wiskundige code het snelst zou zijn. Maar toen ze het maten, zagen ze dat hun aangepaste code slechts 37% van de maximale snelheid van de kaart bereikte. Daarna probeerden ze een standaard, oud hulpmiddel dat tien jaar geleden al bij de software van de kaart zat (genaamd cuBLAS). Verrassend genoeg draaide dit oude hulpmiddel op 64% van de maximale snelheid—bijna twee keer zo snel als hun aangepaste code! Ze leerden dat op oude hardware, de "saaie", kant-en-klare tools soms juist de supersnelle zijn. Dus besloten ze hun gegevens te vertalen naar een formaat dat het oude hulpmiddel kon begrijpen en lieten ze het oude hulpmiddel het zware werk doen.
2. De "Slow Motion" Fout
De AI heeft een speciaal onderdeel dat dingen onthoudt terwijl het ze leest, een beetje zoals een persoon een gesprek voert. Het team probeerde dit te versnellen door het gesprek in kleine stukjes op te delen. In het begin dachten ze dat deze nieuwe methode trager was. Ze gaven het bijna op! Maar toen ze de timing nauwkeurig bekeken, ontdekten ze dat één klein deel van hun code dezelfde wiskunde twee keer uitvoerde en de computer te vaak liet stoppen en weer starten. Zodra ze dat ene slechte deel hadden gerepareerd, werd de nieuwe "stukjes"-methode 2,8 keer sneller dan de oude manier. Het was een les dat je niet alleen naar het totaalplaatje kunt kijken; je moet elke individuele stap controleren om de bottleneck te vinden.
3. De "4-Bit" Valstrik
In de wereld van AI proberen mensen vaak het geheugen van het model te verkleinen door "4-bit" getallen te gebruiken in plaats van "8-bit" getallen, in de veronderstelling dat kleinere getallen betekenen dat de snelheid hoger is. Het team probeerde dit op de oude kaart. Hoewel 4-bit getallen de helft minder ruimte innemen, moest de kaart extra wiskunde uitvoeren om ze te "uitpakken", en de oude kaart is traag in die specifieke wiskunde. Het resultaat? De 4-bit versie was zelfs 12% trager dan de 8-bit versie. Dus bleven ze bij de grotere 8-bit getallen omdat, op deze specifieke oude kaart, groter ook echt sneller was.
4. De "Tie-Breaking" Regel
Wanneer de AI naar een afbeelding kijkt, moet hij uitzoeken waar elk stukje van de afbeelding zich bevindt. De onderzoekers probeerden hun eigen wiskunde te schrijven om te beslissen wat te doen wanneer twee stukjes precies op dezelfde lijn liggen (een "tie" of gelijkspel). Ze probeerden veel verschillende manieren om het op te lossen, maar elke keer was het resultaat iets anders dan het antwoord van de originele AI. Ze ontdekten dat de manier waarop de originele AI met gelijke gevallen omging een heel specifieke, kleine regel was die niet perfect gekopieerd kon worden met standaard wiskunde. De oplossing? Ze stopten met het proberen uit te vinden van het wiel en vroegen simpelweg de wiskundelibrari van de originele AI om het tie-breaking proces voor hen te doen. Dit zorgde ervoor dat hun versie exact hetzelfde was als het origineel.
5. Het "Lange Verhaal" Probleem
De grootste verrassing kwam toen ze de AI testten met lange vragen. Wanneer de vraag kort was (2.000 woorden), was de AI snel. Maar toen ze de vraag heel lang maakten (10.000 woorden), vertraagde de AI tot een kruipend tempo; hij werd 17 keer trager. Het bleek dat de manier waarop de AI terugkeek naar eerdere woorden rommelig en inefficiënt werd. Het team schreef dit deel opnieuw om gebruik te maken van hetzelfde "oude hulpmiddel" (cuBLAS) dat ze eerder gebruikten, maar ze arrangeerden de gegevens zodat ze perfect pasten in het geheugen dat de AI al gebruikte. Dit loste het probleem volledig op. Nu is de AI bijna net zo snel met een vraag van 10.000 woorden als met een korte vraag.
Het Eindresultaat
Door deze trucs te gebruiken, slaagde het team erin om een moderne, beeldlezende AI volledig te laten draaien op een videokaart uit 2011. Het hele systeem past in het geheugen van de kaart en kan een vraag over een afbeelding in slechts 1,7 seconden beantwoorden. Het kan zelfs zeer lange documenten en grote afbeeldingen aan zonder vast te lopen. De belangrijkste les van dit artikel is niet alleen dat ze een oude computer aan het werk kregen; het is dat ze leerden om te vertrouwen op metingen boven hun eigen intuïtie. Elke keer dat ze dachten het antwoord te weten (zoals "4-bit is sneller" of "onze aangepaste code is het best"), bewezen de metingen dat ze ongelijk hadden. Door naar de data te luisteren en de juiste tools te gebruiken, hebben ze een veertien jaar oud stuk hardware veranderd in een werkende, moderne AI-assistent.
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.