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é hlavní větev llama.cpp neumí přečíst, a vydavatel to bere jako výhodu.
Firma Prism ML nahrála 16. září na Hugging Face repozitář Ternary-Bonsai-2-27B-gguf a o den později do něj uložila jedinou revizi se jménem „Bonsai2“. Je to ternární přebalení modelu Qwen3.8-27B od Alibaby: každá váha nese jen hodnotu −1, 0, nebo +1 a na každých 128 vah připadá jedno společné měřítko v F16. Karta modelu slibuje 5,95 GB tam, kde původní model v F16 zabírá 53,8 GB.

Ta čísla sedí. Soubor Ternary-Bonsai-2-27B-PTQ1_0.gguf má podle výpisu Hugging Face 5 946 648 928 bajtů, jeho větší sourozenec PQ2_0 7 206 168 928 a srovnávací soubor v F16 53 808 408 928. Ten menší z nich je proti F16 devětkrát lehčí.
Co v tom souboru je
Hlavička formátu GGUF leží na jeho začátku, takže se dá přečíst rozsahovým dotazem HTTP bez stažení vah. V obou souborech je 851 tenzorů a 49 klíčů s metadaty. Ternární kódování nese 402 tenzorů a 26,87 miliardy parametrů; zbytek, tedy 96 tenzorů v BF16 a 353 v F32, dělá dohromady 26,2 milionu parametrů. To je 0,098 % celku a přesně ten podíl, který karta modelu uvádí jako váhy ponechané ve vyšší přesnosti.
Z velikosti souboru děleno počtem parametrů vychází 1,77 bitu na váhu u balení PTQ1_0 a 2,14 u PQ2_0 (vlastní výpočet: bajty krát osm děleno 26 895 998 464 parametrů). Karta modelu uvádí 1,75 a 2,13 – rozdíl dělá slovník tokenizéru a metadata, která v souboru leží vedle vah. U běžných nízkobitových sestav bývá ten rozdíl větší: karta sama uvádí, že rozšířená „dvoubitová“ stavba téhož modelu má ve skutečnosti 2,8 bitu na váhu.
Dva typy, které hlavní větev nezná
Hlavička říká i to, čím se ten model liší od ostatních. Tenzory nesou typy s čísly 142 a 143, jenže výčet typů ve vydání v0.4.1 knihovny ggml končí u čísla 42. Ve forku Prism ML obě čísla jsou a v kódu je u nich komentář „Prism-private“. K tomu si soubor nese sadu klíčů prism.hadamard.*: váhy jsou uložené v otočené soustavě a běhové prostředí musí tutéž transformaci použít na aktivace, jinak z modelu nic rozumného nevypadne.
Vydavatel to nezakrývá. Karta vývojového repozitáře Ternary-Bonsai-2-27B-gguf-dev, kam 17. září přibyl tentýž model v běžném typu Q2_0, píše, že takový soubor hlavní větev načte, protože typ i architekturu zná, a bez jediného varování vydá nesmysl. U typů 142 a 143 se naopak zastaví s chybou. Poslední věta toho odstavce zní, že právě proto se v hlavním repozitáři distribuují ony dva a ne tenhle. Jméno souboru to opakuje natvrdo: Ternary-Bonsai-2-27B-Q2_0-prism-fork-required.gguf.
Předchozí generace variantu pro hlavní větev měla
V červenci vydané Ternary-Bonsai-27B stálo na starším Qwen3.6-27B a vedle balení pro fork v něm ležel soubor Ternary-Bonsai-27B-Q2_g64.gguf. Jeho karta u něj měla poznámku: pro sestavení z hlavní větve llama.cpp použijte tenhle. V repozitáři druhé generace takový soubor není a ani odvozeniny, které první generace měla – například rozbalené váhy nebo návrhový model pro spekulativní dekódování –, u ní zatím nikde nevisí.
O podpoře ve dvoubitových formátech llama.cpp jsme psali už v srpnu, tehdy ještě u první generace. Jiný postup nad týmž základním modelem, smíšenou kvantizaci od DASLabu, popisuje starší text; ta skončila na 8,4 GB a běží v běžných nástrojích. Ternární balení, na které běžný nástroj také nestačí, vyšlo v srpnu i od Syzygy Research; tam ale scházely rovnou váhy v čitelném tvaru.
Během dvou dnů o podporu požádal někdo zvenčí
18. září otevřel uživatel vystupující jako mikestaub v evidenci llama.cpp žádost #29058. Píše v ní, že s Prism ML nijak spojený není a že na to narazil při importu veřejných souborů; stejně prý selže i příkaz create v Ollamě, která llama.cpp obsahuje. Žádá jedno ze dvou: buď oba typy začlenit, nebo je alespoň odmítat hlasitě a se jménem typu.
Téhož dne přidal QuentinDanblon návrh změny #29077, který oba typy i tu transformaci doplňuje. Automat projektu ho označil za popis psaný modelem a správce repozitáře pod něj napsal, ať si to Prism ML podá sám. Odpověď od vydavatele přišla za několik hodin: oba typy nejspíš zůstanou jen ve forku, protože každý nový typ znamená údržbu navíc, a cílem je dostat do oficiálního Q2_0 podporu té rotace. PTQ1_0 podle vydavatele vzniklo proto, že existující ternární typ TQ1_0 pracuje se skupinami po 256 vahách, kdežto tenhle model má 128. Kus té cesty už v hlavní větvi je: návrh #27779 od vývojáře firmy se začlenil 18. září a přidává vstup v F16 do rychlé Walshovy-Hadamardovy transformace.
Testy si změřil vydavatel
Průměr ze čtrnácti testů uvádí karta jako 84,78 proti 86,32 u F16, tedy 98,2 %. Měřilo se nástrojem EvalScope nad vLLM na kartě H100 v režimu uvažování, všechno v režii Prism ML; nikdo jiný ta čísla zatím nezopakoval. Matematika klesla z 97,06 na 96,57 a programování skončilo těsně nad plnou přesností, zato znalostní část spadla z 85,55 na 79,86 a obrazová ze 71,36 na 66,19. Volání nástrojů ztratilo necelé dva body.
Jeden údaj z přehledu nahoře je starší, než vypadá. Rychlost 47 tokenů za sekundu na notebooku s čipem M5 Max pochází z tabulky, u které tatáž karta o pár odstavců níž píše, že je naměřená na starším sestavení před zavedením rotace a čeká na přeměření. Čerstvě změřený řádek pro Apple je jen jeden, M5 Pro s 28,1 tokenu za sekundu.
Licence je na obou stranách Apache 2.0 a soubor NOTICE.txt v repozitáři uvádí, z čeho model vznikl, i prosbu o uvedení původu při nasazení. Kdo si tedy chce 27miliardový model pustit na notebooku, dostane ho legálně – jen k němu musí stáhnout i binárku z forku. A podle vydavatele to tak nejspíš ještě chvíli zůstane.
Zdroje
- Ternary-Bonsai-2-27B-gguf a gguf-dev, karty modelu a výpis souborů (Prism ML)
- Ternary-Bonsai-27B-gguf, karta první generace
- ggml.h ve vydání llama.cpp v0.4.1
- Žádost #29058 a návrh #29077 v evidenci llama.cpp
- Vlastní měření hlaviček obou souborů GGUF rozsahovými dotazy HTTP, 19. září 2026