Ako čítať benchmarky programovania s AI a vyhnúť sa víťazom na papieri
MarkdownČo merajú HumanEval a SWE-bench a ako pri čítaní rebríčkov AI coding zohľadniť agent wrapper, podmienky, aktuálnosť úloh, variabilitu a náklady.
Prečítať celý článok
Stručne: údaj „rieši 76 percent úloh“ sám osebe takmer nič nehovorí. Záleží na tom, ktorá sada úloh priniesla tento výsledok, ktorý model a agent wrapper sa započítali spoločne, či sú úlohy nové alebo staré a koľko to stálo. Bez týchto podmienok sa percento hodí na reklamný banner, nie na výber nástroja.
Ďalej jednoducho vysvetlím, čo merajú dva hlavné benchmarky programovania, kde sa v tabuľkách skrýva háčik a ako si každú tabuľku poradia skontrolovať za minútu, než sa na ňu spoľahnete. Nižšie sa rozoberajú historické definície benchmarkov. Článok nereprodukuje živú párovú snímku rebríčka; aktuálne skóre či cenové porovnanie potrebuje vlastnú prepojenú tabuľku, dátum a konfiguráciu.
Viac o práci s modelmi nájdete v dokumentácii Ailoot.
Čo vlastne ukazuje percentuálny výsledok benchmarku?
Kľúčový záver
Percentuálny výsledok benchmarku je podiel úloh z konkrétnej sady, ktoré nástroj dokončil s funkčným výsledkom za konkrétnych podmienok. Úlohy sa kontrolujú automatizovanými testami: kód testom buď prejde, alebo neprejde; vyhodnotenie je objektívne a nič nie je „takmer“. Sada úloh je však vždy úzka a vopred známa a podmienky merania sa pri jednotlivých nástrojoch líšia. Percento teda odpovedá na otázku „Koľko z týchto úloh tento nástroj vyriešil týmto spôsobom?“. Neodpovedá na otázku „Zvládne moju prácu?“.
Benchmark funguje jednoducho. Existuje hotový zoznam programátorských úloh. Nástroj dostane každú úlohu, vráti kód a systém spustí automatizované testy, aby zistil, či riešenie funguje. Podiel úspešných úloh je percento uvedené v tabuľke.
Výhodou je objektívnosť vyhodnotenia. Test je buď zelený, alebo červený; nikto neudeľuje známku „od oka“. V tomto ohľade sú benchmarky čestnejšie než akékoľvek recenzie či referencie.
Slabina je presne tá istá. Sada úloh je konečná a vopred známa všetkým vrátane tých, ktorí modely trénujú. Každé meranie má vlastné podmienky. A úlohy v sade sa takmer určite nepodobajú na to, čo robíte vy. Z toho vyplývajú všetky nástrahy, o ktorých hovorím nižšie. Percento opisuje správanie nástroja na uzavretom zozname úloh niekoho iného a nedá sa priamo preniesť na váš projekt.
Čo meria HumanEval a prečo sa podľa neho už nedá vyberať?
Kľúčový záver
HumanEval je stará sada 164 malých úloh v Pythone: modely dostanú opis funkcie, napíšu kód a automatizované testy úlohu skontrolujú. Keď bola sada vydaná v roku 2021, prvý Codex vyriešil na jeden pokus 28.8 percent úloh. Dnes silné modely zvládnu takmer všetky, takže už medzi nimi nedokáže rozlišovať. Navyše ide o hračkárske úlohy: jedna funkcia napísaná podľa opisu má ďaleko od práce na veľkom živom projekte. Vysoké skóre HumanEval v roku 2026 takmer nič neznamená.
HumanEval vytvorila spoločnosť OpenAI a vydala ho v roku 2021 spolu s modelom Codex. Obsahuje 164 malých úloh v Pythone: modely dostanú slovný opis funkcie, napíšu jej telo a sada automatizovaných testov skontroluje, či funguje správne.
V tom čase to bol dobrý rozlišovací ukazovateľ. Vlastná práca autorov uvádza tento údaj: prvý Codex vyriešil na jeden pokus 28.8 percent úloh, zatiaľ čo bežný GPT-3 nevyriešil ani jednu.
V benchmarku HumanEval náš model vyrieši 28.8 percent problémov, zatiaľ čo GPT-3 vyrieši 0 percent a GPT-J 11.4 percent.
Odvtedy sa modely výrazne zlepšili a dnes silné modely zvládnu takmer celý HumanEval. Keď všetci dosahujú skóre blízke 100 percentám, tabuľka už nič nerozlišuje: rozdiely medzi nástrojmi sa strácajú. Hovorí sa tomu saturácia benchmarku a HumanEval je v tomto stave už dlho.
Druhá chyba je vážnejšia. Úlohy sú drobné: napísať jednu funkciu podľa opisu. Vaša skutočná práca je iná — zahŕňa veľký projekt s históriou, v ktorom treba pochopiť cudzí kód, nájsť chybu a nerozbiť pri tom susedný kód. Medzi „napíš funkciu od nuly“ a „oprav chybu v živom projekte“ je priepasť. Vysoké skóre HumanEval dnes preto už nie je dôvodom na výber nástroja; skôr znamená, že „základy sú zvládnuté“.
Čo meria SWE-bench a ako sa viac približuje skutočnej práci?
Kľúčový záver
SWE-bench vychádza zo skutočných chýb v populárnych projektoch GitHub: 2,294 úloh z 12 repozitárov Pythonu. Nástroj dostane opis problému, upraví kód a systém spustí testy, ktoré pred zmenou zlyhávali a po oprave by mali prejsť. Je to oveľa bližšie skutočnej práci než HumanEval, preto sa používa na porovnávanie serióznych nástrojov. Náročnosť ukazuje jeho história: prvý jednoduchý prístup vyriešil menej než dve percentá úloh.
SWE-bench je zásadne odlišný, a preto zaujímavejší. Vznikol na základe skutočných issues a pull requests v populárnych projektoch GitHub. Podľa jeho autorov obsahuje 2,294 úloh z 12 veľkých repozitárov Pythonu a bol vydaný v októbri 2023.
Logika vyhodnotenia je objektívna. Vyberú bod v projekte, kde sa vyskytla skutočná chyba, a sadu testov, ktoré v tom čase zlyhávali. Nástroj dostane opis problému a upraví kód. Potom sa spustia tie isté testy: ak uspejú, úloha je skutočne vyriešená; nikto tu neverí slovným sľubom.
Zhromaždili sme 2,294 úloh preskúmaním pull requests a issues z 12 populárnych repozitárov Pythonu. Každá úloha vychádza z pull requestu prepojeného s issue, ktorý mení aspoň jeden súbor súvisiaci s testami.
Prvé výsledky ukazujú, o koľko je to ťažšie než hračkárske úlohy. Prvý základný prístup dosiahol v SWE-bench iba 1.96 percent a prvý agent dosiahol 12.47 percent. Inými slovami, už len priblížiť sa skutočnej programátorskej práci bolo ťažké. Percentá neskôr rástli, ale začínali blízko nuly.
Keď dnes v rebríčku AI coding agentov vidíte vysoké čísla, najčastejšie pochádzajú zo SWE-bench alebo z jeho podmnožiny 500 úloh overených ľuďmi, ktorá sa volá SWE-bench Verified. Je to rozumný benchmark. Aj on má však podmienky, bez ktorých je percento zavádzajúce, a o tom budem hovoriť ďalej.
Ani najčestnejší benchmark v tabuľke ešte nie je výsledkom na vašom projekte. Výsledok závisí od toho, ako s nástrojom pracujete, a prvý riadok rebríčka hovorí len málo. Čistý kontext zvýši vašu osobnú úspešnosť oveľa výraznejšie než výber modelu z tabuľky.
Prečo má ten istý model rôzne percentuálne výsledky?
Kľúčový záver
Pretože výsledok závisí aj od iných vecí než od modelu. Každé meranie zahŕňa aspoň tri prvky: samotný model, agent wrapper okolo neho a zapnutú úroveň uvažovania. Zmena nastavenia uvažovania môže vytvoriť rôzne riadky rovnakého modelu a agenta. Bez názvu testovacieho prostredia, revízie, nastavení a datovaného zdroja však nepodporujú číselné porovnanie. Preto treba porovnávať celé kombinácie; samotná značka modelu toho veľa neurčuje.
Tu sa skrýva najčastejšia chyba pri čítaní benchmarkov. Ľudia čítajú tabuľku ako rebríček modelov: tento model je o dve percentá múdrejší než tamten. Percento však ovplyvňujú tri veci a model je len jednou z nich.
Po prvé, samotný model. Po druhé, agent wrapper okolo neho: program, ktorý umožňuje modelu prechádzať súbory, spúšťať príkazy, čítať chyby a prepisovať kód. Ten istý model v šikovnom wrapperi a jednoduchom wrapperi dosiahne rôzne výsledky, pretože wrapper určuje, ako model pracuje s projektom. Po tretie, úroveň uvažovania — teda ako dôkladne model premýšľa nad každým krokom. Čím dlhšie premýšľa, tým vyššie je zvyčajne percento, ale aj náklady.
Reprodukovateľné porovnanie má uchovať celé nastavenie. Nasledujúca tabuľka je šablóna vykazovania, nie nameraný rebríček:
| Pole | Beh A | Beh B |
|---|---|---|
| Model a presná verzia | Zaznamenajte testovanú verziu | Rovnaká verzia pre kontrolované porovnanie |
| Prostredie agenta a revízia | Zaznamenajte repozitár a commit | Rovnaké prostredie a commit |
| Sada úloh a skórovanie | Zaznamenajte podmnožinu a revíziu hodnotenia | Rovnaká sada a skórovanie |
| Nastavenie uvažovania | Zaznamenajte nastavenie A | Zaznamenajte nastavenie B |
| Výsledok a dôkazy | Počet vyriešených, menovateľ, logy, dátum | Počet vyriešených, menovateľ, logy, dátum |
To ukazuje, čo sa zmenilo a či porovnanie skutočne izoluje nastavenie uvažovania. Predchádzajúci číselný príklad bez odkazu sa nepovažuje za nameraný výsledok.
Pravidlo je takéto: dobrý rebríček vždy uvádza, ktorý model, wrapper a úroveň uvažovania boli použité. Ak tabuľka obsahuje len názov modelu a percento, bez uvedenia wrappera, ťažko jej dôverovať: neviete, čo sa vlastne meralo. Viac o tom, z čoho pozostáva kombinácia „model plus wrapper“, vysvetľuje článok o rebríčku AI coding agentov.
To tiež vysvetľuje, prečo má nástroj s najvyšším skóre niekedy u vás problémy. Benchmark meria model v niečom vyladenom wrapperi, na úlohách niekoho iného. Váš wrapper, projekt a kontext, ktorý modelu poskytnete, sú odlišné. Na vašom projekte výsledok závisí od kontextu; riadok tabuľky je druhoradý.
Prečo úlohy „zostarnú“ a čo je únik tréningových dát?
Kľúčový záver
Modely sa trénujú na obrovskom množstve textu a kódu z internetu a populárne benchmarky sú verejne dostupné. Ak sa úlohy a ich riešenia dostali do tréningových dát, model si ich mohol zapamätať a pri vyhodnocovaní len reprodukovať to, čo si zapamätal, namiesto toho, aby úlohy vyriešil. Tomu sa hovorí únik úloh do tréningových dát. Čím je sada staršia a známejšia, tým vyššie je riziko: starý benchmark skôr ukáže pamäť modelu než jeho schopnosť uvažovať. Nové a uzavreté sady úloh sú spoľahlivejšie než staré a verejné.
Tu je háčik, ktorý samotné percento neodhaľuje, ale podkopáva jeho význam viac než čokoľvek iné. Modely sa trénujú na rozsiahlych množstvách textu a kódu získaných z internetu. A takmer všetky coding benchmarky sú verejne dostupné: úlohy, testy aj referenčné riešenia.
Mechanizmus je jednoduchý. Ak sa úloha a jej správne riešenie dostali do tréningových dát, model si ich mohol zapamätať. Počas vyhodnocovania potom úlohu ani tak nerieši, ako skôr vyťahuje z pamäti známu odpoveď. Vyzerá to ako riešenie, ale je to len spomienka. Hovorí sa tomu únik tréningových dát alebo kontaminácia dát.
Čím je sada úloh staršia a populárnejšia, tým vyššie je riziko. HumanEval je online od roku 2021; mnohokrát ho prepísali, analyzovali a zaradili do nespočetných súborov dát. Bolo by zvláštne očakávať, že ho moderný model „nevidel“. Preto je aktuálnosť úloh samostatným ukazovateľom kvality benchmarku. Dobrá sada sa buď pravidelne aktualizuje, alebo niektoré úlohy ponecháva uzavreté, aby sa ich nebolo možné vopred naučiť.
Čo robiť pri čítaní rebríčka? Skontrolujte dátum úloh a to, či sa sada aktualizuje. Ak benchmark vychádza z čerstvých chýb z posledných mesiacov, zaslúži si väčšiu dôveru. Ak ide o sadu starú päť rokov, vysoké percento na nej hovorí viac o dobrej pamäti modelu než o schopnosti vyriešiť vašu novú úlohu. Tento konkrétny jav ukazuje príklad v článku o novom benchmarku FrontierCode, ktorého úlohy boli zámerne nové.
Prečo rozdiel niekoľkých percentuálnych bodov často nič neznamená?
Kľúčový záver
Výsledky benchmarkov kolíšu: ten istý nástroj na tých istých úlohách dosahuje pri rôznych spusteniach mierne odlišné výsledky, pretože model neodpovedá vždy rovnako. Jedno- alebo dvojbodový rozdiel medzi susednými riadkami rebríčka sa preto často stratí v šume a neznamená skutočnú prevahu. Samostatne skontrolujte aj cenu: podobné percentá môžu stáť niekoľkonásobne viac. Náklady porovnávajte iba pri uvedení oboch celých nastavení, mier úspechu, fakturačných predpokladov a menovateľa ceny.
Ďalšia vec, ktorá robí prvé miesto v tabuľke zavádzajúcim: model neodpovedá zakaždým rovnako. Na rovnakú výzvu môže zvoliť mierne odlišný postup uvažovania. Ak teda jeden nástroj spustíte na jednej sade úloh viackrát, percento bude medzi jednotlivými spusteniami trochu kolísať. Toto kolísanie sa nazýva variabilita.
Praktický záver je jednoduchý. Ak sa dva riadky rebríčka líšia o jedno alebo dve percentá, tento rozdiel môže byť pokojne len šum. Naháňať sa za nástrojom, ktorý je „o dve percentá vyššie“, je nerozumné: pri ďalšom spustení si ľahko vymenia miesta. Rozdiel má zmysel považovať za významný, ak je citeľný a pretrváva vo veľkej sade úloh; pár bodov túto podmienku nespĺňa.
A napokon je tu cena, ktorá je takmer vždy dôležitejšia než samotné percento. Podobné výsledky môžu stáť veľmi rozdielne sumy. Cenové porovnanie potrebuje obe konfigurácie modelu a agenta a celkové výdavky hodnotenej sady vrátane neúspešných pokusov. Pri cene za pokus deľte počtom skúšaných úloh, pri cene za vyriešenú úlohu počtom vyriešených a zvolenú mieru označte. Článok nedodáva zdrojované párové cenové meranie. Preto vždy čítajte riadok rebríčka spolu s cenou, pretože samotné percento hovorí len málo. Článok o cene jednej vyriešenej úlohy vysvetľuje, ako spravodlivo porovnávať nástroje podľa nákladov.
Ako prečítať ľubovoľnú tabuľku benchmarku za minútu?
Kľúčový záver
Skôr než sa spoľahnete na rebríček, položte mu sedem otázok: Aká sada úloh? Sú úlohy nové alebo staré? Ktorý model? Ktorý agent wrapper? Aká úroveň uvažovania? Aká je cena za úlohu? Aká veľká je variabilita? Ak tabuľka neodpovedá aspoň na polovicu z nich, nedá sa jej dôverovať: pravdepodobne ide o reklamu. Osobitne si overte, či sa úlohy v sade podobajú na vašu skutočnú prácu, pretože ani objektívne percento dosiahnuté na úlohách niekoho iného sa neprenesie na váš projekt.
Zhrňme si všetko do krátkeho kontrolného zoznamu. Otvorte ľubovoľnú tabuľku rebríčka a postupne prejdite týchto sedem bodov.
- Aká sada úloh? HumanEval je dnes slabý; SWE-bench sa viac približuje skutočnej práci. Ak sada vôbec nie je pomenovaná, nemusíte čítať ďalej.
- Sú úlohy nové alebo staré? Nová alebo čiastočne uzavretá sada je spoľahlivejšia než stará verejná sada, ktorú sa model mohol naučiť.
- Ktorý model sa meral? Presný názov a verzia, nie neurčité „AI“ ani názov rodiny modelov.
- Ktorý agent wrapper? Percento patrí kombinácii „model plus wrapper“. Ak wrapper nie je uvedený, neviete, čo sa meralo.
- Aká úroveň uvažovania? Ten istý model na rôznych úrovniach dosahuje rôzne percentá a stojí rôzne sumy.
- Koľko stojí jedna úloha? Podobné výsledky sa môžu cenou líšiť násobne. Čítajte percento spolu s nákladmi.
- Aká je variabilita? Rozdiel jedného či dvoch bodov medzi riadkami často predstavuje iba šum.
Je tu aj ôsma otázka, ktorá sa týka vás: Podobajú sa úlohy v sade na vašu prácu? Benchmark úloh v Pythone veľa nehovorí človeku, ktorý vytvára webovú stránku alebo bota s inou sadou nástrojov. Ani objektívny výsledok na úlohách niekoho iného nezaručuje výsledok na vašom projekte. Existuje len jeden spoľahlivý spôsob, ako to zistiť: zadajte nástroju niekoľko svojich typických úloh a sami sa pozrite na výsledky. Článok o tom, ako skontrolovať kód vygenerovaný AI, vysvetľuje, ako zistiť, či kód funguje, aj keď sami neprogramujete.
Čomu sa teda nakoniec venovať?
Kľúčový záver
Všímajte si podmienky pod prvým riadkom, nielen samotný prvý riadok: sadu úloh a jej aktuálnosť, kombináciu „model plus wrapper“, úroveň uvažovania, cenu za úlohu a mieru variability. Holé percento bez týchto podmienok nič nedokazuje. A pamätajte, že ani objektívne percento na úlohách niekoho iného sa neprenesie na váš projekt: rozhodujúce je vždy testovanie na vašich vlastných reálnych úlohách a vaše výsledky na nich závisia viac od toho, ako s nástrojom pracujete, než od jeho miesta v rebríčku.
Hlavná myšlienka celého článku je stručná: miesto v rebríčku je dôvodom pozrieť sa na nástroj bližšie, ale ďalej musíte pátrať sami. Vysoké číslo hovorí iba to, že nástroj si počínal slušne na konkrétnom uzavretom zozname úloh za konkrétnych podmienok. Percento neukazuje, či tieto podmienky zodpovedajú vašim.
Prečítajte si teda, čo sa skrýva pod riadkom rebríčka: o aké úlohy ide, ako sú aktuálne, aká kombinácia modelu a wrappera sa použila, aká bola úroveň uvažovania, koľko to stojí a či sa rozdiel nestráca v šume. Tabuľka, ktorá na tieto otázky neodpovedá, patrí na reklamný banner. Recenzia ktorý nástroj používať na programovanie v roku 2026 vysvetľuje, ktorý nástroj si vybrať pre svoje úlohy.
A toto je dôležitejšie než ktorýkoľvek benchmark. Aj najlepší nástroj v rebríčku má problémy s chaotickým kontextom a funguje dobre s čistým kontextom. Vaša osobná úspešnosť závisí od toho, čo modelu poskytnete a ako zadáte úlohu; riadok v tabuľke je druhoradý. Rebríček pomáha vyradiť zjavne slabé možnosti, ale výsledok vytvárate vy.
Zdroje
- HumanEval - dataset openai/openai_humaneval (huggingface.co) - sada 164 úloh v Pythone, kontrolovaných automatizovanými testami
Ďalšie kroky — Ailoot.
Viac podrobností
Otázky a odpovede: Ako čítať benchmarky AI coding a vyhnúť sa výberu víťaza na papieri
Čo zaznamenať pred porovnaním dvoch riadkov benchmarku?
Presný model, prostredie a revíziu agenta, nastavenia uvažovania, podmnožinu úloh, metódu skórovania, dátum a priamy zdroj výsledku. Bez týchto polí nemožno rozdiel skóre pripísať jednej zmene nastavenia.
Je cena za skúšanú úlohu rovnaká ako cena za vyriešenú úlohu?
Nie. Pri prvej miere deľte celkové výdavky hodnotenia všetkými skúšanými úlohami, pri druhej vyriešenými úlohami. Započítajte výdavky neúspešných pokusov a pred cenovým porovnaním označte menovateľa.