GPTQ
Jak działa
GPTQ kwantyzuje każdą warstwę liniową niezależnie, minimalizując błąd rekonstrukcji jej wyjścia na zbiorze kalibracyjnym. Dla danej warstwy oblicza się macierz Hesjanu H = 2 X X^T z aktywacji wejściowych. Wagi kwantyzuje się kolumnami: po skwantyzowaniu kolejnej kolumny pozostałe, jeszcze nieskwantyzowane wagi aktualizuje się (kompensacja błędu) zgodnie z regułą wywodzącą się z Optimal Brain Surgeon, korzystając z odwrotności Hesjanu. GPTQ przetwarza kolumny w ustalonej kolejności i stosuje aktualizacje blokowe oraz stabilizację numeryczną (Cholesky), co pozwala skwantyzować modele z miliardami parametrów w kilka godzin na jednym GPU. Wynik zapisuje się jako wagi 4- lub 3-bitowe ze skalą per grupa.
Rozwiązany problem
Kwantyzacja wag do 4 lub 3 bitów metodą zaokrąglania (round-to-nearest) mocno psuje jakość bardzo dużych modeli, a metody wymagające ponownego treningu są zbyt kosztowne dla modeli rzędu setek miliardów parametrów. GPTQ rozwiązuje to jako szybka, jednorazowa procedura, która korzysta z informacji o krzywiźnie funkcji straty (Hesjan wejść warstwy), by kwantyzować wagi z minimalnym wzrostem błędu wyjścia.
Kluczowe mechanizmy
Mocne strony i ograniczenia
Komponenty
Macierz H = 2 X X^T z aktywacji wejściowych warstwy, opisująca wrażliwość wyjścia na perturbacje poszczególnych wag.
Kwantyzacja wag kolumna po kolumnie, po której pozostałe wagi są korygowane wg reguły OBS, aby zredukować skumulowany błąd.
Rozkład Cholesky odwrotności Hesjanu i aktualizacje blokowe zapewniające stabilność i wydajność przy dużych warstwach.
Implementacja
Odwracanie macierzy Hesjanu bywa niestabilne, gdy jest źle uwarunkowana, co psuje kompensację błędu.
Minimalizacja błędu rekonstrukcji na małym, niereprezentatywnym zbiorze kalibracyjnym może pogorszyć generalizację modelu.
Ewolucja
GPTQ rozwija metodę Optimal Brain Quantization do skali LLM, umożliwiając dokładny 4- i 3-bit dla modeli 100B+.
AutoGPTQ i integracja z Hugging Face / Transformers czynią GPTQ jednym z najpopularniejszych formatów skwantyzowanych LLM.
Hiperparametry (konfigurowalne osie)
Docelowa precyzja wag (3 lub 4 bity).
Liczba wag dzielących skalę.
Kwantyzacja kolumn w kolejności wg ważności aktywacji, poprawiająca dokładność.
Wartość dodawana do przekątnej Hesjanu dla stabilności numerycznej.
Złożoność obliczeniowa
Złożoność czasowa: O(d^3) na warstwę (odwracanie Hesjanu) + O(N_kalib x d^2). Złożoność przestrzenna: O(d^2) przejściowo na Hesjan + ~4,x bita / waga wynikowo.
W pracy źródłowej (ICLR 2023) GPTQ skwantyzował modele OPT-175B i BLOOM-176B do 3-4 bitów w około 4 godziny na jednym GPU A100, z niewielkim wzrostem perplexity względem FP16. Dla większych modeli utrata jakości przy 4-bit jest zwykle marginalna, a przy 3-bit zauważalna, lecz akceptowalna w wielu zastosowaniach.
Wąskie gardło obliczeniowe
Podczas kwantyzacji wąskim gardłem jest obliczenie i odwrócenie Hesjanu oraz sekwencyjna kompensacja błędu; w inferencji, jak w INT4, dominuje odczyt pamięci.
Paradygmat wykonania
Wszystkie ścieżki obliczeń pozostają aktywne; kwantyzowana jest reprezentacja wag.
GPTQ nie wprowadza routingu; to metoda kwantyzacji wag dla gęstych obliczeń.
Równoległość
Kwantyzacja kolumn jest z natury sekwencyjna (kompensacja błędu zależy od poprzednich kolumn); warstwy można przetwarzać niezależnie, inferencja jest w pełni równoległa.
Wymagania sprzętowe
Modele GPTQ działają z kernelami INT4 (ExLlama, Marlin, w vLLM / TGI / TensorRT-LLM) na GPU NVIDIA, łącząc małą pamięć z wysoką przepustowością.
Wagi GPTQ można konwertować do formatów uruchamialnych na CPU, choć metoda i kernele celują głównie w GPU.