Kvantizacija in hitro sklepanje na lastni strojni opremi
Kako spraviti večje modele na manjše GPE in jih hitro postreči.
Prva reakcija številnih inženirjev, ko pogledajo zahteve strojne opreme za najsodobnejši veliki jezikovni model, je šok ob ceni nalepke. Model z 70 milijardami parametrov v izvorni obliki FP32 bi potreboval gruba 280 GB GPE pomnilnika — več, kot večina organizacij ima v enem samem strežniku, in daleč več, kot bi radi zagotovili samo za odgovarjanje na poizvedbe zaposlenih. Kvantizacija je tehnika, ki te številke naredi obvladljive, in razumevanje je bistveno za vsakogar, ki načrtuje on-premise AI sklad.
Kaj kvantizacija dejansko počne
Nevronska mreža je v bistvu zelo velika zbirka številk — uteži, naučenih med usposabljanjem. Privzeto so te uteži shranjene kot 32-bitne vrednosti s plavajočo vejico (FP32), vsaka porablja 4 bajte pomnilnika. Kvantizacija nadomesti visoko-natančne številke z nižje-natančnimi reprezentacijami: 16-bitne plovke (FP16 ali BF16), 8-bitna cela števila (INT8) ali celo 4-bitna cela števila (INT4). Odtis pomnilnika se sorazmerno skrči in na strojni opremi z domačo podporo za aritmetiko z nižjo natančnostjo postane sklepanje prav tako hitrejše.
- FP16 / BF16 — polovičnatočnostni plovci. Praktično brez izgube za večino nalog; prva izbira za produkcijske namestitve, kjer je natančnost ključna. Prihranki pomnilnika: 2x v primerjavi s FP32.
- INT8 — 8-bitna cela števila, tipično ustvarjena z metodami post-usposabljalne kvantizacije (PTQ), kot sta GPTQ ali llm.int8(). Skromna degradacija kakovosti pri kompleksnem sklepanju; precejšnja za večino praktičnih nalog. Prihranki pomnilnika: 4x v primerjavi s FP32.
- INT4 — 4-bitna cela števila, meja agresivne kvantizacije. Orodja, kot sta GGUF Q4_K_M in AWQ, zagotavljajo presenetljivo dobro kakovost za svojo velikost. Prihranki pomnilnika: 8x v primerjavi s FP32, s sprejemljivo degradacijo za delovne obremenitve klepeta in povzemanja.
Kompromis kakovosti in velikosti
Kvantizacija ni brezplačna. Vsak bit, ki ga odstranite, je zavržena informacija in na neki točki se to pokaže kot degradiran izhod — halucinacije, napake pri sklepanju ali izguba niansiranosti. Praktična ugotovitev iz namestitev Privonis je, da je kompromis presenetljivo ugoden za večino poslovnih nalog. Model 70B, kvantiziran na INT4, tipično preseže model 13B pri FP16, čeprav oba ustrezata v podoben GPE pomnilnik. V dvomih uporabite največji model, ki ustreza pri najvišji natančnosti, ki jo vaša strojna oprema podpira.
Izbira prave kvantizacije je manj o številu bitov in bolj o usklajevanju zmogljivosti modela z nalogo: dobro izbrani INT4 70B preseže nepremišljeni FP16 13B vsakič.
Sklepalni strežniki: od kje prihaja pretok
Poganjanje kvantiziranega modela je samo polovica zgodbe. Učinkovito postrežba pod hkratno obremenitvijo zahteva sklepalni strežnik, ki razume strukturo transformer pozornosti. Prevladujoča odprtokodna možnost danes je vLLM, ki je uvedel PagedAttention — tehniko upravljanja pomnilnika, izposojeno iz operacijskega sistema virtualne pomnilnika, ki strežniku omogoča prepletanje številnih zahtevkov hkrati brez izgube GPE pomnilnika na vnaprej dodeljenimo blokih predpomnilnika KV. Praktičen učinek je 10–30-kratna izboljšava pretoka v primerjavi z naivno zanko z eno zahtevo.
Druge opazne možnosti vključujejo llama.cpp (CPU-prijazno, odlično za manjše modele na blagovni strojni opremi), Ollama (razvijalcem prijazna ovojnica okoli llama.cpp), TGI iz Hugging Face (močna podpora za formate modelov Hugging Face) in TensorRT-LLM od NVIDIA (najvišji pretok na strojni opremi NVIDIA, po ceni kompleksnejšega kompilacijskega cevovoda). Privonis evalvira in primerjalno testira vse te za vsako konfiguracijo stranke.
Serijsko obdelovanje in pretok
GPE dosežejo vrhunsko učinkovitost pri hkratnem obdelavi številnih operacij — to je tisto, za kar so bile zasnovane. Neprekinjeno serijsko obdelovanje (imenovano tudi dinamično serijsko obdelovanje ali razpored na ravni iteracij) omogoča skladalnim strežniku združevanje žetonov iz več hkratnih zahtevkov v en sam klic jedra GPE, kar dramatično izboljša izkoriščenost. Brez serijskega obdelovanja bi ena sama poizvedba uporabnika morda porabila 5 % zmogljivosti GPE; z neprekinjenim serijskim obdelovanjem je mogoče potisniti izkoriščenost na 70–80 % pri vzorcih prometa v resničnem svetu. Za podjetje z desetinami hkratnih uporabnikov je razlika med skladalnim strežnikom, ki se zaveda serijskega obdelovanja, in naivnim strežnikom lahko razlika med potrebo po enem ali štirih GPE strežnikih.
Izbira prave kvantizacije za vašo GPE
Odločitveno drevo je preprostejše, kot se zdi. Začnite s proračunom pomnilnika GPE, odštejte rezervo za OS in sklepalni strežnik (tipično 4–8 GB), nato poiščite največji model, ki ustreza pri najvišji ravni natančnosti. Nekaj praktičnih referenčnih točk:
- 24 GB VRAM (npr. RTX 4090, A5000) — udobno poganja model 13B pri FP16 ali model 34B pri INT4.
- 48 GB VRAM (npr. RTX 6000 Ada, A6000) — poganja model 34B pri FP16 ali model 70B pri INT4.
- 2 × 80 GB (npr. par A100 prek NVLink) — poganja model 70B pri FP16 ali model 140B pri INT4 s tenzorsko paralelnostjo.
- Samo CPU (brez GPE) — llama.cpp z modelom Q4_K_M 7B ali 13B je izvedljiv za razvijalska orodja z nizko hkratnostjo; pričakujte 5–15 žetonov/s.
Skupaj z Privonis
Izbira formata kvantizacije in skladalnega strežnika je inženirsko delo, ki zahteva profiliranje na vaši specifični strojni opremi z vašo specifično delovno obremenitvijo. Privonis se ukvarja s tem primerjanjem kot del vsake namestitve: izvajamo preskuse pretoka, merimo kakovost izhoda na reprezentativnem vzorcu vaših dejanskih pozivov in zagotovimo konfiguracijo, ki maksimizira zmogljivost v okviru vašega proračuna strojne opreme. Rezultat je produkcijski sklepalni sklad, ki ga vaša ekipa lahko upravlja brez specialista za strojno učenje na klicu. Če ste pripravljeni raziskati, kaj ustreza vašemu okolju, je naša ekipa vesela, da skupaj z vami pregleda številke.
Pogovorimo se o vašem projektu UI
Rezervirajte klic