Text Classification
syfox
decision-engine
decision-making
decision-model
structured-prediction
system-one
si-substrate
intent-classification
routing
abstention
uncertainty-quantification
selective-prediction
hebbian
energy-based-model
associative-memory
no-transformer
no-neural-network
no-pattern-matching
moderation
spam-detection
multilingual
|
Download docs/EVALUATION.md from Mr-DS-ML-85/SyFox: direct link, hf CLI and curl.
- Browser
- Download file 6.58 kB
-
https://huggingface.co/Mr-DS-ML-85/SyFox/resolve/main/docs/EVALUATION.md
- Command line
-
hf download hf://Mr-DS-ML-85/SyFox/docs/EVALUATION.md
-
curl -L -o EVALUATION.md https://huggingface.co/Mr-DS-ML-85/SyFox/resolve/main/docs/EVALUATION.md
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 | |
| ``` | |