SyFox / docs /EVALUATION.md
Mr-DS-ML-85's picture
Upload folder using huggingface_hub
c97bd71 verified
|
Raw History Blame Contribute Delete
6.58 kB

Giant model β€” measured evaluation (v3.1.3, one interleaved pass)

All numbers below are from real runs of the committed binary and corpora (deterministic; seed 77). Engine: SyFox 3.1.2 substrate + v3.1.3 CLI routing fix. energy-norm ON everywhere (mandatory at corpus scale β€” v3.1.0). Selection (calibration, router wording) used CAL only; hidden was scored once. Per-row records: datasets/eval/dump_pass1.jsonl.

Corpus

16 domains, 76,142 train rows (152,284 lessons per epoch), 278 globally unique opaque anchors, 3 full per-script calibration files + 1 latin merge. Recipe (the three failure-mode fixes): empty per-row instructions at learn; globally-unique anchors; round-robin domain interleave. Criteria: preserved verbatim for tickets/game/guard/bank77/sms (keys remapped to anchors), mined top-10 for the 8 new HF domains (train rows only). See datasets/MANIFEST.json.

Hidden results β€” latin substrate (model-giant-latin, 43,420 nodes / 1,905,170 lanes)

domain n router acc class acc end-to-end deferred ms/row
tickets_en 1,800 0.831 0.904 0.761 0 7.65
bank77 3,080 0.931 0.023 0.022 0 10.47
sms 838 0.233 0.752 0.222 2 6.42
clinc 4,500 0.334 0.309 0.123 0 11.02
enron 1,110 0.394 0.752 0.323 0 6.79
emotion 2,000 0.155 0.249 0.073 0 6.76
hate 1,500 0.381 0.653 0.277 0 6.52
agnews 2,000 0.320 0.604 0.206 0 7.02
polarity 2,000 0.339 0.571 0.189 0 6.52
dbpedia 2,000 0.403 0.475 0.204 0 7.55
boolq 1,500 0.097 0.531 0.059 0 6.18

Weighted over these 22,328 rows: router 0.432 Β· class 0.454 Β· e2e 0.196.

Hidden results β€” multilingual substrates (post-isolation-fix)

domain substrate n router class e2e
tickets_bn giant-bengali (579 nodes / 12,972 lanes) 540 1.000 0.943 0.943
tickets_hi giant-devanagari (546 / 12,353) 539 1.000 0.920 0.920
tickets_ru giant-cyrillic (680 / 14,915) 539 1.000 0.959 0.959

Reference dedicated fabrics (v3.0, README): bn 0.969 / hi 0.965 / ru 0.970 β€” the giant's per-script fabrics land within 1-4.5 points at a fraction of the size, with the router trivially perfect inside a single-domain substrate.

Handcrafted probes (41; 37 scored + 4 OOD)

Router 10/41 = 0.244 Β· class 11/37 = 0.297. OOD: the pure-gibberish probe deferred (zzqvv plork wumfus xanquu blorp); the other three OOD probes answered at confidence 0.000-0.031 (near-silence, honest). Full transcript reproducible via tools/giant_bench.py --probes.

Router-criteria wording sweep (cal only, never hidden)

variant router cal acc (n=3,250)
short4 (trained wording) 0.426
mid8 specific 0.164
rich12 specific 0.079
long abstract 0.208

Richer SPECIFIC wording makes the router worse β€” the direct-term harvest mechanism of docs/PROBING.md: criteria words that occur in states harvest energy regardless of router meaning, and more words = more cross-domain harvest. Abstract register words recover part of the loss but do not beat the short anchor-led probe. Winner (short4) matches what pass-1 trained.

Probe-condition dependence (measured)

The router readout depends on what ELSE the decide call asks β€” every question's criteria tokens inject into the same settled field:

condition router acc
blind (router question alone), hidden n=23,528 0.400
blind, cal n=1,500 0.399
informed (router + the TRUE domain's class question β€” the hidden table above) 0.432 weighted
router + ALL 15 class questions, cal 0.399

Asking everything does NOT recover the informed condition: the other domains' criteria dilute the anchoring (competitor dilution). Production contract: a caller that only asks for routing gets the honest blind estimate (0.400); the class numbers apply when the caller names the domain.

Calibration (per-script, on cal only)

  • giant-latin: choice temperature 0.1777; multiclass ECE 0.333 β†’ 0.230 (choice), noul Platt (a=12.64, b=-1.00) ECE 0.511 β†’ 0.095.
  • giant-bengali / -devanagari / -cyrillic: fitted on their own cal splits.

Honest reading

  1. Class channels work where per-anchor data is thick: tickets_en 0.904, sms 0.752, enron 0.752, hate 0.653, agnews 0.604, polarity 0.571 in a single shared fabric alongside 15 other domains.
  2. The single 16-way router is the e2e bottleneck (0.10-0.40 on the new domains; wording sweep shows the limit is the mechanism, not the wording). e2e = router x class; when the caller names the domain (API use), use the class numbers. Blind routing alone measures 0.400 on hidden (see the probe-condition section).
  3. bank77's 77-way decision collapses in the shared fabric (0.023 class vs 0.081 for the dedicated fabric): 77 anchors competing in a 43k-node multi-domain fabric is a harder readout than the dedicated fabric β€” hub crowding at scale, consistent with the v3.1.0 anatomy.
  4. boolq stays near majority (0.531 vs ~0.62 True-majority): boolean passage comprehension is beyond bag-of-words SI readout β€” measured limit, not a bug.
  5. One interleaved pass, not three: pass-1 lanes sit at their decay equilibrium because every domain is re-touched throughout the round-robin stream (the condition that made 3-epoch consolidation necessary β€” sequential training with lane decay 0.995/lesson β€” does not arise here). The chunked corpus (data/giant/chunks/) supports additional passes; the v3.1.0 ladder measured epochs 2-3 adding +0.008-0.012 on bank77 β€” run them if margins matter more than latency of training.

Reproduce

make all                                  # build engine
python3 tools/hf_fetch.py                 # download HF datasets (cached)
python3 tools/giant_prepare.py            # build corpus + chunks + probes
for c in 0 1 ... 11:                      # one pass = 12 incremental learns
  ./build/syfox learn --examples data/giant/chunks/chunk_0$c.jsonl \
      --model model-giant --lang auto --epochs 1
./build/syfox calibrate --model model-giant-latin \
    --examples data/giant/cal_latin.jsonl --energy-norm   # (+ 3 scripts)
python3 tools/giant_bench.py --model-slug giant-latin --domains ... --dump out.jsonl
python3 tools/giant_bench.py --model-slug giant-latin --probes
python3 tools/router_sweep.py --model-slug giant-latin