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_MAT a MUL_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

    Ollama pozastavila převod starších modelů, po kterém zabíraly na disku dvojnásobek

    Ollama 0.40 začala bez ohlášení přepisovat starší stažené modely do tvaru, který llama.cpp přečte bez záplat, a původní soubor nechávala vedle jako zálohu. Převedené…

  2. U sebe doma

    DGX Spark se 64 GB má poloviční paměť, ale stejnou propustnost 273 GB/s

    Nvidia nabízí DGX Spark se 64 GB od 23. října přes šest výrobců za 4 999 dolarů, o čtvrtinu dráž, než loni stála verze se 128 GB. Ta mezitím podražila na 6 950 dolarů.…

  3. U sebe doma

    Nejstahovanější převod modelu Clef do GGUF nemá rozhodovací hlavu

    Cloudflare zveřejnil 30. září rozhodovací modely Clef a Clef-Flash, které místo textu vracejí pravděpodobnosti voleb. Počítá je zvláštní hlava se 128 miliony parametrů.…

  4. U sebe doma

    Ternární Bonsai 2 vyšel v baleních, která přečte jen fork llama.cpp

    Prism ML vydal druhou generaci svého ternárního přebalení modelu Qwen3.8-27B: 5,95 GB proti 53,8 GB u souboru v F16. Oba zveřejněné soubory ale nesou typy tenzorů, které…