Robocikowo>ROBOCIKOWO
Wnioskowanie

INT4

2022AktywnyOpublikowano: 29 września 2026Aktualizacja: 29 września 2026Opublikowany
Kwantyzacja 4-bitowa całkowitoliczbowa: każda waga koduje się na 4 bitach (16 poziomów) z parametrami skali i punktu zerowego per grupa, drastycznie redukując pamięć kosztem kontrolowanej utraty dokładności.
Kluczowa innowacja
Reprezentacja wag modelu w 4-bitowych liczbach całkowitych (16 poziomów), co zmniejsza rozmiar wag ~8x względem FP32 i ~4x względem FP16, umożliwiając uruchamianie dużych modeli LLM na pojedynczym GPU lub CPU.
Kategoria
Wnioskowanie
Poziom abstrakcji
Wzorzec
Poziom operacji
ModelElement architekturyPo-treningInferencja
Zastosowania
Uruchamianie dużych modeli LLM na pojedynczym konsumenckim GPUInferencja LLM na CPU i laptopach (np. przez llama.cpp)Redukcja kosztu i zużycia VRAM w serwowaniu modeliWdrażanie modeli na urządzeniach brzegowych o ograniczonej pamięciZwiększenie przepustowości inferencji ograniczonej przepustowością pamięci

Jak działa

INT4 mapuje ciągłe wartości wag na 16 dyskretnych poziomów całkowitych. Dla każdej grupy wag (np. 32, 64 lub 128 elementów) wyznacza się skalę (scale) oraz opcjonalnie punkt zerowy (zero-point), tak aby zakres grupy zmieścił się w [0,15] (asymetryczna) lub [-8,7] (symetryczna). Podczas inferencji wagi dekwantyzuje się w locie do FP16/FP32 tuż przed mnożeniem macierzy albo używa się dedykowanych kerneli, które mnożą bezpośrednio na spakowanych wartościach. Kwantyzacja grupowa (group-wise) ogranicza błąd, bo każda grupa ma własną skalę dopasowaną do lokalnego rozkładu wag. Metody takie jak GPTQ i AWQ dobierają kwantyzację minimalizując błąd wyjścia warstwy, a nie tylko błąd samych wag.

Rozwiązany problem

Wagi dużych modeli językowych w FP16 zajmują dziesiątki lub setki gigabajtów, przekraczając pamięć pojedynczych akceleratorów i limitując przepustowość inferencji, która jest ograniczona przepustowością pamięci. INT4 rozwiązuje to, kompresując wagi do 4 bitów, dzięki czemu model mieści się w mniejszej pamięci i mniej danych trzeba czytać z pamięci na każdy token.

Kluczowe mechanizmy

Mapowanie wag na 16 poziomów całkowitych (0-15 lub -8..7)
Kwantyzacja grupowa ze skalą per grupa
Punkt zerowy (zero-point) w wariancie asymetrycznym
Dekwantyzacja w locie do FP16 lub kernele operujące na spakowanych wagach
Warianty formatu: NF4, K-quants, I-quants

Mocne strony i ograniczenia

Mocne strony
✓Redukcja rozmiaru wag ~8x względem FP32 i ~4x względem FP16
✓Umożliwia inferencję dużych LLM na pojedynczym GPU lub CPU
✓Zwiększa przepustowość inferencji ograniczonej pamięcią (mniej bajtów na token)
✓Bogaty ekosystem metod (GPTQ, AWQ, NF4) i kerneli (Marlin, ExLlama)
✓Niższe koszty serwowania i wdrożeń brzegowych
Ograniczenia
✗Naiwna kwantyzacja 4-bit mocno obniża jakość bez metod zaawansowanych
✗Wartości odstające (outliers) w aktywacjach psują dokładność
✗Narzut skal i punktów zerowych podnosi efektywną liczbę bitów powyżej 4
✗Wymaga dedykowanych kerneli, by uzyskać faktyczne przyspieszenie
✗Gorsza dokładność niż INT8/FP16, zwłaszcza dla małych modeli

Komponenty

4-bitowy całkowity poziomSkompresowana reprezentacja wagi

Każda waga koduje się jako jedna z 16 wartości całkowitych (0-15 lub -8..7), zajmując 4 bity zamiast 16 lub 32.

Skala (scale) per grupaDekwantyzacja wartości do rzeczywistej skali

Współczynnik zmiennoprzecinkowy odwzorowujący zakres całkowity na rzeczywisty zakres wag danej grupy; przechowywany zwykle w FP16.

Punkt zerowy (zero-point)Korekta przesunięcia rozkładu wag

Przesunięcie całkowite w kwantyzacji asymetrycznej, pozwalające odwzorować rozkłady wag nieskupione wokół zera; w kwantyzacji symetrycznej pomijany.

Implementacja

Pułapki implementacyjne
Wartości odstające (outliers) w aktywacjachWysoka

Duże wartości odstające w aktywacjach lub wagach powodują, że naiwna kwantyzacja 4-bit gwałtownie traci dokładność, zwłaszcza w większych modelach.

Rozwiązanie:Używaj metod świadomych aktywacji (AWQ), kwantyzacji grupowej z małą grupą i mieszanej precyzji dla kanałów odstających.
Zbyt duży rozmiar grupyŚrednia

Duża grupa (np. per-tensor) obniża narzut pamięci na skalę, ale zwiększa błąd kwantyzacji; zbyt mała grupa zwiększa narzut i może spowolnić kernele.

Rozwiązanie:Dobierz rozmiar grupy (typowo 32-128) balansując dokładność, pamięć i wydajność kerneli.

Ewolucja

Oryginalny paper · 2022 · ICLR 2023 · Elias Frantar
GPTQ: Accurate Post-Training Quantization for Generative Pre-trained Transformers
Elias Frantar, Saleh Ashkboos, Torsten Hoefler, Dan Alistarh
2022
GPTQ pokazuje dokładną kwantyzację LLM do 4 i 3 bitów
Punkt przełomowy

GPTQ dowodzi, że modele rzędu 100B+ można skwantyzować do INT4 z minimalną utratą jakości metodą post-training.

2023
AWQ i QLoRA upowszechniaja INT4 (NF4)
Punkt przełomowy

AWQ (kwantyzacja świadoma aktywacji) oraz QLoRA (fine-tuning na wagach 4-bit NF4) czynią INT4 domyślnym formatem lokalnej inferencji i taniego dostrajania.

2023
llama.cpp popularyzuje kwantyzację Q4 na CPU

Formaty Q4 (K-quants) w llama.cpp umożliwiają uruchamianie modeli LLaMA na laptopach i CPU, upowszechniając 4-bitową inferencję.

Hiperparametry (konfigurowalne osie)

Rozmiar grupyWysoka

Liczba wag dzielących jedną skalę; mniejsza grupa poprawia dokładność kosztem narzutu.

128Typowy balans dokładność/narzut.
32Wyższa dokładność, więcej metadanych.
Symetria kwantyzacjiŚrednia

Symetryczna (bez zero-point) lub asymetryczna (z zero-point) mapa wartości.

asymmetricLepsza dla rozkładów nieskupionych wokół zera.
symmetricProstsza, mniejszy narzut.
Metoda kwantyzacjiKrytyczna

Algorytm doboru wartości skwantyzowanych.

GPTQOparty na Hesjanie, minimalizuje błąd wyjścia.
AWQŚwiadomy aktywacji, chroni istotne kanały.
NF4Format normal-float z QLoRA.

Złożoność obliczeniowa

Charakterystyki obliczeniowe
→~4,3-4,5 bita na wagę efektywnie (4 bity + metadane)
→16 dyskretnych poziomów reprezentacji na wartość
→Rozmiar grupy typowo 32-128 elementów
→Redukcja ruchu pamięci na token ~4x względem FP16
→Wymaga kerneli INT4 (Marlin, ExLlama, llama.cpp) dla przyspieszenia

Złożoność czasowa: O(1) na wagę przy dekwantyzacji + koszt mnożenia macierzy. Złożoność przestrzenna: 0,5 bajta / waga (+ narzut skal/zero-point).

Uwagi do benchmarku

Metody takie jak GPTQ i AWQ pozwalają skwantyzować modele 7-70B do 4 bitów z niewielkim wzrostem perplexity (często poniżej 0,1-0,5 na WikiText-2 dla większych modeli) względem FP16. Praktyczny zysk to ~4-krotna redukcja pamięci wag; np. model 70B w FP16 (~140 GB) mieści się w INT4 w ~35-40 GB, co umożliwia uruchomienie na pojedynczej karcie 48 GB.

Wąskie gardło obliczeniowe

Odczyt pamięci i dekwantyzacja

W inferencji INT4 wąskim gardłem jest odczyt spakowanych wag z pamięci oraz ich dekwantyzacja; właśnie redukcja bajtów na token daje przyspieszenie.

Zależy od
Rozmiar grupy i narzut skalJakość kerneli INT4

Paradygmat wykonania

Tryb główny
Gęsty

Wszystkie warstwy działają gęsto; zmienia się jedynie reprezentacja wag.

Wzorzec aktywacji
Wszystkie ścieżki aktywne
Mechanizm routingu

INT4 to schemat kompresji wag; nie wprowadza routingu ani warunkowej aktywacji.

Równoległość

Poziom równoległości
W pełni równoległy

Dekwantyzacja i mnożenia macierzy są w pełni równoległe; grupy kwantyzowane są niezależnie.

Zakres
InferencjaPomiędzy tokenami

Wymagania sprzętowe

Podstawowe

Dedykowane kernele (np. Marlin, ExLlama, bitsandbytes) wykonują mnożenie z wagami INT4 i aktywacjami FP16, wykorzystując przepustowość pamięci GPU.

Dobry fit

llama.cpp implementuje wydajne kernele INT4 (Q4) na CPU z instrukcjami SIMD (AVX2/AVX-512, NEON), umożliwiając inferencję LLM bez GPU.