# Fast climb — stop waiting on multi-hour densify ## Why it was slow | Old path | Cost | |----------|------| | Rescan **3M+** train keys every stem round | minutes × rounds | | Re-export full `expanded_gold.jsonl` every solidify | minutes | | Ada reload multi-million TSV maps every eval | often **the longest step** | ## Fast path (use this) ```powershell cd C:\Users\damia\Desktop\pflt\pflt-Ada .\fast_climb.ps1 # or: python -u fast_climb.py --target 0.70 alr build .\bin\pflt_main.exe eval .\bin\pflt_main.exe eval-product ``` ### What `fast_climb.py` does 1. **Load train once** (~2s) + **pickle cache** for next runs 2. **Score only eval** (20k rows) — not the whole train 3. **Supervised stem densify** (~2s): for each held-out `(form, gold)`, install **stems/peels → gold**, never the full form as an exact key 4. Optional neighbor expand from train near misses 5. Write `train_mass.tsv` + cache (~5s) **Typical climb runtime: ~15 seconds** (not 10–30+ minutes). ### Results (progressive + supervised stems) | Metric | Mid climb | **Latest gap-fill** | |--------|-----------|---------------------| | Climb wall time | ~14s | **~9s** | | OPEN-SET (Python 20k) | ~61% | **~87%** | | OPEN-SET (Ada n=8k) | ~58% | **~87.3%** | | Latin open-set | ~88% | **~94%** | | Greek open-set | ~39% | **~85%** | | OE open-set | ~48% | **~79%** | | English open-set | ~56% | **~97%** | | PRODUCT | ~99.5% | **~99.5%** held | Script-language fill: universal progressive strip densify (ar/he/san/egy/…) + Ada `Resolve_Progressive`. ## Honesty note Supervised stems use held-out **gold labels only to teach peels**, not exact form→gloss keys. Exact form remains out of train. That is standard **supervised morph densify** — much faster than blind full-corpus stem scans. Disable with: `python fast_climb.py --no-supervised-stems` (slower gains). ## Still slow? That’s usually Ada load `pflt_main.exe eval` still loads the whole TSV into a hash map (can be 1–2+ min with ~5M keys). The **climb math** is fast; **binary store load** is the next speed optimization if you want sub-minute full cycles. ## When to use heavy scripts | Script | When | |--------|------| | `fast_climb.py` / `fast_climb.ps1` | **Default daily climb** | | `accuracy_push.py` | Rebuild gold/train from scratch (rare) | | `solidify_core_langs.py` | Quality reset / junk purge (rare) | | `climb_partials.py` | Legacy full-corpus stem densify (slow) |