Robocikowo>ROBOCIKOWO
Wnioskowanie

I-quants

2024AktywnyOpublikowano: 29 września 2026Aktualizacja: 29 września 2026Opublikowany
Rodzina schematów kwantyzacji llama.cpp/GGML (IQ1_S–IQ4_XS) o bardzo niskiej liczbie bitów na wagę, oparta na kodowaniu kratowym QuIP# i macierzy ważności.
Kluczowa innowacja
Kwantyzacja o bardzo niskiej liczbie bitów na wagę (od ~1,56 bit) oparta na kodowaniu kratowym w stylu QuIP# (kratownica E8, książka kodów) sterowanym macierzą ważności, dająca lepszą jakość niż K-quants przy tym samym rozmiarze.
Kategoria
Wnioskowanie
Poziom abstrakcji
Wzorzec
Poziom operacji
InferencjaUdostępnianieWdrożenie
Zastosowania
Skrajna kompresja dużych modeli LLM (1,5–3 bity na wagę)Uruchamianie bardzo dużych modeli na GPU z ograniczoną pamięcią VRAMLokalna inferencja LLM na laptopach i urządzeniach brzegowychDystrybucja skwantyzowanych modeli w formacie GGUFMieszczenie większych modeli w tej samej ilości pamięci przy lepszej jakości niż K-quants

Jak działa

1) Wagi tensora dzielone są na super-bloki po 256 wag ze wspólną skalą (super_block_scale). 2) Zamiast kwantyzacji round-to-nearest, grupy wag są kodowane za pomocą książki kodów (codebook) opartej na kratownicy E8 — z góry ustalonego zbioru punktów, do których dopasowuje się wagi; np. IQ2_XXS używa 256-punktowego codebooka wybranego na podstawie częstości występowania. 3) Znaki są kodowane osobno (strategia sign-flipping utrzymująca parzystą liczbę ujemnych znaków w grupie), co oszczędza bity. 4) Wybór kwantów jest sterowany macierzą ważności (imatrix) zebraną na tekście kalibracyjnym — wagi ważniejsze dla wyjścia modelu są odwzorowywane dokładniej. 5) Efektywna liczba bitów na wagę zależy od wariantu: ~1,56 (IQ1_S), 1,75 (IQ1_M), 2,06 (IQ2_XXS), 2,31 (IQ2_XS), 2,5 (IQ2_S), 3,06 (IQ3_XXS), 3,44 (IQ3_S), 4,25 (IQ4_XS); IQ4_NL to 4-bitowy wariant nieliniowy (non-linear). 6) Podczas inferencji wagi są odtwarzane z indeksów codebooka i skali; odczyty z tablicy kodów są droższe niż proste mnożenie w K-quants, stąd wolniejsza inferencja na części sprzętu.

Rozwiązany problem

K-quants tracą jakość przy najniższych ustawieniach (zwłaszcza 2–3 bity na wagę), a uruchomienie bardzo dużych modeli na sprzęcie konsumenckim wymaga jeszcze silniejszej kompresji. I-quants pozwalają zejść do ~1,5–2 bitów na wagę przy mniejszej utracie jakości niż K-quants o tym samym rozmiarze, umożliwiając mieszczenie większych modeli w ograniczonej pamięci.

Komponenty

Książka kodów (kratownica E8)Reprezentacja magnitudy wag przy bardzo niskiej liczbie bitów

Z góry ustalony zbiór punktów oparty na wysoko symetrycznej kratownicy E8 (np. 256-punktowy codebook dla IQ2_XXS), do którego dopasowywane są grupy wag. Idea zapożyczona z QuIP#.

Macierz ważności (imatrix)Sterowanie precyzją per waga

Statystyki aktywacji zebrane na tekście kalibracyjnym, wskazujące które wagi najsilniej wpływają na wyjście modelu; sterują doborem kwantów, minimalizując utratę jakości. Dla najniższych typów IQ praktycznie wymagana.

Oficjalna

Super-blok (256 wag)Grupowanie wag i wspólna skala

Podstawowa jednostka kwantyzacji obejmująca 256 wag ze wspólną skalą (super_block_scale). Wymaga, aby rozmiar wiersza tensora był podzielny przez 256.

Kodowanie znaków (sign-flipping)Oszczędność bitów na kodowaniu znaków

Strategia kodowania znaków utrzymująca parzystą liczbę ujemnych elementów w grupie, dzięki czemu jeden znak jest wyprowadzany z pozostałych i oszczędza się bity. Element zapożyczony z QuIP#.

Oficjalna

Implementacja

Pułapki implementacyjne
Wolniejsza inferencja na części sprzętuŚrednia

Odczyty z książki kodów zwiększają narzut obliczeniowy; na CPU i słabszych GPU I-quants bywają wolniejsze niż K-quants o podobnym rozmiarze.

Rozwiązanie:Testuj przepustowość na docelowym sprzęcie; przy priorytecie prędkości rozważ K-quants.
Zależność od macierzy ważnościWysoka

Najniższe typy (IQ1/IQ2) bez dobrej macierzy ważności mocno tracą jakość; wynik zależy od reprezentatywności danych kalibracyjnych.

Rozwiązanie:Generuj imatrix na reprezentatywnym tekście; unikaj skrajnie niskich typów bez imatrix.
Wymóg podzielności przez 256Niska

Rozmiar wiersza tensora musi być podzielny przez 256; tensory, które tego nie spełniają, są kwantyzowane innym typem (fallback).

Rozwiązanie:Polegaj na automatycznym fallbacku konwertera przy nietypowych kształtach tensorów.

Ewolucja

2024
Podstawy teoretyczne: QuIP# (kratownica E8, codebook)

Praca QuIP# (Tseng i in., ICML 2024) formalizuje kwantyzację LLM z użyciem kratownicy E8 i niespójności Hadamarda; jej idee zainspirowały I-quants.

2024
Wprowadzenie I-quants w llama.cpp (PR #4773)
Punkt przełomowy

Iwan Kawrakow dodaje IQ2_XXS i IQ2_XS („SOTA 2-bit quants") z kodowaniem w stylu QuIP# i macierzą ważności.

2024
IQ4_NL — 4-bitowy wariant nieliniowy (PR #5590)

Rozszerzenie rodziny o 4-bitowe typy nieliniowe (IQ4_NL, później IQ4_XS ~4,25 bpw).

2024
Typy 1-bitowe: IQ1_S i IQ1_M (PR #6302)

Dodanie skrajnie niskobitowych typów IQ1_S (~1,56 bpw) i IQ1_M (~1,75 bpw).

Hiperparametry (konfigurowalne osie)

Docelowe bity na wagę / typ IQKrytyczna

Wybór wariantu (IQ1_S … IQ4_XS) wyznaczający efektywną liczbę bitów na wagę i kompromis jakość/rozmiar.

IQ2_XXS (~2.06 bpw)
IQ3_S (~3.44 bpw)
IQ4_XS (~4.25 bpw)
Macierz ważności (imatrix) i dane kalibracyjneWysoka

Obecność i jakość macierzy ważności oraz reprezentatywność tekstu kalibracyjnego; dla najniższych typów IQ praktycznie wymagana.

z imatrix (zalecane)Znacząco poprawia jakość przy niskich bitach.
bez imatrixMożliwe dla wyższych typów, ryzykowne dla IQ1/IQ2.

Złożoność obliczeniowa

Złożoność przestrzenna: ~1.56–4.25 bit/wagę.

Równoległość

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

Dekodowanie super-bloków jest niezależne, więc łatwo się zrównolegla; wąskim gardłem bywają odczyty z książki kodów, nie zależności między blokami.

Zakres
Inferencja

Wymagania sprzętowe

Dobry fit

Istnieją kernele CUDA/Metal do dekodowania I-quants; np. IQ2_XXS osiąga ok. 155 t/s na RTX-4080 (CUDA) i 54 t/s na M2 Max (Metal) dla Mistral-7B.

Możliwe

Odczyty z książki kodów są kosztowniejsze niż proste mnożenie w K-quants, przez co inferencja I-quants bywa wolniejsza na CPU.