Mis on mudeli kvantimine?
Mudeli kvantimine lihtsas keeles
Närvivõrk sisaldab palju arvulisi väärtusi. Kaalud talletavad õpitud parameetreid, aktivatsioonid on aga vaheväärtused, mis tekivad mudeli sisendi töötlemisel. Algse mudeli puhul võivad need väärtused kasutada suhteliselt suure täpsusega vorminguid.
Kvantimine teisendab osa neist väärtustest esitusele, mis kasutab vähem bitte. Väiksema bitiarvuga esitus võib vajada vähem mälu ja salvestusruumi ning vähendada andmehulka, mida tuleb inferentsi ajal süsteemis edastada. Mudeli arhitektuur ei pruugi muutuda; muutub selle käitamiseks kasutatav arvuline esitus.
Kvantimist võib mõista kui üksikasjaliku mõõtetulemuse ümardamist väiksemaks lubatud väärtuste hulgaks. Ümardatud väärtuse salvestamiseks kulub vähem teavet, kuid see ei pruugi säilitada kõiki algse väärtuse üksikasju. Kvantimissüsteemid püüavad selle teisendusega kaasnevat viga piirata, eriti mudeli väljundi jaoks oluliste väärtuste puhul.
Miks on kvantimine tehisintellekti mudelite puhul oluline?
Suuri mudeleid piiravad sageli mälu maht, mälu läbilaskevõime, salvestusruumi suurus ja arvutuskulu. Mudel võib olla põhimõtteliselt kasulik, kuid konkreetse GPU, CPU, mobiiliseadme või kohaliku arvuti jaoks liiga suur.
Kvantimine võib aidata, muutes mudeli salvestatud esituse väiksemaks. Suurte keelemudelite puhul kasutatakse väiksema bitiarvuga kaaluesitusi laialdaselt selleks, et muuta kohalik inferents ja parameetritõhus peenhäälestus praktilisemaks. Kvantimine võib vähendada ka teeninduskulusid või võimaldada suurema mudeli käitamist väiksema arvu seadmetega.
Need eelised ei teki automaatselt. Kvantitud mudel on kiirem ainult siis, kui riistvara, käituskeskkond ja arvutuskernelid suudavad selle vormingut tõhusalt töödelda. Kiirus võib sõltuda ka pakkide suurusest, jada pikkusest, mälupöörduste mustritest ja konkreetsest töökoormusest. Vorming, mis säästab mälu, võib riistvaral, mille tugi sellele on puudulik, anda kiirusele vähe juurde.
Kuidas kvantimine töötab?
Üldjoontes teisendab kvantimine väärtused suuremast arvulisest vahemikust väiksemaks esitatavate väärtuste hulgaks. Teisendust kirjeldatakse metaandmetega, näiteks skaala ja paljude meetodite puhul ka nullpunktiga.
Skaala kirjeldab, kui kaugel üksteisest esitatavad väärtused asuvad. Nullpunkt aitab kvanditud vahemikku algsete väärtustega joondada, eriti siis, kui väärtused ei paikne nulli ümber. Arvutuste ajal võib süsteem kasutada kompaktseid väärtusi otse või teisendada need konkreetsete toimingute jaoks tagasi suurema täpsusega vormingusse.
Kvantimist saab rakendada eri detailsusastmetel. Süsteem võib kasutada üht teisendust suure väärtusterühma jaoks või eraldi teisendusi väiksemate rühmade, kanalite või tensori muude osade jaoks. Peenema detailsusega teisendused võivad täpsust paremini säilitada, kuid vajavad rohkem metaandmeid ja nende tõhus rakendamine võib olla keerulisem.
Kaalud ja aktivatsioonid
Ainult kaalude kvantimine muudab salvestatud õpitud parameetreid, jättes suurema osa käitusaegsest arvutusest suurema täpsusega vormingusse. See on suurte keelemudelite töövoogudes tavaline, sest kaalud hõivavad märkimisväärse osa mälust.
Aktivatsioonide kvantimine esitab ka vaheväärtusi väiksema täpsusega. See võib vähendada suurema osa arvutuste kulu, kuid aktivatsioone on sageli keerulisem usaldusväärselt kvantida, sest nende vahemik sõltub sisendist ja mudeli sisemisest käitumisest.
Mudel võib süsteemi eri osades kasutada erinevaid täpsustasemeid. Seega ei ole kvantimine lihtsalt valik „kvanditud” ja „mitte kvanditud” vahel, vaid otsuste kogum selle kohta, milliseid esitusi milliste väärtuste jaoks kasutada ja kuidas neid esitusi töödelda.
Treeningujärgne kvantimine ja kvantimisteadlik treenimine
Treeningujärgne kvantimine
Treeningujärgne kvantimine ehk PTQ teisendab juba treenitud mudelit, ilma et kogu mudelit algusest peale uuesti treenitaks. See on atraktiivne, sest seda saab rakendada pärast treeningut ja tavaliselt nõuab see vähem treeningutööd kui mudeli treeninguprotsessi muutmine.
Paljud PTQ töövood kasutavad kalibreerimist. Kalibreerimise käigus lastakse mudelist läbi tüüpilised sisendid, et hinnata sobivaid väärtuste vahemikke ja määrata, kuidas arvulisi väärtusi teisendada. Kalibreerimisandmete kvaliteet ja tüüpilisus võivad lõpptulemust mõjutada, eriti aktivatsioonide kvantimise korral.
Kvantimisteadlik treenimine
Kvantimisteadlik treenimine ehk QAT tutvustab mudelile väiksema täpsusega arvutuse mõju treeningu või peenhäälestuse ajal. Seejärel saab mudel oma õpitud parameetreid kohandada, et kvantimise mõju vähendada.
QAT võib mõne töökoormuse puhul täpsust paremini säilitada, kuid nõuab sobivat treeningu- või peenhäälestusprotsessi. PTQ-d on olemasolevale mudelile sageli lihtsam rakendada, samas kui QAT võib olla mahukam, kuid annab mudelile võimaluse kavandatud arvulise esitusega kohaneda.
Levinud kvantimise mõisted ja meetodid
Kvantimise terminoloogia erineb tööriistade ja mudelivormingute vahel, mistõttu ei tohiks nimetusi käsitleda sünonüümidena.
- Bitid: bittide arv, mida kasutatakse ühe väärtuse või väärtusterühma esitamiseks. Väiksem bitiarv tähendab üldjuhul väiksemat esitust, kuid võib suurendada ka lähendusviga.
- Kalibreerimine: väärtuste vahemike või muude statistiliste näitajate mõõtmine, tavaliselt tüüpiliste sisendite abil, et kvantimist suunata.
- GPTQ: treeningujärgne kaalude kvantimise meetod, mis on loodud generatiivsete transformer-mudelite väga väikese bitiarvuga tihendamiseks. See kasutab kvantimisvigade mõju vähendamiseks teise järgu teabe lähendust.
- AWQ: kaalude kvantimise meetod, mis kasutab aktivatsioonide statistikat olulisemate kanalite tuvastamiseks ja nende käitumise kaitsmiseks skaleerimise abil.
- bitsandbytes: laialt kasutatav tarkvaratöövoog ja teegiintegratsioon väiksema bitiarvuga mudeliesituste laadimiseks või nendega töötamiseks. See erineb meetoditest, mille puhul peab mudel olema kindlas vormingus eelnevalt kvanditud.
- FP8: kaheksabitine ujukomavorming. Erinevalt täisarvuvormingust säilitab see ujukoma omadused, kuid selle kasulikkus sõltub riistvara ja käituskeskkonna toest.
Tööriistad võivad mudeli eelnevalt kvantida või teha seda mudeli laadimise ajal. Näiteks eelnevalt kvanditud GPTQ- või AWQ-mudel ei kasuta sama töövoogu kui suurema täpsusega mudeli laadimine teegi kaudu, mis kvantib mudeli laadimise ajal. Käituskeskkonna tugi ja saadaolevad toimingud võivad meetoditi erineda.
Millised on kompromissid?
Kvantimise peamine eelis on tõhusus. Väiksem esitus võib vähendada mälukasutust, salvestusruumi vajadust ja andmete liigutamist. See võib võimaldada mudelit käitada riistvaral, kuhu algne versioon ei mahuks, või kasutada ühes süsteemis rohkem mudeleid ja suuremaid töökoormusi.
Peamine kulu on lähendamine. Väiksema täpsusega väärtused ei suuda algsete väärtuste kõiki üksikasju esitada, mistõttu võib kvantimine vähendada täpsust või muuta mudeli käitumist. Mõne ülesande puhul võib mõju olla väike, teise puhul aga märgatavam. Ka ainult kaalude kvantimine ja aktivatsioonide kvantimine võivad kaasa tuua erinevaid kompromisse.
Arvestada tuleb ka järgmiste praktiliste asjaoludega:
- Väiksema bitiarvuga vorming ei taga kiiremat inferentsi.
- Riistvara tugi võib olla sama oluline kui nimeline bitilaius.
- Eri käituskeskkonnad võivad toetada erinevaid kvantimismeetodeid ja toiminguid.
- Kalibreerimisandmed võivad mõjutada aktivatsioonide järgi kvanditud mudelite käitumist.
- Täiendavad skaleerimise metaandmed ja teisendusetapid võivad osa teoreetilisest säästust ära vähendada.
- Kvanditud mudel võib vajada vormingupõhist laadijat või käituskeskkonda, mitte sama protsessi, mida kasutatakse algse mudeli puhul.
Kas kvantimine muudab mudeli väiksemaks?
Tavaliselt vähendab kvantimine kvanditavate väärtuste, eriti kaalude, salvestamiseks vajalikku ruumi. Lõplik failisuurus sõltub aga enamast kui üksnes märgitud bitiarvust. Tulemusse panustavad metaandmed, kvantimata kihid, mudelifailid ja väärtuste rühmitamise viis.
Kvantimine erineb ka kärpimisest. Kärpimine eemaldab või eirab mõningaid ühendusi, kvantimine aga säilitab mudeli väärtused, esitades need lihtsalt väiksema bitiarvuga. Neid kahte tehnikat saab kombineerida, kuid need lahendavad erinevaid probleeme.
Kuidas kvanditud mudelit hinnata?
Ära hinda kvanditud mudelit ainult faili suuruse põhjal. Võrdle seda algse mudeliga ülesannetes, mis on sinu jaoks olulised.
- Kontrolli, kas kvanditud vormingut toetavad sinu riistvara ja käituskeskkond.
- Mõõda tegeliku töökoormuse ajal kasutatavat mälu, mitte ainult mudelifaili suurust.
- Võrdle vastuste kvaliteeti tüüpiliste viipade või hindamisandmete põhjal.
- Mõõda genereerimise kiirust, latentsust ja läbilaskevõimet realistlike seadete korral.
- Kontrolli, kas mudeli olulisi toiminguid toetatakse ilma ootamatute teisendusteta.
Väike mudel, mis töötab usaldusväärselt, võib olla kasulikum kui agressiivsemalt kvanditud mudel, mis säästab küll mälu, kuid annab vastuvõetamatuid tulemusi või mille puhul riistvarakiirendus on vähene.
Mida tähendab kvantimine algajatele?
Kui katsetad kohalike keelemudelitega, on kvantimine eelkõige viis sobitada mudel sinu arvutis saadaolevate ressurssidega. Alusta sellest, et määrad kindlaks, kui palju mälu sinu töökoormus kasutada saab, ja vali seejärel mudelivorming, mida sinu kavandatav käituskeskkond toetab. Testi kvaliteeti ja kiirust, selle asemel et eeldada, et väikseima bitiarvuga valik on automaatselt parim.
Juurutusvõimaluste üldiseks mõistmiseks võib olla kasulik võrrelda ka kohalikke LLM-e ja pilvepõhiseid LLM-e. Kvantimine on eriti oluline kohaliku juurutuse puhul, kuid ka pilveteenused võivad seda sisemiselt kasutada; kasutajad ei pruugi seda rakendusdetaili alati kontrollida ega näha.
Põhiidee
Mudeli kvantimine on arvulise täpsuse kontrollitud vähendamine. See võib muuta närvivõrkude salvestamise ja käitamise praktilisemaks, vähendades mälukasutust ja andmete liigutamist, kuid võib kaasa tuua täpsuse vähenemise ega taga kiiruse kasvu. Õige valik sõltub kvanditavatest väärtustest, kvantimismeetodist, kalibreerimis- või treeninguprotseduuridest ning mudelit käivitavast riist- ja tarkvarast.
