Statystyka ewaluacji agentów: czy różnica między 816 a 808 jest prawdziwa?
Rankingi szeregują modele na podstawie kilku punktów różnicy; szum jest zwykle większy. Przedziały ufności dla odsetków zaliczeń, policzone na moim własnym benchmarku z 49 scenariuszami, ile scenariuszy trzeba, żeby odróżnić dwa modele, dlaczego testy sparowane są warte zachodu i dlaczego u agentów pass^k wygrywa z pass@k.
Mój własny ranking daje Qwen3.6-27B wynik 816,2, a Qwopus3.6-27B-v2-MTP 808,0. Kusi, żeby uznać pierwszy model za lepszy. Zanim ktoś to zrobi, poniżej statystyka. Dotyczy każdego benchmarku agentów, także mojego.
Odsetek zaliczeń to oszacowanie
Zaliczenie 44 z 49 scenariuszy nie znaczy, że model ma skuteczność 89,8%. Znaczy, że 89,8% to nasze najlepsze oszacowanie z 49 losowań. Przy tak małej liczbie scenariuszy niepewność jest duża. Przedział Wilsona wyznacza 95-procentowy zakres dla prawdziwego odsetka:
| Model | Zaliczone | Odsetek zaliczeń | Przedział 95% |
|---|---|---|---|
| Qwen3.6-27B (dense) | 44/49 | 0,898 | 0,782 – 0,956 |
| Qwopus3.6-27B-v2-MTP | 42/49 | 0,857 | 0,733 – 0,929 |
| Gemma-4-31B | 38/49 | 0,776 | 0,641 – 0,870 |
| Ornith-1.0-9B | 27/49 | 0,551 | 0,413 – 0,681 |
Przedziały trzech pierwszych modeli mocno na siebie zachodzą, więc na podstawie samej liczby zaliczeń benchmark nie potrafi ich uszeregować. Z ostatnim modelem jest inaczej: jego górna granica, 0,681, leży poniżej dolnej granicy najlepszego modelu, 0,782. Ta różnica jest prawdziwa.
Uczciwa lektura mojej tabeli jest więc taka: modele dense 27B i Gemma-4-31B tworzą czołową grupę, a mały model jest wyraźnie gorszy. Teza „816 wygrywa z 808” nie ma oparcia w tych danych.
Ile scenariuszy byłoby potrzeba?
Żeby wykryć prawdziwą różnicę między 85% a 90% z mocą testu 80% przy zwykłym poziomie istotności 5%, traktując modele jako niezależne próby, potrzebujesz około:
n ≈ (z_α/2 + z_β)² · (p₁(1−p₁) + p₂(1−p₂)) / (p₁ − p₂)²
≈ (1.96 + 0.84)² · (0.1275 + 0.09) / 0.05² ≈ 683 scenariuszy na model
Sześćset scenariuszy, żeby rozstrzygnąć pięć punktów. Większość benchmarków agentów ma ich od kilkudziesięciu do kilkuset, dlatego kolejność na szczycie rankingów to głównie szum.
Testy sparowane odzyskują moc testu
Jest lepszy plan eksperymentu. Każdy model w moim benchmarku przechodzi te same scenariusze, więc właściwe pytanie to nie „czyj odsetek zaliczeń jest wyższy?”, tylko „na scenariuszach, na których modele się nie zgadzają, kto wygrywa?”. Scenariusze, które oba modele zaliczają albo oba oblewają, nie niosą żadnej informacji o różnicy.
Test McNemara korzysta tylko z niezgodności. Załóżmy, że dwa modele nie zgadzają się w 8 scenariuszach, a model A wygrywa 6 z nich:
dokładne dwustronne p (6 do 2) ≈ 0.29 nieistotne
dokładne dwustronne p (10 do 1) ≈ 0.012 istotne
Sparowanie usuwa wspólną trudność każdego scenariusza, więc wykrywa prawdziwe różnice przy dużo mniejszej liczbie scenariuszy niż porównanie dwóch odsetków zaliczeń. Wymaga wyników per scenariusz, co jest jeszcze jednym powodem, żeby trzymać surowe zapisy przebiegów, a nie tylko sumy. Mój benchmark trzyma je w bench/results/.
Uruchamiaj więcej niż raz
Agenci próbkują, więc ten sam model na tym samym scenariuszu może zaliczyć jeden przebieg i oblać następny. Jeden przebieg na scenariusz całkowicie ukrywa tę wariancję. Uruchamiaj każdy scenariusz kilka razy, z temperaturą, której użyjesz na produkcji, i podawaj rozrzut. Jeśli rozrzuty dwóch modeli między przebiegami na siebie zachodzą, ranking nie jest rozstrzygnięty.
pass@k a pass^k
Benchmarki kodowania często podają pass@k: prawdopodobieństwo, że co najmniej jedna z k prób zakończy się sukcesem. Pasuje to do człowieka, który wybiera najlepszą z k propozycji. To zła metryka dla agenta działającego bez nadzoru, u którego każdy przebieg musi się udać. τ-bench (Yao i in., 2024) wprowadził pass^k: prawdopodobieństwo, że każda z k niezależnych prób zakończy się sukcesem.
Różnica między nimi jest duża:
| Skuteczność jednego przebiegu | pass@4 | pass^4 | pass^8 |
|---|---|---|---|
| 0,9 | 0,9999 | 0,656 | 0,430 |
| 0,8 | 0,9984 | 0,410 | 0,168 |
Model, który ma 90% skuteczności, według pass@4 wygląda na idealny. Mimo to w ponad jednej trzeciej przypadków oblewa co najmniej jeden z każdych czterech przebiegów. W przypadku agentów produkcyjnych to pass^k jest liczbą, która przewiduje zgłoszenia do supportu.
Zasady, których się trzymam
- Podawaj przedziały, a nie tylko pozycje. Ranking bez podanej niepewności zachęca do nadinterpretacji, także mój.
- Porównuj modele w układzie sparowanym, na tych samych scenariuszach, i trzymaj zapisy per scenariusz, żeby było to możliwe.
- Powtarzaj przebiegi z temperaturą produkcyjną i podawaj rozrzut.
- Dla agentów używaj pass^k. Produktem jest niezawodność; best-of-k to metryka na demo.
- Napraw harness, zanim zaczniesz szeregować modele. W moim benchmarku poprawki harnessu przesunęły wyniki o 52,5 punktu, więcej niż wynoszą różnice między czołowymi modelami. Szczegóły są w notatce o amber-bench.
Źródła: Wilson, Probable Inference, the Law of Succession, and Statistical Inference (1927). McNemar, Note on the sampling error of the difference between correlated proportions (1947). Chen i in., Evaluating Large Language Models Trained on Code (2021) w kwestii pass@k. Yao i in., τ-bench (2024) w kwestii pass^k. Przedziały i wartości p są policzone z pokazanych liczebności; wyniki modeli pochodzą z mojego benchmarku.