Kunstig intelligens
PowerInfer: Hurtig stor sprogmodel med forbrugerklasse-GPU

På grund af deres exceptionelle indholdsskabende evner er generative store sprogmodeller nu i forkanten af AI-revolutionen, med pågående bestræbelser på at forbedre deres generative evner. Men selvom der sker hurtige fremskridt, kræver disse modeller betydelig beregningskraft og ressourcer. Dette skyldes primært, at de består af hundredvis af milliarder af parametre. Desuden afhænger generative AI-modeller af tusindvis af GPU’er for at fungere jævnt, hvilket medfører betydelige driftsomkostninger. De høje driftskrav er en af hovedårsagerne til, at generative AI-modeller endnu ikke er effektivt udviklet på personlige enheder.
I denne artikel vil vi diskutere PowerInfer, en højhastigheds LLM-inferensmotor designet til standardcomputere drevet af en enkelt forbrugerklasse-GPU. PowerInfer-rammeværket søger at udnytte den høje lokalitet, der er indbygget i LLM-inferens, karakteriseret ved en power-lovfordeling i neuronalaktivitet. Dette betyder, at på ethvert givent tidspunkt er en lille undergruppe af “varme” neuroner konsekvent aktive på tværs af inputs, mens resten, kaldet “kolde” neuroner, aktiveres baseret på bestemte inputs eller krav. Denne tilgang ermöglicer PowerInfer-rammeværket at reducere den beregningskraft, der er nødvendig for generativ AI til at producere ønskede output.
Vi vil dykke dybere i PowerInfer-rammeværket og udforske dets metodik, pipeline og praktiske anvendelsesresultater. Lad os begynde.
PowerInfer: Hurtig stor sprogmodel med forbrugerklasse-GPU
Generative store sprogmodeller, såsom ChatGPT og DALL-E, er kendt for sofistikerede generative og naturligsproglige opgaver. På grund af deres høje beregningskrav deployeres disse modeller typisk i datacentre med avancerede GPU’er. Behovet for så høj beregningskraft begrænser deres deployment til datacentre, hvilket understreger nødvendigheden af at deployere store sprogmodeller på mere tilgængelige lokale platforme som personlige computere.
At øge tilgængeligheden af store sprogmodeller kunne reducere inferens- og indholdsgenereringsomkostninger, forbedre dataskyhed og tillade modeltilpasning. Desuden, mens datacenter-deploymenter prioriterer høj gennemstrømning, kunne lokale LLM-deploymenter fokusere på lav forsinkelse på grund af mindre batch-størrelser.
Men at deployere disse modeller på lokale enheder stiller betydelige udfordringer på grund af deres betydelige hukommelseskrav. Store sprogmodeller, der fungerer som autoregressive transformatorer, genererer tekst token-for-token, hvor hver token kræver adgang til hele modellen, der består af hundredvis af milliarder af parametre. Dette kræver mange højendte GPU’er for lav-forsinkelsesoutputgenerering. Desuden processerer lokale deploymenter typisk individuelle anmodninger sekventielt, hvilket begrænser muligheden for parallel processing.
For at adresse de komplekse hukommelseskrav i det generative AI-rammeværk anvender eksisterende løsninger metoder som modelafladning og kompression. Teknikker som destillation, beskæring og kvantificering reducerer modellens størrelse, men er stadig for stor for standard-GPU’er i personlige computere. Modelafladning, der opdeler modellen på Transformer-laget mellem CPU’er og GPU’er, tillader distribueret lagprocessing på tværs af CPU- og GPU-hukommelse. Men denne metode er begrænset af den langsomme PCIe-forbindelse og CPU’ernes begrænsede beregningskapacitet, hvilket resulterer i høj inferensforsinkelse.
PowerInfer-rammeværket går ud fra, at misforholdet mellem LLM-inferenskarakteristika og hardwarestruktur er den primære årsag til hukommelsesproblemer i LLM-inferens. Ideelt set burde data, der adgangs til ofte, gemmes i høj-båndbredder, begrænsede kapacitets-GPU’er, mens mindre ofte adgangsdata burde gemmes i lav-båndbredder, høj kapacitets-CPU’er. Men den store parametermængde i hver LLM-inferensiteration gør arbejdssættet for stort for en enkelt GPU, hvilket resulterer i ineffektiv udnyttelse af lokalitet.
Inferensprocessen i store sprogmodeller viser høj lokalitet, hvor hver iteration aktiverer en begrænsende mængde neuroner. PowerInfer-rammeværket søger at udnytte denne lokalitet ved at styre en lille mængde “varme” neuroner med GPU’en, mens CPU’en håndterer de “kolde” neuroner. Det forudvælger og forindlæser “varme” neuroner i GPU’en og identificerer aktiverede neuroner under kørsel. Denne tilgang minimiserer dyre PCIe-dataoverførsler, hvilket tillader GPU’er og CPU’er at uafhængigt processere deres tildelte neuroner.
Men at deployere LLM’er på lokale enheder står over for hindringer. Online-forudsigere, der er afgørende for at identificere aktive neuroner, forbruger betydelige GPU-hukommelse. PowerInfer-rammeværket anvender en adaptiv metode til at konstruere små forudsigere for lag med højere aktiverings-skævhed og sparsomhed, mens nøjagtigheden opretholdes, og størrelsen reduceres. Desuden LLM-rammeværk kræver specialiserede sparse-operatører. PowerInfer-rammeværket anvender neuronal-tilpasningsbare sparse-operatører, der kommunikerer direkte med neuroner, uden at kræve omformning til tæt format under kørsel.
Til sidst er det en udfordring at placere aktiverede neuroner optimalt mellem CPU’en og GPU’en. PowerInfer-rammeværket anvender en offline-fase til at oprette en neuronal-placeringpolitik, der måler hver neurons indvirkning på LLM-inferensresultater og rammer det ind som et heltalligt lineært problem.
Arkitektur og Metodik
Følgende figur forklarer arkitekturen i PowerInfer-rammeværket, der består af offline- og online-komponenter i pipeline’en.

Takket være variationen i lokalitets egenskaber blandt forskellige store sprogmodeller, profilerer offline-komponenten LLM-rammeværkets aktiverings-sparsomhed, hvilket tillader det at differentiere mellem “varme” og “kolde” neuroner. I offline-fasen indlæser inferensmotoren to typer neuroner i både CPU’en og GPU’en, hvilket betjener LLM-anmodninger under kørsel med lav forsinkelse.
Offline Fase: Politik Løser og LLM Profiler
I offline-fasen anvender en LLM-profiler-komponent anmodninger, der er afledt fra en generel dataset, til at indsamle aktiveringsdata fra inferensprocessen. I første skridt overvåger den aktiveringen af neuroner på tværs af alle lag i rammeværket og går derefter videre til at anvende en politik-løser-komponent til at kategorisere neuronerne som enten “varme” eller “kolde”. Det primære formål med politik-løseren er at tildele neuroner, der aktiveres hyppigere, til GPU-lagene, mens resten tildeles til CPU-lagene. I andet skridt anvender politik-løser-komponenten neuron-indvirknings-målinger og hardware-specifikationer til at balancere arbejdsmængden mellem lagene og maksimere indvirknings-målingen for GPU for neuroner ved at anvende heltalligt lineært programmering.
Online Fase: Neuron Bevidst LLM Inferensmotor
Når offline-fasen er udført succesfuldt, går rammeværket videre til at udføre online-fasen. I tredje skridt af processen tildeler online-motoren “varme” og “kolde” neuroner til deres respektive processorer, afhængigt af outputtet fra offline-politik-løseren. Under kørsel og i fjerde skridt styrer online-motoren GPU-CPU-beregninger ved at oprette CPU- og GPU-ekssekutorer, der er tråde, der kører på CPU-siden. Motoren forudsigter derefter aktiverede neuroner og springer over ikke-aktiverede neuroner. De aktiverede neuroner indlæses derefter i GPU’en til processing. Imens beregner CPU’en og overfører resultaterne for dens neuroner til at integrere med GPU’en. Online-motoren kan fokusere på enkelte neurons rækker og kolonner inden for matricer, fordi den anvender sparse neuron-bevidste operatører på både CPU’er og GPU’er.

Adaptive Sparsomhedsforudsigere
Den primære koncept bag at reducere beregningsbelastningerne ved online-inferensmotoren i PowerInfer-rammeværket er, at den kun processerer neuroner, som den forudsigter vil blive aktiveret. Traditionelt anvender rammeværket to forskellige forudsigere inden for hver Transformer-lag til at forudsige aktiveringen af neuroner i MLP- og selv-opmærksomheds-blokke, som en følge af hvilket inferens-beregningen begrænses til neuronerne, der forudsiges at være aktive. Men det er vanskeligt at designe effektive forudsigere til lokal deployment, da den begrænsede mængde ressourcer gør det vanskeligt at balancere modellens størrelse og forudsigelsesnøjagtigheden. Da disse forudsigere deployes hyppigt af rammeværket til at forudsige aktive neuroner, skal de gemmes i GPU’en for at enable hurtig adgang. Men rammeværket deployer generelt en stor mængde forudsigere, der optager betydelig hukommelse, selv den nødvendige til at gemme LLM-parametre.
Desuden bestemmes forudsigernes størrelse generelt af to faktorer: Intern skævhed og sparsomhed af LLM-lag.

For at optimere for disse faktorer anvender PowerInfer-rammeværket en iterativ træningsmetode for hver forudsigere i Transformer-laget uden en fast størrelse. I første skridt af denne træningsmetode fastsættes størrelsen af grundmodellen på basis af modellens sparsomhedsprofil, og modellens størrelse justeres derefter iterativt ved at tage intern aktiverings-skævhed i betragtning for at opretholde nøjagtigheden.
Neuron Placering og Styring
Som nævnt tidligere, mens offline-politik-løser-komponenten bestemmer neuron-placeringpolitikken, indlæser online-inferensmotoren modellen i GPU- og CPU-hukommelsen i overensstemmelse med den genererede politik. For hvert lag, der kan have multiple vægtmatricer, tildeler PowerInfer-rammeværket hver neuron enten til CPU’en eller GPU’en på basis af, om neuronet er varm-aktiveret. At sikre nøjagtig beregning af segmenterede neuroner i den bestemte sekvens er afgørende for præcise resultater. For at tackle dette genererer PowerInfer-rammeværket to neurontabeller: en placeret i GPU-hukommelsen og en placeret i CPU-hukommelsen, hvor hver tabel korrelerer enkeltneuroner med deres oprindelige position i matricen.
Neuron Bevidst Operator
Givet den aktiverings-sparsomhed, der observeres i store sprogmodeller, kan inaktive neuroner og deres vægte bypasses af matrix-multiplications-operationer, hvilket skaber et behov for at anvende sparse operatører. I stedet for at anvende sparse operatører, der har flere begrænsninger, anvender PowerInfer-rammeværket neuron-bevidste operatører, der beregner aktiverede neuroner og deres vægte direkte på GPU’en og CPU’en uden at kræve omformning til tæt format under kørsel. Neuron-bevidste operatører adskiller sig fra traditionelle sparse operatører, da de fokuserer på enkeltne rækker og kolonner inden for en enkelt matrix, snarere end at fokusere på hele matricen.
Neuron Placering Politik
For at udnytte beregningskapaciteterne i CPU’er og GPU’er genererer offline-komponenten i PowerInfer-rammeværket en placeringpolitik, der vejleder rammeværket, når det kommer til at tildele neuroner til enten CPU’en eller GPU-lagene. Politik-løseren genererer denne politik og styrer neuron-placeringen inden for hvert lag, hvilket hjælper med at bestemme den beregningsmæssige arbejdsmængde for enkeltne processorer. Når politik-løseren genererer placeringpolitikken, tager den forskellige faktorer i betragtning, herunder aktiveringsfrekvensen for hver neuron, kommunikations-overhead og beregningskapaciteter som båndbredder og hukommelsesstørrelse for hver processor.
Resultater og Implementering
For at demonstrere PowerInfer-rammeværkets generaliserings-evner på tværs af enheder med forskellige hardware-konfigurationer, udføres eksperimenterne på to forskellige personlige computere: en udstyret med Intel i9-13900K processor, NVIDIA RTX 4090 GPU og 192 GB host-hukommelse, mens den anden kører på Intel i7-12700K processor, NVIDIA RTX 2080Ti GPU og 64 GB host-hukommelse.
PowerInfer-rammeværkets slut-til-slut-ydelse sammenlignes med llama.cpp med en batch-størrelse på 1 og standard-deployment-indstillinger. Rammeværket sampler derefter prompts fra ChatGPT og Alpaca-datasæt, givet længdevariationen i virkelige dialog-input og output. Følgende figur demonstrerer generationshastighederne for forskellige modeller.

Som det kan observeres, genererer PowerInfer-rammeværket 8,32 tokens per sekund og når op til 16 tokens genereret per sekund, hvilket overgår llama.cpp-rammeværket med en betydelig margin. Desuden, som antallet af output-tokens øges, forbedres PowerInfer-rammeværkets ydelse også, da generationsfasen påvirker den samlede inferenstid betydeligt.

Desuden, som det kan observeres i ovenstående billede, overgår PowerInfer-rammeværket llama.cpp-rammeværket på lav-end-PC’er med en top-generationshastighed på 7 tokens per sekund og en gennemsnitlig token-genereringshastighed på 5 tokens per sekund.

Ovenstående billede demonstrerer distributionen af neuron-belastninger mellem GPU’en og CPU’en for de to rammeværker. Som det kan ses, øger PowerInfer-rammeværket GPU’ens andel af neuron-belastning betydeligt, fra 20 til 70 %.

Ovenstående billede sammenligner ydelsen af de to rammeværker på to PC’er med forskellige specifikationer. Som det kan ses, leverer PowerInfer-rammeværket konsekvent en høj output-token-genereringshastighed i forhold til llama.cpp-rammeværket.
Endelige Tanker
I denne artikel har vi talt om PowerInfer, en højhastigheds LLM-inferensmotor for en standardcomputer drevet af en enkelt forbrugerklasse-GPU. I dens kerne søger PowerInfer-rammeværket at udnytte den høje lokalitet, der er indbygget i LLM-inferens, en metode karakteriseret ved en power-lovfordeling i neuronalaktivitet. PowerInfer-rammeværket er et hurtigt interferenssystem designet til store sprogmodeller, der anvender adaptive forudsigere og neuron-bevidste operatører til at aktivere neuronerne og den beregningsmæssige sparsomhed.












