Přeskočit na obsah
U sebe doma 3 min čtení

Nová cesta v llama.cpp zrychluje dávkové zpracování IQ vah na procesoru

Sestavení b10726 přidalo procesorový panel, který u IQ kvantizací dekóduje osm řádků vah najednou. Autor změny naměřil při dávce 512 na AMD EPYC 9654 podle modelu a formátu 1,9násobnou až 8,4násobnou rychlost. Jde o jeho měření; generování po jednom tokenu se novou cestou nevydá.

Sbírka historických procesorů
Sbírka historických procesorů. Foto: Martijn Boer, Wikimedia Commons (Public domain)

Do vydaného sestavení llama.cpp b10726 se 31. srpna dostala nová cesta pro násobení matic na procesoru. Návrh 27402 sloučený pod commitem 85c55223 přidává panel pro osm řádků IQ vah. Porovnání tohoto commitu se značkou b10726 vrací shodný stav, nejde tedy jen o změnu čekající v hlavní větvi.

IQ jsou kvantizační formáty llama.cpp. Při jejich tvorbě lze použít matici důležitosti, kterou dokumentace nástroje zapíná přepínačem --imatrix. Kvantizace zmenší váhy modelu, ale jejich použití pak vyžaduje rozbalování hodnot z vyhledávacích tabulek. Právě toto rozbalování bylo při větší dávce drahé: stejnou váhu program podle autora návrhu dekódoval pro každý token znovu.

Osm řádků se vejde do jednoho panelu

Nový soubor iqp.cpp nejprve rozbalí osm řádků po 256 vahách do dlaždice s osmibitovými celými čísly. Ta se vejde do mezipaměti procesoru a násobení matice ji může použít opakovaně. Původní cesta naproti tomu při dávce 512 rozbalovala každou váhu až 512krát.

Kód panel zapne od osmi sloupců. Stejnou hranici používá u hustého modelu i u expertů v modelu typu mixture of experts (MoE). Kdo potřebuje porovnat staré chování, může nastavit proměnnou GGML_NO_IQ_PANEL=1; její přítomnost novou cestu vypne.

Hustý model získal víc než model s experty

Autor návrhu bartowski1182 měřil dva modely na AMD EPYC 9654 s 24 vlákny. Test perplexity zpracoval 50 částí dat a pro každou kvantizaci použil čistý model, aby se měřený formát uplatnil na všech vhodných tenzorech. Následující čísla patří dávce 512 a jsou výsledkem autora změny, nikoli nezávisle zopakovaným benchmarkem.

ModelFormátPřed změnouS panelemNásobek
Qwen3.6-27BIQ1_M14,36 tokenů/s73,70 tokenů/s5,13×
Qwen3.6-27BIQ3_S8,77 tokenů/s73,84 tokenů/s8,42×
Qwen3.6-27BIQ4_XS22,42 tokenů/s75,99 tokenů/s3,39×
Qwen3.6-35B-A3BIQ1_M111,09 tokenů/s270,72 tokenů/s2,44×
Qwen3.6-35B-A3BIQ3_S74,27 tokenů/s262,56 tokenů/s3,54×
Qwen3.6-35B-A3BIQ4_XS154,27 tokenů/s293,41 tokenů/s1,90×

Rozdíl mezi modely není jen v názvu. Rozhraní Hugging Face vede Qwen3.6-27B jako hustou architekturu s 27 781 427 952 parametry. U Qwen3.6-35B-A3B uvádí 35 951 822 704 parametrů a architekturu MoE. Druhý model při jednom kroku používá jen vybrané experty, takže se jednotlivé dávky mezi ně rozdělí a panel dostává méně práce najednou.

Perplexita se v jednom řádku posunula o 1,18 procenta

Slovní shrnutí návrhu mluví o posunu perplexity kolem 0,24 %. V přiložené tabulce jsou ale i větší hodnoty. Nejvyšší absolutní změna je 1,18 % u Qwen3.6-35B-A3B v IQ2_XXS a dávce 512; naměřená perplexita klesla z 11,0131 na 10,8834. U některých kombinací naopak stoupla. Z těchto dat proto nejde vyvodit jednotný vliv na kvalitu výstupu, pouze to, že výsledek výpočtu není ve všech řádcích totožný.

Projekt přidal také testy operací MUL_MATMUL_MAT_ID. Autor je vedle serverového procesoru spustil na Ryzen 9 7950X3D a Intel Core Ultra 7 358H; oba testy skončily úspěšně. Čísla výkonu pro tyto dva stroje zveřejnil jen u několika vybraných kombinací, takže je nelze zaměnit za celou tabulku z EPYC.

Rychlejší bude vstup, ne každý další token

Hranice osmi sloupců určuje praktický dopad. Dlouhý vstup, výpočet perplexity nebo tvorba matice důležitosti zpracovávají více tokenů současně a panel využijí. Při běžném generování jedné konverzace model vytváří další token po jednom; tato část pod hranici spadne a zůstane na původní cestě. Násobky z tabulky tedy nelze přenést na rychlost celé konverzace.

Kdo už používá llama-quantize nebo spouští IQ varianty na procesoru, potřebuje sestavení b10726 či novější. Největší rozdíl lze čekat u dlouhého prvního vstupu a u dávkového vyhodnocování. Samotné tempo jedné odpovědi po prvním tokenu se touto změnou nezrychlí.

Zdroje

Diskuse

Zatím tu nikdo nediskutuje. Můžete být první.

Napsat příspěvek

Diskutovat můžete i bez účtu. S registrací se ale příspěvek zveřejní hned a nemusíte pokaždé vyplňovat jméno. Účet už máte? Přihlaste se.

Nezveřejňujeme ho, slouží jen redakci.

Podporuje zápis Texy: **tučně**, *kurzíva*, odrážky, odkazy.

Dál k tématu

  1. U sebe doma

    llama-quantize si na velký tenzor bere nejvýš osm gigabajtů operační paměti

    Kvantizační nástroj z llama.cpp si na každý tenzor alokoval dva pomocné bloky po čtyřech bajtech na parametr, takže u opravdu velké vkládací tabulky šly nároky do stovek…

  2. U sebe doma

    llama.cpp podporuje od sestavení b10665 DSpark pro Nemotron 3.5

    Sestavení llama.cpp b10665 z 28. srpna umí vedle hlavního Nemotronu 3.5 načíst samostatný draft model DSpark od Nvidie. Ten přidá 1,35 GB dat k 21,58 GB cílového…

  3. U sebe doma

    vLLM 0.28.0 přesunul podporu bitsandbytes z hlavního stromu do zásuvného modulu

    Obsluha jazykových modelů vLLM vydala 26. srpna 2026 verzi 0.28.0 s 584 commity od 270 přispěvatelů. Podpora kvantizace bitsandbytes odešla z hlavního stromu do…

  4. U sebe doma

    SGLang odstranil přepínač pro kvantizaci, který v devíti vydáních jen hlásil chybu

    Přepínač --torchao-config končil v SGLangu chybou ImportError, ať mu uživatel předal kteroukoli z povolených hodnot. Rozbil ho skok verze knihovny torchao, který se…