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 zdůvodňuje tím, že žádný z tvůrců modelů v její knihovně hodnotu 1,1 nedoporučuje a že postih stojí spekulativní dekódování část výkonu. Starším modelům může kvůli tomu začít ujíždět opakování, které jim postih dosud zakrýval.
Kdo si pouští jazykový model u sebe přes Ollamu, dostával k téměř každému modelu jeden parametr navíc, aniž o něm věděl: postih za opakování repeat_penalty ve výši 1,1. Verze 0.32.10 z 12. srpna 2026 ho vypnula – výchozí hodnota je nově 1,0, což v tomhle parametru znamená „žádný postih“.

Změna je jeden řádek, dosah má na celou knihovnu
Celý zásah je commit 6a261db7 a v kódu se týká jediného řádku v souboru api/types.go: funkce DefaultOptions() vrací místo RepeatPenalty: 1.1 hodnotu 1.0. Druhá změna je řádek v dokumentaci.
Že to zasáhne skoro všechno, plyne z toho, jak Ollama nastavení skládá. Volby požadavku vznikají vrstvením: nahoře to, co pošle klient, pod tím parametry, které k modelu vydal jeho autor, a úplně vespod výchozí hodnoty serveru. Model, který postih za opakování ve svých parametrech neuvádí, tedy propadne až na to dno – a do verze 0.32.10 tam našel 1,1.
Ostatní prostředí ten postih zapnutý nemají
Ollama v odůvodnění tvrdí, že je v tom mezi běhovými prostředími sama. To se dá ověřit ve zdrojových souborech.
- llama.cpp tutéž hodnotu opustil už 19. března 2024 commitem nazvaným „common : disable repeat penalties by default“, který v
common/sampling.hpřepsalpenalty_repeatz1.10fna1.00f. V dnešním souborucommon/common.hstojí tatáž jednička s komentářem „1.0 = disabled“. - vLLM má v
sampling_params.pyzapsánorepetition_penalty: float = 1.0. - SGLang má v svých parametrech vzorkování rovněž 1.0 a u kontroly rozsahu si to sám popisuje jako „1.0 = no penalty“.
- Transformers od Hugging Face mají ve výchozí konfiguraci generování tutéž jedničku.
Druhá půlka odůvodnění se týká samotných modelů: podle Ollamy hodnotu 1,1 nedoporučuje ani jeden z tvůrců modelů, které má v knihovně. Buď postih ve svém souboru generation_config.json vůbec neuvádějí, což znamená 1,0, nebo v něm mají 1,05. U Qwenu to sedí do puntíku – Qwen2.5-7B-Instruct i Qwen3-Coder mají v tom souboru "repetition_penalty": 1.05.
K tomu Ollama přidává námitku o obsahu: postih, který běží pořád, kazí i výstup, ve kterém se tokeny opakují po právu. Jmenuje kód, JSON a dlouhé úvahové stopy.
Nejvíc na tom tratí spekulativní dekódování
Spekulativní dekódování je zrychlení, při kterém malý draft model navrhne několik tokenů dopředu a velký cílový model je pak jedním průchodem jen ověří. Ollama ho v podobě techniky DFlash dostala do hlavní větve na začátku srpna.
Postih tuhle mechaniku rozlaďuje, protože každá strana pracuje s jinými pravidly: návrhy vznikají bez postihu, kdežto cílový model je posuzuje s ním, takže je odmítá. Řídicí prvek pak zkrátí hloubku, na kterou se spekuluje, a zrychlení se ztrácí.
Ollama k tomu v textu commitu uvádí vlastní čísla. Měřila je sama, na stroji s čipem M5 Max s technikou DFlash, a nikdo jiný je zatím nezopakoval:
- u modelu muse-glimmer 30B v úloze HumanEval stojí výchozí 1,1 podle Ollamy 13 až 16 % celkové propustnosti, a to stejně při hladovém výběru jako při teplotě 1;
- u prózy při teplotě 0,8 klesá podíl přijatých návrhů z 0,44 na 0,30;
- u modelu qwen3.6-35B se průměrná délka přijatého návrhu zkracuje ze 4,3 na 3,5 tokenu a u prózy prý řídicí prvek přestane spekulovat úplně.
Které modely z knihovny se posunou
Registr Ollamy vydá u každého modelu vrstvu s jeho parametry, takže si výčet z commitu jde přepočítat. Prošli jsme patnáct záznamů z knihovny a vyšlo tohle:
- Beze změny zůstávají qwen3, qwen3.6 a qwen3.8, které mají
repeat_penaltypřišpendlený na 1, a qwen3-coder s hodnotou 1,05. - Postih ztrácí gemma4, deepseek-r1, qwen3.5, llama3.3, phi4, mistral, gpt-oss a glm4, které ho v parametrech nemají vůbec. Balení granite4, qwen2.5 a devstral nenese vrstvu s parametry ani jednu, takže spadají do téže skupiny.
- Zvláštní případ je qwen3.5. Ten má v parametrech
presence_penaltyna hodnotě 1,5, a dosud se na to vršil ještěrepeat_penalty1,1 ze serveru. Odteď působí jen ten první. - Qwen2.5 se doporučení autora nedostane ani teď. Qwen k němu doporučuje 1,05, jenže balení v Ollamě žádné parametry neveze, takže se model posunul z 1,1 na 1,0. Aby seděl s doporučením, musela by mu Ollama parametry dopsat.
Modelů běžících u poskytovatele, tedy třeba kimi-k3 nebo deepseek-v4-flash, se to netýká vůbec – výchozí hodnoty serveru k nim nedoléhají.
Když se model rozjede do kolečka
Nepříjemnou půlku si Ollama napsala sama: menší a starší modely se teď můžou začít opakovat víc, protože jim to postih doteď zakrýval. Lékem podle jejích poznámek k vydání není zapnout postih zase všem, ale nastavit ho tomu jednomu modelu – parametrem v jeho Modelfilu, případně volbou v konkrétním požadavku. Postup jsme nezkoušeli, opisujeme ho z dokumentace; stránka o Modelfilu už novou výchozí hodnotu uvádí, byť příklad v posledním sloupci tabulky zůstal na 1.1. Souvisejícího repeat_last_n, tedy kolik tokenů zpátky se postih vůbec dívá, se změna netýká; zůstává na 64.
Pro čtenáře, který si model pouští u sebe, z toho plyne jedna praktická věc: po aktualizaci na 0.32.10 vrací stejné zadání jiný text, aniž kdokoli sáhl na nastavení. Kdo si prompt ladil podle výstupu, začíná s laděním znovu. A ze čtyř prostředí, která jsme prověřili, byla Ollama poslední, kde ten postih ještě běžel – bezmála dva a půl roku po llama.cpp.
Zdroje
- Poznámky k vydání Ollama 0.32.10 (GitHub, 12. 8. 2026)
- Commit „api: stop applying repeat_penalty 1.1 to models that don't set one“ (GitHub)
- Commit „common : disable repeat penalties by default“ v llama.cpp (GitHub, 19. 3. 2024)
- Parametry vzorkování ve vLLM a v SGLangu (GitHub)
- Dokumentace Ollamy k Modelfilu