Přeskočit na obsah
Modely 3 min čtení

DeepSeek po měsíci přijal opravu cache indexeru v kódu pro V4.1 Flash

DeepSeek 12. října přijal do repozitáře V4.1 Flash opravu, kterou dostal hned v den zveřejnění vah. Ukázkový kód pro spuštění modelu při některých krocích četl klíče indexeru, které patřily jiné vrstvě. Týž den DeepSeek bez vysvětlení zvedl požadovanou verzi knihovny TileLang z 0.1.8 na 0.1.12.

DeepSeek 12. října 2026 začlenil do repozitáře modelu V4.1 Flash na Hugging Face návrh změny #12 s názvem „Restore each indexer's K cache on incomplete compression steps“. Poslal ho uživatel ZenAlexa 10. září, tedy v den, kdy repozitář modelu vznikl. Na začlenění čekal 32 dní a to pak doprovodila jediná věta „Thank your fix!“. Týž den přibyl v repozitáři ještě jeden commit, nazvaný jen „update“, který mimo jiné mění požadovanou verzi knihovny TileLang.

Řada skříní superpočítače Titan s potištěnými dvířky
Skříně superpočítače Titan, snímek ze sady o akcelerátorech Nvidia Tesla K20. Foto: GBPublic_PR, Flickr (CC BY 2.0)

Vrstva si brala klíče, které jí nepatřily

V4.1 Flash šetří paměť tím, že klíče pro pozornost nepočítá každá ze 40 vrstev sama. Podle konfigurace referenčního kódu je počítají jen vybrané zdrojové vrstvy a další vrstvy je po nich čtou. Pro hlavní pozornost jsou zdrojové vrstvy 2, 8, 14 a 20. Pro indexer, tedy část řídké pozornosti, která z dřívějšího textu vybírá 512 míst, na která se model podívá, je jich osm. Vrstvy si klíče předávají přes jedno společné místo v paměti. Vrstvy 2 až 19 navíc slučují vždy dva po sobě jdoucí tokeny do jednoho záznamu, od vrstvy 20 dál se neslučuje.

Chyba byla v tom, kdy vrstva svou paměť klíčů do společného místa vystaví. Kód to dělal jen tehdy, když se dvojice tokenů zaplnila a vznikl nový sloučený záznam. U každého druhého tokenu se tedy nevystavilo nic, ale vrstva ze společného místa četla dál – a tam ležela paměť jiné vrstvy z předchozího průchodu. Podle autora opravy se to v dodané konfiguraci týká vrstev 2, 8 a 14. Oprava je malá: commit 8b3cec7 vytáhne přiřazení do společného místa ze sdílené podmínky, takže ho vrstva udělá při každém volání.

Měřilo se na náhodných vahách, ne na modelu

ZenAlexa chybu doložil dvakrát. Nejdřív vytáhl funkce indexeru z referenčního kódu a na procesoru ukázal, že původní verze vybere pozici 1, kdežto vlastní klíče vrstvy by vedly na pozici 0. Pak totéž zopakoval na kartě H100 s oficiálními jádry (PyTorch 2.13.0, CUDA 13.0, TileLang 0.1.8) a uměle vytvořenými vahami: opravená verze dala bit po bitu tytéž výsledky jako vrstva spuštěná samostatně.

Nezávislé potvrzení přidal 13. září uživatel malaiwah v diskusi #41. Zmenšený model s pěti vrstvami a náhodnými vahami v přesnosti FP32 pustil na procesoru dvěma cestami: jednou postupně token po tokenu, jednou celý vstup najednou. Na pozicích 200 až 223 se obě cesty v původním kódu rozcházely až o 1,991 v logitech a nejpravděpodobnější token se shodl ve 34 ze 48 porovnání. S opravou klesl rozdíl na 0,00004 a shoda byla 48 ze 48. ZenAlexa jeho skripty spustil znovu a dostal 48 shod s rozdílem 0,0000075.

Oba přitom výslovně píšou, že měřili na náhodných vahách, a ne na vydaném modelu. Kolik kvality chyba ubírala u skutečných vah, tedy nikdo nezměřil. Na chybu malaiwah narazil při ověřování vlastního návrhu na podporu V4.1 v knihovně Transformers; ten je dnes zavřený bez začlenění.

Koho se to týká

Hlavní README modelu odkazuje pro spuštění u sebe na složku inference. Její vlastní README o ní píše, že je to „a readable reference implementation rather than a production serving engine“, tedy čitelná ukázka, ne server pro provoz. Oprava se proto týká hlavně dvou skupin: kdo model pouští přímo tímhle kódem přes torchrun a kdo podle něj ověřuje vlastní implementaci. Jestli tutéž chybu převzaly i serverové implementace, se z repozitáře DeepSeeku nepozná. Váhy se nezměnily: všechny čtyři dnešní commity sahají jen na soubory ve složce inference a na .gitignore.

Druhá změna přišla bez popisu

Commit 4dd75a8 s popiskem „update“ zvedá v requirements.txt verzi TileLang z 0.1.8 na 0.1.12. Navíc v obou třídách pozornosti prožene výstup před závěrečnou projekcí kvantizací do FP8 a zpět do BF16, takže projekce dostane hodnoty zaokrouhlené tak, jako by prošly osmibitovým formátem. Proč, commit neuvádí.

Souvislost s verzí knihovny popisuje jiný, dosud otevřený návrh #67 od uživatele FakerVSdonk z 29. září. Podle něj funkce act_quant s TileLangem 0.1.8 zapisuje chybné hodnoty, kdykoli dostane víc než osm řádků naráz. Při zpracování vstupu o 2 048 tokenech na čtyřech kartách H200 mu vyšlo 75 % pozic jako NaN, tedy neplatné číslo. Generování po jednom tokenu se to netýká. Autor navrhl do jádra doplnit jednu synchronizaci vláken a uvádí, že TileLang od verze 0.1.12 ji vkládá sám. Verze 0.1.9 až 0.1.11 nezkoušel.

DeepSeek jeho návrh nezačlenil, ale zvedl verzi právě na 0.1.12. Ta je na PyPI od 8. července 2026, tedy už dva měsíce před vydáním modelu; nejnovější je 0.1.15. Jestli šlo o odpověď na #67, se z commitu nedozvíme. Podobně jako u šablony chatu, kterou modelu doplnil vývojář z Hugging Face, tak i tady přišla oprava zvenku a DeepSeek ji jen převzal. Kolik paměti si V4.1 Flash bere na klíče při dlouhém kontextu, jsme rozebrali v září.

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. Modely

    Artemis uvádí Orion-1 pro vyšetřování kybernetických útoků

    Artemis uvádí model Orion-1 pro vyšetřování kybernetických útoků z provozních záznamů. Zatím ho zkouší s vybranými zákazníky; výsledky srovnání s Claudem a GPT pocházejí…

  2. Modely

    Meta nabízí Muse Wonder Full jen ve dvou tarifech Muse Code

    Meta vydala 12. října dva modely řady Muse Wonder. Běžnou variantu zpřístupnila přes API, tedy rozhraní pro jiné aplikace, zatímco Full vyhradila dvěma dražším tarifům…

  3. Modely

    H2O-Lightning-4B vede v JevBench ve skóre zahrnujícím rychlost a cenu

    H2O.ai vyzdvihuje první místo modelu Lightning v souhrnném skóre JevBench. V pořadí podle schopností je při kontrole 8. října pátý a cena jeho provozu v hodnocení…

  4. Infrastruktura

    Google vydal EmbeddingGemma 2 pro vyhledávání v textu, obrazech i zvuku

    Google 6. října vydal EmbeddingGemma 2, která hledá souvislosti mezi textem, obrázky, videem a zvukem přímo v zařízení. Údaj o 191 MB paměti platí jen pro textové váhy;…