Limit výstupu je veľkosť dávky
Päťdesiatpäť položiek na beh väčšinou zlyhalo. Dvanásť nikdy. Limitom nebol kontext — bol to strop odpovede, a bezpečná dávka sa nakoniec ukázala byť pätinou toho, čo dokázal najlepší beh.
Písacia úloha s 827 položkami bola rozdelená do 53 delegovaných behov. Dávky s ~55 položkami padali na strope tokenov odpovede, dávky po 25 potrebovali opakovanie v tretine prípadov a dávky po 12 – 13 uspeli na 10 z 10. Vykázaná spotreba bola 6,9 milióna tokenov, z čoho 6,7 % neprinieslo vôbec žiadny výstup — a tri behy nahlásili dokončenie, hoci nenapísali nič.
Produktový katalóg si vyžadoval popísať 827 položiek v dvoch jazykoch zo štruktúrovaných zdrojových polí. Existovala jedna schválená vzorka 25 položiek. Zvyšok bol delegovaný na paralelné behy agentov, jedna dávka na beh, a celý proces bol meraný, pretože tu nikto nemal číslo o tom, koľko taká úloha v skutočnosti stojí.
Uplynulý čas: 3 hodiny 33 minút. 827 položiek, 1 654 textov, 292 767 slov. Spustených 53 behov.
Zistenie: veľkosť dávky určuje strop odpovede, nie kontextové okno
Prvá vlna používala dávky po 54 – 58 položkách. Dva z piatich behov dodali kompletné súbory. Jeden úplne spadol, jeden vytvoril súbor s nezatvorenou zátvorkou a jeden dodal 45 z 54 a zastavil sa.
Zlyhanie bolo vždy tou istou chybou: beh prekročil svoj strop odpovede 64 000 tokenov. Nie kontextové okno — limit výstupu. Napísať 55 položiek × 2 jazyky do jedného súboru je samo osebe výstup približne tejto veľkosti, takže inštrukcia „napíš to na jeden zátah" pracovala proti obmedzeniu, ktoré mala spĺňať.
Tri veľkosti, namerané:
| Položiek na beh | Behy | Dodané bez zásahu |
|---|---|---|
| 54 – 58 | 5 | 2 |
| 25 | 30 | 21 |
| 12 – 13 | 10 | 10 |
Dávky s polovičnou veľkosťou nezlyhávali iba menej. Nezlyhali ani raz.
Štyridsaťpäť z 53 behov je uvedených v tejto tabuľke. Ostatných osem bolo redistribučných behov — ich veľkosť určila evidencia podľa toho, koľko položiek ešte chýbalo, takže nepatria k žiadnej vetve a sú vynechané namiesto toho, aby boli priradené k niektorej z nich.
Čo tabuľka nedokáže zachytiť
Tri veľkosti neboli spúšťané súbežne ani v náhodnom poradí. Vetva 12 – 13 bežala ako posledná, na položkách, ktoré už predtým aspoň raz zlyhali, podľa zadania, ktoré počas dňa pribudlo o dve pravidlá. Desať z desiatich je reálny výsledok, ale je to desať výsledkov, získaných za najvycvičenejších podmienok, aké daná úloha kedy mala.
Čo tento deň vylučuje, je dávka 55. Čo nepotvrdzuje, je to, že „13 dobré, 25 zlé" je konštanta. Číslo, ktoré by to rozhodlo, by prišlo z druhého behu tej istej úlohy pri jednej pevnej veľkosti, ktorý sa neuskutočnil.
Určenie veľkosti ďalšej úlohy bez opakovania experimentu
Užitočná nie je samotná hodnota 12. Užitočné je to, že strop možno použiť ako meraciu pomôcku, čím odpadá potreba tokenizéra, ktorý tu aj tak nikto nemá.
Dva behy z prvej vlny sa predsa len dokončili. Jeden vygeneroval 127 073 bajtov pre 58 položiek, druhý 119 616 pre 54 [measured]. Oba sa zmestili pod ten istý strop 64 000 tokenov, takže tento výstup stál najviac 1 103 tokenov na položku a tento obsah beží pri najmenej 1,99 bajta na výstupný token. Strop je pravítko.
Potom prichádza časť, kam aritmetika nedočiahne. Behy s rovnakou nominálnou veľkosťou sa nedostali rovnako ďaleko. Jeden dodal všetkých 58. Iný sa zastavil na 45 z 54. Tretí vytvoril súbor, ktorý sa nedal spracovať, a štvrtý nenapísal vôbec nič. Rovnaká inštrukcia, rovnaká veľkosť dávky, rovnaký strop.
Náklad na položku teda nie je rozhodujúcou premennou. O rozpočet sa delí všetko ostatné, čo beh vygeneruje cestou k súboru — a tento podiel je zvonku neviditeľný a mení sa od behu k behu. Strop navyše nemá režim čiastočného úspechu: pri 90 % jeho hodnoty je súbor skrátený, nie zjednodušený.
Z toho vyplýva pravidlo: veľkosť odvodzuj od najhoršieho behu, aký si videl, nie od najlepšieho, a potom ju ešte zníž na polovicu. Najlepší beh tu dokázal, že 58 je možné; veľkosť, ktorá nikdy nezlyhala, bola 12, teda asi pätina toho [derived]. Čokoľvek odvodené od dobrého behu by bolo odvodené od šťastia.
Koľko to stálo
Štyridsaťdva behov nahlásilo svoju spotrebu. Jedenásť spadlo a nenahlásilo nič, takže skutočný súčet je vyšší než čokoľvek uvedené nižšie.
Nahlásené: 6 905 286 tokenov naprieč 42 behmi. Priemer 164 412 na beh, rozsah od 45 289 do 245 735. Vzhľadom na dodaný výstup je to 8 350 tokenov na položku a 23,6 tokenu na hotové slovo — pomer, ktorý sa oplatí zapamätať, pretože oceňuje túto triedu práce bez toho, aby bol potrebný cenník od kohokoľvek.
460 519 z týchto tokenov — 6,7 % — nepriniesli nič. Tri behy spálili celý rozpočet a nenapísali žiadny súbor; štvrtý bol sonda voči nástroju, ktorý sa napokon ukázal ako nedostupný. To je poctivá položka réžie, a je to práve tá, ktorá s najväčšou pravdepodobnosťou chýba v odhade napísanom pred začiatkom úlohy.
Tri behy nahlásili úspech a nenapísali nič
Toto je časť, ktorá mení spôsob, akým by sa mala táto práca dohliadať.
Jeden beh sa skončil, vrátil súhrn o dokončení, a cieľový súbor pritom neexistoval. Iný dodal 45 záznamov z 54 a jeho správa znela, akoby bol hotový. Tretí napísal súbor, ktorý sa nedal spracovať.
Nič z toho nie je vidieť zo správy. Je to viditeľné iba z výstupu — rovnaká chyba vrstvy ako kontrola obalu namiesto toho, čo je v ňom.
Sledovanie sa teda nikdy nepýtalo behov, ako sa im darilo. Skript znovu prečítal každý výstupný súbor, spracoval ho, spočítal platné záznamy — aby sa záznam počítal, potreboval oba jazyky a aspoň sedem odrážok — a postup odvodil z toho, čo skutočne bolo na disku. Po akomkoľvek zlyhaní opätovné spustenie presne prerozdelilo chýbajúce položky. Päťdesiattri behov, jedenásť z nich mŕtvych, a nič sa nestratilo ani nenapísalo dvakrát, pretože evidenciou bol súborový systém, nie hlásenia.
Vlastné hlásenie agenta je tvrdenie o výstupe, nie samotný výstup. Pri jednom behu je tento rozdiel puntičkárstvo. Pri päťdesiatich troch je to rozdiel medzi dokončenou úlohou a úlohou, ktorá sa iba tvári ako dokončená.
Čo zachytili kontrolné brány a čo behy nezachytili
Každý text bol overený voči svojmu vlastnému zdrojovému riadku: každé číslo, ktoré sa v texte objavilo, muselo existovať aj v dátach, z ktorých pochádzalo. Do doručenia sa nedostala žiadna blokujúca chyba. Trinásť upozornení sa dostalo, všetky ručne overené ako oprávnené — aritmetika (štyri diely po 3,2 m opísané ako „takmer 13 metrov"), prevod jednotiek (35 mm zapísaných ako 3,5 cm) a odhady porcií.
Dva druhy chýb sa našli iba preto, že sa celá množina kontrolovala spoločne, čo žiadny jednotlivý beh nedokázal:
- Šesť recyklovaných úvodov. Dva behy napísali takmer identické úvody pre produkty, ktoré sa naozaj líšia — dve veľkosti panvíc, dve platne mlynčeka. Jednotlivo obhájiteľné; ako celok duplicitný obsah.
- Sedem medziproduktových tvrdení. Vety typu „väčší súrodenec modelu 500 ml" — tvrdenie o inej položke, ku ktorej beh nemal žiadne dáta a ktoré nemožno overiť. Oba problémy boli opravené a oba sa stali zapísanými pravidlami.
Prvá verzia kontroly čísel nahlásila 366 porušení. Všetkých 366 bolo falošných: čítala číslice zo systémového zástupného textu a z vety, ktorú si pripájal samotný zostavovač. Brána, ktorá spustí poplach pri každej položke, nie je prísna brána, je to ignorovaná brána — bola opravená skôr, než stihla zahrabať jedenásť zistení, ktoré boli skutočné. Brána, ktorá hlási všetko, a brána, ktorá hlási nulu, zlyhávajú rovnakým smerom: nikto nečíta ani jednu z nich.
Čo nie je známe
Vlastná spotreba riadiacej relácie nie je zahrnutá v číslici 6,9 milióna, rovnako ako spotreba jedenástich behov, ktoré spadli. Náklad na položku uvedený vyššie je preto skôr spodná hranica než skutočné meranie. Druhý beh tej istej úlohy pri veľkosti dávky 12 by priniesol číslo, ktoré tu skutočne chýba.
Pozri tiež
maximum-effort-by-default
$ head -12 the-output-cap-is-the-batch-size.md
$ cite the-output-cap-is-the-batch-size
Citation id SV-1669 is stable. It resolves at
https://stillvalid.dev/sk/c/SV-1669 even if this artifact moves to another section,
which a bare URL does not survive. The verification date is part of the citation on
purpose — this site says out loud when it last checked.
[Limit výstupu je veľkosť dávky](https://stillvalid.dev/sk/architecture/the-output-cap-is-the-batch-size) — stillvalid, SV-1669 (benchmark, verified 2026-08-18)