Ollama pozastavila převod starších modelů, po kterém zabíraly na disku dvojnásobek
Ollama 0.40 začala bez ohlášení přepisovat starší stažené modely do tvaru, který llama.cpp přečte bez záplat, a původní soubor nechávala vedle jako zálohu. Převedené modely tak na disku zabíraly dvakrát tolik. Od verze 0.40.3 je převod pozastavený, zálohy ale na discích zůstaly a slíbené mazání zatím nepřišlo.
Kdo má modely stažené přes Ollamu starší než verze 0.40, mohl si v posledních týdnech všimnout, že mu ubylo místo na disku. Ollama 0.40 totiž začala tyhle modely při prvním spuštění přepisovat do nového tvaru a původní soubor si nechala vedle. Vysvětlení přišlo až v poznámkách k verzi 0.40.2 z 8. října: zálohy prý umožní bezpečný návrat ke starší verzi a některé z příštích vydání je smaže samo. Den nato převod pozastavili a verze 0.40.3 už ho nespouští. Zálohy, které do té doby vznikly, na discích leží dál.

Proč Ollama stažené modely vůbec přepisuje
Od verze 0.30 z května pouští Ollama modely ve formátu GGUF přes llama-server z projektu llama.cpp. Část modelů v její knihovně ale měla metadata a uspořádání vah, které uměl jen dřívější vlastní engine Ollamy. Aby je lidé nemuseli stahovat znovu, dostala Ollama vrstvu kompatibility: při každém načtení model přeloží v paměti do tvaru, kterému llama.cpp rozumí. Její vlastní README ji označuje za dočasnou. Cílový stav je takový, že modely budou ve správném tvaru přímo na disku a vrstva zmizí.
Verze 0.40 k tomu cíli udělala první krok. Model, který plánovač poslal starou cestou, při spuštění na pozadí přepsala do nového souboru. Kód, který převod spouští, stojí v souboru server/routes.go ve značkách 0.40.0, 0.40.1 i 0.40.2. Netýká se to modelů, které na počítačích s Apple Silicon běží přes MLX.
Verze 0.40.0 začala modely převádět bez ohlášení
Poznámky k verzi 0.40.0 mluví jen o tom, že na Apple Silicon poběží podporované modely přes MLX. O převodu v nich není ani zmínka. Stránka vydání u nich uvádí 25. září, to je ale čas prvního kandidáta; značka hotové verze nese datum 6. října. Uživatelé převod začali hlásit hned druhý den. Jednomu na Windows přestal fungovat model qwen3.5:9b, protože převod zapsal jeho manifest jako symbolický odkaz a systém ho odmítl otevřít. Opravu přinesla verze 0.40.1. Jiný uživatel na macOS viděl ve výpisu ollama list týž model dvakrát a k němu třetí položku pojmenovanou llamacpp: s dlouhým otiskem.
Druhý den se pod vlastním hlášením ptal i jeden ze spolupracovníků projektu na GitHubu, co je adresář manifests-v2 a proč tak zjevná změna struktury nebyla ohlášená.
Záloha stojí tolik místa jako model sám
Uživatel, který se k hlášení #18830 připojil s verzí 0.40.1, změřil, kolik místa převod spotřeboval. Původní soubor zůstal a převedený se zapsal vedle něj, takže každý převedený model zabíral zhruba dvojnásobek. Na jeho počítači šlo o čtyři modely:
| model | navíc na disku |
|---|---|
| gpt-oss:20b | 13,79 GB |
| qwen2.5vl:3b | 3,20 GB |
| ministral-3:3b | 2,95 GB |
| embeddinggemma:300m | 0,62 GB |
Dohromady je to 20,56 GB. Smazat záložní položku příkazem ollama rm nepomohlo: při dalším načtení modelu se vytvořila znovu. Převod navíc změnil otisk, pod kterým model vypisuje rozhraní /api/tags, takže nástroje, které podle něj poznávají aktualizaci, měly všechny čtyři modely za nové. Samotný soubor s vahami se přitom nezměnil.
Vývojáři Ollamy duplicitní řádky ve výpisu schovali změnou #18874, která šla do verze 0.40.2. V jejím popisu stojí, že obě kopie se drží dočasně kvůli návratu ke starší verzi a že staré soubory odstraní některé z příštích vydání. Prostor na disku tím schování neuvolní.
Převod skončil kvůli zátěži při běžných dotazech
Změna #18908 ze 9. října převod zakomentovala. Podle jejího popisu přidával práci každému požadavku a zatěžoval správu paměti, což vadilo hlavně při velkém počtu dotazů, třeba na modely pro vektory textu. Ve značkách 0.40.3 až po zatím poslední 0.40.7 je volání převodu opatřené poznámkou, že se má znovu zapnout. Poznámky k těm pěti vydáním o mazání záloh mlčí.
Kudy se převod vrátí, ukazuje otevřený návrh #18882. Vrstvu kompatibility odstraní a starý model převede ve chvíli, kdy se má poprvé načíst. Načítání na převod počká a nepotřebné staré soubory se uklidí hned po něm a při startu serveru. Autor návrhu změřil, co to udělá s prvním spuštěním. Gemma 3 4B o velikosti 3,34 GB na disku SATA SSD s kartou GTX 1060 se převáděla 36,46 s a první token přišel po 41,71 s místo 13,60 s. U GPT-OSS 20B (13,79 GB) na NVMe v počítači s M3 Ultra trval převod 12,25 s a první token se posunul ze 4,78 na 13,80 s. Platí to jednou, převedený model se příště načítá jako dřív. Jiná měření než autorova v návrhu nejsou.
Co se dá se zálohami udělat dnes
Poznámky k verzi 0.40.2 uvádějí krátký skript pro curl a jq, který projde modely přes místní rozhraní Ollamy, najde zálohy po převodu a smaže je. Nevyzkoušeli jsme ho, píšeme podle dokumentace. Podle týchž poznámek maže jen zálohy; kdo by se pak vrátil k verzi starší než 0.40, musí si převedené modely stáhnout znovu.
Jiný druh přechodu potkal rozhodovací modely, mezi které patří i Clef od Cloudflaru. Verze 0.40.4 je přepnula na podporu přímo v llama.cpp a dřívější stažení hlásí, že je v nepodporovaném formátu. Tady převod neexistuje, model se musí stáhnout znovu příkazem ollama pull.
Zdroje
- Ollama: poznámky k vydání 0.40.2, převod modelů a zálohy.
- Ollama: poznámky k vydání 0.40.3, pozastavení převodu.
- Ollama: změna #18908, důvod pozastavení.
- Ollama: návrh #18882, převod při načtení a měření prvního spuštění.
- Hlášení #18830, zdvojené položky a měření místa na disku.
- Hlášení #18847, nefunkční model na Windows po převodu.