Kvantimine ja kiire järeldus oma riistvaral
Kuidas mahutada suuremaid mudeleid väiksematele GPU-dele ja neid kiiresti serveerida.
Esimene reaktsioon, mida paljud insenerid saavad, kui nad vaatavad tipptasemel suure keelemudeliga seotud riistvara nõudeid, on hinnatõus. 70 miljardit parameetrit mudel oma natiivis FP32 formaadis vajaks ligikaudu 280 GB GPU mälu — rohkem, kui enamikul organisatsioonidel on ühes serveris, ja palju rohkem kui nad tahaksid eraldada ainult töötajate päringutele vastamiseks. Kvantimine on tehnika, mis muudab need numbrid hallatavaks, ja selle mõistmine on kohapealse AI virna kavandajatele hädavajalik.
Mida kvantimine tegelikult teeb
Närvivõrk on lõppkokkuvõttes väga suur arvude kogum — kaalud, mis on treenimise käigus õpitud. Vaikimisi salvestatakse need kaalud 32-bitiste ujukomaarvudena (FP32), igaüks tarbib 4 baiti mälu. Kvantimine asendab kõrge täpsusega numbrid madalama täpsusega esitustega: 16-bitised ujukomaarvud (FP16 või BF16), 8-bitised täisarvud (INT8) või isegi 4-bitised täisarvud (INT4). Mälumahutavus kahaneb proportsionaalselt ja riistvaral, millel on madala täpsusega aritmeetika jaoks kohalik tugi, muutub järeldus ka kiiremaks.
- FP16 / BF16 — poole täpsusega ujukomaarvud. Praktiliselt kaotuseta enamike ülesannete jaoks; esimene valik tootmise paigaldistele, kus täpsus on kriitiline. Mälu kokkuhoid: 2x versus FP32.
- INT8 — 8-bitised täisarvud, mida toodetakse tavaliselt treenimise järgse kvantimise (PTQ) meetoditega nagu GPTQ või llm.int8(). Tagasihoidlik kvaliteedi langus keerukama arutlemise puhul; märkimisväärne enamike praktiliste ülesannete puhul. Mälu kokkuhoid: 4x versus FP32.
- INT4 — 4-bitised täisarvud, agressiivse kvantimise piir. Tööriistad nagu GGUF Q4_K_M ja AWQ pakuvad üllatavalt head kvaliteeti oma suuruse kohta. Mälu kokkuhoid: 8x versus FP32, vastuvõetava halvenemisega vestluse ja kokkuvõtmise töökoormusele.
Kvaliteedi versus suuruse kompromiss
Kvantimine ei ole tasuta. Iga eemaldetav bitt on hüljatud teave ja mingil hetkel avaldub see degradeeritud väljundina — hallutsinatsioonid, arutlemisvead või nüansi kaotus. Privonise paigaldiste praktiline leid on see, et kompromiss on enamike ettevõtte ülesannete puhul üllatavalt soodne. 70B mudel kvantitud INT4-le ületab tavaliselt 13B mudelit FP16-l, isegi kui mõlemad mahuvad sarnasesse GPU mällu. Kui kahtlete, kasutage suurimat mudelit, mis mahub teie riistvara toetataval kõrgeimal täpsusel.
Õige kvantimise valimine puudutab vähem bittide arvu ja rohkem mudeli võimekuse sobitamist ülesandega: hästi valitud INT4 70B võidab iga kord hooletu FP16 13B.
Järelduse serverid: kust läbilaskevõime tuleb
Kvantitud mudeli käitamine on ainult pool lugu. Selle tõhusaks serveerimiseks paralleelse koormuse all on vaja järelduse serverit, mis mõistab transformeri tähelepanu struktuuri. Tänapäeval domineeriv avatud lähtekoodiga valik on vLLM, mis tutvustas PagedAttention — mälu haldamise tehnikat, mis on laenatud operatsioonisüsteemi virtuaalmälust ja võimaldab serveril interleave paljusid päringuid samaaegselt, raiskamata GPU mälu eeljaotatud KV-vahemälu plokkidele. Praktiline efekt on 10–30x täiustus läbilaskevõimes üle naiivist ühe päringu silmuse.
Muud märkimisväärsed võimalused hõlmavad llama.cpp (CPU-sõbralik, suurepärane väiksematele mudelitele kauba riistvaral), Ollama (arendajasõbralik ümbris llama.cpp ümber), TGI Hugging Face'ilt (tugev tugi Hugging Face mudeli formaatidele) ja TensorRT-LLM NVIDIA-lt (kõrgeim läbilaskevõime NVIDIA riistvaral, keerukama kompileerimise konveieri hinnaga). Privonis hindab ja teeb võrdlusteste kõigi nende jaoks iga kliendi konfiguratsiooni puhul.
Partiitöötlus ja läbilaskevõime
GPU-d saavutavad tippefektiivsuse, kui töödeldakse palju toiminguid samaaegselt — see on nende kavandamise eesmärk. Pidev partiitöötlus (nimetatakse ka dünaamiliseks partiitöötluseks või iteratsioonitaseme ajastamiseks) võimaldab järelduse serveril rühmitada tokenid mitmest paralleelsest päringust ühte GPU kerneli kõnesse, parandades drastiliselt kasutust. Ilma partiitöötluseta võib üks kasutaja päring kasutada 5% teie GPU mahutavusest; pidevat partiitöötlust kasutades saate kasutust tõsta 70–80%-ni reaalse liikluse mustrite puhul. Ettevõtete jaoks kümnete paralleelsete kasutajatega võib erinevus partiitöötlust toetava ja naiivist serveri vahel tähendada vahet ühe GPU serveri või nelja vahel.
Oma GPU jaoks õige kvantimise valimine
Otsustuspuu on lihtsam kui see näeb välja. Alustage oma GPU mälu eelarvest, lahutage ruum OS-i ja järelduse serveri jaoks (tavaliselt 4–8 GB), seejärel leidke suurim mudel, mis mahub kõrgeimal täpsusel. Mõned praktilised viitekohtad:
- 24 GB VRAM (nt RTX 4090, A5000) — käitab mugavalt 13B mudelit FP16-l või 34B mudelit INT4-l.
- 48 GB VRAM (nt RTX 6000 Ada, A6000) — käitab 34B mudelit FP16-l või 70B mudelit INT4-l.
- 2 × 80 GB (nt A100 paar NVLinki kaudu) — käitab 70B mudelit FP16-l või 140B mudelit INT4-l tensori paralleelsusega.
- Ainult CPU (GPU puudub) — llama.cpp Q4_K_M 7B või 13B mudeliga on teostatav madala paralleelsusega arendaja töötlemiseks; oodake 5–15 tokenit/s.
Kokku panemine Privonisega
Kvantimise formaadi ja järelduse serveri valimine on inseneeritöö, mis nõuab profiilimist teie konkreetsel riistvaral teie konkreetse töökoormusega. Privonis haldab seda võrdlustestimist iga paigalduse osana: käivitame läbilaskevõime testid, mõõdame väljundi kvaliteeti teie tegelike promptide esinduslikul valimil ja tarnime konfiguratsiooni, mis maksimeerib tulemuslikkust teie riistvara eelarve piires. Tulemus on tootmise järelduse virn, mida teie meeskond saab käitada ilma spetsiaalse ML insenerita kohal. Kui olete valmis uurima, mis teie keskkonnale sobib, on meie meeskond rõõmsasti numbreid teiega käivitamas.
Räägime teie TI projektist
Broneeri kõne