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

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ě napsal sám vydavatel modelu, a devět voleb umí přečíst z metadat GGUF nebo ze souboru generation_config.json. Ve dvaceti modelech z knihovny Ollamy ale ty klíče nese jediný.

Kdo si pouští jazykový model u sebe přes Ollamu, dostával jeho doporučené nastavení vzorkování jen oklikou. Teplotu, top_p nebo postih za opakování musel k modelu někdo dopsat do Modelfilu; hodnoty, které vydavatel zapsal přímo do souboru s vahami, server přehlížel a sáhl po svých vlastních. Verze 0.33.3 vydaná 2. září 2026 je začala číst.

Tahové potenciometry mixážního pultu v detailu
Tahové potenciometry mixážního pultu. S doporučenými hodnotami vzorkování je to podobné: někdo je nastaví předem a pak jde o to, kdo je smí za běhu přesunout. Foto: Dejan Krsmanovic, Wikimedia Commons (CC BY 2.0)

Nová vrstva se vsunula mezi Modelfile a výchozí hodnoty serveru

Celý zásah je návrh změny 16471. Otevřel ho 3. června 2026 Daniel Hiltgen, sloučený byl 1. září a o den později vyšel ve verzi 0.33.3. Sahá na jedenáct souborů a přidává mezi ně nový, types/model/generation.go.

Volby požadavku vznikají v Ollamě vrstvením a od 0.33.3 jsou ty vrstvy čtyři. Úplně dole leží výchozí hodnoty serveru, nad nimi nově to, co si k sobě napsal vydavatel modelu, pak parametry z Modelfilu a nahoře to, co pošle klient v požadavku. V kódu je to čtveřice volání ve funkci modelOptions v souboru server/routes.go, v přesně tomhle pořadí.

Dno té hromady se nemění: DefaultOptions()api/types.go pořád vrací teplotu 0,8, top_k 40, top_p 0,9 a postih za opakování 1,0, tedy vypnutý – od srpna. Model, který si nic neurčí, tam dopadne stejně jako dřív.

Devět voleb a dvě místa, odkud se berou

Nový soubor je v podstatě jedna tabulka. Ke každé z devíti voleb Ollamy drží jméno klíče v metadatech GGUF a jedno nebo víc jmen v souboru generation_config.json, který si s sebou nesou modely stažené z Hugging Face ve formátu safetensors.

volba Ollamyklíč v GGUFjméno v generation_config.json
top_kgeneral.sampling.top_ktop_k
top_pgeneral.sampling.top_ptop_p
min_pgeneral.sampling.min_pmin_p
typical_pgeneral.sampling.typ_ptypical_p
temperaturegeneral.sampling.temptemperature
repeat_last_ngeneral.sampling.penalty_last_nrepeat_last_n, penalty_last_n
repeat_penaltygeneral.sampling.penalty_repeatrepetition_penalty, repeat_penalty, penalty_repeat
presence_penaltygeneral.sampling.penalty_presentpresence_penalty
frequency_penaltygeneral.sampling.penalty_freqfrequency_penalty

Obě cesty se přitom uplatní jinde. Metadata GGUF se čtou při načtení modelu, kdežto generation_config.json se přebírá už při zakládání modelu ze safetensorů, tedy v běhovém prostředí MLX na Apple Siliconu.

Blok v GGUF je z listopadu 2025

Ollama si ta jména nevymyslela. Klíče general.sampling.* zavedl do llama.cpp návrh 17120 nazvaný „model-embedded sampling parameters“, sloučený 25. listopadu 2025. Jeho seznam má dvanáct položek a llama.cpp je v common/common.cpp uplatňuje na stejném principu: hodnotu z modelu vezme jen u parametru, který uživatel neurčil na příkazové řádce.

Mezi ty dvě sady je vidět skulinu. Ollama čte devět klíčů, llama.cpp jich zná dvanáct, ale shodných je jen šest. Chybí v Ollamě hlavně general.sampling.sequence, tedy pořadí vzorkovačů – model tak může doporučit hodnoty, ale ne postup, ve kterém se použijí. Bez odezvy zůstávají i klíče pro XTC a mirostat, které Ollama jako volby nemá.

Tři klíče, které zatím nemá kdo zapsat

Opačným směrem je ta neshoda zajímavější. Klíče general.sampling.typ_p, general.sampling.penalty_presentgeneral.sampling.penalty_freq v llama.cpp nejsou – ani ve výčtu v src/llama-arch.cpp, ani v konstantách zapisovací knihovny gguf-py. Do souboru GGUF je tedy převod z Hugging Face nezapíše a Ollama je bude hledat nadarmo, dokud se ta jména někde nezavedou. Typickou pravděpodobnost a oba penalizační parametry umí model po téhle cestě předat jedině tehdy, když jde o safetensors s generation_config.json.

Ve dvaceti modelech z knihovny Ollamy ty klíče nese jediný

Kolik souborů má nová funkce co číst, jde změřit. Modely z knihovny Ollamy leží v otevřeném registru na registry.ollama.ai, manifest vydá otisk vrstvy s vahami a hlavička GGUF stojí na začátku toho souboru, takže se dá přečíst rozsahovým dotazem HTTP bez stahování celého modelu. Přečetl jsem takhle značku latest u dvaceti modelů: qwen3, qwen3.5, qwen3.8, qwen2.5-coder, gemma3, gemma4, embeddinggemma, llama3.1, llama3.2, llama4, phi4, mistral, mistral-small3.2, deepseek-r1, granite3.3, smollm2, gpt-oss, llava, nomic-embed-text a codellama. Na hlavičku stačilo 4 až 17 MB na model.

Klíč general.sampling.* nese jeden jediný z nich, qwen3.8: top_k 20, temp 1,0 a top_p, které je v souboru uložené jako čtyřbajtové desetinné číslo, takže se přečte jako 0,949999988079071. Ostatních devatenáct modelů má tenhle prostor prázdný.

Chování se přitom nezmění ani u toho jednoho. Vrstva s parametry Modelfilu má u qwen3.8 tytéž tři hodnoty – top_k 20, temperature 1 a top_p 0,95 – a stojí nad metadaty, takže vyhrává ona. Nová vrstva pod ní zatím jen opakuje, co už bylo o patro výš.

Vypovídá to spíš o dnešní knihovně než o té změně. Parametry k modelům v ní vypisuje Ollama sama do Modelfilu a dělá to důkladně: qwen3 má takhle uloženou teplotu 0,6, top_k 20 a top_p 0,95, gemma3 teplotu 1 a top_k 64, qwen3.5 dokonce postih za přítomnost 1,5 – hodnotu, pro kterou právě žádný zapisovatelný klíč v GGUF není. Nová cesta je proto užitečná hlavně tam, kde Ollama ruku nepřiloží: u modelu, který si uživatel stáhne nebo převede sám.

Kolik takových souborů bude, rozhoduje převodník. Ten se v llama.cpp opravil 24. srpna 2026 tak, aby doporučený postih za opakování hledal i pod jménem repetition_penalty, které nastavení modelů z Hugging Face opravdu používá. Klíč, který od té doby v nových souborech vzniká, je přesně ten, po kterém Ollama od 1. září sahá.

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

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

  2. U sebe doma

    Projekt llama.cpp přestal převádět pět vah Qwen3-TTS 0,6B na 16 bitů

    Sestavení b10760 mění převod pomocného souboru pro model Qwen3-TTS 0,6B. Pět vah zůstane ve 32 bitech, protože mezivýsledek o hodnotě kolem 145 tisíc překračoval limit…

  3. U sebe doma

    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…

  4. U sebe doma

    llama-quantize si na velký tenzor bere nejvýš osm gigabajtů operační paměti

    Kvantizační nástroj z llama.cpp si na každý tenzor alokoval dva pomocné bloky po čtyřech bajtech na parametr, takže u opravdu velké vkládací tabulky šly nároky do stovek…