Kvantizace a rychlá inference na vlastním hardwaru
Jak umístit větší modely na menší GPU a rychle je obsluhovat.
První reakcí mnoha inženýrů při pohledu na hardwarové požadavky špičkového velkého jazykového modelu je šok. Model se 70 miliardami parametrů ve svém nativním formátu FP32 by potřeboval přibližně 280 GB paměti GPU — více, než má většina organizací v jednom serveru, a daleko více, než chtějí zřizovat jen proto, aby odpovídaly na dotazy zaměstnanců. Kvantizace je technika, která tato čísla přivádí na zvládnutelnou úroveň, a její pochopení je nezbytné pro každého, kdo navrhuje on-premise AI zásobník.
Co kvantizace skutečně dělá
Neuronová síť je v podstatě velmi velká kolekce čísel — váhy naučené během trénování. Ve výchozím nastavení jsou tyto váhy uloženy jako 32-bitové hodnoty s plovoucí desetinnou čárkou (FP32), každá spotřebovávající 4 bajty paměti. Kvantizace nahrazuje vysoce přesná čísla reprezentacemi s nižší přesností: 16-bitové floaty (FP16 nebo BF16), 8-bitová celá čísla (INT8) nebo dokonce 4-bitová celá čísla (INT4). Paměťová stopa se snižuje proporcionálně a na hardwaru s nativní podporou aritmetiky s nižší přesností se inference také zrychluje.
- FP16 / BF16 — half-precision floaty. Prakticky bezeztrátové pro většinu úkolů; oblíbená volba pro produkční nasazení, kde je přesnost kritická. Úspora paměti: 2x oproti FP32.
- INT8 — 8-bitová celá čísla, typicky produkovaná metodami post-tréninkové kvantizace (PTQ) jako GPTQ nebo llm.int8(). Mírná degradace kvality u složitého uvažování; významná u většiny praktických úkolů. Úspora paměti: 4x oproti FP32.
- INT4 — 4-bitová celá čísla, hranice agresivní kvantizace. Nástroje jako GGUF Q4_K_M a AWQ dodávají překvapivě dobrou kvalitu pro svou velikost. Úspora paměti: 8x oproti FP32, s přijatelnou degradací pro chatovací a sumarizační pracovní zátěže.
Kompromis kvality vs. velikosti
Kvantizace není zdarma. Každý bit, který odeberete, je zahozená informace, a v určitém bodě se to projeví jako degradovaný výstup — halucinace, chyby v uvažování nebo ztráta nuancí. Praktické zjištění z nasazení Privonis je, že kompromis je překvapivě příznivý pro většinu podnikových úkolů. Model 70 mld. kvantizovaný na INT4 typicky překonává model 13 mld. při FP16, přestože oba se vejdou do podobné paměti GPU. V případě pochybností použijte největší model, který se vejde při nejvyšší přesnosti, jakou váš hardware podporuje.
Výběr správné kvantizace je méně o počtu bitů a více o přizpůsobení kapacity modelu k úkolu: dobře zvolený INT4 70 mld. porazí neopatrný FP16 13 mld. pokaždé.
Inferenční servery: odkud pochází výkonnost
Spuštění kvantizovaného modelu je jen polovina příběhu. Jeho efektivní obsluhování pod souběžnou zátěží vyžaduje inferenční server, který rozumí struktuře transformer attention. Dominantní open-source možností dnes je vLLM, který zavedl PagedAttention — techniku správy paměti vypůjčenou z virtuální paměti operačního systému, která umožňuje serveru prokládat mnoho požadavků současně bez plýtvání pamětí GPU na předem alokované bloky KV-cache. Praktickým efektem je 10–30násobné zlepšení propustnosti oproti naivní jednocyklové smyčce.
Další pozoruhodné možnosti zahrnují llama.cpp (přátelský k CPU, výborný pro menší modely na komoditním hardwaru), Ollama (vývojářsky přátelský obal kolem llama.cpp), TGI od Hugging Face (silná podpora pro formáty modelů Hugging Face) a TensorRT-LLM od NVIDIA (nejvyšší propustnost na hardwaru NVIDIA, za cenu složitějšího kompilačního pipeline). Privonis hodnotí a benchmarkuje všechny tyto možnosti pro každou konfiguraci zákazníka.
Dávkování a propustnost
GPU dosahují maximální efektivity při souběžném zpracování mnoha operací — to je to, pro co byly navrženy. Kontinuální dávkování (také nazývané dynamické dávkování nebo plánování na úrovni iterací) umožňuje inferenčnímu serveru seskupovat tokeny z více souběžných požadavků do jednoho volání GPU kernelu, čímž dramaticky zlepšuje využití. Bez dávkování může jeden uživatelský dotaz využít 5 % kapacity GPU; s kontinuálním dávkováním lze tlačit využití na 70–80 % při reálných vzorcích provozu. Pro podnik s desítkami souběžných uživatelů může rozdíl mezi serverem vědomým dávkování a naivním znamenat potřebu jednoho GPU serveru nebo čtyř.
Výběr správné kvantizace pro vaše GPU
Rozhodovací strom je jednodušší, než vypadá. Začněte svým rozpočtem paměti GPU, odečtěte prostor pro OS a inferenční server (typicky 4–8 GB), pak najděte největší model, který se vejde při nejvyšší úrovni přesnosti. Několik praktických referenčních bodů:
- 24 GB VRAM (např. RTX 4090, A5000) — pohodlně spouští model 13 mld. při FP16 nebo model 34 mld. při INT4.
- 48 GB VRAM (např. RTX 6000 Ada, A6000) — spouští model 34 mld. při FP16 nebo model 70 mld. při INT4.
- 2 × 80 GB (např. pár A100 přes NVLink) — spouští model 70 mld. při FP16 nebo model 140 mld. při INT4 s tensor-paralelismem.
- Pouze CPU (bez GPU) — llama.cpp s Q4_K_M modelem 7 mld. nebo 13 mld. je životaschopný pro nízko-souběžné vývojářské nástroje; očekávejte 5–15 tokenů/s.
Skládání dohromady s Privonis
Výběr kvantizačního formátu a inferenčního serveru je inženýrská práce, která vyžaduje profilování na vašem konkrétním hardwaru s vaší konkrétní pracovní zátěží. Privonis zvládá toto benchmarkování jako součást každého nasazení: spouštíme testy propustnosti, měříme kvalitu výstupu na reprezentativním vzorku vašich skutečných promptů a doručujeme konfiguraci, která maximalizuje výkon v rámci vašeho hardwarového rozpočtu. Výsledkem je produkční inferenční zásobník, který váš tým dokáže provozovat bez specialisty ML inženýra v pohotovosti. Pokud jste připraveni prozkoumávat, co se hodí pro vaše prostředí, náš tým rád spočítá čísla s vámi.
Promluvme si o vašem AI projektu
Rezervovat hovor