Diagnoza: „przegrana” na CBD/DYK/GSM8K to bug harnessu, nie modelu
Observations
- data: 2026-06-15 ↗
- status: clean ↗
- baza: Qwen3.5-27B (base/v3/v4) ↗
- metoda: pełna macierz modeli (bench_runner, n=100) + probe scoringu: TAK/NIE vs YES/NO, sum vs per-token vs kalibracja kontekstowa, accuracy vs F1 ↗
- harness: bench_runner.py n=100 (screening) + probe kalibracji n=100 na base, seed 42 ↗
- Gdzie scoring nas zaniża (n=100): CBD, DYK, +GSM8K (i PSC) ↗
- Z tego realna słabość: tylko PolEmo-in — reszta to artefakty pomiaru ↗
- TAK/NIE — długość tokenów (zmierzone): TAK=1 token, NIE=2 tokeny; Tak/Nie=1/1, YES/NO=1/1 (tylko WIELKIE TAK/NIE są asymetryczne) ↗
- CBD base — sum logprob (none): acc=60 F1=35, predTAK=51/100 (gold TAK=11) — bias ku 1-tokenowemu TAK ↗
- CBD base — per-token (mean): acc=89 F1=15 — POZORNY fix: to baseline większościowy (89% NIE), F1 pada ↗
- CBD base — kalibracja kontekstowa + any-lang: acc=75 F1=44 — realny sygnał (predTAK=34) ↗
- Ucieczka do angielskiego (YES/NO): 0/100 — model ZAWSZE preferuje polskie TAK/NIE; hipoteza języka obalona ↗
- GSM8K base: 20 (nierealne dla Qwen 27B) — thinking ucięty przy max_new=512, parser nie dożywa do ‘####’ ↗
- Pytanie wyjściowe: „czemu mamy fuckup na CBD/DYK?”. Odpowiedź: to DWA różne bugi harnessu, nie modelu. (1) CBD/DYK/PSC są scorowane LIKELIHOODEM (nie generacją) — porównujemy sumę logprobów ’ TAK’ vs ’ NIE’. Ale ’ TAK’=1 token, ’ NIE’=2 tokeny, a scorer sumuje (nie uśrednia) → wbudowany bias ku TAK. Gold jest w 82–89% NIE, więc model „przewiduje” TAK 51–64 razy i accuracy się sypie — DOKŁADNIE proporcjonalnie do niezbalansowania (CBD 89%NIE→najgorzej). Przejście na per-token (mean) to PUŁAPKA: zwija się do samego NIE = baseline większościowy (CBD acc=89 ale F1=15). Prawdziwy fix: kalibracja kontekstowa (odjęcie logprobu etykiety na pustym promptcie) + metryka F1 (oficjalna w KLEJ), stosowane JEDNAKOWO do wszystkich modeli (anti-benchmaxxing). Po kalibracji base wraca do sensownego F1=44. (2) Hipoteza „model woli angielskie YES/NO” obalona twardo: EN-leak=0/100 — przy scoringu likelihood model zawsze stawia na polskie TAK/NIE. (3) GSM8K to osobny bug — generacja z uciętym thinkingiem (max_new=512), base=20 jest nierealne; fix = większy budżet tokenów + format-aware extraction. Wniosek: z 5 „przegranych” realna jest tylko PolEmo-in; reszta to harness. Reguła: każda poprawka pomiaru idzie na wszystkie modele naraz, nigdy per-model. ↗
- Trwa: re-score DYK/PSC + pełny rerun 4 modeli z poprawnym scoringiem (kalibracja + F1 wg KLEJ) i większym budżetem tokenów GSM8K. Macierz powyżej zostanie podmieniona na wersję po naprawie. ↗
Related
uses-benchmark: GSM8K (EN)
Referenced by
- generacja (mentions)
- GSM8K (mentions)
- GSM8K (defined-by)
- DYK (mentions)
- DYK (defined-by)
- FIX (mentions)
- DOKŁADNIE (mentions)
- POMIARU (mentions)
- DWA (mentions)
- PolEmo (mentions)
- KLEJ (mentions)
- PSC (mentions)
- CBD (mentions)
- CBD (defined-by)
Local graph
Diagnoza: „przegrana” na CBD/DYK/GSM8K to bug harnessu, nie modelu