Knihovna Transformers vypsala od února 33 nekompatibilních změn v jedenácti vydáních
Verze 5.15.0 knihovny Transformers vyšla 10. srpna 2026 a pod nadpisem Breaking changes má čtyři položky. Od lednového vydání pětky jich projekt vypsal 33, rozdělených do jedenácti vydání; jedno z nich bylo opravné. U jedné z dnešních změn popisují poznámky přísnější stav, než jaký je v kódu.

Hugging Face vydal 10. srpna 2026 verzi 5.15.0 knihovny Transformers. Je to balíček, přes který se v Pythonu načítají a spouštějí jazykové modely, a jeho poznámky k vydání mají vlastní oddíl nadepsaný Breaking changes. Tentokrát v něm stojí čtyři položky.
Co dnešní vydání rozbije
První změna se týká takzvaných kernelů, tedy ručně optimalizovaných výpočetních rutin pro grafické karty. U modelů s lineární pozorností (Mamba, GDN a další) se dosud vybíraly samy; návrh změny 47630 z nich udělal volbu, kterou si uživatel musí zapnout. Sáhl přitom na 43 souborů.
Druhá mění ořez cache, tedy vyrovnávací paměti klíčů a hodnot, kterou si model drží mezi jednotlivými tokeny. Metoda crop() brala dosud absolutní velikost, na kterou se má cache zkrátit; nově bere záporné číslo, tedy počet tokenů k odebrání (návrh 47720).
Třetí zapíná u rodiny modelů T5 rozhraní ALL_ATTENTION_FUNCTIONS, takže se výchozí implementace pozornosti může změnit z dosavadní jediné cesty na SDPA. Kdo potřebuje starý stav, musí podle poznámek nastavit attn_implementation="eager" (návrh 47014).
Čtvrtá je nejrozsáhlejší: návrh 46556 upravil 105 souborů s procesory multimodálních modelů a odstranil z nich soukromé pomocné funkce. V jeho rozdílu je vidět třeba _is_str_or_image u PaliGemmy, _insert_media_placeholders u InternVL nebo _expand_image_tokens u LLaVA-OneVision. Kdo si je zavolal z vlastního kódu, dostane po aktualizaci chybu.
Třiatřicet položek v jedenácti vydáních
Dnešní čtyřka není výjimka. Prošli jsme přes API GitHubu poznámky ke všem vydáním řady 5 a spočítali odrážky pod nadpisem Breaking changes; verzi 5.0.0 jsme vynechali, protože její poznámky jsou přechodový návod o 104 000 znacích, kde je nekompatibilních změn celý dokument.
| vydání | položek |
| 5.1.0 (5. 2.) | 6 |
| 5.2.0 (16. 2.) | 3 |
| 5.3.0 (4. 3.) | 4 |
| 5.4.0 (27. 3.) | 5 |
| 5.5.0 (2. 4.) | 2 |
| 5.6.0 (22. 4.) | 1 |
| 5.8.0 (5. 5.) | 1 |
| 5.9.0 (20. 5.) | 1 |
| 5.10.1 (3. 6.) | 2 |
| 5.13.0 (3. 7.) | 4 |
| 5.15.0 (10. 8.) | 4 |
Dohromady 33 položek v jedenácti vydáních z 27, která po pětce vyšla. Dvaatřicet z nich má u sebe výstražný znak, kterým projekt nekompatibilní změny odlišuje; jedna v 5.2.0 ho nemá a pod nadpisem stojí jen tak. Projekt je tedy vypisuje sám a na jednom místě, takže kdo poznámky před aktualizací otevře, dozví se o nich předem.
Pozoruhodná je devátá řádka. Verze 5.10.1 je opravná, tedy taková, u které se mění jen poslední číslo, a přesto v ní jsou dvě nekompatibilní změny: oprava přetečení ve float16 u vizuálního pooleru Gemmy 4 a přidání základního modelu bez hlavy do ALM. Kde by se pravidlo o verzování dalo čekat, tedy v CONTRIBUTING.md a v obsahu dokumentace, žádná stránka o významu čísel verze nestojí.
Poznámka k vydání je přísnější než kód
U ořezu cache poznámky tvrdí, že metoda „nově přijímá pouze záporné hodnoty“ a že kdo ji volá přímo, musí si kód upravit. Soubor cache_utils.py ve značce 5.15.0 to má odstupňované do tří podob.
Běžná vrstva DynamicLayer kladné číslo pořád přijme. Zaloguje varování, že „volání crop s kladnou hodnotou je zastaralé a bude odstraněno ve verzi 5.18“, a pak si hodnotu sama přepočítá. Vrstva s posuvným oknem vyhodí RuntimeError, ale jen tehdy, když už okna dosáhla; dokud je pod ním, chová se jako ta běžná. A u vrstev s lineární pozorností kladné číslo skončí chybou vždy.
Pro čtenáře, který balíček aktualizuje, je to rozdíl mezi „program spadne“ a „program napíše varování do logu a počítá dál“. Skutečné odstranění je v kódu naplánované na 5.18 a stejné lhůty nesou v témže souboru další čtyři zastaralé parametry; metoda get_max_cache_shape má mizet už v 5.16, tedy v příštím vydání.
Ne každá vydaná verze má poznámky
Seznam nekompatibilních změn žije jen v poznámkách k vydání, a ten záznam není úplný. Evidence PyPI zná 29 verzí řady 5, GitHub jich má vypsaných 28. Verze 5.10.4 z 15. června je na PyPI a instaluje se stejně jako kterákoli jiná, jenže na GitHubu k ní není ani značka, ani poznámky. Naopak 5.10.3 má značku i poznámky, ale na PyPI chybí.
Sledovat vývoj knihovny přes hlavní větev místo vydaných verzí přitom taky nestačí: hlavní větev přestala den před tímhle vydáním vydávat starý soubor z cache za aktuální, a i to byla změna chování, kterou uživatel pozná až podle výsledku.
Praktický důsledek je nudný, ale konkrétní. Kdo má Transformers v závislostech zapsaný jako >=5, může si aktualizací přinést kteroukoli ze 33 změn najednou. Zápis s horní mezí na pořadovou verzi ho o ně nepřipraví, jen mu dá vybrat, kdy je vezme.