Kvantovanie a rýchla inferencia na vlastnom hardvéri
Ako umiestniť väčšie modely na menšie GPU a obsluhovať ich rýchlo.
Prvá reakcia mnohých inžinierov, keď sa pozrú na hardvérové požiadavky špičkového veľkého jazykového modelu, je šok. Model s 70 miliardami parametrov v natívnom formáte FP32 by potreboval zhruba 280 GB GPU pamäte — viac, ako má väčšina organizácií na jednom serveri, a oveľa viac, ako chcú zabezpečiť len na zodpovedanie zamestnaneckých dotazov. Kvantovanie je technika, ktorá tieto čísla robí zvládnuteľnými, a jej pochopenie je nevyhnutné pre každého, kto navrhuje zásobník AI on-premise.
Čo kvantovanie skutočne robí
Neurónová sieť je v konečnom dôsledku veľkou zbierkou čísel — váhy naučené počas trénovania. Predvolene sú tieto váhy uložené ako 32-bitové čísla s pohyblivou rádovou čiarkou (FP32), každé spotrebúva 4 bajty pamäte. Kvantovanie nahradzuje čísla s vysokou presnosťou reprezentáciami s nižšou presnosťou: 16-bitové floaty (FP16 alebo BF16), 8-bitové celé čísla (INT8) alebo dokonca 4-bitové celé čísla (INT4). Pamäťová stopa sa úmerne zmenšuje a na hardvéri s natívnou podporou aritmetiky nižšej presnosti sa inferencia tiež zrýchľuje.
- FP16 / BF16 — floaty s polovičnou presnosťou. Prakticky bezstratové pre väčšinu úloh; predvolená voľba pre produkčné nasadenia, kde je presnosť kritická. Úspora pamäte: 2x oproti FP32.
- INT8 — 8-bitové celé čísla, typicky produkované metódami kvantovania po trénovaní (PTQ) ako GPTQ alebo llm.int8(). Mierne zníženie kvality pri komplexnom uvažovaní; významné pri väčšine praktických úloh. Úspora pamäte: 4x oproti FP32.
- INT4 — 4-bitové celé čísla, hranica agresívneho kvantovania. Nástroje ako GGUF Q4_K_M a AWQ dodávajú prekvapivo dobrú kvalitu pre svoju veľkosť. Úspora pamäte: 8x oproti FP32, s prijateľnou degradáciou pre chat a sumarizačné záťaže.
Kompromis kvality vs. veľkosti
Kvantovanie nie je zadarmo. Každý bit, ktorý odstránite, sú zahodené informácie a v nejakom bode sa to prejaví ako zhoršený výstup — halucinácie, chyby uvažovania alebo strata nuansy. Praktické zistenie z nasadení Privonis je, že kompromis je prekvapivo priaznivý pre väčšinu podnikových úloh. Model s 70 miliardami kvantovaný na INT4 typicky prekonáva model s 13 miliardami pri FP16, aj keď obaja sa zmestia do podobnej GPU pamäte. V prípade pochybností použite najväčší model, ktorý sa zmestí pri najvyššej presnosti, ktorú váš hardvér podporuje.
Výber správneho kvantovania sa netýka počtu bitov, ale skôr prispôsobenia kapacity modelu úlohe: dobre zvolený INT4 70B porazí nedbanlivý FP16 13B vždy.
Inferenčné servery: odkiaľ pochádza priepustnosť
Spustenie kvantovaného modelu je len polovica príbehu. Jeho efektívna obsluha pri súbežnom zaťažení vyžaduje inferenčný server, ktorý rozumie štruktúre transformer attention. Dominantnou open-source možnosťou dnes je vLLM, ktorý zaviedol PagedAttention — techniku správy pamäte požičanú z virtuálnej pamäte operačného systému, ktorá umožňuje serveru prekladať mnoho požiadaviek súčasne bez straty GPU pamäte na vopred alokovaných KV-cache blokoch. Praktickým efektom je zlepšenie priepustnosti 10–30x oproti naivnej jednopožiadavkovej slučke.
Ďalšie pozoruhodné možnosti zahŕňajú llama.cpp (CPU-priateľský, výborný pre menšie modely na komoditnom hardvéri), Ollama (vývojársky priateľský obal okolo llama.cpp), TGI od Hugging Face (silná podpora pre formáty modelu Hugging Face) a TensorRT-LLM od NVIDIA (najvyššia priepustnosť na hardvéri NVIDIA, za cenu zložitejšieho pipeline kompilácie). Privonis hodnotí a benchmarkuje všetky tieto možnosti pre každú konfiguráciu zákazníka.
Dávkovanie a priepustnosť
GPU dosahujú maximálnu efektívnosť pri súčasnom spracúvaní mnohých operácií — na to boli navrhnuté. Kontinuálne dávkovanie (tiež nazývané dynamické dávkovanie alebo plánovanie na úrovni iterácie) umožňuje inferenčnému serveru zoskupovať tokeny z viacerých súbežných požiadaviek do jedného volania GPU kernelu, čím sa dramaticky zlepšuje využitie. Bez dávkovania môže jedna používateľská požiadavka využívať 5 % kapacity GPU; s kontinuálnym dávkovaním môžete pri reálnych vzoroch prevádzky tlačiť využitie na 70–80 %. Pre podnik s desiatkami súbežných používateľov môže rozdiel medzi serverom s dávkovaním a naivným serverom znamenať rozdiel medzi potrebou jedného alebo štyroch GPU serverov.
Výber správneho kvantovania pre vaše GPU
Rozhodovací strom je jednoduchší, ako vyzerá. Začnite od svojho rozpočtu GPU pamäte, odčítajte rezervu pre OS a inferenčný server (typicky 4–8 GB) a potom nájdite najväčší model, ktorý sa zmestí pri najvyššej úrovni presnosti. Niekoľko praktických referenčných bodov:
- 24 GB VRAM (napr. RTX 4090, A5000) — pohodlne spúšťa model s 13 miliardami pri FP16 alebo model s 34 miliardami pri INT4.
- 48 GB VRAM (napr. RTX 6000 Ada, A6000) — spúšťa model s 34 miliardami pri FP16 alebo model s 70 miliardami pri INT4.
- 2 × 80 GB (napr. dvojica A100 cez NVLink) — spúšťa model s 70 miliardami pri FP16 alebo model so 140 miliardami pri INT4 s tensor paralelizmom.
- Len CPU (bez GPU) — llama.cpp s modelom Q4_K_M 7B alebo 13B je realizovateľný pre vývojové nástroje s nízkou súbežnosťou; očakávajte 5–15 tokenov/s.
Dávanie toho dokopy s Privonis
Výber formátu kvantovania a inferenčného servera je inžinierska práca, ktorá vyžaduje profilovanie na vašom konkrétnom hardvéri s vašou konkrétnou záťažou. Privonis zvláda tento benchmarking ako súčasť každého nasadenia: spúšťame testy priepustnosti, meriame kvalitu výstupu na reprezentatívnej vzorke vašich skutočných promptov a dodávame konfiguráciu, ktorá maximalizuje výkon v rámci vášho hardvérového rozpočtu. Výsledkom je produkčný inferenčný zásobník, ktorý váš tím môže prevádzkovať bez špecialistu ML inžiniera na zavolanie. Ak ste pripravení preskúmať, čo vyhovuje vášmu prostrediu, náš tím je rád, že s vami prerobí čísla.
Porozprávajme sa o vašom AI projekte
Rezervovať hovor