V4 Faza 0: regresja CDSC-E była głównie artefaktem pomiaru, a kalibracja λ to pułapka małej próbki
Domknięcie wątku z v3. Po policzeniu wszystkiego na H100: katastrofalny spadek CDSC-E był w ~3/4 artefaktem trybu pomiaru (generacja + parser), a nie uszkodzeniem wag. v3 to realny zysk na celu (LLMzSzŁ +3.3, makro KLEJ płaskie). Próba naprawy przez merge wag λ=0.3 wyglądała świetnie na n=200 i wywróciła się na n=400 — oddała cały zysk. Wnioski: mierzyć likelihood, decydować na n≥400, prawdziwy fix to trening anti-collapse, nie mieszanie wag.
Wniosek w jednym zdaniu
v3 cały czas był realnie lepszym modelem na celu; popsuł go sposób pomiaru, a fałszywie „naprawiła" go mała próbka. Prawdziwa poprawa kalibracji wymaga treningu, nie post-hoc mieszania wag.
1. CDSC-E: -22.5 w generacji, tylko -6.0 w likelihood
Ten sam model, dwa sposoby liczenia. Generacja = model pisze odpowiedź, parser ją wyłuskuje. Likelihood = scoringujemy log-prawdopodobieństwo każdej etykiety i bierzemy argmax (bez generacji, bez parsera).
CDSC-E n=200 seed 42
base v3 Δ
generacja 87.0 64.5 -22.5
likelihood 87.5 81.5 -6.0Około 3/4 spadku to styl i gadatliwość po SFT plus kruchy parser: zwracał pierwszą napotkaną etykietę z listy, więc rozgadana odpowiedź wzmiankująca kilka relacji była systematycznie odczytywana na niekorzyść neutralna. To nie jest uszkodzenie wag, tylko warstwa odczytu. Wniosek operacyjny: zadania klasyfikacyjne mierzymy likelihood, nie generacją.
2. v3 to realny improvement — i nie ma szerokiej regresji
LLMzSzŁ likelihood n=400
base Qwen3.5-27B 63.5
Slayer v3 66.8 (+3.3)Pełny KLEJ (generacja) potwierdza brak szerokiej regresji — makro płaskie, a sentyment wręcz w górę:
task base v3 Δ
polemo2_in 79.5 88.5 +9.0
polemo2_out 68.0 75.5 +7.5 (OOD)
psc/ppc/dyk/8tags +1.0..+1.5
belebele/cbd/nkjp/ar -0.5..-2.0
cdsc_e (gen) 75.0 57.0 -18.0 (artefakt, p. sekcja 1)
MACRO 77.4 77.3 -0.1Jedyny duży spadek to izolowany, mierzalny cdsc_e. Reszta płasko lub w górę.
3. Kalibracja λ-merge: pułapka małej próbki
Pomysł: zmaterializować base + λ·(v3 − base), żeby odzyskać CDSC bez utraty celu (interpolacja wag, DoRA-safe — bo czysty λ-scaling adaptera DoRA nie wraca do bazy przy λ=0).
Sweep bf16 n=200 wyglądał jak Pareto-win:
λ CDSC-E LLMzSzŁ
0.0 84.0 62.5
0.30 82.0 66.5 <- niby najlepszy
0.50 78.5 68.0Zmaterializowaliśmy slayer-v4-cal-l030 (λ=0.30) i puściliśmy twardy rerun na protokole referencyjnym n=400. To wywróciło wniosek:
LLMzSzŁ n=400 CDSC-E
base 63.5 87.5
cal λ=0.30 63.5 83.5 <- oddał CAŁY zysk celu
v3 (λ=1.0) 66.8 81.5n=200 skłamało: λ=0.30 dawało 66.5, a na n=400 to 63.5 = baza. Przy niskim λ koszt CDSC rośnie szybciej niż zysk LLMzSzŁ, więc nie ma czystego punktu gate-clean. Wnioski: decyzje o release tylko na n≥400; post-hoc merge nie zastępuje treningu.
4. Reguła danych V4
Zero benchmark train splitów jako paliwa treningowego — także KLEJ train. v2 „wygrana" na KLEJ okazała się artefaktem train-splitów i została odrzucona. v3 jest czysty (distill / styl / EN-retention, ~2.2k przykładów, kuracja nie wolumen).
5. Co liczymy teraz
Przekrojowy screen no-regression base vs v3 vs cal-l030: KLEJ ×12 (likelihood) + LLMzSzŁ + EN-retention (ARC-C, MMLU, Belebele-EN, GSM8K) — żeby potwierdzić, że polski tuning nie psuje angielskiego i rozumowania. Zrobiony jako jeden runner (model z HF / katalogu / docelowo GGUF), sampling n=100 dla szybkości, zapis przyrostowy + watchdog na boxie, żeby przeżył 6h bez nadzoru.
Wnioski na przyszłość (efektywność)
- Likelihood do klasyfikacji. Generacja zaniża i dokłada artefakty parsera.
- n≥400 do decyzji, n=100 tylko jako szybki screen regresji; przy małym n nie wybieramy checkpointów.
- Batching / vLLM = 5–10×. Teraz pomiar jest unbatched (H100 na ~33% util).
- Prawdziwy fix kalibracji to trening anti-collapse (q/v only, niższy lr, hard-neutral NLI + KL-to-base), nie mieszanie wag.
- Od początku: jeden proces + idempotentny resume + watchdog — inaczej traci się godziny na crashu.