Přeskočit na obsah
EshAlora
Česky English

Proč model řeší stejný úkol pokaždé jinou cestou?

Stejný model Claude Sonnet 4.6, stejný web, stejný prompt, beze změny jediného slova. Jednou to trvalo půl hodiny, podruhé patnáct vteřin.


Stejný úkol, jiná cesta

Zadání bylo jednoduché: spočítat počet příspěvků nad určitou částku na crowdfundingové stránce. Projít seznam, vyfiltrovat, sečíst.

Poprvé Claude Sonnet 4.6 otevřel stránku a řešil to jako člověk s tužkou a papírem. Dělal snímky obrazovky, ručně procházel položky na každé stránce, porovnával částky jednu po druhé, scrolloval a počítal dál. Trvalo mu to půl hodiny.

Podruhé, druhý den, dostal stejný prompt beze změny jediného slova. Zavolal API té stránky, stáhl si data strukturovaně a měl výsledek za patnáct vteřin.

Prompt jsem neměnila. Nejspíš model sám zvolil jinou cestu, a ten rozdíl vyšel na stodvacetinásobek času. Co se mezi běhy změnilo jinde, třeba stránka, nástroje nebo zátěž serveru, kontrolovat nemůžu.

Proč se cesty rozejdou

Jazykový model nepíše odpověď najednou. Skládá ji po malých kouscích, tokenech, a u každého má na výběr víc možností s různou pravděpodobností. Při běžném nastavení z nich losuje. Kdo si představí, že si model u každého kroku hodí kostkou, není daleko od pravdy.

U agenta, který pracuje po krocích, má takový hod velký dosah, protože rozhodnutí na začátku určí celou další cestu. Ten úkol šel řešit víc způsoby. V prvním běhu to vypadá, že model rovnou počítal s tím, že stránka žádné API nemá, a pustil se do snímků obrazovky. Ve druhém nejdřív zjistil, jestli API existuje, a když ano, stáhl si data rovnou. Jiný první krok a rozdíl vyšel na stodvacetinásobek času.

Proč to není chyba

Model při každém volání volí postup znovu, od nuly. Stejný vstup neznamená stejnou cestu k výsledku, a obě odpovědi byly navíc správné. Rozdíl nebyl v kvalitě, byl v tom, jak se k ní model dostal.

V praxi to znamená, že agent, který zpracovává tisíce podobných požadavků, může na část z nich zvolit pomalý postup a na část rychlý. Zadání i data přitom zůstanou stejné. Náklady na výpočet i čas se pak mezi jednotlivými požadavky liší, aniž by se změnilo cokoli na vstupu.

Co o tom už je změřené

Příbuzný jev je změřený, i když ne přímo na agentech. Berk Atil a kol. v práci *Non-Determinism of „Deterministic" LLM Settings* (arXiv, 6. srpna 2024) testovali pět modelů nastavených na deterministický režim. Každý řešil osm úloh po deseti bězích. Přesnost kolísala až o 15 % a rozdíl mezi nejlepším a nejhorším možným výsledkem dosáhl až 70 %. Žádný z modelů nevracel spolehlivě stejnou přesnost napříč všemi úlohami, natož pokaždé stejný text.

Proč to tak je, popsal o rok později Horace He z Thinking Machines Lab v textu *Defeating Nondeterminism in LLM Inference* (10. září 2025). S teplotou nastavenou na nulu, to znamená bez losování, nechal model Qwen3-235B tisíckrát dokončit tentýž text a dostal 80 různých výsledků. Do 102. tokenu byly všechny stejné, na 103. se rozešly. Příčina podle něj není v modelu, ale na serveru. Výsledek výpočtu závisí na tom, kolik dalších požadavků server zrovna zpracovává. Ten počet se mění s provozem.

Na běžných serverech se proto ani model nastavený na deterministický režim nemusí mezi běhy shodovat sám se sebou. Dá se to ale opravit. Když server počítal nezávisle na tom, kolik požadavků zrovna zpracovává, vyšlo všech 1000 dokončení stejně.

Obě práce měří rozdíly ve vygenerovaném textu při teplotě nula a ani jedna netestovala Claude. Můj případ je jiný. Rozdíl v něm byl v postupu a čase, ne v odpovědi. Jak často se agent rozhodne pro jinou cestu, tyhle práce neříkají.

Co dva běhy dokazují a co ne

Půl hodiny proti patnácti vteřinám je rozdíl mezi dvěma běhy.

Kdybych to zkusila jen jednou, měla bych dojem, že model tenhle úkol vždycky řeší pomalu. Kdyby to náhodou vyšlo obráceně, měla bych dojem opačný. Obojí by bylo pravdivě zaznamenané a obojí by to bylo tvrzení o jednom vzorku, ne o modelu.

Stodvacetinásobek beru jako doklad toho, že mezi dvěma cestami k témuž výsledku může být obrovský rozdíl, ne jako číslo, které se dá čekat pokaždé. Aby šlo říct, jak moc se ta cesta typicky liší, potřebovala bych desítky opakování téhož zadání, ne dvě.

Co si z toho vzít

Když model odpovídá pomaleji, než by měl, nebo řeší úkol zbytečně složitě, dá se zkusit stejný prompt ještě jednou. Ne proto, že druhý pokus musí dopadnout rychleji, ale protože cesta, kterou model zvolí, není daná jenom vstupem. Je to jedna z možností, které si vybírá znovu při každém běhu.