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 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í.…