Kvantavimas ir greitos išvados savo aparatinėje įrangoje
Kaip sutalpinti didesnius modelius mažesniuose GPU ir greitai juos serveriuoti.
Pirmoji daugelio inžinierių reakcija, kai jie žiūri į pažangaus didelio kalbos modelio aparatinės įrangos reikalavimus, yra kainų šokas. 70 milijardų parametrų modelis savo natūraliuoju FP32 formatu reikėtų apie 280 GB GPU atminties – daugiau nei dauguma organizacijų turi viename serveryje ir daug daugiau nei nori tiekti tik darbuotojų užklausoms atsakyti. Kvantavimas yra technika, kuri daro šiuos skaičius valdymus, ir jo supratimas yra būtinas visiems, projektuojantiems vietinį AI steką.
Ką iš tikrųjų daro kvantavimas
Neuroninis tinklas iš esmės yra labai didelis skaičių rinkinys – svoriai, išmokti mokymo metu. Pagal numatytuosius nustatymus šie svoriai saugomi kaip 32 bitų slankiojo kablelio reikšmės (FP32), kiekvieną sunaudojant 4 baitus atminties. Kvantavimas pakeičia didelio tikslumo skaičius mažesnio tikslumo atvaizdais: 16 bitų slankiojo kablelio (FP16 arba BF16), 8 bitų sveikaisiais skaičiais (INT8) arba net 4 bitų sveikaisiais skaičiais (INT4). Atminties pėdsakas proporcingai mažėja, o aparatinėje įrangoje su natūviu mažesnio tikslumo aritmetikos palaikymu išvados taip pat greitėja.
- FP16 / BF16 – pusės tikslumo slankiojo kablelio. Praktiškai be nuostolių daugumai užduočių; numatytasis pasirinkimas gamybos diegimams, kur tikslumas yra kritiškas. Atminties sutaupymai: 2x palyginus su FP32.
- INT8 – 8 bitų sveikieji skaičiai, paprastai gaminami po mokymo kvantavimo (PTQ) metodais kaip GPTQ arba llm.int8(). Nedidelis kokybės pablogėjimas sudėtingam samprotavimui; reikšmingas daugumai praktinių užduočių. Atminties sutaupymai: 4x palyginus su FP32.
- INT4 – 4 bitų sveikieji skaičiai, agresyvaus kvantavimo riba. Priemonės kaip GGUF Q4_K_M ir AWQ teikia stebėtinai gerą kokybę dėl savo dydžio. Atminties sutaupymai: 8x palyginus su FP32, su priimtinu degradavimu pokalbių ir apibendrinimo darbo krūviams.
Kokybės ir dydžio kompromisas
Kvantavimas nėra nemokamas. Kiekvieną bitą, kurį pašalinote, yra atmesta informacija, ir tam tikru metu tai pasirodo kaip degraduota išvestis – haliucinacijos, samprotavimo klaidos ar niuanso praradimas. Praktinė išvada iš Privonis diegimų yra ta, kad kompromisas yra stebėtinai palankus daugumai įmonių užduočių. 70B modelis, kvantuotas iki INT4, paprastai lenkia 13B modelį FP16, net jei abu tilpsta panašioje GPU atmintyje. Jei abejojate, naudokite didžiausią modelį, kuris tilpsta aukščiausiu tikslumu, kurį palaiko jūsų aparatinė įranga.
Tinkamo kvantavimo pasirinkimas yra mažiau apie bitų skaičių ir daugiau apie modelio pajėgumo suderinimą su užduotimi: gerai parinktas INT4 70B visada lenkia aplaidžiai parengtą FP16 13B.
Išvadų serveriai: iš kur atsiranda pralaidumas
Kvantuoto modelio vykdymas yra tik pusė istorijos. Efektyvus jo serveriavimas esant vienalaikiai apkrovai reikalauja išvadų serverio, suprantančio transformatoriaus dėmesio struktūrą. Šiandieninis dominuojantis atvirojo kodo variantas yra vLLM, kuris įvedė PagedAttention – atminties valdymo techniką, pasiskolintą iš operacinės sistemos virtualiosios atminties, leidžiančią serveriui persipinti daugelis užklausų vienu metu neeikvotant GPU atminties iš anksto paskirtoms KV talpyklos blokams. Praktinis poveikis yra 10–30x pralaidumo pagerėjimas, palyginti su naiviu vienos užklausos ciklu.
Kiti svarbūs variantai apima llama.cpp (draugiškas CPU, puikus mažesniems modeliams komunalinėje aparatinėje įrangoje), Ollama (kūrėjams draugiškas apvalkalas aplink llama.cpp), TGI iš Hugging Face (stiprus palaikymas Hugging Face modelių formatams) ir TensorRT-LLM iš NVIDIA (didžiausias pralaidumas NVIDIA aparatinėje įrangoje, sudėtingesnio kompiliavimo konvejerio kaina). Privonis vertina ir lyginamai testuoja visus šiuos kiekvienos kliento konfigūracijai.
Paketavimas ir pralaidumas
GPU pasiekia didžiausią efektyvumą, kai apdoroja daug operacijų vienu metu – tai ir buvo sukurti. Nuolatinis paketavimas (taip pat vadinamas dinaminiu paklausimu arba iteracijos lygio planavimu) leidžia išvadų serveriui grupuoti žetonus iš kelių vienalaikių užklausų į vieną GPU branduolio kvietimą, dramatiškai gerinant naudojimą. Be paketavimo viena vartotojo užklausa gali naudoti 5 % jūsų GPU pajėgumo; su nuolatiniu paklausimu galite stumti naudojimą iki 70–80 % esant realaus pasaulio srauto šablonams. Įmonei su dešimtimis vienalaikių vartotojų skirtumas tarp paketavimą suprantančio serverio ir naivaus gali reikšti skirtumą tarp vieno GPU serverio ir keturių poreikio.
Tinkamo kvantavimo parinkimas savo GPU
Sprendimų medis yra paprastesnis nei atrodo. Pradėkite nuo savo GPU atminties biudžeto, atimkite atsargą OS ir išvadų serveriui (paprastai 4–8 GB), tada raskite didžiausią modelį, tilpstantį aukščiausiu tikslumo lygiu. Keletas praktinių atskaitos taškų:
- 24 GB VRAM (pvz., RTX 4090, A5000) – patogiai vykdo 13B modelį FP16 arba 34B modelį INT4.
- 48 GB VRAM (pvz., RTX 6000 Ada, A6000) – vykdo 34B modelį FP16 arba 70B modelį INT4.
- 2 × 80 GB (pvz., A100 pora per NVLink) – vykdo 70B modelį FP16 arba 140B modelį INT4 su tensoriaus lygiagretinimu.
- Tik CPU (be GPU) – llama.cpp su Q4_K_M 7B arba 13B modeliu yra praktiškas mažo vienalaikiškumo kūrėjų įrankiams; tikimasi 5–15 žetonų/s.
Viskas kartu su Privonis
Kvantavimo formato ir išvadų serverio pasirinkimas yra inžineriniai darbai, reikalaujantys profiliavimo jūsų specifinėje aparatinėje įrangoje su jūsų specifiniais darbo krūviais. Privonis tvarko tą lyginamąjį testavimą kaip kiekvieno diegimo dalį: paleidžiame pralaidumo testus, matuojame išvesties kokybę reprezentatyviame jūsų realių raginimų pavyzdyje ir pateikiame konfigūraciją, maksimaliai padidinančią veikimą jūsų aparatinės įrangos biudžeto ribose. Rezultatas yra gamybos išvadų steksas, kurį jūsų komanda gali valdyti be specialisto ML inžinieriaus budėjime. Jei esate pasirengę tyrinėti, kas tinka jūsų aplinkai, mūsų komanda džiaugiasi kartu apskaičiuoti skaičius.
Pakalbėkime apie jūsų AI projektą
Rezervuoti skambutį