Back to archive
#ai#papers#aigen#llm#inference

Błędy kwantyzacji częściowo znoszą się między warstwami modelu

Chcesz uruchomić model językowy na własnej karcie graficznej, ale jego wagi zajmują zbyt dużo pamięci. Jednym z rozwiązań jest kwantyzacja po treningu: liczby zapisane w gotowym modelu zastępujesz wartościami z mniejszego zestawu. Oszczędzasz miejsce kosztem dokładności zapisu.

Te liczby uczestniczą jednak w obliczeniach przy każdym kolejnym fragmencie odpowiedzi. Model przewiduje następny token, czyli jednostkę tekstu, korzystając z wcześniejszego tekstu i swoich wag. Po kwantyzacji ma do dyspozycji ich przybliżenia. Błąd może zmienić wybór tokena, a wtedy dalsza odpowiedź powstaje już z inną historią.

Można więc oczekiwać, że odchylenia będą narastały przy przejściu przez kolejne warstwy. Tymczasem skompresowany model często zachowuje użyteczną jakość. Sama informacja, że każde zaokrąglenie jest małe, nie wyjaśnia jeszcze, co dzieje się z jego skutkami kilkadziesiąt operacji później.

W środku modelu błędy mają kierunki. Odchylenie wytworzone przez bieżący blok może częściowo skasować odchylenie odziedziczone z wcześniejszych obliczeń. Tę zależność bada preprint „Why Does Post-Training Quantization Work?” z obszaru kompresji modeli i inferencji LLM, czyli ich uruchamiania po treningu. Autorzy sprawdzają również, co się dzieje po celowym usunięciu takiej kompensacji.

Blok przetwarza wejście już zmienione przez poprzednie warstwy

Transformer przechowuje pośredni wynik obliczeń jako wektor, czyli uporządkowaną listę liczb. Wektor opisuje przetworzony dotąd tekst i przechodzi przez kolejne bloki. Dzięki residual connection blok dodaje własny wynik do otrzymanego wejścia. Dalej przekazuje więc sumę: wejście plus obliczona aktualizacja.

Porównajmy dwa przebiegi dla tego samego tekstu: model z oryginalnymi wagami i jego wersję po kwantyzacji. Na wejściu wybranego bloku ich wektory już się różnią. Blok oblicza też dwie różne aktualizacje, ponieważ ma zarówno inne wagi, jak i inne wejście. Różnica aktualizacji obejmuje oba te wpływy; nie można utożsamiać jej wyłącznie z nowym błędem zaokrąglenia wag.

Po dodawaniu różnica wyjść jest sumą różnicy wejść i różnicy aktualizacji. To zwykła konsekwencja residual connection. Jeżeli dwie różnice mają częściowo przeciwne kierunki, ich suma może być mniejsza niż błąd odziedziczony z wejścia. Model podczas normalnej pracy nie oblicza tych różnic i nie porównuje się z dokładniejszą kopią. Takie porównanie wykonują badacze, uruchamiając obie wersje obok siebie.

Ten sam rozmiar błędu może dać inną sumę

Weźmy dydaktyczny przykład z wektorami zawierającymi po dwie liczby. To przygotowane liczby, a nie pomiar z pracy. Znak przy każdej współrzędnej mówi, w którą stronę dany wynik odbiega od wartości referencyjnej.

Etap jednego blokuOryginalne wagiPo kwantyzacjiRóżnica: po kwantyzacji minus oryginał
Wejście(10, 10)(13, 10)(3, 0)
Aktualizacja obliczona przez blok(0, 2)(-1, 3)(-1, 1)
Wyjście: wejście plus aktualizacja(10, 12)(12, 13)(2, 1)

W badaniu wejście to stan ukryty na granicy bloków, a aktualizacja to wynik dodawany przez residual connection. Obie kolumny odpowiadają przebiegom tego samego modelu przed kwantyzacją i po niej. Różnica wejść (3, 0) oraz różnica aktualizacji (-1, 1) sumują się do (2, 1). Pierwsza współrzędna zbliża się do wyniku referencyjnego, choć w drugiej pojawia się nowe odchylenie.

Rozmiar odchylenia policzymy jako sumę kwadratów współrzędnych. Przed blokiem wynosi ona 3² + 0² = 9, a po nim 2² + 1² = 5. Mniejsza wartość oznacza tutaj mniejszą różnicę między przebiegami. To miara błędu wewnętrznego, bez bezpośredniego przeliczenia na odsetek poprawnych odpowiedzi.

Teraz zmieńmy tylko kierunek różnicy aktualizacji. Zastąpmy (-1, 1) przez (0, √2), gdzie √2 oznacza pierwiastek z dwóch. Oba wektory mają tę samą sumę kwadratów równą 2, lecz nowy jest prostopadły do różnicy wejść. Po dodaniu otrzymujemy (3, √2), z sumą kwadratów 9 + 2 = 11. Usunęliśmy składową zmniejszającą pierwsze odchylenie, zachowując rozmiar dodawanej różnicy.

Ta ostatnia operacja odpowiada interwencji autorów: usuwają z różnicy aktualizacji składową równoległą do błędu wejściowego, po czym przywracają jej pierwotną długość. W rzeczywistym modelu wektory mają wiele współrzędnych, a interwencja obejmuje serię bloków. Na każdym kroku aktualizacja jest ponownie obliczana z już zmodyfikowanego wejścia. Nasz pojedynczy krok pomija te dalsze obliczenia oraz zmiany długości wektora referencyjnego.

Usunięcie kompensacji zwiększa błąd przy tych samych wagach

W głównym eksperymencie autorzy używają gotowego Qwen3-32B i zaokrąglają wybrane wagi do formatu czterobitowego. Nie dostrajają modelu ani nie dobierają zaokrągleń na danych kalibracyjnych. Zwykła kwantyzacja obniża średnią trafność w sześciu testach wyboru odpowiedzi o 0,43 punktu procentowego względem oryginalnych wag. Dokładne zadania i sposób oceny są opisane w dodatku poniżej.

Osobny eksperyment dotyczy przyczyny powolnego narastania błędów. Na fragmentach tekstu internetowego ze zbioru C4 autorzy stosują opisaną wyżej interwencję, zachowując ten sam wytrenowany model i te same skwantyzowane wagi. Końcowy względny błąd stanu ukrytego staje się 2,94 raza większy niż przy zwykłej kwantyzacji. „Względny” oznacza długość różnicy wektorów podzieloną przez długość wektora referencyjnego. W obu porównaniach punktem odniesienia dla błędu jest nieskwantyzowany model.

To interwencja diagnostyczna: badacze zmieniają wewnętrzne obliczenia, żeby sprawdzić rolę kierunku błędu. Wynik wspiera tezę, że częściowe znoszenie się różnic ogranicza ich późniejszy wzrost. Nie oznacza niemal trzykrotnej zmiany trafności odpowiedzi. Sama interwencja wymaga też dodatkowego przebiegu referencyjnego, więc nie jest proponowaną techniką taniej inferencji.

Autorzy obserwują narastanie tej kompensacji podczas treningu w analizie kolejnych zapisów wag. Nie ustalają jednak, która własność treningu ją wywołuje. Założenie, że każdy następny model automatycznie nauczy się równie dobrze znosić błędy, wykraczałoby poza wynik pracy.

Wektor na wyjściu i wybór tokena to dwa różne pomiary

Ostatni wektor trafia do LM head, warstwy obliczającej liczbową ocenę każdego tokena ze słownika. Każdy token ma własny wektor wag. Jego ocena powstaje przez pomnożenie odpowiadających sobie współrzędnych i zsumowanie wyników. Dlatego wpływ zmiany stanu ukrytego zależy również od tego, jak jest skierowana względem wag danego tokena.

W badanych modelach oceny wysoko sklasyfikowanych tokenów są stabilniejsze po kwantyzacji niż oceny tokenów z dalszych pozycji. Autorzy wyjaśniają tę obserwację geometrią wektorów i sprawdzają przybliżenia teoretyczne względem pomiarów. Wyprowadzenie zakłada jednak równomiernie losowy kierunek obrotu stanu ukrytego. Nie daje gwarancji dla dowolnego kierunku rzeczywistego błędu.

Nawet małe zmiany ocen mogą zamienić miejscami dwóch bliskich kandydatów. Stabilna średnia jakość i identyczny tekst odpowiedzi to osobne wymagania. W zastosowaniu, które oczekuje konkretnego wywołania narzędzia, znaczenie ma również to drugie.

Przed wdrożeniem trzeba sprawdzić całe generowane odpowiedzi

Najważniejsze ograniczenie badania wynika ze wspólnej historii tekstu. W analizach tokenowych obie wersje modelu dostają te same wcześniejsze tokeny. Eksperyment nie śledzi, jak pierwszy odmienny wybór zmieni długą, swobodnie generowaną odpowiedź. Podobnie analiza geometrii opisuje przeciętne zachowanie; nie wyklucza rzadkich dużych odchyleń.

Szczegóły eksperymentu

Źródło i checkpoint. Yuxiang Chen, Michael Beyer, Jun Zhu i Jianfei Chen, „Why Does Post-Training Quantization Work?”, arXiv:2609.11716v1, pierwsze zgłoszenie 10 września 2026 r. Praca jest preprintem. Główne porównanie wykorzystuje opublikowany, wytrenowany checkpoint Qwen3-32B, czyli model o 32 miliardach parametrów. Nie ma etapu treningu po kwantyzacji ani wyboru najlepszego checkpointu na podstawie jej wyników. Porównania z losowymi wagami i wcześniejszymi etapami treningu są osobnymi analizami diagnostycznymi.

Format wag. Referencją jest BF16, szesnastobitowy format zmiennoprzecinkowy. Wariant W4 używa NVFP4 i RTN, czyli zaokrąglenia do najbliższej reprezentowalnej wartości. Kwantyzacja obejmuje macierze projekcji w self-attention, mechanizmie wymiany informacji między pozycjami tekstu, oraz w MLP, sieci przetwarzającej wektor każdej pozycji. Wektory wejściowe przypisane tokenom, warstwy normalizujące, wyniki pośrednie i LM head pozostają w pierwotnej precyzji. NVFP4 łączy czterobitowe wartości z dodatkową skalą dla każdej grupy 16 elementów i skalą całej macierzy. Autorzy symulują zaokrąglenie i odtwarzają wagi do obliczeń. Nie mierzą przyspieszenia ani pamięci silnika wykonującego operacje na spakowanych wagach czterobitowych.

Teksty i agregacja. Standardowa analiza tokenowa obejmuje po 64 losowo wybrane sekwencje z 512 pozycjami przewidywania na każdy zbiór: C4 (teksty z internetu), WikiText-103 (Wikipedia) i GSM8K (zadania matematyczne wraz z referencyjnymi rozwiązaniami). W GSM8K model przewiduje kolejny token z podanego poprawnego tekstu, więc wynik nie mierzy samodzielnego rozwiązywania zadań. Statystyki są uśredniane najpierw po pozycjach, następnie po wejściach. Słupki błędów analiz tokenowych pokazują odchylenie standardowe między kompletnymi wejściami, a nie niepewność średniej.

Interwencja. Wynik 2,94× pochodzi z Qwen3-32B na C4, przy RTN NVFP4, z usunięciem kompensacji w blokach 17–48; porównaniem jest zwykły W4, a miarą końcowy względny błąd stanu ukrytego (rys. 3A, sekcja 3.3, dodatek E.7). Długość różnicy aktualizacji zachowuje się lokalnie przy jej modyfikacji. Dalsze bloki dostają zmieniony stan, więc ich różnice mogą już mieć inną długość niż w przebiegu bez interwencji. Pełne badanie obejmuje również odwrócenie kierunku przy ujemnej interakcji oraz pomiary zmian rozkładu prawdopodobieństw tokenów. Do zbudowania tych przebiegów potrzebne są obliczenia referencyjne, skwantyzowane i dodatkowe przebiegi z interwencjami; publikacja nie podaje łącznego kosztu w GPU-godzinach.

Filtry. W rachunku składników błędu z rys. 2 pominięto pierwszą pozycję sekwencji i trajektorie, w których względna różnica długości stanów przekraczała 0,5 na dowolnej głębokości. Drugi filtr usuwał 0,08% pozycji Qwen3-32B na C4. Dodatek pokazuje też wyniki bez tego filtra. Nie należy przenosić tej selekcji na testy trafności odpowiedzi ani traktować analizy typowych trajektorii jako gwarancji dla przypadków skrajnych.

Testy odpowiedzi. Średni spadek 0,43 p.p. dotyczy Qwen3-32B, W4 wobec BF16, bez przykładów zadania w promptcie i bez szablonu czatu. Użyto pełnych zbiorów testowych ARC-Challenge, ARC-Easy i MMLU oraz walidacyjnych HellaSwag, WinoGrande i TruthfulQA. Obejmują pytania wiedzy, wybór zakończenia tekstu, rozstrzyganie odniesienia zaimka i wybór prawdziwej odpowiedzi. ARC i HellaSwag oceniają prawdopodobieństwo kandydatów z normalizacją względem liczby znaków, MMLU litery odpowiedzi, WinoGrande wspólną końcówkę zdania warunkowaną kandydatem, a TruthfulQA używa trafności MC1. To osobna ewaluacja od analizy stanów ukrytych. Na C4 zwykły W4 zmienia najwyżej oceniony token na 10,7% badanych pozycji mimo niewielkich średnich zmian jakości (dodatek C.6).

Zakres dodatkowych sprawdzeń. Praca obejmuje Qwen3-4B, 8B, 14B, 30B-A3B i 32B, OLMo3-7B i 32B, OLMoE-1B-7B, Gemma3-4B oraz Pythia-1.4B i 2.8B. Analiza narastania błędów porównuje Qwen3-32B z dziesięcioma losowymi inicjalizacjami; odniesienie losowe dla geometrii LM head używa trzech. Badano też sześć checkpointów OLMo3-7B Stage-1 oraz etapy treningu Pythia. Dodatki zawierają kwantyzację samych aktywacji, łączną kwantyzację wag i aktywacji oraz GPTQ i AWQ, metody dobierające kwantyzację na danych kalibracyjnych. Nie są to ustawienia wyniku 2,94×. W porównaniu GPTQ i AWQ użyto 64 wejść kalibracyjnych C4 i ośmiu rozłącznych wejść ewaluacyjnych; RTN nie wymaga kalibracji.

Yuxiang Chen, Michael Beyer, Jun Zhu, Jianfei Chen, Why Does Post-Training Quantization Work?, pełny tekst v1. Mechanizm: sekcje 3–4; ustawienia: dodatek D.3; interwencje: E.7; ograniczenia: 5.4. Metadane i historia wersji, DOI: 10.48550/arXiv.2609.11716. Źródło udostępniono na licencji CC BY 4.0. Powyższy tekst jest polskim omówieniem z własnym przykładem liczbowym.

Moja rekomendacja przy wyborze skompresowanej wersji modelu: mierzyć powodzenie całego zadania na reprezentatywnych promptach, w tym długich odpowiedziach i wywołaniach narzędzi. Porównanie samych wag albo średniej trafności krótkich testów nie sprawdza skutków rozchodzenia się historii generacji. Warto osobno porównać poprawność wywołań narzędzi i końcowych odpowiedzi przy identycznym sposobie generowania.

Wykorzystuję treści generowane przez AI jako część mojego codziennego procesu nauki.