Kvantisointi ja nopea päättely omalla laitteistollasi
Miten mahduttaa suurempia malleja pienempiin GPU:ihin ja palvella niitä nopeasti.
Ensimmäinen reaktio monilla insinöörillä, kun he katsovat huippuluokan suuren kielimallin laitteistovaatimuksia, on hintashokki. 70 miljardin parametrin malli alkuperäisessä FP32-muodossaan tarvitsisi noin 280 GB GPU-muistia — enemmän kuin useimmilla organisaatioilla on yhdessä palvelimessa, ja paljon enemmän kuin he haluavat tarjota vain vastatakseen työntekijäkyselyihin. Kvantisointi on tekniikka, joka tekee nämä luvut käsiteltäviksi, ja sen ymmärtäminen on välttämätöntä kenelle tahansa, joka suunnittelee on-premise-tekoälypinon.
Mitä kvantisointi todella tekee
Hermostoverkko on pohjimmiltaan erittäin suuri kokoelma lukuja — koulutuksen aikana opittuja painoja. Oletuksena nämä painot tallennetaan 32-bittisinä liukulukuarvoina (FP32), joista jokainen kuluttaa 4 tavua muistia. Kvantisointi korvaa korkeatarkkuiset luvut matalamman tarkkuuden esityksillä: 16-bittiset liukuluvut (FP16 tai BF16), 8-bittiset kokonaisluvut (INT8) tai jopa 4-bittiset kokonaisluvut (INT4). Muistijalanjälki pienenee suhteessa, ja laitteistolla, jolla on natiivituki matalamman tarkkuuden aritmetiikalle, myös päättely nopeutuu.
- FP16 / BF16 — puolitarkkuiset liukuluvut. Käytännöllisesti katsottuna häviöttömiä useimmissa tehtävissä; oletusvalinta tuotantokäyttöönotoille, joissa tarkkuus on kriittistä. Muistisäästöt: 2x verrattuna FP32:een.
- INT8 — 8-bittiset kokonaisluvut, tyypillisesti tuotettu koulutuksen jälkeisillä kvantisointimenetelmillä kuten GPTQ tai llm.int8(). Kohtalainen laadun heikkeneminen monimutkaisessa päättelyssä; merkittävä useimmissa käytännön tehtävissä. Muistisäästöt: 4x verrattuna FP32:een.
- INT4 — 4-bittiset kokonaisluvut, aggressiivisen kvantisoinnin raja. Työkalut kuten GGUF Q4_K_M ja AWQ tarjoavat yllättävän hyvän laadun koolleen. Muistisäästöt: 8x verrattuna FP32:een, hyväksyttävällä heikkenemisellä chat- ja tiivistämistyökuormille.
Laatu vastaan koko -kompromissi
Kvantisointi ei ole ilmaista. Jokainen poistamasi bitti on hylättyä tietoa, ja jossain vaiheessa se näkyy heikentyneinä tuotoksina — hallusinaatioina, päättelyvirheinä tai vivahteen menettämisenä. Käytännöllinen havainto Privonisin käyttöönotoista on, että kompromissi on yllättävän suotuisa useimmissa yrityksen tehtävissä. INT4:ksi kvantisoitu 70 miljardin malli päihittää tyypillisesti 13 miljardin mallin FP16:ssa, vaikka molemmat mahtuvat samanlaiseen GPU-muistiin. Epävarmoissa tapauksissa käytä suurinta mallia, joka mahtuu korkeimmalla tarkkuudella, jonka laitteistosi tukee.
Oikean kvantisoinnin valitseminen ei koske niinkään bittimäärää kuin mallikapasiteetin sovittamista tehtävään: hyvin valittu INT4 70 miljardia päihittää huolimattoman FP16 13 miljardin aina.
Päättelypalvelimet: mistä suorituskyky tulee
Kvantisoitu malli on vain puoli tarinaa. Sen tehokkaaseen palvelemiseen samanaikaisessa kuormassa tarvitaan päättelypalvelin, joka ymmärtää transformer-huomion rakenteen. Nykyään hallitseva avoimen lähdekoodin vaihtoehto on vLLM, joka esitteli PagedAttention-muistinhallintatekniiikan, joka on lainattu käyttöjärjestelmävirtualimuistista ja joka antaa palvelimen lomittaa monia pyyntöjä samanaikaisesti tuhlaamatta GPU-muistia esivaraoituihin KV-välimuistiblokkeihin. Käytännöllinen vaikutus on 10–30-kertainen suorituskyvyn parannus naiiviin yksipyyntösilmukkaan verrattuna.
Muita huomattavia vaihtoehtoja ovat llama.cpp (CPU-ystävällinen, erinomainen pienemmille malleille tavallisella laitteistolla), Ollama (kehittäjäystävällinen kääre llama.cpp:n ympärille), Hugging Facen TGI (vahva tuki Hugging Face -malliformaateille) ja NVIDIAn TensorRT-LLM (korkein suorituskyky NVIDIA-laitteistolla monimutkaisemman kääntämisputkiston kustannuksella). Privonis arvioi ja vertaa kaikki nämä jokaiselle asiakaskonfiguraatiolle.
Eräkoko ja suorituskyky
GPU:t saavuttavat huipputehokkuuden käsitellessään monia operaatioita samanaikaisesti — siihen ne on suunniteltu. Jatkuva eräkoko (kutsutaan myös dynaamiseksi eräkooksi tai iteraatiotason ajoitukseksi) antaa päättelypalvelimen ryhmitellä tokeneita monista samanaikaisista pyynnöistä yhdeksi GPU-ydinkutsuksi, parantaen hyödyntämistä dramaattisesti. Ilman eräkokoa yksittäinen käyttäjäkysely voi käyttää 5 % GPU-kapasiteetistasi; jatkuvalla eräkoolla voit työntää käyttöasteen 70–80 %:iin todellisen liikenteen mallien alla. Yritykselle, jolla on kymmeniä samanaikaisia käyttäjiä, ero eräkokotyökalua käyttävän palvelimen ja naivin välillä voi tarkoittaa eroa yhden GPU-palvelimen tai neljän tarvitsemisen välillä.
Oikean kvantisoinnin valitseminen GPU:llesi
Päätöspuu on yksinkertaisempi kuin miltä näyttää. Aloita GPU-muistibudjetistasi, vähennä varaa käyttöjärjestelmälle ja päättelypalvelimelle (tyypillisesti 4–8 GB), sitten etsi suurin malli, joka mahtuu korkeimmalla tarkkuustasolla. Muutamia käytännöllisiä viitekohtia:
- 24 GB VRAM (esim. RTX 4090, A5000) — ajaa mukavasti 13 miljardin mallin FP16:ssa tai 34 miljardin mallin INT4:ssä.
- 48 GB VRAM (esim. RTX 6000 Ada, A6000) — ajaa 34 miljardin mallin FP16:ssa tai 70 miljardin mallin INT4:ssä.
- 2 × 80 GB (esim. A100-pari NVLinkin kautta) — ajaa 70 miljardin mallin FP16:ssa tai 140 miljardin mallin INT4:ssä tensoriparalleelisuudella.
- Vain CPU (ei GPU) — llama.cpp Q4_K_M 7 miljardin tai 13 miljardin mallilla on toimiva matalan samanaikaisuuden kehitystyökaluihin; odota 5–15 tokenia/s.
Yhdistäminen Privonisin kanssa
Kvantisointimuodon ja päättelypalvelimen valitseminen on insinöörityötä, joka vaatii profilointia tietyllä laitteistollasi tietyllä työkuormallasi. Privonis hoitaa kyseisen vertailun osana jokaista käyttöönottoa: ajamme suorituskykytestit, mittaamme tuotoksen laadun edustavassa näytteessä todellisista kehotteistasi ja toimittamme konfiguraation, joka maksimoi suorituskyvyn laitteistobudjetissasi. Tulos on tuotantopäättelypino, jota tiimisi pystyy operoimaan ilman erikoistuneita ML-insinöörejä. Jos olet valmis tutkimaan, mikä sopii ympäristöösi, tiimimme on iloinen auttamaan sinua lukujen laskemisessa.
Puhutaan tekoälyprojektistasi
Varaa puhelu