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

Ollama 0.32.15 přestala číst metadata GGUF při každém dotazu

Server Ollamy otevíral soubor GGUF a četl z něj metadata při každém dotazu na chat i generování; autor změny odhaduje tu režii na 300 ms za volání. Verze 0.32.15 z 19. srpna 2026 si výsledek pamatuje, dokud se nezmění otisk manifestu. V přiloženém měření klesl medián čekání na první token z 551,72 na 283,88 ms.

Mechanické stopky s velkou vteřinovou ručičkou
Stopky. Foto: Ansgar Koreng, Wikimedia Commons (CC BY-SA 4.0)

Když pošlete Ollamě dotaz na chat, server si napřed musí zjistit, s čím pracuje: kde leží váhy, jakou má model šablonu chatu a co všechno umí. Dělal to pokaždé znovu. Verze 0.32.15 z 19. srpna 2026 si výsledek nechává v paměti a poznámky k vydání u toho slibují zkrácení čekání na první token zhruba na polovinu.

Tentýž soubor se otevíral dvakrát za dotaz

Práci obstarává funkce GetModel v souboru server/images.go. Rozebere manifest modelu, načte z blobu konfiguraci a u modelu ve formátu GGUF otevře i samotný soubor vah, aby si z jeho metadat přečetla dvě položky – šablonu chatu (tokenizer.chat_template) a typ sdružování (pooling_type).

Do minulého vydání volala tuhle funkci nejdřív obsluha dotazu na /api/chat nebo /api/generate a pak ještě jednou plánovač běhu scheduleRunner. Soubor vah se tak otevřel v jednom dotazu dvakrát. Autor návrhu změny #17752 tu režii odhaduje na zhruba 300 ms na každé volání; je to jeho vlastní údaj a nikdo jiný ho nezopakoval.

Nový soubor server/model_inference_cache.go má 121 řádků a drží hotová metadata pod klíčem složeným ze jména modelu a z nastavení proměnné pro šablonu. Čerstvost hlídá otisk manifestu: ten se čte při každém dotazu dál, protože je levný, ale soubor vah se už neotvírá. Komentář v kódu to shrnuje tak, že bloby jsou adresované obsahem, takže záznam platí, dokud se model nevytvoří znovu nebo nestáhne s jiným obsahem (přeloženo). Souběžné dotazy na dosud nenačtený model se slévají do jednoho načtení a každá obsluha dostane vlastní kopii, aby si záznam ve sdílené paměti nepřepsala.

Odkud je to číslo o polovině

Měřil ho sám autor změny; podle svého veřejného profilu na GitHubu pracuje na výkonu grafických karet v NVIDII. Použil nástroj aiperf a sadu SPEED-Bench, konkrétně její programátorskou část. Ta má podle dokumentace nástroje 80 zadání; měření z nich vzalo prvních deset a pouštělo je po jednom. Model byl qwen3.6:35b-a3b-mtp-q4_K_M a adresář s výsledky si autor pojmenoval speed-bench-smoke, tedy jako zkoušku.

Průměrné čekání na první token kleslo z 994,79 na 524,15 ms, tedy o 47,3 %. Poznámky k vydání z toho udělaly zaokrouhlených 995 a 524 ms.

Medián sedí s odhadem líp než průměr

V obou tabulkách je ale i medián a ten spadl z 551,72 na 283,88 ms, o 267,84 ms a 48,5 % – obojí je vlastní dopočet z čísel v návrhu. Polovina tedy vyjde tak i tak, což se u deseti dotazů dalo čekat těžko: směrodatná odchylka je 1 169 ms u prvního kola a 585 ms u druhého, v obou případech tedy větší než samotný rozdíl. Nejdelší čekání se zkrátilo ze 4 451 na 2 135 ms.

Zajímavější je jiná věc. Úspora měřená mediánem odpovídá odhadovaným 300 ms režie skoro přesně, kdežto průměrný rozdíl 470,64 ms je o polovinu větší. Vysvětlení stojí v tabulce o pár řádků níž: obě kola nedostala stejnou zátěž. Průměrná délka vstupu byla 1 337,90 tokenu v prvním kole a 832,30 ve druhém, průměrná délka odpovědi 4 273 a 3 584 tokenů. Kratší vstup znamená kratší přípravu, takže část průměrného rozdílu nedělá vyrovnávací paměť, ale zadání. Medián vstupu je přitom v obou kolech shodných 143 tokenů, a to je z té tabulky nejpoctivější dvojice čísel.

Co z toho má, kdo si model pouští doma

Úspora se projeví od druhého dotazu na tentýž model, ne u prvního. Načítání vah do paměti karty se změna netýká vůbec – to je ta pauza, kterou znáte po ollama run, a ta zůstává. Nejvíc z ní má ten, kdo posílá dotazy na běžící server často a po malých dávkách; medián vstupu byl v měření 143 tokenů, tedy krátké zadání, u kterého se čtvrt vteřiny navíc pozná.

Paměť samotná nemá v kódu žádný strop ani vypršení. Drží jeden záznam na jméno modelu po celou dobu běhu serveru a zahodí ho, teprve když se změní otisk manifestu, tedy po ollama pull nebo ollama create. Pro domácí instalaci s hrstkou modelů to nic neznamená: v záznamu jsou cesty, volby a text licence, ne váhy.

Zbytek vydání je drobnější. První spuštění desktopové aplikace provede úvodním nastavením, chat a generování se už nezaseknou po chybě rozboru uprostřed proudu, systémové zprávy Qwenu 3.8 se srovnávají na jeden tvar a vnitřní kopie llama.cpp a MLX se posunuly na novější verze. O rychlosti Ollamy jsme psali u spekulativního dekódování DFlash, kde se zrychlení lišilo podle druhu textu.

Zatím se měřilo jednou, jedním člověkem a na deseti dotazech. Kdo si chce ověřit, jestli se mu ta čtvrt vteřiny vrátí i na jeho modelu, najde postup i přesné parametry vypsané přímo v návrhu změny.

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 přidal k nočním sestavením verze 0.1.x, postup je zatím rozdělaný

    llama.cpp má od 17. srpna vedle nočních značek s písmenem b i značky v0.1.0 až v0.1.2. Nová značka vznikne jen tehdy, když se soubory jeho vnitřní kopie knihovny ggml…

  2. U sebe doma

    llama.cpp vypnul mapování modelu do paměti na části integrovaných grafik

    llama.cpp od 11. srpna 2026 nemapuje soubor s váhami do paměti všude, kde to jde. Nový výchozí režim mapování vypne, jakmile některé ze zapojených zařízení ohlásí, že ho…

  3. U sebe doma

    Ollama vypnula výchozí postih za opakování u modelů, které si ho samy nenastaví

    Verze 0.32.10 z 12. srpna mění jednu výchozí hodnotu serveru: model, který si postih za opakování sám neurčí, dostane napříště 1,0 místo 1,1, tedy vypnuto. Ollama to…

  4. U sebe doma

    ONNX Runtime 1.29.0 sbírá data i na Linuxu, macOS, Androidu a iOS

    Vydání z 12. srpna přidalo do knihovny sběr telemetrie pro Linux, macOS, Android a iOS; dosud běžel jen na Windows. V oficiálních balíčcích je zapnutý ve výchozím stavu…