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.cpp počítal u sedmi architektur normalizaci jinak než jejich referenční kód

    Vektory dotazů a klíčů v hybridní vrstvě Gated DeltaNet dělil llama.cpp odmocninou ořezanou zdola, kdežto knihovna, ke které se jejich referenční kód hlásí, k té…

  2. U sebe doma

    llama.cpp nechá některé velké vkládací tabulky na disku místo v operační paměti

    Projekt llama.cpp vydal 4. září 2026 verzi 0.4.0 s volbou --lazy-mode: vybraná vkládací tabulka zůstane v souboru na disku a program z ní čte řádky až ve chvíli, kdy je…

  3. U sebe doma

    Ollama 0.33.3 čte doporučené hodnoty vzorkování přímo ze souboru modelu

    Ollama do teď používala vlastní výchozí teplotu a top_p vždycky, když je nepřepsal Modelfile nebo požadavek. Verze 0.33.3 z 2. září 2026 se nejdřív podívá, co si o sobě…

  4. U sebe doma

    Hugging Face zveřejnil 207 WebGPU kernelů pro prohlížeč, loader k nim vyšel jako náhled

    Organizace webgpu-kernels na Hubu nese 207 výpočetních programů pro grafický čip pod licencí Apache 2.0 a balíček @huggingface/kernels je z prohlížeče stáhne a spustí.…