AI-mallit ja alustat
PowerInfer: Nopea Suuri Kielen Malli Kuluttajaluokan GPU: llä
Generatiiviset suuret kielen mallit ovat nyt AI-vallankumouksen eturintamassa, ja niiden generoivien kykyjen parantamiseksi tehdään jatkuvasti töitä. Kuitenkin, huolimatta nopeista edistysaskelista, nämä mallit vaativat edelleen merkittäviä laskentaresursseja. Tämä johtuu pitkälti siitä, että ne koostuvat sadoista miljardeista parametreista. Lisäksi generatiiviset AI-mallit toimivat sujuasti vain, kun niitä tukevat tuhannet GPU:t, mikä johtaa merkittäviin toimintakustannuksiin. Korkeat toimintavaatimukset ovat avain syy, miksi generatiivisia AI-malleja ei voida vielä tehokkaasti käyttää henkilökohtaisilla laitteilla.
Tässä artikkelissa käsittelemme PowerInferiä, nopeaa LLM-inferensimoottoria, joka on suunniteltu standardikoneille, jotka toimivat yhdellä kuluttajaluokan GPU:lla. PowerInfer-kehyksessä pyritään hyödyntämään suurten kielen mallien sisäistä lokaliteettia, jota voidaan kuvata hermosolujen aktivaatioiden potenssilakina. Tämä tarkoittaa, että kulloisenkin hetken aikana pieni osa “kuumia” hermosoluja on jatkuvasti aktiivisia syötteiden yli, kun taas loput, “kylmät” hermosolut, aktivoituvat tietyille syötteille tai vaatimuksille. Tämä lähestymistapa mahdollistaa PowerInfer-kehykselle laskentatehon vähentämisen generatiivisen AI:n haluttujen tulosten tuottamiseksi.
Käymme PowerInfer-kehyksen läpi yksityiskohtaisesti, tutkimalla sen metodologiaa, putkistoa ja käytännön soveltamistuloksia. Aloitaanko.
PowerInfer: Nopea Suuri Kielen Malli Kuluttajaluokan GPU: llä
Generatiiviset suuret kielen mallit, kuten ChatGPT ja DALL-E, ovat tunnettuja monimutkaisista generatiivisista ja luonnollisen kielen prosessointitehtävistä. Niiden korkeiden laskentavaatimusten vuoksi nämä mallit ovat tyypillisesti käytössä tietokeskuksissa, joissa on edistyneitä GPU:ita. Tarve näin korkeasta laskentatehosta rajoittaa niiden käyttöä tietokeskuksiin, korostaen tarvetta ottaa suuret kielen mallit käyttöön helpommin saatavilla olevilla paikallisilla alustoilla, kuten henkilökohtaisilla tietokoneilla.
Suurtten kielen mallien saatavuuden lisääminen voisi vähentää inference- ja sisällönluontikustannuksia, parantaa datan turvallisuutta ja mahdollistaa mallien mukauttamisen. Lisäksi, kun tietokeskusasettelut painottavat korkeaa läpäisykykyä, paikalliset LLM-asettelut voivat keskittyä mataliin viiveisiin pienempien eräkokojen vuoksi.
On kuitenkin haasteita asettaa nämä mallit paikallisille laitteille niiden merkittävien muistivaatimusten vuoksi. Suuret kielen mallit, toimien autoregressiivisina transmuuttajina, luovat tekstiä tokenin kerrallaan, ja kunkin tokenin edellyttää koko mallin pääsyä, joka koostuu sadoista miljardeista parametreista. Tämä edellyttää useita korkean tason GPU:ita matalan viiveen tulostuottamiseksi. Paikalliset asettelut käsittelevät yleensä yksittäisiä pyynnöksiä peräkkäin, mikä rajoittaa rinnakkaisen prosessoinnin mahdollisuuksia.
Olemassa olevat ratkaisut käyttävät menetelmiä, kuten mallin siirtämistä ja pakkaamista, ratkaisemaan generatiivisen AI-kehyksen monimutkaisia muistivaatimuksia. Tekniikat, kuten tislaus, rajaus ja kvantisaatio, vähentävät mallin kokoa, mutta ne ovat edelleen liian suuria standardiluokan GPU:ille henkilökohtaisissa tietokoneissa. Mallin siirtäminen, joka jakaa mallin Transformer-kerroksen CPU:n ja GPU:n muistin välillä, mahdollistaa jakelun CPU:n ja GPU:n muistin välillä. Kuitenkin tämä menetelmä on rajoitettu hitaalla PCIe-liitännän ja CPU:n rajoitettujen laskentakapasiteettien vuoksi, mikä johtaa korkeaan inference-viiveeseen.
PowerInfer-kehyksen mukaan LLM-inferenssin ja laitteiston rakenteen välinen epäsovitus on pääasiallinen syy LLM-inferenssin muistiongelmiin. Ihanteellisesti usein käytettävät tiedot tulisi tallentaa korkean kaistanleveyden ja rajoitetun kapasiteetin GPU:ihin, kun taas vähemmän usein käytettävät tiedot tulisi tallentaa matalan kaistanleveyden ja suuren kapasiteetin CPU:ihin. Kuitenkin kunkin LLM-inferenssisyklän suuri parametrivolyymi tekee työjoukon liian suureksi yhdelle GPU:lle, mikä johtaa epätehokkaaseen lokaliteetin hyödyntämiseen.
LLM-inferenssiprosessi suurissa kielen malleissa osoittaa korkeaa lokaliteettia, jossa kunkin iteroinnin aikana rajoitettu määrä hermosoluja aktivoituu. PowerInfer-kehyksen tavoitteena on hyödyntää tätä lokaliteettia hallitsemalla pieni määrä “kuumia” hermosoluja GPU:lla, kun taas CPU käsittelee “kylmät” hermosolut. Se esivalitsee ja esilataa kuumat hermosolut GPU:lle ja tunnistaa aktiiviset hermosolut suoritusaikana. Tämä lähestymistapa vähentää kalliiden PCIe-datatransferien määrää, mahdollistaen GPU:iden ja CPU:iden itsenäisen prosessoinnin niiden määriteltyjen hermosolujen kanssa.
Kuitenkin LLM:ien asettaminen paikallisille laitteille kohtaa esteitä. Online-ennakoiden, jotka ovat tärkeitä aktiivisten hermosolujen tunnistamiseksi, kuluttavat merkittäviä määriä GPU-muistia. PowerInfer-kehyksen käyttää sopeutuvaa menetelmää rakentamaan pieniä ennakointejärjestelmiä kerroksille, joilla on suurempi aktivaatioiden vinous ja harvautus, ylläpitäen tarkin ja vähentäen kokoja. Lisäksi LLM-kehykset vaativat erityisiä harviajattuja operaattoreita. PowerInfer-kehyksen käyttää hermosolujen tietoista harviajattua operaattoria, joka kommunikoi suoraan hermosolujen kanssa, poistamalla tarpeen tietyille harviajatuille muodonmuunnoksille.
Lopuksi, optimaalisen hermosolujen sijoittelun CPU:n ja GPU:n välillä on haasteellista. PowerInfer-kehyksen käyttää offline-vaihetta luomaan hermosolujen sijoittelupolitiikkaa, joka mitataan kunkin hermosolun vaikutusta LLM-inferenssituloksiin ja kehystetään kokonaisluvuksi.
Arkkitehtuuri ja Metodologia
Seuraava kuva selventää PowerInfer-kehyksen arkkitehtuuria, joka koostuu offline- ja online-komponenteista putkistossa.

Kiitos suurten kielen mallien lokaliteettioomaisuuksien vaihtelun, offline-komponentti profiloituu LLM-kehyksen aktivaatioiden harvautta, mahdollistaen erottelun kuumien ja kylmien hermosolujen välillä. Toisaalta offline-vaiheessa kaksi hermosolun tyyppiä ladataan inference-moottorilla sekä CPU:lle että GPU:lle, palvelemalla LLM-pyynnöksiä suoritusaikana matalalla viiveellä.
Offline-vaihe: Poliittisen Ratkaisun ja LLM-Profiilin Etsintä
Offline-vaiheessa LLM-profiili-komponentti käyttää yleisöä koskevia pyynnöksiä yleisestä tietokannasta keräämään aktivaatiotietoja inference-prosessista. Ensimmäisessä vaiheessa se seuraa hermosolujen aktivaatiota kaikissa kehyksen kerroksissa ja käyttää sitten poliittisen ratkaisun komponenttia luokitellakseen hermosolut joko kuumeisiksi tai kylmiksi. Poliittisen ratkaisun pääasiallinen tavoite on määrittää hermosolut, jotka aktivoituvat useammin, GPU-kerroksille, kun taas loput määritetään CPU-kerroksille. Toisessa vaiheessa poliittisen ratkaisun komponentti käyttää hermosolujen vaikutusmittareita ja laitteiston määritelmiä tasapainottamaan työnkuormaa kerrosten välillä ja maksimoimaan GPU:n vaikutusmittarin hermosolujen käytössä käyttäen kokonaislukuohjelmointia.
Online-vaihe: Hermosolujen Tietoinen LLM-Inference-Moottori
Kun offline-vaihe on suoritettu onnistuneesti, kehys siirtyy online-vaiheeseen. Kolmannessa vaiheessa online-moottori määrittää kuumat ja kylmät hermosolut niiden prosessointiyksiköille offline-poliittisen ratkaisun tuloksen perusteella. Suoritusaikana ja neljännessä vaiheessa online-moottori hallinnoi GPU-CPU-laskentaa luomalla CPU- ja GPU-suorittajia, jotka ovat säikeitä, jotka suoritetaan CPU-puolella. Moottori sitten ennustaa aktiiviset hermosolut ja ohittaa epäaktiiviset hermosolut. Aktiiviset hermosolut ladataan sitten etukäteen GPU:lle prosessointia varten. Samaan aikaan CPU laskee ja siirtää tulokset omille hermosolujensa yhdistämiseksi GPU:n kanssa. Online-moottori pystyy keskittymään yksittäisiin hermosolujen riveihin ja sarakkeisiin matriiseissa, koska se käyttää hermosolujen tietoista harviajattua operaattoria sekä CPU:lla että GPU:lla.

Sopeutuva Harvautusennustajat
PowerInfer-kehyksen online-inference-moottorin ensisijainen konsepti laskentakuormien vähentämiseksi on, että se käsittelee vain hermosoluja, jotka se ennustaa aktivoituvan. Perinteisesti kunkin Transformer-kerroksen sisällä kehys käyttää kahta eri ennustajaa ennustamaan hermosolujen aktivaatiota MLP- ja itsehuomio-kerroksissa, josta seuraa, että inference-laskenta rajoittuu ennustettuihin aktiivisiin hermosoluihin. Kuitenkin on haasteellista suunnitella tehokkaita ennustajia paikalliselle asetteluun, koska rajoitettu määrä resursseja tekee vaikeaksi tasapainottaa mallin kokoa ja ennustusnäyttöä. Koska nämä ennustajat otetaan usein käyttöön ennustamaan aktiivisia hermosoluja, ne on tallennettava GPU:lle nopean pääsyn mahdollistamiseksi. Kuitenkin kehykset käyttävät yleensä suuren määrän ennustajia, jotka vievät merkittäviä määriä muistia, jopa enemmän kuin mitä vaaditaan LLM-parametrien tallentamiseen.
Lisäksi ennustajien koko määritellään yleensä kahdella tekijällä: Sisäinen Vinous ja LLM-kerrosten Harvautus.

Sopeutuakseen näihin tekijöihin PowerInfer-kehyksen käyttää iteratiivista koulutusmenetelmää kullekin ennustajalle Transformer-kerroksessa ilman kiinteää kokoa. Ensimmäisessä vaiheessa tässä koulutusmenetelmässä perusmallin koko määritellään mallin harvautusprofiilin perusteella, ja mallin kokoa säädellään iteratiivisesti ottaen huomioon sisäinen aktivaatioiden vinous, jotta tarkin ylläpidetään.
Hermosolujen Sijoittelu ja Hallinta
Kuten mainittiin aiemmin, kun offline-poliittisen ratkaisun komponentti määrittää hermosolujen sijoittelupolitiikkaa, online-inference-moottorin komponentti lataa mallin GPU:n ja CPU:n muistiin poliittisen ratkaisun mukaisesti. Kunkin kerroksen, jolla voi olla useita painokerroksia, PowerInfer-kehyksen määrittää kunkin hermosolun joko CPU:lle tai GPU:lle sen perusteella, onko hermosolu kuumasti aktiivinen. Varmistamalla tarkan laskennan jaettujen hermosolujen määrittelyssä on olennaista tarkoissa tuloksissa. Tätä varten PowerInfer-kehyksen luo kaksi hermosolujen taulukkoa: yhden GPU-muistiin ja toisen CPU-muistiin, kummassakin taulukossa kunkin hermosolun korreloidaan sen alkuperäiseen sijaintiin matriisissa.
Hermosolujen Tietoinen Operaattori
Suurten kielen mallien havaittua aktivaatioiden harvautusta, epäaktiiviset hermosolut ja niiden painot voidaan ohittaa matriisikertojen toiminnolla, mikä luo tarpeen harviajattujen operaattorien käytölle. Sen sijaan, että käytettäisiin harviajattuja operaattoreita, joilla on useita rajoituksia, PowerInfer-kehyksen käyttää hermosolujen tietoista operaattoria, joka laskee aktiiviset hermosolut ja niiden painot suoraan GPU:lla ja CPU:lla ilman tarvetta tietyille harviajatuille muodonmuunnoksille suoritusaikana. Hermosolujen tietoinen operaattori eroaa perinteisistä harviajatuista operaattoreista siinä, että se keskittyy yksittäisiin rivi- ja sarakevektoreihin yksittäisessä matriisissa, eikä koko matriisiin.
Hermosolujen Sijoittelupolitiikka
Hyödyntääkseen CPU:n ja GPU:n laskentakapasiteetteja, PowerInfer-kehyksen offline-komponentti luo sijoittelupolitiikan, joka ohjaa kehystä hermosolujen määrittelyssä joko CPU:lle tai GPU:lle. Poliittisen ratkaisun komponentti luo tämän politiikan ja ohjaa hermosolujen sijoittelua kunkin kerroksen sisällä, mikä auttaa määrittämään laskentakuorman kullekin prosessointiyksikölle. Kun poliittisen ratkaisun komponentti luo sijoittelupolitiikkaa, se ottaa huomioon eri tekijöitä, kuten kunkin hermosolun aktivaatiotaajuuden, viestintäkuormituksen ja prosessointiyksiköiden laskentakapasiteetteja, kuten kaistanleveyksiä ja muistin kokoa.
Tulokset ja Käyttöönotto
Osoittaakseen PowerInfer-kehyksen yleistyvyyden eri laitteilla, joissa on erilaiset laitteistokonfiguraatiot, kokeet suoritetaan kahdella eri henkilökohtaisella tietokoneella: toisella, jossa on Intel (INTC ) i9-13900K-prosessori, NVIDIA RTX 4090 GPU ja 192 GB isäntämuisti, ja toisella, jossa on Intel i7-12700K-prosessori, NVIDIA RTX 2080Ti GPU ja 64 GB isäntämuistia.
PowerInfer-kehyksen lopputulos vertaillaan llama.cpp:hen eräkoon kanssa 1 ja oletusarvoisilla käyttöasetuksilla. Kehys ottaa näytteitä ChatGPT- ja Alpaca-aineistoista, joissa on vaihteleva pituus, kuten havaitaan todellisissa vuorovaikutuksissa. Seuraava kuva osoittaa eri mallien generointinopeudet.

Kuten voidaan havaita, PowerInfer-kehyksen generoi 8,32 tokenia sekunnissa ja saavuttaa jopa 16 tokenin generointinopeuden sekunnissa, jolloin se ylittää llama.cpp-kehyksen merkittävällä marginaalilla. Lisäksi, kun tulostusten määrä kasvaa, PowerInfer-kehyksen suorituskyky paranee, koska generointivaihe vaikuttaa merkittävästi koko inference-ajassa.

Lisäksi, kuten voidaan havaita yllä olevasta kuvasta, PowerInfer-kehyksen ylittää llama.cpp-kehyksen matalatehoisilla tietokoneilla, jossa on huippugenerointinopeus 7 tokenia sekunnissa ja keskimääräinen tokenin generointinopeus 5 tokenia sekunnissa.

Yllä oleva kuva osoittaa hermosolujen kuormituksen jakautumisen GPU:n ja CPU:n välillä kahdessa kehyksessä. Kuten voidaan havaita, PowerInfer-kehyksen lisää GPU:n osuuden hermosolujen kuormituksesta merkittävästi, 20 prosentista 70 prosenttiin.

Yllä oleva kuva vertaa kahden kehyksen suorituskykyä kahdella eri tietokoneella, joissa on erilaiset määritykset. Kuten voidaan havaita, PowerInfer-kehyksen toimii johdonmukaisesti korkealla tulostusnopeudella verrattuna llama.cpp-kehykseen.
Lopputulet
Tässä artikkelissa olemme käsitelleet PowerInferiä, nopeaa LLM-inference-moottoria, joka on suunniteltu standardikoneille, jotka toimivat yhdellä kuluttajaluokan GPU:lla. PowerInfer-kehyksen ydin on hyödyntää suurten kielen mallien sisäistä lokaliteettia, jota voidaan kuvata hermosolujen aktivaatioiden potenssilakina. PowerInfer-kehyksen on nopea interferenssijärjestelmä, joka on suunniteltu suurille kielen malleille, ja se käyttää sopeutuvia ennustajia ja hermosolujen tietoista operaattoria aktivoimaan hermosolut ja laskennallisen harvautuksen.












