AI-modeller og plattformer
PowerInfer: Rask stor språkmodell med forbruker-gradert GPU
På grunn av deres eksepsjonelle innholdsskapende evner, er generative store språkmodeller nå i forkant av AI-revolusjonen, med pågående arbeid for å forbedre deres generative evner. Imidlertid, til tross for raske fremgang, krever disse modellene betydelig beregningskraft og ressurser. Dette skyldes hovedsakelig at de består av hundredvis av milliarder av parametre. Videre, for å fungere jevnt, avhenger generative AI-modeller av tusenvis av GPU-er, noe som fører til betydelige driftskostnader. De høye driftskravene er en viktig årsak til at generative AI-modeller ennå ikke er effektivt utrullet på personlige enheter.
I denne artikkelen, vil vi diskutere PowerInfer, en høyhastighets LLM-inferensmotor designet for standard datamaskiner drevet av en enkelt forbruker-gradert GPU. PowerInfer-rammeverket søker å utnytte den høye lokaliteten som er innebygget i LLM-inferens, karakterisert av en kraftlovfordeling i neuronal aktivitet. Dette betyr at på ethvert gitt tidspunkt, er en liten undergruppe av “varme” neuroner konsistent aktive over inndata, mens resten, betegnet som “kalde” neuroner, aktiveres basert på bestemte inndata eller krav. Denne tilnærmingen muliggjør PowerInfer-rammeverket å redusere beregningskraften nødvendig for generativ AI å produsere ønskede utdata.
Vi vil dykke dyptere inn i PowerInfer-rammeverket, og utforske dens metode, pipeline og praktiske anvendelsesresultater. La oss begynne.
PowerInfer: Rask stor språkmodell med forbruker-gradert GPU
Generative store språkmodeller, som ChatGPT og DALL-E, er kjent for sofistikerte generative og naturlige språkbehandlingsoppgaver. På grunn av deres høye beregningskrav, deployeres disse modellene vanligvis i datasentre med avanserte GPU-er. Behovet for så høy beregningskraft begrenser deres deployering til datasentre, og understreker nødvendigheten av å deployere store språkmodeller på mer tilgjengelige lokale plattformer som personlige datamaskiner.
Økt tilgjengelighet av store språkmodeller kunne redusere inferens- og innholdsgenereringskostnader, forbedre datatilgang og tillate modelltilpasning. Videre, mens datasenter-deployeringer prioriterer høy gjennomstrømming, kan lokale LLM-deployeringer fokusere på lav forsinkelse på grunn av mindre batch-størrelser.
Imidlertid stiller deployering av disse modellene på lokale enheter betydelige utfordringer på grunn av deres betydelige minnekrev. Store språkmodeller, som fungerer som autoregressive transformatorer, genererer tekst token-for-token, med hver token som krever tilgang til hele modellen, bestående av hundredvis av milliarder av parametre. Dette nødvendiggjør tallrike høykvalitets-GPU-er for lav-forsinkelsesutdata-generering. Videre, lokale deployeringer prosesserer vanligvis individuelle forespørsler sekvensielt, og begrenser muligheten for parallellprosessering.
For å møte de komplekse minnekrevende kravene til det generative AI-rammeverket, benytter eksisterende løsninger metoder som modell-avlasting og komprimering. Teknikker som destillasjon, pruning og kvantisering reduserer modell-størrelsen, men er fortsatt for stor for standard-graderte GPU-er i personlige datamaskiner. Modell-avlasting, som partitionerer modellen på Transformer-laget mellom CPU-er og GPU-er, tillater distribuert lag-prosessering over CPU- og GPU-minne. Imidlertid er denne metoden begrenset av den langsomme PCIe-interkonneksjonen og CPU-ens begrensede beregningskapasiteter, noe som fører til høy inferens-forsinkelse.
PowerInfer-rammeverket hevder at misforholdet mellom LLM-inferens-egenskaper og maskinvare-struktur er den primære årsaken til minne-problemer i LLM-inferens. Ideelt sett bør data som tilgjengelig ofte lagres i høy-båndbredde, begrensede kapasitets-GPU-er, mens mindre ofte tilgjengelig data bør lagres i lav-båndbredde, høy-kapasitets-CPU-er. Imidlertid gjør den store parameter-volumet i hver LLM-inferens-iterasjon arbeidssettet for stort for en enkelt GPU, noe som resulterer i ineffektiv utnyttelse av lokalitet.
Inferens-prosessen i store språkmodeller viser høy lokalitet, med hver iterasjon som aktiverer en begrenset mengde neuroner. PowerInfer-rammeverket søker å utnytte denne lokaliteten ved å håndtere en liten mengde “varme” neuroner med GPU-en, mens CPU-en håndterer “kalde” neuroner. Det forhåndsvælger og forhåndslaster “varme” neuroner i GPU-en og identifiserer aktive neuroner under kjøretid. Denne tilnærmingen minimerer kostbare PCIe-dataoverføringer, og tillater GPU-er og CPU-er å uavhengig prosessere deres tilordnede neuroner.
Imidlertid stiller deployering av LLM-er på lokale enheter utfordringer. Online-prediktorer, avgjørende for å identifisere aktive neuroner, forbruker betydelige GPU-minne. PowerInfer-rammeverket benytter en adaptiv metode for å konstruere små prediktorer for lag med høyere aktiverings-skjevhet og sparsitet, og opprettholder nøyaktighet samtidig som størrelsen reduseres. Videre, LLM-rammeverk krever spesialiserte sparse-operatører. PowerInfer-rammeverket benytter neuronal-avhengige sparse-operatører som kommuniserer direkte med neuroner, og eliminerer behovet for spesielle sparse-formatomforminger.
Til slutt er det en utfordring å plassere aktive neuroner optimalt mellom CPU-en og GPU-en. PowerInfer-rammeverket benytter en offline-fase for å opprette en neuronal-plasseringspolitikk, som måler hver neurons innvirkning på LLM-inferens-resultater og rammer det inn som et heltall-linjært problem.
Arkitektur og Metodologi
Følgende figur forklarer arkitekturen til PowerInfer-rammeverket, bestående av offline- og online-komponenter i pipeline-en.

Takket være variasjonen observert i lokalitets-egenskapene blant ulike store språkmodeller, profilerer offline-komponenten aktiverings-sparsiteten til LLM-rammeverket, og tillater det å skille mellom “varme” og “kalde” neuroner. På den andre siden, i offline-fasen, laster inferens-motoren to typer neuroner inn i både CPU-en og GPU-en, og betjener LLM-forespørsler under kjøretid med lav forsinkelse.
Offline-fase: Politikk-løser og LLM-profiler
I offline-fasen, benytter en LLM-profiler-komponent forespørsler derivert fra en generell datasett for å samle inn aktiverings-data fra inferens-prosessen. I første trinn, overvåker den aktiveringen av neuroner over alle lagene i rammeverket, og går videre til å bruke en politikk-løser-komponent for å kategorisere neuronene som enten “varme” eller “kalde”. Hovedmålet med politikk-løseren er å tilordne neuroner som aktiveres oftere til GPU-lagene, mens resten tilordnes til CPU-lagene. I andre trinn, benytter politikk-løser-komponenten neuron-påvirknings-metrikker og maskinvare-specifikasjoner for å balansere arbeidsbelastningen mellom lagene, og maksimerer påvirknings-metrikken til GPU-en for neuroner ved å bruke heltall-linjær programmering.
Online-fase: Neuron-avhengig LLM-inferens-motor
En gang offline-fasen er kjørt suksessfullt, går rammeverket videre til å kjøre online-fasen. I tredje trinn i prosessen, tilordner online-motoren “varme” og “kalde” neuroner til deres respektive prosesserings-enheter før prosessering av bruker-forespørsler, avhengig av output fra offline-politikk-løseren. Under kjøretid, og i fjerde trinn, håndterer online-motoren GPU-CPU-beregninger ved å opprette CPU- og GPU-utførere som er tråder som kjører på CPU-siden. Motoren forutsier så aktive neuroner og hopper over ikke-aktive neuroner. Aktive neuroner lastes deretter forhåndslastet inn i GPU-en for prosessering. I mellomtiden beregner CPU-en resultater for sine neuroner og overfører dem til GPU-en for å integrere dem. Online-motoren kan fokusere på enkeltneuron-rader og -kolonner innenfor matriser, fordi den benytter sparse neuronal-avhengige operatører på både CPU-er og GPU-er.

Adaptiv Sparsitet-Prediktorer
Hovedkonseptet bak å redusere beregningsbelastninger ved online-inferens-motoren i PowerInfer-rammeverket er at den bare prosesserer neuroner som den forutsier å være aktive. Tradisjonelt, innenfor hvert Transformer-lag, benytter rammeverket to forskjellige prediktorer for å forutsie aktiveringen av neuroner i MLP- og selv-oppmerksomhets-blokkene, som et resultat av at inferens-beregningen begrenses til neuronene som forutsies å være aktive. Imidlertid er det vanskelig å designe effektive prediktorer for lokal deployering, fordi den begrensede mengden ressurser gjør det vanskelig å balansere modell-størrelsen og prediksjons-nøyaktigheten. Da disse prediktorerne deployeres ofte av rammeverket for å forutsie aktive neuroner, må de lagres i GPU-en for å muliggjøre raskere tilgang. Imidlertid deployerer rammeverket vanligvis et stort antall prediktorer som okkuperer betydelig minne, selv det som trengs for å lagre LLM-parametre.
Videre er størrelsen på prediktorer vanligvis bestemt av to faktorer: Intern skjevhet og sparsitet av LLM-lag.

For å optimalisere for disse faktorene, benytter PowerInfer-rammeverket en iterativ treningsmetode for hver prediktor i Transformer-laget uten en fast størrelse. I første trinn i denne treningsmetoden, etableres størrelsen på basis-modellen basert på sparsitets-profilen til modellen, og størrelsen på modellen justeres iterativt ved å ta interne aktiverings-skjevheter i betraktning for å opprettholde nøyaktighet.
Neuron-plassering og -håndtering
Som nevnt tidligere, mens offline-politikk-løser-komponenten bestemmer neuron-plasseringspolitikken, laster online-inferens-motoren modellen inn i GPU- og CPU-minnet i henhold til den genererte politikken. For hvert lag som kan ha flere vektt-matriser, tilordner PowerInfer-rammeverket hver neuron enten til CPU-en eller GPU-en basert på om neuronet er varm-aktiverende. Sikring av nøyaktig beregning av segmenterte neuroner i bestemt sekvens er avgjørende for nøyaktige resultater. For å håndtere dette, genererer PowerInfer-rammeverket to neuron-tabeller: en plassert i GPU-en, og en plassert i CPU-minnet, med hver tabell som korrelerer enkeltneuroner til deres opprinnelige posisjon i matrisen.
Neuron-avhengig Operatør
Gitt den aktiverings-sparsiteten observert i store språkmodeller, kan inaktive neuroner og deres vekter hoppe over ved matrisemultiplikasjons-operasjoner, og skape et behov for å bruke sparse operatører. I stedet for å benytte sparse operatører med flere begrensninger, benytter PowerInfer-rammeverket neuron-avhengige operatører som beregner aktive neuroner og deres vekter direkte på GPU-en og CPU-en uten å kreve konvertering til tett format under kjøretid. Neuron-avhengige operatører skiller seg fra tradisjonelle sparse operatører, fordi de fokuserer på enkelt rad- og kolonne-vektorer innenfor en enkelt matrise, i stedet for å fokusere på hele matrisen.
Neuron-plasseringspolitikk
For å utnytte beregningskapasitetene til CPU-er og GPU-er, genererer offline-komponenten i PowerInfer-rammeverket en plasseringspolitikk som veileder rammeverket når det tilordner neuroner til enten CPU-en eller GPU-lagene. Politikk-løseren genererer denne politikken, og kontrollerer neuron-plasseringen innenfor hvert lag, noe som hjelper til å bestemme beregnings-arbeidsbelastningen for enkeltprosesserings-enheter. Når det genereres en plasseringspolitikk, tar politikk-løser-komponenten i betraktning ulike faktorer, inkludert aktiverings-hyppigheten for hver neuron, kommunikasjons-overhodet og beregnings-kapasiteter som båndbredde og minne-størrelse for hver prosesserings-enhet.
Resultater og Implementering
For å demonstrere generaliserings-egenskapene til PowerInfer-rammeverket over enheter med ulike maskinvare-konfigurasjoner, ble eksperimentene utført på to forskjellige personlige datamaskiner: en utstyrt med Intel (INTC ) i9-13900K-prosessor, NVIDIA RTX 4090 GPU og 192 GB vertsinne, mens den andre opererte med Intel i7-12700K-prosessor, NVIDIA RTX 2080Ti GPU og 64 GB vertsinne.
Ende-til-ende-ytelsen til PowerInfer-rammeverket ble sammenlignet mot llama.cpp med en batch-størrelse på 1, og standard deployerings-innstillinger. Rammeverket sampet deretter forespørsler fra ChatGPT- og Alpaca-datasett, gitt lengde-variabiliteten observert i virkelige dialog-inndata og -utdata. Følgende figur demonstrerer genererings-hastighetene for ulike modeller.

Som det kan observeres, genererer PowerInfer-rammeverket 8,32 token per sekund, og når opp til 16 token generert per sekund, og overstiger dermed llama.cpp-rammeverket med en betydelig margin. Videre, som antallet utgangs-token øker, forbedrer også ytelsen til PowerInfer-rammeverket, da genererings-fasen påvirker den totale inferens-tiden betydelig.

Videre, som det kan observeres i ovenstående bilde, overstiger PowerInfer-rammeverket llama.cpp-rammeverket på lavkvalitets-PC-er med en topp-genererings-hastighet på 7 token per sekund, og en gjennomsnittlig token-genererings-hastighet på 5 token per sekund.

Ovenstående bilde demonstrerer distribusjonen av neuron-belastninger mellom GPU-en og CPU-en for de to rammeverkene. Som det kan sees, øker PowerInfer-rammeverket GPU-ens andel av neuron-belastning betydelig, fra 20 til 70 %.

Ovenstående bilde sammenligner ytelsen til de to rammeverkene på to PC-er med ulike spesifikasjoner. Som det kan sees, leverer PowerInfer-rammeverket konsekvent en høy utgangs-token-genererings-hastighet i sammenligning med llama.cpp-rammeverket.
Slutt-tanker
I denne artikkelen har vi diskutert PowerInfer, en høyhastighets LLM-inferens-motor for en standard datamaskin drevet av en enkelt forbruker-gradert GP. I kjernen, forsøker PowerInfer-rammeverket å utnytte den høye lokaliteten som er innebygget i LLM-inferens, en metode karakterisert av neuron-aktivitetens kraftlov-fordeling. PowerInfer-rammeverket er et raskt interferens-system designet for store språkmodeller som benytter adaptive prediktorer og neuron-avhengige operatører for å aktivere neuronene og den beregningsmessige sparsiteten.












