WP31: v2 routing seeds, mini pipeline, README, cards, run index
Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
81 changed files +4,600 −105
added
README.md
+44 −0
@@ -0,0 +1,44 @@ | ||
| 1 | +<!-- Author: Simon-Pierre Boucher — simon-pierre.boucher@uqo.ca --> | |
| 2 | +# 🧩 PRISME: Intervention-Supervised Sparse Workspace Editing for Small Language Models | |
| 3 | + | |
| 4 | +**UQO Working Paper No. 31** — *Design, controlled evaluation, and negative and positive evidence at the 100M-parameter scale* | |
| 5 | + | |
| 6 | +[](paper/main.pdf) | |
| 7 | +[](requirements-lock.txt) | |
| 8 | +[](tests/) | |
| 9 | +[](REPRODUCE.md) | |
| 10 | +[](https://uqo.ca) | |
| 11 | + | |
| 12 | +> **TL;DR** — PRISME adds to a frozen causal decoder a read-only source bank, a 16-slot ephemeral workspace, a | |
| 13 | +> shared sparse editor (1–2 slots per action, 24 actions + STOP), a value controller trained on executed | |
| 14 | +> counterfactual gains, and a differential readout with an exact zero-budget bypass. We implement, test, train and | |
| 15 | +> evaluate it against matched baselines. Result: the editor is learnable and helps a frozen backbone by a few | |
| 16 | +> percent of loss, but a global-recurrence adapter trained identically helps as much; where to write does not | |
| 17 | +> matter for fixed schedules; a target-reading oracle shows large opportunity that the learned controller cannot | |
| 18 | +> capture (it is worse than no routing on held-out data); and dispatch overhead erases sparse savings at small | |
| 19 | +> scale. A careful negative result with a mechanistic explanation. | |
| 20 | + | |
| 21 | +## 📌 Status | |
| 22 | +| Item | Value | | |
| 23 | +|---|---| | |
| 24 | +| Version | 1.0 (October 2026) | | |
| 25 | +| Phases executed | 0–10, 13–15 (see `PROGRESS.md`); 11 (MLX port) not executed; 12 limited to meta-instantiation | | |
| 26 | +| Decisive experiments | 5 adapter seeds × {sparse editor, global recurrence, dense writes} on a frozen synthetic backbone; 103M FineWeb-Edu pilot (one backbone seed) | | |
| 27 | +| Code & data | `REPRODUCE.md`; synthetic suite regenerated from seeds; FineWeb-Edu subset documented, not redistributed | | |
| 28 | + | |
| 29 | +## 🗂 Repository layout | |
| 30 | +`prisme/` reference implementation · `training/` stages A–D · `baselines/` global recurrence + reference routers · | |
| 31 | +`evaluation/` routing, latency, perplexity, locked driver, statistics · `data/` generators, processors, splits · | |
| 32 | +`tests/` invariants + cache equivalence · `scripts/` audits, counts, FLOPs, launchers, tables, figures, claim audit · | |
| 33 | +`protocol/` pre-registration, locked test manifest, deviations · `literature/` verified bibliography + novelty audit · | |
| 34 | +`experiments/runs/` manifests + metrics (checkpoints on the training nodes) · `results/` raw/analyzed/tables/figures · | |
| 35 | +`paper/` LaTeX + PDF · `reproducibility/` environment, cards, run index, audit · `PROGRESS.md`, `DECISIONS.md`, `FAILURES.md`. | |
| 36 | + | |
| 37 | +## 🚀 Quick start | |
| 38 | +```bash | |
| 39 | +uv venv --python 3.12 .venv && uv pip install -p .venv/bin/python -r requirements-lock.txt | |
| 40 | +.venv/bin/python -m pytest tests -q | |
| 41 | +.venv/bin/python scripts/count_params.py --all-configs --device meta | |
| 42 | +scripts/reproduce_pilot.sh # miniature end-to-end pipeline on CPU (~1 min) | |
| 43 | +.venv/bin/python scripts/make_tables.py && .venv/bin/python scripts/reproduce_figures.py | |
| 44 | +``` | |
added
REPRODUCE.md
+21 −0
@@ -0,0 +1,21 @@ | ||
| 1 | +# REPRODUCE.md — WP31 PRISME | |
| 2 | + | |
| 3 | +All commands run from the repository root with the project venv (`uv venv --python 3.12 .venv && uv pip install -p .venv/bin/python -r requirements-lock.txt`). | |
| 4 | + | |
| 5 | +| Step | Command | Expected | | |
| 6 | +|---|---|---| | |
| 7 | +| Environment audit | `.venv/bin/python scripts/environment_audit.py --smoke` | `hardware/device_inventory.json`, CPU (and MPS/CUDA if present) forward/backward OK | | |
| 8 | +| Unit + property + integration tests | `.venv/bin/python -m pytest tests -q` | 23 passed (15 mandated invariants, controller target-freedom, dense ablation, 5 cache-equivalence tests) | | |
| 9 | +| Exact parameter counts | `.venv/bin/python scripts/count_params.py --all-configs --device meta` | backbone 99,502,848 / 446,744,064 / 1,149,339,648 (= proposal); workspace 2,631,173 / 10,505,221 / 21,655,813 | | |
| 10 | +| Analytic ops table | `.venv/bin/python scripts/estimate_flops.py --config configs/prisme_459m.yaml --T 4096` | 1.296 / 1.666 / 1.787 / 2.219 / 5.633 ×10⁹ ops/token | | |
| 11 | +| Synthetic data | `.venv/bin/python -c "import sys; sys.path.insert(0,'.'); from data.generators.synthetic import write_splits; print(write_splits('data/splits/synthetic_v1'))"` | 11 split files + manifest (sha256 as in `data/splits/synthetic_v1/manifest.json`) | | |
| 12 | +| Web corpus (optional, ~10 min, network) | `.venv/bin/python data/processors/prepare_corpus.py` | 290M train / 2.9M val / 2.9M locked test tokens, tokenizer 32,768 | | |
| 13 | +| Miniature end-to-end pipeline (CPU, ~minutes) | `scripts/reproduce_pilot.sh` | tiny backbone → editor bootstrap → labels → controller → routing JSON under `experiments/runs/` and `results/raw/` | | |
| 14 | +| Dry runs of every trainer | `.venv/bin/python -m training.pretrain --config configs/experiments/pretrain_103m.yaml --dry-run` etc. | exit 0 | | |
| 15 | +| Tables and figures | `.venv/bin/python scripts/make_tables.py && .venv/bin/python scripts/reproduce_figures.py --results results/raw/` | `paper/tables/*.tex`, `results/figures/*.pdf` | | |
| 16 | +| Claim audit | `.venv/bin/python scripts/verify_manuscript_claims.py` | `AUDIT PASS` | | |
| 17 | +| Manuscript | `cd paper && latexmk -pdf main.tex` | `paper/main.pdf` | | |
| 18 | + | |
| 19 | +Full-scale runs (Stage A 103M on an M3 Ultra ≈ 4 h; seed matrices on several nodes) are launched with | |
| 20 | +`scripts/cluster_setup.sh <node>`, `scripts/launch_seed_matrix.sh`, `scripts/run_stage_cd.sh` and | |
| 21 | +`scripts/launch_103m.sh`; their run ids are listed in `reproducibility/run_index.md`. | |
added
configs/experiments/controller_mini.yaml
+27 −0
@@ -0,0 +1,27 @@ | ||
| 1 | +name: controller_mini | |
| 2 | +seed: 1 | |
| 3 | +mode: prisme | |
| 4 | +model: from_checkpoint | |
| 5 | +checkpoint: experiments/runs/mini_editor_seed01_20261030005118/checkpoint | |
| 6 | +labels: | |
| 7 | + train: experiments/runs/labels_mini_seed01_20261030005150/labels_train.pt | |
| 8 | + calib: experiments/runs/labels_mini_seed01_20261030005150/labels_calib.pt | |
| 9 | +train: | |
| 10 | + steps: 60 | |
| 11 | + lr: 0.001 | |
| 12 | + weight_decay: 0.01 | |
| 13 | + alpha: 1.0 | |
| 14 | + beta: 0.5 | |
| 15 | + gamma: 0.1 | |
| 16 | + huber_delta: 0.1 | |
| 17 | + log_every: 20 | |
| 18 | + eval_every: 30 | |
| 19 | + seq_len: 320 | |
| 20 | +lambda_grid: | |
| 21 | +- 0.0 | |
| 22 | +- 0.3 | |
| 23 | +kappa_grid: | |
| 24 | +- 0.0 | |
| 25 | +sweep_batches: 2 | |
| 26 | +max_budget: 4 | |
| 27 | +selection_rule: max_loss_reduction_per_ops | |
added
configs/experiments/labels_mini.yaml
+25 −0
@@ -0,0 +1,25 @@ | ||
| 1 | +name: labels_mini | |
| 2 | +seed: 1 | |
| 3 | +mode: prisme | |
| 4 | +model: from_checkpoint | |
| 5 | +checkpoint: experiments/runs/mini_editor_seed01_20261030005118/checkpoint | |
| 6 | +use_policy: false | |
| 7 | +data: | |
| 8 | + kind: synthetic | |
| 9 | + tokenizer: char | |
| 10 | + splits_dir: data/splits/synthetic_v1 | |
| 11 | + loss_span: answer | |
| 12 | +collect: | |
| 13 | + batch_size: 16 | |
| 14 | + seq_len: 320 | |
| 15 | + max_prefix: 2 | |
| 16 | + audit_every: 2 | |
| 17 | +partitions: | |
| 18 | + train: | |
| 19 | + split: ctrl_train | |
| 20 | + n_batches: 12 | |
| 21 | + stream_seed: 11 | |
| 22 | + calib: | |
| 23 | + split: calib | |
| 24 | + n_batches: 4 | |
| 25 | + stream_seed: 12 | |
added
configs/experiments/mini_backbone.yaml
+43 −0
@@ -0,0 +1,43 @@ | ||
| 1 | +name: mini_backbone | |
| 2 | +seed: 1 | |
| 3 | +mode: backbone_only | |
| 4 | +model: | |
| 5 | + name: mini | |
| 6 | + vocab_size: 128 | |
| 7 | + d_model: 96 | |
| 8 | + n_layers: 2 | |
| 9 | + n_heads: 4 | |
| 10 | + n_kv_heads: 2 | |
| 11 | + ffn_width: 256 | |
| 12 | + max_seq_len: 320 | |
| 13 | + w: 32 | |
| 14 | + ffn_w: 96 | |
| 15 | + n_slots: 16 | |
| 16 | + n_editor_heads: 2 | |
| 17 | + r_max: 8 | |
| 18 | + readout_zero_init: false | |
| 19 | + readout_init_std: 0.2 | |
| 20 | + ctrl_input: h | |
| 21 | + ctrl_use_entropy: true | |
| 22 | +init: | |
| 23 | + freeze_backbone: false | |
| 24 | +data: | |
| 25 | + kind: synthetic | |
| 26 | + tokenizer: char | |
| 27 | + splits_dir: data/splits/synthetic_v1 | |
| 28 | + loss_span: all | |
| 29 | + eval_splits: | |
| 30 | + - dev_iid | |
| 31 | +train: | |
| 32 | + batch_size: 16 | |
| 33 | + seq_len: 320 | |
| 34 | + steps: 150 | |
| 35 | + lr: 0.001 | |
| 36 | + warmup: 10 | |
| 37 | + weight_decay: 0.1 | |
| 38 | + grad_clip: 1.0 | |
| 39 | + log_every: 50 | |
| 40 | + eval_every: 150 | |
| 41 | + eval_batches: 2 | |
| 42 | + ckpt_every: 150 | |
| 43 | +em_max_items: 32 | |
added
configs/experiments/mini_editor.yaml
+61 −0
@@ -0,0 +1,61 @@ | ||
| 1 | +name: mini_editor | |
| 2 | +seed: 1 | |
| 3 | +mode: prisme | |
| 4 | +model: | |
| 5 | + name: mini | |
| 6 | + vocab_size: 128 | |
| 7 | + d_model: 96 | |
| 8 | + n_layers: 2 | |
| 9 | + n_heads: 4 | |
| 10 | + n_kv_heads: 2 | |
| 11 | + ffn_width: 256 | |
| 12 | + max_seq_len: 320 | |
| 13 | + w: 32 | |
| 14 | + ffn_w: 96 | |
| 15 | + n_slots: 16 | |
| 16 | + n_editor_heads: 2 | |
| 17 | + r_max: 8 | |
| 18 | + readout_zero_init: false | |
| 19 | + readout_init_std: 0.2 | |
| 20 | + ctrl_input: h | |
| 21 | + ctrl_use_entropy: true | |
| 22 | +init: | |
| 23 | + backbone_checkpoint: experiments/runs/mini_backbone_seed01_20261030005114/checkpoint | |
| 24 | + freeze_backbone: true | |
| 25 | + auto_readout_scale: true | |
| 26 | +data: | |
| 27 | + kind: synthetic | |
| 28 | + tokenizer: char | |
| 29 | + splits_dir: data/splits/synthetic_v1 | |
| 30 | + loss_span: answer | |
| 31 | + eval_splits: | |
| 32 | + - dev_iid | |
| 33 | +train: | |
| 34 | + batch_size: 16 | |
| 35 | + seq_len: 320 | |
| 36 | + steps: 120 | |
| 37 | + lr: 0.001 | |
| 38 | + warmup: 10 | |
| 39 | + weight_decay: 0.1 | |
| 40 | + grad_clip: 1.0 | |
| 41 | + log_every: 50 | |
| 42 | + eval_every: 120 | |
| 43 | + eval_batches: 2 | |
| 44 | + ckpt_every: 120 | |
| 45 | +em_max_items: 32 | |
| 46 | +budgets: | |
| 47 | +- 0 | |
| 48 | +- 1 | |
| 49 | +- 2 | |
| 50 | +- 4 | |
| 51 | +- 8 | |
| 52 | +budget_probs: | |
| 53 | +- 0.2 | |
| 54 | +- 0.2 | |
| 55 | +- 0.2 | |
| 56 | +- 0.2 | |
| 57 | +- 0.2 | |
| 58 | +budget_per: position | |
| 59 | +em_budgets: | |
| 60 | +- 0 | |
| 61 | +- 2 | |
added
configs/experiments/routing_mini.yaml
+24 −0
@@ -0,0 +1,24 @@ | ||
| 1 | +seed: 1 | |
| 2 | +mode: prisme | |
| 3 | +model: from_checkpoint | |
| 4 | +checkpoint: experiments/runs/controller_mini_seed01_20261030005154/checkpoint | |
| 5 | +data: | |
| 6 | + kind: synthetic | |
| 7 | + tokenizer: char | |
| 8 | + splits_dir: data/splits/synthetic_v1 | |
| 9 | + loss_span: answer | |
| 10 | + split: dev_iid | |
| 11 | +batch_size: 16 | |
| 12 | +seq_len: 320 | |
| 13 | +n_batches: 2 | |
| 14 | +budgets: | |
| 15 | +- 1 | |
| 16 | +- 2 | |
| 17 | +oracle_batches: 1 | |
| 18 | +two_step_batches: 1 | |
| 19 | +entropy_thresholds: | |
| 20 | +- 1.0 | |
| 21 | +norm_thresholds: | |
| 22 | +- 0.1 | |
| 23 | +lambda_grid: | |
| 24 | +- 0.0 | |
added
experiments/logs/controller_mini.log
+14 −0
@@ -0,0 +1,14 @@ | ||
| 1 | +/Users/simon-pierreboucher/Desktop/Recherche-UQO/ia/prisme-slm/training/train_controller.py:131: UserWarning: Converting a tensor with requires_grad=True to a scalar may lead to unexpected behavior. | |
| 2 | +Consider using tensor.detach() first. (Triggered internally at /Users/runner/work/pytorch/pytorch/torch/csrc/autograd/generated/python_variable_methods.cpp:821.) | |
| 3 | + run.log(step=step, loss=float(loss), gain=float(L["gain"]), harm=float(L["harm"]), nll=float(L["nll"])) | |
| 4 | +step 0 loss 0.45115 gain 0.02663 harm 0.8158 | |
| 5 | +step 20 loss 0.13172 gain 0.00543 harm 0.5627 | |
| 6 | + calib: {'huber': 0.0175, 'sign_acc': 0.5467, 'harm_brier': 0.1334, 'harm_ece': 0.0955, 'n_labels': 1156, 'oracle_opportunity_per_state': 0.2508, 'regret_per_state': 0.1381, 'captured_fraction': 0.4494, 'top1_match': 0.0, 'n_audit_states': 124} | |
| 7 | +step 40 loss 0.07597 gain 0.00382 harm 0.4947 | |
| 8 | +step 59 loss 0.05327 gain 0.00333 harm 0.4847 | |
| 9 | + calib: {'huber': 0.0162, 'sign_acc': 0.7344, 'harm_brier': 0.1264, 'harm_ece': 0.0872, 'n_labels': 1156, 'oracle_opportunity_per_state': 0.2508, 'regret_per_state': 0.1129, 'captured_fraction': 0.5501, 'top1_match': 0.0, 'n_audit_states': 124} | |
| 10 | +restored controller from step 60 (calibration score -0.11286) | |
| 11 | +sweep {'lambda': 0.0, 'kappa': 0.0, 'loss': 2.059080786738835, 'edits_per_token': 2.5673758865248226, 'extra_ops_ratio': 1.4467924402115193} | |
| 12 | +sweep {'lambda': 0.3, 'kappa': 0.0, 'loss': 2.307212234388852, 'edits_per_token': 0.04964539007092199, 'extra_ops_ratio': 0.02571701665296622} | |
| 13 | +selected {'lambda': 0.3, 'kappa': 0.0, 'loss': 2.307212234388852, 'edits_per_token': 0.04964539007092199, 'extra_ops_ratio': 0.02571701665296622, 'loss_reduction': 0.04320390850094169, 'reduction_per_ops': 1.6799735787377388} | |
| 14 | +run controller_mini_seed01_20261030005154 | |
added
experiments/logs/labels_mini.log
+8 −0
@@ -0,0 +1,8 @@ | ||
| 1 | +/Users/simon-pierreboucher/Desktop/Recherche-UQO/ia/prisme-slm/training/train_editor.py:57: UserWarning: The given NumPy array is not writable, and PyTorch does not support non-writable tensors. This means writing to this tensor will result in undefined behavior. You may want to copy the array to protect its data or make it writable before converting it to a tensor. This type of warning will be suppressed for the rest of this program. (Triggered internally at /Users/runner/work/pytorch/pytorch/torch/csrc/utils/tensor_numpy.cpp:214.) | |
| 2 | + return torch.from_numpy(acts).to(device), torch.from_numpy(np.ascontiguousarray(b)).to(device) | |
| 3 | +batch 0/12 r_pre=2 mean gain 0.02953 frac>0 0.615 | |
| 4 | +batch 10/12 r_pre=1 mean gain 0.02505 frac>0 0.578 | |
| 5 | +train {'file': 'experiments/runs/labels_mini_seed01_20261030005150/labels_train.pt', 'n_states': 1047, 'n_labels': 4188, 'mean_gain': 0.031750522553920746, 'frac_positive': 0.5690066814422607, 'frac_harm': 0.43099331855773926, 'seconds': 2.5, 'n_audit_batches': 6} | |
| 6 | +batch 0/4 r_pre=2 mean gain 0.05232 frac>0 0.560 | |
| 7 | +calib {'file': 'experiments/runs/labels_mini_seed01_20261030005150/labels_calib.pt', 'n_states': 289, 'n_labels': 1156, 'mean_gain': 0.19328418374061584, 'frac_positive': 0.6349480748176575, 'frac_harm': 0.36505189538002014, 'seconds': 0.8, 'n_audit_batches': 2} | |
| 8 | +run labels_mini_seed01_20261030005150 | |
added
experiments/logs/mini_backbone.log
+9 −0
@@ -0,0 +1,9 @@ | ||
| 1 | +step 0 loss 4.8830 lr 1.00e-04 gn 2.63 (0s) | |
| 2 | +step 50 loss 2.5086 lr 8.31e-04 gn 0.98 (1s) | |
| 3 | +step 100 loss 1.9095 lr 3.55e-04 gn 1.14 (2s) | |
| 4 | +step 149 loss 1.5540 lr 1.00e-04 gn 1.46 (3s) | |
| 5 | +/Users/simon-pierreboucher/Desktop/Recherche-UQO/ia/prisme-slm/training/train_editor.py:57: UserWarning: The given NumPy array is not writable, and PyTorch does not support non-writable tensors. This means writing to this tensor will result in undefined behavior. You may want to copy the array to protect its data or make it writable before converting it to a tensor. This type of warning will be suppressed for the rest of this program. (Triggered internally at /Users/runner/work/pytorch/pytorch/torch/csrc/utils/tensor_numpy.cpp:214.) | |
| 6 | + return torch.from_numpy(acts).to(device), torch.from_numpy(np.ascontiguousarray(b)).to(device) | |
| 7 | + val loss by budget: {0: 1.661} | |
| 8 | + exact match dev_iid budget 0: 0.0000 (n=32) by family {'bind': 0.0, 'arith': 0.0, 'fsm': 0.0, 'excl': 0.0, 'sched': 0.0} | |
| 9 | +run mini_backbone_seed01_20261030005114 done | |
added
experiments/logs/mini_editor.log
+12 −0
@@ -0,0 +1,12 @@ | ||
| 1 | +loaded backbone from experiments/runs/mini_backbone_seed01_20261030005114/checkpoint missing: 36 | |
| 2 | +readout_scale set to backbone residual rms = 0.120 | |
| 3 | +/Users/simon-pierreboucher/Desktop/Recherche-UQO/ia/prisme-slm/training/train_editor.py:57: UserWarning: The given NumPy array is not writable, and PyTorch does not support non-writable tensors. This means writing to this tensor will result in undefined behavior. You may want to copy the array to protect its data or make it writable before converting it to a tensor. This type of warning will be suppressed for the rest of this program. (Triggered internally at /Users/runner/work/pytorch/pytorch/torch/csrc/utils/tensor_numpy.cpp:214.) | |
| 4 | + return torch.from_numpy(acts).to(device), torch.from_numpy(np.ascontiguousarray(b)).to(device) | |
| 5 | +step 0 loss 2.2980 lr 1.00e-04 gn 0.09 (0s) | |
| 6 | +step 50 loss 2.0584 lr 7.37e-04 gn 0.12 (14s) | |
| 7 | +step 100 loss 1.9985 lr 1.71e-04 gn 0.21 (25s) | |
| 8 | +step 119 loss 2.2012 lr 1.00e-04 gn 0.21 (29s) | |
| 9 | + val loss by budget: {0: 2.391, 1: 2.178, 2: 2.1457, 4: 2.0783, 8: 2.0136} | |
| 10 | + exact match dev_iid budget 0: 0.0000 (n=32) by family {'bind': 0.0, 'arith': 0.0, 'fsm': 0.0, 'excl': 0.0, 'sched': 0.0} | |
| 11 | + exact match dev_iid budget 2: 0.0000 (n=32) by family {'bind': 0.0, 'arith': 0.0, 'fsm': 0.0, 'excl': 0.0, 'sched': 0.0} | |
| 12 | +run mini_editor_seed01_20261030005118 done | |
added
experiments/logs/routing_mini.log
+17 −0
@@ -0,0 +1,17 @@ | ||
| 1 | +{"policy": "budget0", "loss": 2.3909947187051004, "edits_per_token": 0.0, "extra_ops_ratio": 0.0, "n_tokens": 174} | |
| 2 | +/Users/simon-pierreboucher/Desktop/Recherche-UQO/ia/prisme-slm/training/train_editor.py:57: UserWarning: The given NumPy array is not writable, and PyTorch does not support non-writable tensors. This means writing to this tensor will result in undefined behavior. You may want to copy the array to protect its data or make it writable before converting it to a tensor. This type of warning will be suppressed for the rest of this program. (Triggered internally at /Users/runner/work/pytorch/pytorch/torch/csrc/utils/tensor_numpy.cpp:214.) | |
| 3 | + return torch.from_numpy(acts).to(device), torch.from_numpy(np.ascontiguousarray(b)).to(device) | |
| 4 | +{"policy": "random_forced", "budget": 1, "loss": 2.177954575111126, "edits_per_token": 1.0, "extra_ops_ratio": 0.6340132088496767, "n_tokens": 174} | |
| 5 | +{"policy": "uniform", "budget": 1, "loss": 2.187390908427622, "edits_per_token": 1.0, "extra_ops_ratio": 0.5180141843598465, "n_tokens": 174} | |
| 6 | +{"policy": "fixed_pair", "budget": 1, "loss": 2.1671100484913794, "edits_per_token": 1.0, "extra_ops_ratio": 0.7239716190031205, "n_tokens": 174} | |
| 7 | +{"policy": "random_forced", "budget": 2, "loss": 2.145720470910785, "edits_per_token": 2.0, "extra_ops_ratio": 1.2502715012122845, "n_tokens": 174} | |
| 8 | +{"policy": "uniform", "budget": 2, "loss": 2.167156175635327, "edits_per_token": 2.0, "extra_ops_ratio": 1.036028368719693, "n_tokens": 174} | |
| 9 | +{"policy": "fixed_pair", "budget": 2, "loss": 2.1463586215315194, "edits_per_token": 2.0, "extra_ops_ratio": 1.447943238006241, "n_tokens": 174} | |
| 10 | +{"policy": "entropy", "threshold": 1.0, "budget": 2, "loss": 2.147084027871318, "edits_per_token": 1.632183908045977, "extra_ops_ratio": 0.9839830727412783, "n_tokens": 174} | |
| 11 | +{"policy": "norm", "threshold": 0.1, "budget": 2, "loss": 2.149580155295887, "edits_per_token": 1.9885057471264367, "extra_ops_ratio": 1.194603536320829, "n_tokens": 174} | |
| 12 | +{"policy": "controller_locked", "lam": 0.3, "kap": 0.0, "budget": 2, "loss": 2.3621927897135415, "edits_per_token": 0.06896551724137931, "extra_ops_ratio": 0.03572511535951461, "n_tokens": 174} | |
| 13 | +{"policy": "controller", "lam": 0.0, "kap": 0.0, "budget": 2, "loss": 2.1407089233398438, "edits_per_token": 1.5344827586206897, "extra_ops_ratio": 0.8812912908093683, "n_tokens": 174} | |
| 14 | +{"policy": "oracle1_greedy", "budget": 1, "diagnostic": true, "loss": 2.1457042020909927, "edits_per_token": 0.6470588235294118, "extra_ops_ratio": 0.4587601156795726, "n_tokens": 85} | |
| 15 | +{"policy": "oracle1_greedy", "budget": 2, "diagnostic": true, "loss": 1.9766888786764707, "edits_per_token": 1.2470588235294118, "extra_ops_ratio": 0.854374605066636, "n_tokens": 85} | |
| 16 | +{"policy": "oracle_two_step", "diagnostic": true, "one_step_gain": 0.25905925526338464, "two_step_gain": 0.429955561020795, "greedy_then_best_gain": 0.42805216172162225, "n_tokens": 85} | |
| 17 | +wrote results/raw/routing_mini.json | |
added
experiments/runs/controller_mini_seed01_20261030005154/checkpoint/checkpoint.json
+49 −0
@@ -0,0 +1,49 @@ | ||
| 1 | +{ | |
| 2 | + "config": { | |
| 3 | + "name": "mini", | |
| 4 | + "vocab_size": 128, | |
| 5 | + "d_model": 96, | |
| 6 | + "n_layers": 2, | |
| 7 | + "n_heads": 4, | |
| 8 | + "n_kv_heads": 2, | |
| 9 | + "ffn_width": 256, | |
| 10 | + "max_seq_len": 320, | |
| 11 | + "rope_theta": 10000.0, | |
| 12 | + "norm_eps": 1e-05, | |
| 13 | + "tie_embeddings": true, | |
| 14 | + "init_std": 0.02, | |
| 15 | + "use_workspace": true, | |
| 16 | + "w": 32, | |
| 17 | + "ffn_w": 96, | |
| 18 | + "n_slots": 16, | |
| 19 | + "n_editor_blocks": 2, | |
| 20 | + "n_editor_heads": 2, | |
| 21 | + "r_max": 8, | |
| 22 | + "eta_max": 0.25, | |
| 23 | + "clip_c": 1.0, | |
| 24 | + "clip_eps": 1e-06, | |
| 25 | + "readout_zero_init": false, | |
| 26 | + "readout_init_std": 0.2, | |
| 27 | + "readout_scale": 0.11967716366052628, | |
| 28 | + "controller_hidden": 0, | |
| 29 | + "ctrl_input": "h", | |
| 30 | + "ctrl_use_entropy": true, | |
| 31 | + "lambda_cost": 0.3, | |
| 32 | + "kappa_risk": 0.0, | |
| 33 | + "dense_writes": false | |
| 34 | + }, | |
| 35 | + "saved_at": "2026-10-30T00:51:57-0400", | |
| 36 | + "run_id": "controller_mini_seed01_20261030005154", | |
| 37 | + "parent": "experiments/runs/mini_editor_seed01_20261030005118/checkpoint", | |
| 38 | + "selected": { | |
| 39 | + "lambda": 0.3, | |
| 40 | + "kappa": 0.0, | |
| 41 | + "loss": 2.307212234388852, | |
| 42 | + "edits_per_token": 0.04964539007092199, | |
| 43 | + "extra_ops_ratio": 0.02571701665296622, | |
| 44 | + "loss_reduction": 0.04320390850094169, | |
| 45 | + "reduction_per_ops": 1.6799735787377388 | |
| 46 | + }, | |
| 47 | + "locked": true, | |
| 48 | + "weights_sha256": "bb56e9c7b34c773d7cb314b50da687d910b37fa126243f4cfbe9b36c931da83e" | |
| 49 | +} | |
| \ No newline at end of file | ||
added
experiments/runs/controller_mini_seed01_20261030005154/config.yaml
+60 −0
@@ -0,0 +1,60 @@ | ||
| 1 | +experiment: | |
| 2 | + name: controller_mini | |
| 3 | + seed: 1 | |
| 4 | + mode: prisme | |
| 5 | + model: from_checkpoint | |
| 6 | + checkpoint: experiments/runs/mini_editor_seed01_20261030005118/checkpoint | |
| 7 | + labels: | |
| 8 | + train: experiments/runs/labels_mini_seed01_20261030005150/labels_train.pt | |
| 9 | + calib: experiments/runs/labels_mini_seed01_20261030005150/labels_calib.pt | |
| 10 | + train: | |
| 11 | + steps: 60 | |
| 12 | + lr: 0.001 | |
| 13 | + weight_decay: 0.01 | |
| 14 | + alpha: 1.0 | |
| 15 | + beta: 0.5 | |
| 16 | + gamma: 0.1 | |
| 17 | + huber_delta: 0.1 | |
| 18 | + log_every: 20 | |
| 19 | + eval_every: 30 | |
| 20 | + seq_len: 320 | |
| 21 | + lambda_grid: | |
| 22 | + - 0.0 | |
| 23 | + - 0.3 | |
| 24 | + kappa_grid: | |
| 25 | + - 0.0 | |
| 26 | + sweep_batches: 2 | |
| 27 | + max_budget: 4 | |
| 28 | + selection_rule: max_loss_reduction_per_ops | |
| 29 | +model: | |
| 30 | + name: mini | |
| 31 | + vocab_size: 128 | |
| 32 | + d_model: 96 | |
| 33 | + n_layers: 2 | |
| 34 | + n_heads: 4 | |
| 35 | + n_kv_heads: 2 | |
| 36 | + ffn_width: 256 | |
| 37 | + max_seq_len: 320 | |
| 38 | + rope_theta: 10000.0 | |
| 39 | + norm_eps: 1.0e-05 | |
| 40 | + tie_embeddings: true | |
| 41 | + init_std: 0.02 | |
| 42 | + use_workspace: true | |
| 43 | + w: 32 | |
| 44 | + ffn_w: 96 | |
| 45 | + n_slots: 16 | |
| 46 | + n_editor_blocks: 2 | |
| 47 | + n_editor_heads: 2 | |
| 48 | + r_max: 8 | |
| 49 | + eta_max: 0.25 | |
| 50 | + clip_c: 1.0 | |
| 51 | + clip_eps: 1.0e-06 | |
| 52 | + readout_zero_init: false | |
| 53 | + readout_init_std: 0.2 | |
| 54 | + readout_scale: 0.11967716366052628 | |
| 55 | + controller_hidden: 0 | |
| 56 | + ctrl_input: h | |
| 57 | + ctrl_use_entropy: true | |
| 58 | + lambda_cost: 0.0 | |
| 59 | + kappa_risk: 0.0 | |
| 60 | + dense_writes: false | |
added
experiments/runs/controller_mini_seed01_20261030005154/manifest.json
+79 −0
@@ -0,0 +1,79 @@ | ||
| 1 | +{ | |
| 2 | + "run_id": "controller_mini_seed01_20261030005154", | |
| 3 | + "name": "controller_mini", | |
| 4 | + "seed": 1, | |
| 5 | + "code_commit": "ede6705574e7140bdc16eff11931815070b471d1", | |
| 6 | + "config_sha256": "0471d90913fcc1fc2be8399872a1cb24835993f8ca0091d1534b4be963a5d588", | |
| 7 | + "started_at": "2026-10-30T00:51:54-0400", | |
| 8 | + "host": "MacBookPro-de-simon-pierre-2.local", | |
| 9 | + "python": "3.12.13", | |
| 10 | + "torch": "2.15.0", | |
| 11 | + "command": "/Users/simon-pierreboucher/Desktop/Recherche-UQO/ia/prisme-slm/training/train_controller.py --config configs/experiments/controller_mini.yaml --device cpu", | |
| 12 | + "state": "completed", | |
| 13 | + "wall_seconds": 3.14, | |
| 14 | + "device": "cpu", | |
| 15 | + "checkpoint_parent": "experiments/runs/mini_editor_seed01_20261030005118/checkpoint", | |
| 16 | + "labels_train": "experiments/runs/labels_mini_seed01_20261030005150/labels_train.pt", | |
| 17 | + "labels_calib": "experiments/runs/labels_mini_seed01_20261030005150/labels_calib.pt", | |
| 18 | + "finished_at": "2026-10-30T00:51:57-0400", | |
| 19 | + "eval_train": { | |
| 20 | + "huber": 0.0030732022628629334, | |
| 21 | + "sign_acc": 0.6184336198662846, | |
| 22 | + "harm_brier": 0.1599525462590521, | |
| 23 | + "harm_ece": 0.04834684729576111, | |
| 24 | + "n_labels": 4188, | |
| 25 | + "oracle_opportunity_per_state": 0.1721912329537528, | |
| 26 | + "regret_per_state": 0.1273838915143694, | |
| 27 | + "captured_fraction": 0.2602184830828045, | |
| 28 | + "top1_match": 0.0838095238095238, | |
| 29 | + "n_audit_states": 525 | |
| 30 | + }, | |
| 31 | + "eval_calib": { | |
| 32 | + "huber": 0.016214936043564422, | |
| 33 | + "sign_acc": 0.7344290657439446, | |
| 34 | + "harm_brier": 0.1263718605041504, | |
| 35 | + "harm_ece": 0.08718162029981613, | |
| 36 | + "n_labels": 1156, | |
| 37 | + "oracle_opportunity_per_state": 0.2508483394499748, | |
| 38 | + "regret_per_state": 0.11286073538564867, | |
| 39 | + "captured_fraction": 0.550083785154353, | |
| 40 | + "top1_match": 0.0, | |
| 41 | + "n_audit_states": 124 | |
| 42 | + }, | |
| 43 | + "sweep": [ | |
| 44 | + { | |
| 45 | + "lambda": 0.0, | |
| 46 | + "kappa": 0.0, | |
| 47 | + "loss": 2.059080786738835, | |
| 48 | + "edits_per_token": 2.5673758865248226, | |
| 49 | + "extra_ops_ratio": 1.4467924402115193, | |
| 50 | + "loss_reduction": 0.2913353561509586, | |
| 51 | + "reduction_per_ops": 0.20136637989922435 | |
| 52 | + }, | |
| 53 | + { | |
| 54 | + "lambda": 0.3, | |
| 55 | + "kappa": 0.0, | |
| 56 | + "loss": 2.307212234388852, | |
| 57 | + "edits_per_token": 0.04964539007092199, | |
| 58 | + "extra_ops_ratio": 0.02571701665296622, | |
| 59 | + "loss_reduction": 0.04320390850094169, | |
| 60 | + "reduction_per_ops": 1.6799735787377388 | |
| 61 | + } | |
| 62 | + ], | |
| 63 | + "baseline_budget0": { | |
| 64 | + "loss": 2.350416142889794, | |
| 65 | + "edits_per_token": 0.0, | |
| 66 | + "extra_ops_ratio": 0.0 | |
| 67 | + }, | |
| 68 | + "selected": { | |
| 69 | + "lambda": 0.3, | |
| 70 | + "kappa": 0.0, | |
| 71 | + "loss": 2.307212234388852, | |
| 72 | + "edits_per_token": 0.04964539007092199, | |
| 73 | + "extra_ops_ratio": 0.02571701665296622, | |
| 74 | + "loss_reduction": 0.04320390850094169, | |
| 75 | + "reduction_per_ops": 1.6799735787377388 | |
| 76 | + }, | |
| 77 | + "checkpoint_sha256": "bb56e9c7b34c773d7cb314b50da687d910b37fa126243f4cfbe9b36c931da83e", | |
| 78 | + "selection_rule": "max_loss_reduction_per_ops" | |
| 79 | +} | |
| \ No newline at end of file | ||
added
experiments/runs/controller_mini_seed01_20261030005154/metrics.jsonl
+7 −0
@@ -0,0 +1,7 @@ | ||
| 1 | +{"step": 0, "loss": 0.45115095376968384, "gain": 0.026630813255906105, "harm": 0.8158032894134521, "nll": 0.16618479788303375, "t": 0.54} | |
| 2 | +{"step": 20, "loss": 0.13172240555286407, "gain": 0.005428161472082138, "harm": 0.5627143383026123, "nll": -1.5506292581558228, "t": 1.06} | |
| 3 | +{"step": 29, "calib_huber": 0.01750746204366321, "calib_sign_acc": 0.5467128027681661, "calib_harm_brier": 0.1334372787739579, "calib_harm_ece": 0.09551648795604706, "calib_n_labels": 1156, "calib_oracle_opportunity_per_state": 0.2508483394499748, "calib_regret_per_state": 0.13811139137514175, "calib_captured_fraction": 0.4494227401386307, "calib_top1_match": 0.0, "calib_n_audit_states": 124, "t": 1.38} | |
| 4 | +{"step": 40, "loss": 0.07597307860851288, "gain": 0.0038186139427125454, "harm": 0.4946993291378021, "nll": -1.751952052116394, "t": 1.71} | |
| 5 | +{"step": 59, "loss": 0.053273364901542664, "gain": 0.0033322509843856096, "harm": 0.48466554284095764, "nll": -1.9239165782928467, "t": 2.29} | |
| 6 | +{"step": 59, "calib_huber": 0.016214936043564422, "calib_sign_acc": 0.7344290657439446, "calib_harm_brier": 0.1263718605041504, "calib_harm_ece": 0.08718162029981613, "calib_n_labels": 1156, "calib_oracle_opportunity_per_state": 0.2508483394499748, "calib_regret_per_state": 0.11286073538564867, "calib_captured_fraction": 0.550083785154353, "calib_top1_match": 0.0, "calib_n_audit_states": 124, "t": 2.37} | |
| 7 | +{"event": "restored_best_calibration_checkpoint", "step": 60, "score": -0.11286073538564867, "t": 2.37} | |
added
experiments/runs/controller_v2s2_seed01_20261030004717/checkpoint/checkpoint.json
+49 −0
@@ -0,0 +1,49 @@ | ||
| 1 | +{ | |
| 2 | + "config": { | |
| 3 | + "name": "tiny_p4v2", | |
| 4 | + "vocab_size": 128, | |
| 5 | + "d_model": 256, | |
| 6 | + "n_layers": 6, | |
| 7 | + "n_heads": 8, | |
| 8 | + "n_kv_heads": 4, | |
| 9 | + "ffn_width": 768, | |
| 10 | + "max_seq_len": 320, | |
| 11 | + "rope_theta": 10000.0, | |
| 12 | + "norm_eps": 1e-05, | |
| 13 | + "tie_embeddings": true, | |
| 14 | + "init_std": 0.02, | |
| 15 | + "use_workspace": true, | |
| 16 | + "w": 64, | |
| 17 | + "ffn_w": 192, | |
| 18 | + "n_slots": 16, | |
| 19 | + "n_editor_blocks": 2, | |
| 20 | + "n_editor_heads": 2, | |
| 21 | + "r_max": 8, | |
| 22 | + "eta_max": 0.25, | |
| 23 | + "clip_c": 1.0, | |
| 24 | + "clip_eps": 1e-06, | |
| 25 | + "readout_zero_init": false, | |
| 26 | + "readout_init_std": 0.2, | |
| 27 | + "readout_scale": 38.51451873779297, | |
| 28 | + "controller_hidden": 0, | |
| 29 | + "ctrl_input": "h", | |
| 30 | + "ctrl_use_entropy": true, | |
| 31 | + "lambda_cost": 0.3, | |
| 32 | + "kappa_risk": 0.5, | |
| 33 | + "dense_writes": false | |
| 34 | + }, | |
| 35 | + "saved_at": "2026-10-30T00:50:30-0400", | |
| 36 | + "run_id": "controller_v2s2_seed01_20261030004717", | |
| 37 | + "parent": "experiments/runs/p4v2_prisme_seed02_20261030001749/checkpoint", | |
| 38 | + "selected": { | |
| 39 | + "lambda": 0.3, | |
| 40 | + "kappa": 0.5, | |
| 41 | + "loss": 0.4873708813215914, | |
| 42 | + "edits_per_token": 0.020166073546856466, | |
| 43 | + "extra_ops_ratio": 0.0021535491621649844, | |
| 44 | + "loss_reduction": 3.514453892466962e-05, | |
| 45 | + "reduction_per_ops": 0.016319357617700477 | |
| 46 | + }, | |
| 47 | + "locked": true, | |
| 48 | + "weights_sha256": "809bef042a202eb089b8c2860bdd01a30faec25414290983bc7de06b17c27445" | |
| 49 | +} | |
| \ No newline at end of file | ||
added
experiments/runs/controller_v2s2_seed01_20261030004717/config.yaml
+67 −0
@@ -0,0 +1,67 @@ | ||
| 1 | +experiment: | |
| 2 | + name: controller_v2s2 | |
| 3 | + seed: 1 | |
| 4 | + mode: prisme | |
| 5 | + model: from_checkpoint | |
| 6 | + checkpoint: experiments/runs/p4v2_prisme_seed02_20261030001749/checkpoint | |
| 7 | + labels: | |
| 8 | + train: experiments/runs/labels_v2s2_seed01_20261030004543/labels_train.pt | |
| 9 | + calib: experiments/runs/labels_v2s2_seed01_20261030004543/labels_calib.pt | |
| 10 | + train: | |
| 11 | + steps: 2000 | |
| 12 | + lr: 0.001 | |
| 13 | + weight_decay: 0.01 | |
| 14 | + alpha: 1.0 | |
| 15 | + beta: 0.5 | |
| 16 | + gamma: 0.1 | |
| 17 | + huber_delta: 0.1 | |
| 18 | + log_every: 100 | |
| 19 | + eval_every: 250 | |
| 20 | + seq_len: 320 | |
| 21 | + lambda_grid: | |
| 22 | + - 0.0 | |
| 23 | + - 0.01 | |
| 24 | + - 0.03 | |
| 25 | + - 0.1 | |
| 26 | + - 0.3 | |
| 27 | + kappa_grid: | |
| 28 | + - 0.0 | |
| 29 | + - 0.5 | |
| 30 | + sweep_batches: 10 | |
| 31 | + max_budget: 8 | |
| 32 | + selection_rule: max_loss_reduction_per_ops | |
| 33 | + model_overrides: | |
| 34 | + ctrl_input: h | |
| 35 | + ctrl_use_entropy: true | |
| 36 | +model: | |
| 37 | + name: tiny_p4v2 | |
| 38 | + vocab_size: 128 | |
| 39 | + d_model: 256 | |
| 40 | + n_layers: 6 | |
| 41 | + n_heads: 8 | |
| 42 | + n_kv_heads: 4 | |
| 43 | + ffn_width: 768 | |
| 44 | + max_seq_len: 320 | |
| 45 | + rope_theta: 10000.0 | |
| 46 | + norm_eps: 1.0e-05 | |
| 47 | + tie_embeddings: true | |
| 48 | + init_std: 0.02 | |
| 49 | + use_workspace: true | |
| 50 | + w: 64 | |
| 51 | + ffn_w: 192 | |
| 52 | + n_slots: 16 | |
| 53 | + n_editor_blocks: 2 | |
| 54 | + n_editor_heads: 2 | |
| 55 | + r_max: 8 | |
| 56 | + eta_max: 0.25 | |
| 57 | + clip_c: 1.0 | |
| 58 | + clip_eps: 1.0e-06 | |
| 59 | + readout_zero_init: false | |
| 60 | + readout_init_std: 0.2 | |
| 61 | + readout_scale: 38.51451873779297 | |
| 62 | + controller_hidden: 0 | |
| 63 | + ctrl_input: h | |
| 64 | + ctrl_use_entropy: true | |
| 65 | + lambda_cost: 0.0 | |
| 66 | + kappa_risk: 0.0 | |
| 67 | + dense_writes: false | |
added
experiments/runs/controller_v2s2_seed01_20261030004717/manifest.json
+151 −0
@@ -0,0 +1,151 @@ | ||
| 1 | +{ | |
| 2 | + "run_id": "controller_v2s2_seed01_20261030004717", | |
| 3 | + "name": "controller_v2s2", | |
| 4 | + "seed": 1, | |
| 5 | + "code_commit": "unknown", | |
| 6 | + "config_sha256": "8cdd361620875bda3cfcae976e78a784064bfff845c0433fa1fafec7f9805f54", | |
| 7 | + "started_at": "2026-10-30T00:47:17-0400", | |
| 8 | + "host": "M4M64c", | |
| 9 | + "python": "3.12.14", | |
| 10 | + "torch": "2.15.0", | |
| 11 | + "command": "/Users/simon-pierreboucher/wp31/prisme-slm/training/train_controller.py --config configs/experiments/controller_v2s2.yaml --device mps", | |
| 12 | + "state": "completed", | |
| 13 | + "wall_seconds": 193.23, | |
| 14 | + "device": "mps", | |
| 15 | + "checkpoint_parent": "experiments/runs/p4v2_prisme_seed02_20261030001749/checkpoint", | |
| 16 | + "labels_train": "experiments/runs/labels_v2s2_seed01_20261030004543/labels_train.pt", | |
| 17 | + "labels_calib": "experiments/runs/labels_v2s2_seed01_20261030004543/labels_calib.pt", | |
| 18 | + "finished_at": "2026-10-30T00:50:30-0400", | |
| 19 | + "eval_train": { | |
| 20 | + "huber": 0.0010070554593935765, | |
| 21 | + "sign_acc": 0.4106531766106234, | |
| 22 | + "harm_brier": 0.1394085687570071, | |
| 23 | + "harm_ece": 0.02013043873012066, | |
| 24 | + "n_labels": 26884, | |
| 25 | + "oracle_opportunity_per_state": 0.01949981483372454, | |
| 26 | + "regret_per_state": 0.013346665076057068, | |
| 27 | + "captured_fraction": 0.3155491377808227, | |
| 28 | + "top1_match": 0.059802712700369916, | |
| 29 | + "n_audit_states": 1622 | |
| 30 | + }, | |
| 31 | + "eval_calib": { | |
| 32 | + "huber": 0.001002937499951388, | |
| 33 | + "sign_acc": 0.412654183385347, | |
| 34 | + "harm_brier": 0.1532348860141019, | |
| 35 | + "harm_ece": 0.03501247614622116, | |
| 36 | + "n_labels": 26916, | |
| 37 | + "oracle_opportunity_per_state": 0.020023393703449098, | |
| 38 | + "regret_per_state": 0.013364227492033892, | |
| 39 | + "captured_fraction": 0.3325693091809977, | |
| 40 | + "top1_match": 0.06930091185410335, | |
| 41 | + "n_audit_states": 1645 | |
| 42 | + }, | |
| 43 | + "sweep": [ | |
| 44 | + { | |
| 45 | + "lambda": 0.0, | |
| 46 | + "kappa": 0.0, | |
| 47 | + "loss": 0.5010346970382817, | |
| 48 | + "edits_per_token": 6.505338078291815, | |
| 49 | + "extra_ops_ratio": 0.842747028753568, | |
| 50 | + "loss_reduction": -0.013628671177765672, | |
| 51 | + "reduction_per_ops": -0.016171722608055498 | |
| 52 | + }, | |
| 53 | + { | |
| 54 | + "lambda": 0.0, | |
| 55 | + "kappa": 0.5, | |
| 56 | + "loss": 0.4934385713733388, | |
| 57 | + "edits_per_token": 3.9359430604982206, | |
| 58 | + "extra_ops_ratio": 0.4958741628119671, | |
| 59 | + "loss_reduction": -0.006032545512822729, | |
| 60 | + "reduction_per_ops": -0.012165476576988422 | |
| 61 | + }, | |
| 62 | + { | |
| 63 | + "lambda": 0.01, | |
| 64 | + "kappa": 0.0, | |
| 65 | + "loss": 0.49886353244985127, | |
| 66 | + "edits_per_token": 6.35349940688019, | |
| 67 | + "extra_ops_ratio": 0.815659252632838, | |
| 68 | + "loss_reduction": -0.011457506589335198, | |
| 69 | + "reduction_per_ops": -0.01404692774875282 | |
| 70 | + }, | |
| 71 | + { | |
| 72 | + "lambda": 0.01, | |
| 73 | + "kappa": 0.5, | |
| 74 | + "loss": 0.49234691180933976, | |
| 75 | + "edits_per_token": 3.7265717674970342, | |
| 76 | + "extra_ops_ratio": 0.4669636967343368, | |
| 77 | + "loss_reduction": -0.004940885948823692, | |
| 78 | + "reduction_per_ops": -0.010580878092616784 | |
| 79 | + }, | |
| 80 | + { | |
| 81 | + "lambda": 0.03, | |
| 82 | + "kappa": 0.0, | |
| 83 | + "loss": 0.49679631949319536, | |
| 84 | + "edits_per_token": 5.992289442467379, | |
| 85 | + "extra_ops_ratio": 0.7534280869743012, | |
| 86 | + "loss_reduction": -0.009390293632679292, | |
| 87 | + "reduction_per_ops": -0.012463423908696925 | |
| 88 | + }, | |
| 89 | + { | |
| 90 | + "lambda": 0.03, | |
| 91 | + "kappa": 0.5, | |
| 92 | + "loss": 0.4901708600642701, | |
| 93 | + "edits_per_token": 3.0759193357058128, | |
| 94 | + "extra_ops_ratio": 0.37601326142624464, | |
| 95 | + "loss_reduction": -0.0027648342037540075, | |
| 96 | + "reduction_per_ops": -0.007353023117500691 | |
| 97 | + }, | |
| 98 | + { | |
| 99 | + "lambda": 0.1, | |
| 100 | + "kappa": 0.0, | |
| 101 | + "loss": 0.4935920529801085, | |
| 102 | + "edits_per_token": 3.5118623962040334, | |
| 103 | + "extra_ops_ratio": 0.4023556692320257, | |
| 104 | + "loss_reduction": -0.00618602711959243, | |
| 105 | + "reduction_per_ops": -0.015374524562807005 | |
| 106 | + }, | |
| 107 | + { | |
| 108 | + "lambda": 0.1, | |
| 109 | + "kappa": 0.5, | |
| 110 | + "loss": 0.48869777602515896, | |
| 111 | + "edits_per_token": 1.2004744958481612, | |
| 112 | + "extra_ops_ratio": 0.1326800710648687, | |
| 113 | + "loss_reduction": -0.0012917501646428908, | |
| 114 | + "reduction_per_ops": -0.009735826596078174 | |
| 115 | + }, | |
| 116 | + { | |
| 117 | + "lambda": 0.3, | |
| 118 | + "kappa": 0.0, | |
| 119 | + "loss": 0.4878548206949291, | |
| 120 | + "edits_per_token": 0.6435349940688019, | |
| 121 | + "extra_ops_ratio": 0.06894260369161694, | |
| 122 | + "loss_reduction": -0.00044879483441301327, | |
| 123 | + "reduction_per_ops": -0.006509687919830977 | |
| 124 | + }, | |
| 125 | + { | |
| 126 | + "lambda": 0.3, | |
| 127 | + "kappa": 0.5, | |
| 128 | + "loss": 0.4873708813215914, | |
| 129 | + "edits_per_token": 0.020166073546856466, | |
| 130 | + "extra_ops_ratio": 0.0021535491621649844, | |
| 131 | + "loss_reduction": 3.514453892466962e-05, | |
| 132 | + "reduction_per_ops": 0.016319357617700477 | |
| 133 | + } | |
| 134 | + ], | |
| 135 | + "baseline_budget0": { | |
| 136 | + "loss": 0.48740602586051607, | |
| 137 | + "edits_per_token": 0.0, | |
| 138 | + "extra_ops_ratio": 0.0 | |
| 139 | + }, | |
| 140 | + "selected": { | |
| 141 | + "lambda": 0.3, | |
| 142 | + "kappa": 0.5, | |
| 143 | + "loss": 0.4873708813215914, | |
| 144 | + "edits_per_token": 0.020166073546856466, | |
| 145 | + "extra_ops_ratio": 0.0021535491621649844, | |
| 146 | + "loss_reduction": 3.514453892466962e-05, | |
| 147 | + "reduction_per_ops": 0.016319357617700477 | |
| 148 | + }, | |
| 149 | + "checkpoint_sha256": "809bef042a202eb089b8c2860bdd01a30faec25414290983bc7de06b17c27445", | |
| 150 | + "selection_rule": "max_loss_reduction_per_ops" | |
| 151 | +} | |
| \ No newline at end of file | ||
added
experiments/runs/controller_v2s2_seed01_20261030004717/metrics.jsonl
+30 −0
@@ -0,0 +1,30 @@ | ||
| 1 | +{"step": 0, "loss": 9.83135986328125, "gain": 0.14342276751995087, "harm": 0.6234025359153748, "nll": 93.76235961914062, "t": 0.65} | |
| 2 | +{"step": 100, "loss": 0.036009281873703, "gain": 0.0035093766637146473, "harm": 0.44542667269706726, "nll": -1.9021341800689697, "t": 8.75} | |
| 3 | +{"step": 200, "loss": 0.1008618026971817, "gain": 0.003002654295414686, "harm": 0.6249974966049194, "nll": -2.1463959217071533, "t": 15.93} | |
| 4 | +{"step": 249, "calib_huber": 0.01094102960476852, "calib_sign_acc": 0.6051790756427404, "calib_harm_brier": 0.19434303400473638, "calib_harm_ece": 0.09549890458583832, "calib_n_labels": 26916, "calib_oracle_opportunity_per_state": 0.020023393703449098, "calib_regret_per_state": 0.017705129490072604, "calib_captured_fraction": 0.11577778710794495, "calib_top1_match": 0.08206686930091185, "calib_n_audit_states": 1645, "t": 21.98} | |
| 5 | +{"step": 300, "loss": 0.0225842148065567, "gain": 0.0018381704576313496, "harm": 0.5111701488494873, "nll": -2.3483903408050537, "t": 25.41} | |
| 6 | +{"step": 400, "loss": -0.003825247287750244, "gain": 0.0019429537933319807, "harm": 0.47566935420036316, "nll": -2.4360287189483643, "t": 32.64} | |
| 7 | +{"step": 499, "calib_huber": 0.0015247461168314978, "calib_sign_acc": 0.43884678258285037, "calib_harm_brier": 0.17252413148351367, "calib_harm_ece": 0.017360275611281395, "calib_n_labels": 26916, "calib_oracle_opportunity_per_state": 0.020023393703449098, "calib_regret_per_state": 0.01528218683863121, "calib_captured_fraction": 0.23678338123078502, "calib_top1_match": 0.06565349544072949, "calib_n_audit_states": 1645, "t": 41.7} | |
| 8 | +{"step": 500, "loss": 0.060030609369277954, "gain": 0.0015156494919210672, "harm": 0.6202768683433533, "nll": -2.5162346363067627, "t": 41.75} | |
| 9 | +{"step": 600, "loss": 0.13166989386081696, "gain": 0.00890484731644392, "harm": 0.4930534064769745, "nll": -1.2376166582107544, "t": 48.59} | |
| 10 | +{"step": 700, "loss": 0.18399077653884888, "gain": 0.010280882008373737, "harm": 0.4504131078720093, "nll": -0.514966607093811, "t": 55.35} | |
| 11 | +{"step": 749, "calib_huber": 0.004172799588667016, "calib_sign_acc": 0.5681007579135087, "calib_harm_brier": 0.16633579595993525, "calib_harm_ece": 0.0329064205288887, "calib_n_labels": 26916, "calib_oracle_opportunity_per_state": 0.020023393703449098, "calib_regret_per_state": 0.014974688251692474, "calib_captured_fraction": 0.2521403477616768, "calib_top1_match": 0.060790273556231005, "calib_n_audit_states": 1645, "t": 61.43} | |
| 12 | +{"step": 800, "loss": 0.009334906935691833, "gain": 0.008806868456304073, "harm": 0.4048343598842621, "nll": -2.0188913345336914, "t": 64.89} | |
| 13 | +{"step": 900, "loss": 0.028008311986923218, "gain": 0.002588255563750863, "harm": 0.4612581431865692, "nll": -2.0520901679992676, "t": 71.84} | |
| 14 | +{"step": 999, "calib_huber": 0.0018093500733109814, "calib_sign_acc": 0.5104398870560262, "calib_harm_brier": 0.15887767702744113, "calib_harm_ece": 0.02854321524500847, "calib_n_labels": 26916, "calib_oracle_opportunity_per_state": 0.020023393703449098, "calib_regret_per_state": 0.014404436375232452, "calib_captured_fraction": 0.28061962979076627, "calib_top1_match": 0.08389057750759879, "calib_n_audit_states": 1645, "t": 81.28} | |
| 15 | +{"step": 1000, "loss": -0.015576347708702087, "gain": 0.0019178803777322173, "harm": 0.40998339653015137, "nll": -2.2248592376708984, "t": 81.38} | |
| 16 | +{"step": 1100, "loss": -0.06739456951618195, "gain": 0.0009511433891020715, "harm": 0.4489712417125702, "nll": -2.9283132553100586, "t": 88.41} | |
| 17 | +{"step": 1200, "loss": -0.08154422044754028, "gain": 0.0012713662581518292, "harm": 0.46403712034225464, "nll": -3.148341417312622, "t": 95.24} | |
| 18 | +{"step": 1249, "calib_huber": 0.0010799360305828226, "calib_sign_acc": 0.48424728785852283, "calib_harm_brier": 0.15457595845603858, "calib_harm_ece": 0.024711085483431816, "calib_n_labels": 26916, "calib_oracle_opportunity_per_state": 0.020023393703449098, "calib_regret_per_state": 0.014418237549918039, "calib_captured_fraction": 0.2799303772649465, "calib_top1_match": 0.07355623100303951, "calib_n_audit_states": 1645, "t": 101.23} | |
| 19 | +{"step": 1300, "loss": -0.10255365073680878, "gain": 0.0005639962619170547, "harm": 0.4233770966529846, "nll": -3.148061990737915, "t": 104.82} | |
| 20 | +{"step": 1400, "loss": -0.06496067345142365, "gain": 0.0011079360265284777, "harm": 0.4857495129108429, "nll": -3.0894336700439453, "t": 112.24} | |
| 21 | +{"step": 1499, "calib_huber": 0.0010084362830958407, "calib_sign_acc": 0.6550750482984099, "calib_harm_brier": 0.15728407888289173, "calib_harm_ece": 0.022302670404314995, "calib_n_labels": 26916, "calib_oracle_opportunity_per_state": 0.020023393703449098, "calib_regret_per_state": 0.014015099197897868, "calib_captured_fraction": 0.3000637451640519, "calib_top1_match": 0.06930091185410335, "calib_n_audit_states": 1645, "t": 121.73} | |
| 22 | +{"step": 1500, "loss": -0.09400822222232819, "gain": 0.0005882722325623035, "harm": 0.45213499665260315, "nll": -3.2066397666931152, "t": 121.82} | |
| 23 | +{"step": 1600, "loss": -0.06699615716934204, "gain": 0.001017246162518859, "harm": 0.4579717516899109, "nll": -2.9699926376342773, "t": 128.88} | |
| 24 | +{"step": 1700, "loss": -0.149380624294281, "gain": 0.0009441319270990789, "harm": 0.3887898921966553, "nll": -3.4471969604492188, "t": 135.87} | |
| 25 | +{"step": 1749, "calib_huber": 0.0011374952911285398, "calib_sign_acc": 0.75817357705454, "calib_harm_brier": 0.15767023378786882, "calib_harm_ece": 0.019358007237315178, "calib_n_labels": 26916, "calib_oracle_opportunity_per_state": 0.020023393703449098, "calib_regret_per_state": 0.01419691836580317, "calib_captured_fraction": 0.29098340790463995, "calib_top1_match": 0.07537993920972644, "calib_n_audit_states": 1645, "t": 141.68} | |
| 26 | +{"step": 1800, "loss": -0.07670816779136658, "gain": 0.0007706652977503836, "harm": 0.4373716115951538, "nll": -2.961646318435669, "t": 145.4} | |
| 27 | +{"step": 1900, "loss": -0.06387145817279816, "gain": 0.0019935278687626123, "harm": 0.4595317840576172, "nll": -2.956308603286743, "t": 152.6} | |
| 28 | +{"step": 1999, "loss": -0.08407506346702576, "gain": 0.0018677458865568042, "harm": 0.47809404134750366, "nll": -3.2498981952667236, "t": 159.38} | |
| 29 | +{"step": 1999, "calib_huber": 0.001002937499951388, "calib_sign_acc": 0.412654183385347, "calib_harm_brier": 0.1532348860141019, "calib_harm_ece": 0.03501247614622116, "calib_n_labels": 26916, "calib_oracle_opportunity_per_state": 0.020023393703449098, "calib_regret_per_state": 0.013364227492033892, "calib_captured_fraction": 0.3325693091809977, "calib_top1_match": 0.06930091185410335, "calib_n_audit_states": 1645, "t": 161.96} | |
| 30 | +{"event": "restored_best_calibration_checkpoint", "step": 2000, "score": -0.013364227492033892, "t": 161.97} | |
added
experiments/runs/controller_v2s3_seed01_20261030004720/checkpoint/checkpoint.json
+49 −0
@@ -0,0 +1,49 @@ | ||
| 1 | +{ | |
| 2 | + "config": { | |
| 3 | + "name": "tiny_p4v2", | |
| 4 | + "vocab_size": 128, | |
| 5 | + "d_model": 256, | |
| 6 | + "n_layers": 6, | |
| 7 | + "n_heads": 8, | |
| 8 | + "n_kv_heads": 4, | |
| 9 | + "ffn_width": 768, | |
| 10 | + "max_seq_len": 320, | |
| 11 | + "rope_theta": 10000.0, | |
| 12 | + "norm_eps": 1e-05, | |
| 13 | + "tie_embeddings": true, | |
| 14 | + "init_std": 0.02, | |
| 15 | + "use_workspace": true, | |
| 16 | + "w": 64, | |
| 17 | + "ffn_w": 192, | |
| 18 | + "n_slots": 16, | |
| 19 | + "n_editor_blocks": 2, | |
| 20 | + "n_editor_heads": 2, | |
| 21 | + "r_max": 8, | |
| 22 | + "eta_max": 0.25, | |
| 23 | + "clip_c": 1.0, | |
| 24 | + "clip_eps": 1e-06, | |
| 25 | + "readout_zero_init": false, | |
| 26 | + "readout_init_std": 0.2, | |
| 27 | + "readout_scale": 38.98434829711914, | |
| 28 | + "controller_hidden": 0, | |
| 29 | + "ctrl_input": "h", | |
| 30 | + "ctrl_use_entropy": true, | |
| 31 | + "lambda_cost": 0.3, | |
| 32 | + "kappa_risk": 0.0, | |
| 33 | + "dense_writes": false | |
| 34 | + }, | |
| 35 | + "saved_at": "2026-10-30T00:50:38-0400", | |
| 36 | + "run_id": "controller_v2s3_seed01_20261030004720", | |
| 37 | + "parent": "experiments/runs/p4v2_prisme_seed03_20261030001749/checkpoint", | |
| 38 | + "selected": { | |
| 39 | + "lambda": 0.3, | |
| 40 | + "kappa": 0.0, | |
| 41 | + "loss": 0.4887911139292508, | |
| 42 | + "edits_per_token": 4.198102016607355, | |
| 43 | + "extra_ops_ratio": 0.4771132757655242, | |
| 44 | + "loss_reduction": -0.001385088068734719, | |
| 45 | + "reduction_per_ops": -0.002903059166635757 | |
| 46 | + }, | |
| 47 | + "locked": true, | |
| 48 | + "weights_sha256": "34ec25bc13935a5276c68155f7bd978233d297fd543a288cd9612686fa7e6c75" | |
| 49 | +} | |
| \ No newline at end of file | ||
added
experiments/runs/controller_v2s3_seed01_20261030004720/config.yaml
+67 −0
@@ -0,0 +1,67 @@ | ||
| 1 | +experiment: | |
| 2 | + name: controller_v2s3 | |
| 3 | + seed: 1 | |
| 4 | + mode: prisme | |
| 5 | + model: from_checkpoint | |
| 6 | + checkpoint: experiments/runs/p4v2_prisme_seed03_20261030001749/checkpoint | |
| 7 | + labels: | |
| 8 | + train: experiments/runs/labels_v2s3_seed01_20261030004544/labels_train.pt | |
| 9 | + calib: experiments/runs/labels_v2s3_seed01_20261030004544/labels_calib.pt | |
| 10 | + train: | |
| 11 | + steps: 2000 | |
| 12 | + lr: 0.001 | |
| 13 | + weight_decay: 0.01 | |
| 14 | + alpha: 1.0 | |
| 15 | + beta: 0.5 | |
| 16 | + gamma: 0.1 | |
| 17 | + huber_delta: 0.1 | |
| 18 | + log_every: 100 | |
| 19 | + eval_every: 250 | |
| 20 | + seq_len: 320 | |
| 21 | + lambda_grid: | |
| 22 | + - 0.0 | |
| 23 | + - 0.01 | |
| 24 | + - 0.03 | |
| 25 | + - 0.1 | |
| 26 | + - 0.3 | |
| 27 | + kappa_grid: | |
| 28 | + - 0.0 | |
| 29 | + - 0.5 | |
| 30 | + sweep_batches: 10 | |
| 31 | + max_budget: 8 | |
| 32 | + selection_rule: max_loss_reduction_per_ops | |
| 33 | + model_overrides: | |
| 34 | + ctrl_input: h | |
| 35 | + ctrl_use_entropy: true | |
| 36 | +model: | |
| 37 | + name: tiny_p4v2 | |
| 38 | + vocab_size: 128 | |
| 39 | + d_model: 256 | |
| 40 | + n_layers: 6 | |
| 41 | + n_heads: 8 | |
| 42 | + n_kv_heads: 4 | |
| 43 | + ffn_width: 768 | |
| 44 | + max_seq_len: 320 | |
| 45 | + rope_theta: 10000.0 | |
| 46 | + norm_eps: 1.0e-05 | |
| 47 | + tie_embeddings: true | |
| 48 | + init_std: 0.02 | |
| 49 | + use_workspace: true | |
| 50 | + w: 64 | |
| 51 | + ffn_w: 192 | |
| 52 | + n_slots: 16 | |
| 53 | + n_editor_blocks: 2 | |
| 54 | + n_editor_heads: 2 | |
| 55 | + r_max: 8 | |
| 56 | + eta_max: 0.25 | |
| 57 | + clip_c: 1.0 | |
| 58 | + clip_eps: 1.0e-06 | |
| 59 | + readout_zero_init: false | |
| 60 | + readout_init_std: 0.2 | |
| 61 | + readout_scale: 38.98434829711914 | |
| 62 | + controller_hidden: 0 | |
| 63 | + ctrl_input: h | |
| 64 | + ctrl_use_entropy: true | |
| 65 | + lambda_cost: 0.0 | |
| 66 | + kappa_risk: 0.0 | |
| 67 | + dense_writes: false | |
added
experiments/runs/controller_v2s3_seed01_20261030004720/manifest.json
+151 −0
@@ -0,0 +1,151 @@ | ||
| 1 | +{ | |
| 2 | + "run_id": "controller_v2s3_seed01_20261030004720", | |
| 3 | + "name": "controller_v2s3", | |
| 4 | + "seed": 1, | |
| 5 | + "code_commit": "unknown", | |
| 6 | + "config_sha256": "e56154e7ec9666ab6d7e4a94427e0c31397f8975c9b339b0344bd8cbb90bb651", | |
| 7 | + "started_at": "2026-10-30T00:47:20-0400", | |
| 8 | + "host": "MacStudnpierre6", | |
| 9 | + "python": "3.12.13", | |
| 10 | + "torch": "2.15.0", | |
| 11 | + "command": "/Users/simon-pierreboucher/wp31/prisme-slm/training/train_controller.py --config configs/experiments/controller_v2s3.yaml --device mps", | |
| 12 | + "state": "completed", | |
| 13 | + "wall_seconds": 197.97, | |
| 14 | + "device": "mps", | |
| 15 | + "checkpoint_parent": "experiments/runs/p4v2_prisme_seed03_20261030001749/checkpoint", | |
| 16 | + "labels_train": "experiments/runs/labels_v2s3_seed01_20261030004544/labels_train.pt", | |
| 17 | + "labels_calib": "experiments/runs/labels_v2s3_seed01_20261030004544/labels_calib.pt", | |
| 18 | + "finished_at": "2026-10-30T00:50:38-0400", | |
| 19 | + "eval_train": { | |
| 20 | + "huber": 0.007815325425114948, | |
| 21 | + "sign_acc": 0.48322422258592473, | |
| 22 | + "harm_brier": 0.19074533085368287, | |
| 23 | + "harm_ece": 0.061203483492136, | |
| 24 | + "n_labels": 26884, | |
| 25 | + "oracle_opportunity_per_state": 0.019982138044590134, | |
| 26 | + "regret_per_state": 0.01430556020078177, | |
| 27 | + "captured_fraction": 0.28408260573223354, | |
| 28 | + "top1_match": 0.1029593094944513, | |
| 29 | + "n_audit_states": 1622 | |
| 30 | + }, | |
| 31 | + "eval_calib": { | |
| 32 | + "huber": 0.007724088622620563, | |
| 33 | + "sign_acc": 0.5044954673799971, | |
| 34 | + "harm_brier": 0.19917026808329547, | |
| 35 | + "harm_ece": 0.08023828268051147, | |
| 36 | + "n_labels": 26916, | |
| 37 | + "oracle_opportunity_per_state": 0.0200653997960424, | |
| 38 | + "regret_per_state": 0.013944871664771917, | |
| 39 | + "captured_fraction": 0.30502896495875775, | |
| 40 | + "top1_match": 0.08936170212765958, | |
| 41 | + "n_audit_states": 1645 | |
| 42 | + }, | |
| 43 | + "sweep": [ | |
| 44 | + { | |
| 45 | + "lambda": 0.0, | |
| 46 | + "kappa": 0.0, | |
| 47 | + "loss": 0.4941370365599862, | |
| 48 | + "edits_per_token": 5.279359430604982, | |
| 49 | + "extra_ops_ratio": 0.6436597794683236, | |
| 50 | + "loss_reduction": -0.00673101069947013, | |
| 51 | + "reduction_per_ops": -0.010457404539134145 | |
| 52 | + }, | |
| 53 | + { | |
| 54 | + "lambda": 0.0, | |
| 55 | + "kappa": 0.5, | |
| 56 | + "loss": 0.49054730687984227, | |
| 57 | + "edits_per_token": 2.98220640569395, | |
| 58 | + "extra_ops_ratio": 0.34909897257848993, | |
| 59 | + "loss_reduction": -0.003141281019326203, | |
| 60 | + "reduction_per_ops": -0.00899825340683273 | |
| 61 | + }, | |
| 62 | + { | |
| 63 | + "lambda": 0.01, | |
| 64 | + "kappa": 0.0, | |
| 65 | + "loss": 0.4926429264344637, | |
| 66 | + "edits_per_token": 5.233096085409253, | |
| 67 | + "extra_ops_ratio": 0.6357123396433404, | |
| 68 | + "loss_reduction": -0.005236900573947656, | |
| 69 | + "reduction_per_ops": -0.008237846345543273 | |
| 70 | + }, | |
| 71 | + { | |
| 72 | + "lambda": 0.01, | |
| 73 | + "kappa": 0.5, | |
| 74 | + "loss": 0.4901237397290068, | |
| 75 | + "edits_per_token": 2.9187425860023724, | |
| 76 | + "extra_ops_ratio": 0.3409675064177417, | |
| 77 | + "loss_reduction": -0.0027177138684907343, | |
| 78 | + "reduction_per_ops": -0.007970594902263456 | |
| 79 | + }, | |
| 80 | + { | |
| 81 | + "lambda": 0.03, | |
| 82 | + "kappa": 0.0, | |
| 83 | + "loss": 0.49175829451844927, | |
| 84 | + "edits_per_token": 5.177935943060498, | |
| 85 | + "extra_ops_ratio": 0.6265161045929716, | |
| 86 | + "loss_reduction": -0.0043522686579332, | |
| 87 | + "reduction_per_ops": -0.006946778584024965 | |
| 88 | + }, | |
| 89 | + { | |
| 90 | + "lambda": 0.03, | |
| 91 | + "kappa": 0.5, | |
| 92 | + "loss": 0.4906825974035659, | |
| 93 | + "edits_per_token": 2.820284697508897, | |
| 94 | + "extra_ops_ratio": 0.3285812454857153, | |
| 95 | + "loss_reduction": -0.0032765715430498332, | |
| 96 | + "reduction_per_ops": -0.009971876326070711 | |
| 97 | + }, | |
| 98 | + { | |
| 99 | + "lambda": 0.1, | |
| 100 | + "kappa": 0.0, | |
| 101 | + "loss": 0.49028573992130736, | |
| 102 | + "edits_per_token": 4.982799525504152, | |
| 103 | + "extra_ops_ratio": 0.5937093098958334, | |
| 104 | + "loss_reduction": -0.002879714060791294, | |
| 105 | + "reduction_per_ops": -0.004850377133713031 | |
| 106 | + }, | |
| 107 | + { | |
| 108 | + "lambda": 0.1, | |
| 109 | + "kappa": 0.5, | |
| 110 | + "loss": 0.4904432398568693, | |
| 111 | + "edits_per_token": 2.4905100830367735, | |
| 112 | + "extra_ops_ratio": 0.285856970971448, | |
| 113 | + "loss_reduction": -0.003037213996353205, | |
| 114 | + "reduction_per_ops": -0.010624942907747275 | |
| 115 | + }, | |
| 116 | + { | |
| 117 | + "lambda": 0.3, | |
| 118 | + "kappa": 0.0, | |
| 119 | + "loss": 0.4887911139292508, | |
| 120 | + "edits_per_token": 4.198102016607355, | |
| 121 | + "extra_ops_ratio": 0.4771132757655242, | |
| 122 | + "loss_reduction": -0.001385088068734719, | |
| 123 | + "reduction_per_ops": -0.002903059166635757 | |
| 124 | + }, | |
| 125 | + { | |
| 126 | + "lambda": 0.3, | |
| 127 | + "kappa": 0.5, | |
| 128 | + "loss": 0.48979161444649294, | |
| 129 | + "edits_per_token": 1.568208778173191, | |
| 130 | + "extra_ops_ratio": 0.17398185096460164, | |
| 131 | + "loss_reduction": -0.002385588585976872, | |
| 132 | + "reduction_per_ops": -0.0137117094268772 | |
| 133 | + } | |
| 134 | + ], | |
| 135 | + "baseline_budget0": { | |
| 136 | + "loss": 0.48740602586051607, | |
| 137 | + "edits_per_token": 0.0, | |
| 138 | + "extra_ops_ratio": 0.0 | |
| 139 | + }, | |
| 140 | + "selected": { | |
| 141 | + "lambda": 0.3, | |
| 142 | + "kappa": 0.0, | |
| 143 | + "loss": 0.4887911139292508, | |
| 144 | + "edits_per_token": 4.198102016607355, | |
| 145 | + "extra_ops_ratio": 0.4771132757655242, | |
| 146 | + "loss_reduction": -0.001385088068734719, | |
| 147 | + "reduction_per_ops": -0.002903059166635757 | |
| 148 | + }, | |
| 149 | + "checkpoint_sha256": "34ec25bc13935a5276c68155f7bd978233d297fd543a288cd9612686fa7e6c75", | |
| 150 | + "selection_rule": "max_loss_reduction_per_ops" | |
| 151 | +} | |
| \ No newline at end of file | ||
added
experiments/runs/controller_v2s3_seed01_20261030004720/metrics.jsonl
+30 −0
@@ -0,0 +1,30 @@ | ||
| 1 | +{"step": 0, "loss": 0.5471222400665283, "gain": 0.08188310265541077, "harm": 0.7777696847915649, "nll": 0.763542890548706, "t": 1.29} | |
| 2 | +{"step": 100, "loss": 0.10401472449302673, "gain": 0.003353619482368231, "harm": 0.5848105549812317, "nll": -1.917441725730896, "t": 10.42} | |
| 3 | +{"step": 200, "loss": 0.06753906607627869, "gain": 0.002697773976251483, "harm": 0.5347252488136292, "nll": -2.0252132415771484, "t": 17.76} | |
| 4 | +{"step": 249, "calib_huber": 0.007724088622620563, "calib_sign_acc": 0.5044954673799971, "calib_harm_brier": 0.19917026808329547, "calib_harm_ece": 0.08023828268051147, "calib_n_labels": 26916, "calib_oracle_opportunity_per_state": 0.0200653997960424, "calib_regret_per_state": 0.013944871664771917, "calib_captured_fraction": 0.30502896495875775, "calib_top1_match": 0.08936170212765958, "calib_n_audit_states": 1645, "t": 23.98} | |
| 5 | +{"step": 300, "loss": 0.03441177308559418, "gain": 0.0029057699721306562, "harm": 0.5025796890258789, "nll": -2.197838306427002, "t": 27.54} | |
| 6 | +{"step": 400, "loss": 0.10745498538017273, "gain": 0.005344087723642588, "harm": 0.5453636646270752, "nll": -1.7057093381881714, "t": 34.69} | |
| 7 | +{"step": 499, "calib_huber": 0.0029885766587333207, "calib_sign_acc": 0.4259919750334374, "calib_harm_brier": 0.1813072681356139, "calib_harm_ece": 0.0780940130352974, "calib_n_labels": 26916, "calib_oracle_opportunity_per_state": 0.0200653997960424, "calib_regret_per_state": 0.014313748107492743, "calib_captured_fraction": 0.2866452573590925, "calib_top1_match": 0.0547112462006079, "calib_n_audit_states": 1645, "t": 44.21} | |
| 8 | +{"step": 500, "loss": 0.07936693727970123, "gain": 0.002874889876693487, "harm": 0.5229513049125671, "nll": -1.849835991859436, "t": 44.29} | |
| 9 | +{"step": 600, "loss": 0.006543099880218506, "gain": 0.001932281069457531, "harm": 0.48412805795669556, "nll": -2.3745319843292236, "t": 51.1} | |
| 10 | +{"step": 700, "loss": 0.06510673463344574, "gain": 0.00877080112695694, "harm": 0.4454459547996521, "nll": -1.6638703346252441, "t": 58.48} | |
| 11 | +{"step": 749, "calib_huber": 0.002168223534212865, "calib_sign_acc": 0.49041462327240304, "calib_harm_brier": 0.16566909980518818, "calib_harm_ece": 0.042970336973667145, "calib_n_labels": 26916, "calib_oracle_opportunity_per_state": 0.0200653997960424, "calib_regret_per_state": 0.015758255694774872, "calib_captured_fraction": 0.21465528447218118, "calib_top1_match": 0.041945288753799395, "calib_n_audit_states": 1645, "t": 64.88} | |
| 12 | +{"step": 800, "loss": 0.06329897046089172, "gain": 0.0020338173490017653, "harm": 0.5008138418197632, "nll": -1.8914177417755127, "t": 68.52} | |
| 13 | +{"step": 900, "loss": -0.044697314500808716, "gain": 0.001048971083946526, "harm": 0.44541195034980774, "nll": -2.6845223903656006, "t": 75.49} | |
| 14 | +{"step": 999, "calib_huber": 0.0013120168749990958, "calib_sign_acc": 0.3987591023926289, "calib_harm_brier": 0.1603591404196447, "calib_harm_ece": 0.026692669838666916, "calib_n_labels": 26916, "calib_oracle_opportunity_per_state": 0.0200653997960424, "calib_regret_per_state": 0.01603862224741185, "calib_captured_fraction": 0.2006826472216502, "calib_top1_match": 0.04012158054711246, "calib_n_audit_states": 1645, "t": 85.15} | |
| 15 | +{"step": 1000, "loss": -0.02209603786468506, "gain": 0.0009799482068046927, "harm": 0.5161257386207581, "nll": -2.8113887310028076, "t": 85.23} | |
| 16 | +{"step": 1100, "loss": -0.10085465013980865, "gain": 0.0010887801181524992, "harm": 0.434581995010376, "nll": -3.1923441886901855, "t": 92.09} | |
| 17 | +{"step": 1200, "loss": -0.10687923431396484, "gain": 0.0008391870651394129, "harm": 0.4322952926158905, "nll": -3.2386605739593506, "t": 99.33} | |
| 18 | +{"step": 1249, "calib_huber": 0.0011769543454628994, "calib_sign_acc": 0.36168078466339726, "calib_harm_brier": 0.15637497314462195, "calib_harm_ece": 0.017439356073737144, "calib_n_labels": 26916, "calib_oracle_opportunity_per_state": 0.0200653997960424, "calib_regret_per_state": 0.01591340959253282, "calib_captured_fraction": 0.20692287448608404, "calib_top1_match": 0.044984802431610946, "calib_n_audit_states": 1645, "t": 105.4} | |
| 19 | +{"step": 1300, "loss": -0.10567505657672882, "gain": 0.0011399664217606187, "harm": 0.4573471248149872, "nll": -3.3548858165740967, "t": 109.09} | |
| 20 | +{"step": 1400, "loss": -0.1049814522266388, "gain": 0.0012958016013726592, "harm": 0.45608627796173096, "nll": -3.3432040214538574, "t": 116.11} | |
| 21 | +{"step": 1499, "calib_huber": 0.001097509661557363, "calib_sign_acc": 0.5441744687174914, "calib_harm_brier": 0.15651853762368848, "calib_harm_ece": 0.01747792400419712, "calib_n_labels": 26916, "calib_oracle_opportunity_per_state": 0.0200653997960424, "calib_regret_per_state": 0.015713384810914385, "calib_captured_fraction": 0.21689151621022695, "calib_top1_match": 0.0486322188449848, "calib_n_audit_states": 1645, "t": 125.65} | |
| 22 | +{"step": 1500, "loss": -0.1010504961013794, "gain": 0.0016412652330473065, "harm": 0.4739455282688141, "nll": -3.3966450691223145, "t": 125.7} | |
| 23 | +{"step": 1600, "loss": -0.06810225546360016, "gain": 0.0016716807149350643, "harm": 0.47334086894989014, "nll": -3.064443826675415, "t": 132.59} | |
| 24 | +{"step": 1700, "loss": -0.10438083112239838, "gain": 0.0014919735258445144, "harm": 0.4370725750923157, "nll": -3.2440907955169678, "t": 139.85} | |
| 25 | +{"step": 1749, "calib_huber": 0.001152203617478253, "calib_sign_acc": 0.6283251597562788, "calib_harm_brier": 0.15444377882729704, "calib_harm_ece": 0.021278375759720802, "calib_n_labels": 26916, "calib_oracle_opportunity_per_state": 0.0200653997960424, "calib_regret_per_state": 0.01586139586196482, "calib_captured_fraction": 0.20951508451412748, "calib_top1_match": 0.0547112462006079, "calib_n_audit_states": 1645, "t": 145.83} | |
| 26 | +{"step": 1800, "loss": -0.12716279923915863, "gain": 0.0009756564977578819, "harm": 0.42070525884628296, "nll": -3.384910821914673, "t": 149.48} | |
| 27 | +{"step": 1900, "loss": -0.11546054482460022, "gain": 0.0011908027809113264, "harm": 0.4737454354763031, "nll": -3.535240411758423, "t": 156.56} | |
| 28 | +{"step": 1999, "loss": -0.14543230831623077, "gain": 0.001172536169178784, "harm": 0.42771992087364197, "nll": -3.6046481132507324, "t": 163.78} | |
| 29 | +{"step": 1999, "calib_huber": 0.0010707473310660352, "calib_sign_acc": 0.38646158418784365, "calib_harm_brier": 0.15663047594378546, "calib_harm_ece": 0.018951764330267906, "calib_n_labels": 26916, "calib_oracle_opportunity_per_state": 0.0200653997960424, "calib_regret_per_state": 0.01485436325015268, "calib_captured_fraction": 0.2597026024329462, "calib_top1_match": 0.06504559270516717, "calib_n_audit_states": 1645, "t": 166.28} | |
| 30 | +{"event": "restored_best_calibration_checkpoint", "step": 250, "score": -0.013944871664771917, "t": 166.29} | |
added
experiments/runs/controller_v2s4_seed01_20261030004719/checkpoint/checkpoint.json
+49 −0
@@ -0,0 +1,49 @@ | ||
| 1 | +{ | |
| 2 | + "config": { | |
| 3 | + "name": "tiny_p4v2", | |
| 4 | + "vocab_size": 128, | |
| 5 | + "d_model": 256, | |
| 6 | + "n_layers": 6, | |
| 7 | + "n_heads": 8, | |
| 8 | + "n_kv_heads": 4, | |
| 9 | + "ffn_width": 768, | |
| 10 | + "max_seq_len": 320, | |
| 11 | + "rope_theta": 10000.0, | |
| 12 | + "norm_eps": 1e-05, | |
| 13 | + "tie_embeddings": true, | |
| 14 | + "init_std": 0.02, | |
| 15 | + "use_workspace": true, | |
| 16 | + "w": 64, | |
| 17 | + "ffn_w": 192, | |
| 18 | + "n_slots": 16, | |
| 19 | + "n_editor_blocks": 2, | |
| 20 | + "n_editor_heads": 2, | |
| 21 | + "r_max": 8, | |
| 22 | + "eta_max": 0.25, | |
| 23 | + "clip_c": 1.0, | |
| 24 | + "clip_eps": 1e-06, | |
| 25 | + "readout_zero_init": false, | |
| 26 | + "readout_init_std": 0.2, | |
| 27 | + "readout_scale": 39.0492057800293, | |
| 28 | + "controller_hidden": 0, | |
| 29 | + "ctrl_input": "h", | |
| 30 | + "ctrl_use_entropy": true, | |
| 31 | + "lambda_cost": 0.3, | |
| 32 | + "kappa_risk": 0.5, | |
| 33 | + "dense_writes": false | |
| 34 | + }, | |
| 35 | + "saved_at": "2026-10-30T00:50:56-0400", | |
| 36 | + "run_id": "controller_v2s4_seed01_20261030004719", | |
| 37 | + "parent": "experiments/runs/p4v2_prisme_seed04_20261030001749/checkpoint", | |
| 38 | + "selected": { | |
| 39 | + "lambda": 0.3, | |
| 40 | + "kappa": 0.5, | |
| 41 | + "loss": 0.48625035585740567, | |
| 42 | + "edits_per_token": 0.1951364175563464, | |
| 43 | + "extra_ops_ratio": 0.02227253153089385, | |
| 44 | + "loss_reduction": 0.0011556700031103984, | |
| 45 | + "reduction_per_ops": 0.05188768063959807 | |
| 46 | + }, | |
| 47 | + "locked": true, | |
| 48 | + "weights_sha256": "ce86e3a12b5d5af217859afaccfe238677ad488c5ee0b4f219200742f99a7fa2" | |
| 49 | +} | |
| \ No newline at end of file | ||
added
experiments/runs/controller_v2s4_seed01_20261030004719/config.yaml
+67 −0
@@ -0,0 +1,67 @@ | ||
| 1 | +experiment: | |
| 2 | + name: controller_v2s4 | |
| 3 | + seed: 1 | |
| 4 | + mode: prisme | |
| 5 | + model: from_checkpoint | |
| 6 | + checkpoint: experiments/runs/p4v2_prisme_seed04_20261030001749/checkpoint | |
| 7 | + labels: | |
| 8 | + train: experiments/runs/labels_v2s4_seed01_20261030004544/labels_train.pt | |
| 9 | + calib: experiments/runs/labels_v2s4_seed01_20261030004544/labels_calib.pt | |
| 10 | + train: | |
| 11 | + steps: 2000 | |
| 12 | + lr: 0.001 | |
| 13 | + weight_decay: 0.01 | |
| 14 | + alpha: 1.0 | |
| 15 | + beta: 0.5 | |
| 16 | + gamma: 0.1 | |
| 17 | + huber_delta: 0.1 | |
| 18 | + log_every: 100 | |
| 19 | + eval_every: 250 | |
| 20 | + seq_len: 320 | |
| 21 | + lambda_grid: | |
| 22 | + - 0.0 | |
| 23 | + - 0.01 | |
| 24 | + - 0.03 | |
| 25 | + - 0.1 | |
| 26 | + - 0.3 | |
| 27 | + kappa_grid: | |
| 28 | + - 0.0 | |
| 29 | + - 0.5 | |
| 30 | + sweep_batches: 10 | |
| 31 | + max_budget: 8 | |
| 32 | + selection_rule: max_loss_reduction_per_ops | |
| 33 | + model_overrides: | |
| 34 | + ctrl_input: h | |
| 35 | + ctrl_use_entropy: true | |
| 36 | +model: | |
| 37 | + name: tiny_p4v2 | |
| 38 | + vocab_size: 128 | |
| 39 | + d_model: 256 | |
| 40 | + n_layers: 6 | |
| 41 | + n_heads: 8 | |
| 42 | + n_kv_heads: 4 | |
| 43 | + ffn_width: 768 | |
| 44 | + max_seq_len: 320 | |
| 45 | + rope_theta: 10000.0 | |
| 46 | + norm_eps: 1.0e-05 | |
| 47 | + tie_embeddings: true | |
| 48 | + init_std: 0.02 | |
| 49 | + use_workspace: true | |
| 50 | + w: 64 | |
| 51 | + ffn_w: 192 | |
| 52 | + n_slots: 16 | |
| 53 | + n_editor_blocks: 2 | |
| 54 | + n_editor_heads: 2 | |
| 55 | + r_max: 8 | |
| 56 | + eta_max: 0.25 | |
| 57 | + clip_c: 1.0 | |
| 58 | + clip_eps: 1.0e-06 | |
| 59 | + readout_zero_init: false | |
| 60 | + readout_init_std: 0.2 | |
| 61 | + readout_scale: 39.0492057800293 | |
| 62 | + controller_hidden: 0 | |
| 63 | + ctrl_input: h | |
| 64 | + ctrl_use_entropy: true | |
| 65 | + lambda_cost: 0.0 | |
| 66 | + kappa_risk: 0.0 | |
| 67 | + dense_writes: false | |
added
experiments/runs/controller_v2s4_seed01_20261030004719/manifest.json
+151 −0
@@ -0,0 +1,151 @@ | ||
| 1 | +{ | |
| 2 | + "run_id": "controller_v2s4_seed01_20261030004719", | |
| 3 | + "name": "controller_v2s4", | |
| 4 | + "seed": 1, | |
| 5 | + "code_commit": "unknown", | |
| 6 | + "config_sha256": "e2fd878b8eb564a3b6415335bf21da1ff862fdf95dfbdb47fefa2577cda90381", | |
| 7 | + "started_at": "2026-10-30T00:47:19-0400", | |
| 8 | + "host": "M5M36", | |
| 9 | + "python": "3.12.14", | |
| 10 | + "torch": "2.15.0", | |
| 11 | + "command": "/Users/simon-pierreboucher/wp31/prisme-slm/training/train_controller.py --config configs/experiments/controller_v2s4.yaml --device mps", | |
| 12 | + "state": "completed", | |
| 13 | + "wall_seconds": 217.1, | |
| 14 | + "device": "mps", | |
| 15 | + "checkpoint_parent": "experiments/runs/p4v2_prisme_seed04_20261030001749/checkpoint", | |
| 16 | + "labels_train": "experiments/runs/labels_v2s4_seed01_20261030004544/labels_train.pt", | |
| 17 | + "labels_calib": "experiments/runs/labels_v2s4_seed01_20261030004544/labels_calib.pt", | |
| 18 | + "finished_at": "2026-10-30T00:50:56-0400", | |
| 19 | + "eval_train": { | |
| 20 | + "huber": 0.0012207997952024066, | |
| 21 | + "sign_acc": 0.6253905668799286, | |
| 22 | + "harm_brier": 0.14596635829549232, | |
| 23 | + "harm_ece": 0.06639833003282547, | |
| 24 | + "n_labels": 26884, | |
| 25 | + "oracle_opportunity_per_state": 0.017455400138836164, | |
| 26 | + "regret_per_state": 0.012565521732358545, | |
| 27 | + "captured_fraction": 0.28013556650576177, | |
| 28 | + "top1_match": 0.059802712700369916, | |
| 29 | + "n_audit_states": 1622 | |
| 30 | + }, | |
| 31 | + "eval_calib": { | |
| 32 | + "huber": 0.0012847311736074417, | |
| 33 | + "sign_acc": 0.6326348640213999, | |
| 34 | + "harm_brier": 0.15521432896712006, | |
| 35 | + "harm_ece": 0.07186548411846161, | |
| 36 | + "n_labels": 26916, | |
| 37 | + "oracle_opportunity_per_state": 0.023318092004144083, | |
| 38 | + "regret_per_state": 0.011166786567780747, | |
| 39 | + "captured_fraction": 0.52111062235297, | |
| 40 | + "top1_match": 0.06018237082066869, | |
| 41 | + "n_audit_states": 1645 | |
| 42 | + }, | |
| 43 | + "sweep": [ | |
| 44 | + { | |
| 45 | + "lambda": 0.0, | |
| 46 | + "kappa": 0.0, | |
| 47 | + "loss": 0.49249181147854804, | |
| 48 | + "edits_per_token": 3.6684460260972718, | |
| 49 | + "extra_ops_ratio": 0.470991978583104, | |
| 50 | + "loss_reduction": -0.005085785618031968, | |
| 51 | + "reduction_per_ops": -0.010798030219817446 | |
| 52 | + }, | |
| 53 | + { | |
| 54 | + "lambda": 0.0, | |
| 55 | + "kappa": 0.5, | |
| 56 | + "loss": 0.4869922624364018, | |
| 57 | + "edits_per_token": 1.9780545670225385, | |
| 58 | + "extra_ops_ratio": 0.23909690739279824, | |
| 59 | + "loss_reduction": 0.00041376342411425515, | |
| 60 | + "reduction_per_ops": 0.0017305260391114452 | |
| 61 | + }, | |
| 62 | + { | |
| 63 | + "lambda": 0.01, | |
| 64 | + "kappa": 0.0, | |
| 65 | + "loss": 0.4923982970937998, | |
| 66 | + "edits_per_token": 3.5539739027283512, | |
| 67 | + "extra_ops_ratio": 0.4550833967939673, | |
| 68 | + "loss_reduction": -0.004992271233283718, | |
| 69 | + "reduction_per_ops": -0.010970013998431808 | |
| 70 | + }, | |
| 71 | + { | |
| 72 | + "lambda": 0.01, | |
| 73 | + "kappa": 0.5, | |
| 74 | + "loss": 0.48735612482362795, | |
| 75 | + "edits_per_token": 1.8612099644128113, | |
| 76 | + "extra_ops_ratio": 0.22442850155903918, | |
| 77 | + "loss_reduction": 4.990103688812253e-05, | |
| 78 | + "reduction_per_ops": 0.00022234714638058275 | |
| 79 | + }, | |
| 80 | + { | |
| 81 | + "lambda": 0.03, | |
| 82 | + "kappa": 0.0, | |
| 83 | + "loss": 0.4913539094574228, | |
| 84 | + "edits_per_token": 3.295373665480427, | |
| 85 | + "extra_ops_ratio": 0.4207166149098678, | |
| 86 | + "loss_reduction": -0.003947883596906732, | |
| 87 | + "reduction_per_ops": -0.009383712116414766 | |
| 88 | + }, | |
| 89 | + { | |
| 90 | + "lambda": 0.03, | |
| 91 | + "kappa": 0.5, | |
| 92 | + "loss": 0.48911659177370626, | |
| 93 | + "edits_per_token": 1.6779359430604983, | |
| 94 | + "extra_ops_ratio": 0.20157079821096763, | |
| 95 | + "loss_reduction": -0.0017105659131901874, | |
| 96 | + "reduction_per_ops": -0.008486179190499004 | |
| 97 | + }, | |
| 98 | + { | |
| 99 | + "lambda": 0.1, | |
| 100 | + "kappa": 0.0, | |
| 101 | + "loss": 0.4855112390303244, | |
| 102 | + "edits_per_token": 2.543890865954923, | |
| 103 | + "extra_ops_ratio": 0.3220053658083806, | |
| 104 | + "loss_reduction": 0.0018947868301916748, | |
| 105 | + "reduction_per_ops": 0.0058843330931299676 | |
| 106 | + }, | |
| 107 | + { | |
| 108 | + "lambda": 0.1, | |
| 109 | + "kappa": 0.5, | |
| 110 | + "loss": 0.486984067398741, | |
| 111 | + "edits_per_token": 1.0504151838671412, | |
| 112 | + "extra_ops_ratio": 0.12493916508141786, | |
| 113 | + "loss_reduction": 0.0004219584617750627, | |
| 114 | + "reduction_per_ops": 0.0033773113618943205 | |
| 115 | + }, | |
| 116 | + { | |
| 117 | + "lambda": 0.3, | |
| 118 | + "kappa": 0.0, | |
| 119 | + "loss": 0.4817445196149471, | |
| 120 | + "edits_per_token": 1.0581257413997627, | |
| 121 | + "extra_ops_ratio": 0.1268179996440702, | |
| 122 | + "loss_reduction": 0.005661506245568992, | |
| 123 | + "reduction_per_ops": 0.04464276570722361 | |
| 124 | + }, | |
| 125 | + { | |
| 126 | + "lambda": 0.3, | |
| 127 | + "kappa": 0.5, | |
| 128 | + "loss": 0.48625035585740567, | |
| 129 | + "edits_per_token": 0.1951364175563464, | |
| 130 | + "extra_ops_ratio": 0.02227253153089385, | |
| 131 | + "loss_reduction": 0.0011556700031103984, | |
| 132 | + "reduction_per_ops": 0.05188768063959807 | |
| 133 | + } | |
| 134 | + ], | |
| 135 | + "baseline_budget0": { | |
| 136 | + "loss": 0.48740602586051607, | |
| 137 | + "edits_per_token": 0.0, | |
| 138 | + "extra_ops_ratio": 0.0 | |
| 139 | + }, | |
| 140 | + "selected": { | |
| 141 | + "lambda": 0.3, | |
| 142 | + "kappa": 0.5, | |
| 143 | + "loss": 0.48625035585740567, | |
| 144 | + "edits_per_token": 0.1951364175563464, | |
| 145 | + "extra_ops_ratio": 0.02227253153089385, | |
| 146 | + "loss_reduction": 0.0011556700031103984, | |
| 147 | + "reduction_per_ops": 0.05188768063959807 | |
| 148 | + }, | |
| 149 | + "checkpoint_sha256": "ce86e3a12b5d5af217859afaccfe238677ad488c5ee0b4f219200742f99a7fa2", | |
| 150 | + "selection_rule": "max_loss_reduction_per_ops" | |
| 151 | +} | |
| \ No newline at end of file | ||
added
experiments/runs/controller_v2s4_seed01_20261030004719/metrics.jsonl
+30 −0
@@ -0,0 +1,30 @@ | ||
| 1 | +{"step": 0, "loss": 0.43164244294166565, "gain": 0.027255289256572723, "harm": 0.7605108022689819, "nll": 0.24131746590137482, "t": 1.48} | |
| 2 | +{"step": 100, "loss": 0.2405385822057724, "gain": 0.004398028831928968, "harm": 0.4923504889011383, "nll": -0.10034700483083725, "t": 11.1} | |
| 3 | +{"step": 200, "loss": 0.0673132985830307, "gain": 0.0024042660370469093, "harm": 0.5429790616035461, "nll": -2.065804958343506, "t": 19.72} | |
| 4 | +{"step": 249, "calib_huber": 0.002094036332741413, "calib_sign_acc": 0.4631817506315946, "calib_harm_brier": 0.17309671079692593, "calib_harm_ece": 0.048935920000076294, "calib_n_labels": 26916, "calib_oracle_opportunity_per_state": 0.023318092004144083, "calib_regret_per_state": 0.014540166550494255, "calib_captured_fraction": 0.3764426974595442, "calib_top1_match": 0.07173252279635259, "calib_n_audit_states": 1645, "t": 26.52} | |
| 5 | +{"step": 300, "loss": 0.005617067217826843, "gain": 0.0021593354176729918, "harm": 0.48432907462120056, "nll": -2.387068033218384, "t": 30.22} | |
| 6 | +{"step": 400, "loss": -0.01675678789615631, "gain": 0.001087905722670257, "harm": 0.4958101809024811, "nll": -2.6574976444244385, "t": 38.24} | |
| 7 | +{"step": 499, "calib_huber": 0.001623512151461332, "calib_sign_acc": 0.5320627136275821, "calib_harm_brier": 0.15747589369836365, "calib_harm_ece": 0.029524514451622963, "calib_n_labels": 26916, "calib_oracle_opportunity_per_state": 0.023318092004144083, "calib_regret_per_state": 0.014382726008406526, "calib_captured_fraction": 0.38319455957844095, "calib_top1_match": 0.0668693009118541, "calib_n_audit_states": 1645, "t": 48.85} | |
| 8 | +{"step": 500, "loss": -0.02444365620613098, "gain": 0.0012579343747347593, "harm": 0.5083814263343811, "nll": -2.7989227771759033, "t": 48.92} | |
| 9 | +{"step": 600, "loss": -0.011498332023620605, "gain": 0.001862199860624969, "harm": 0.4400762915611267, "nll": -2.333986759185791, "t": 56.83} | |
| 10 | +{"step": 700, "loss": 0.02981466054916382, "gain": 0.0019247914897277951, "harm": 0.4267236590385437, "nll": -1.854719638824463, "t": 65.16} | |
| 11 | +{"step": 749, "calib_huber": 0.0018654652089345578, "calib_sign_acc": 0.4522588794768911, "calib_harm_brier": 0.16276104536324382, "calib_harm_ece": 0.09062658995389938, "calib_n_labels": 26916, "calib_oracle_opportunity_per_state": 0.023318092004144083, "calib_regret_per_state": 0.012852072280953359, "calib_captured_fraction": 0.4488368825944553, "calib_top1_match": 0.0662613981762918, "calib_n_audit_states": 1645, "t": 71.46} | |
| 12 | +{"step": 800, "loss": -0.009733706712722778, "gain": 0.0018562733894214034, "harm": 0.3807581663131714, "nll": -2.01969051361084, "t": 75.0} | |
| 13 | +{"step": 900, "loss": -0.04677686095237732, "gain": 0.0012354672653600574, "harm": 0.4526765048503876, "nll": -2.7435057163238525, "t": 82.81} | |
| 14 | +{"step": 999, "calib_huber": 0.0014452590856372841, "calib_sign_acc": 0.48970872343587457, "calib_harm_brier": 0.14695231233172473, "calib_harm_ece": 0.03946586325764656, "calib_n_labels": 26916, "calib_oracle_opportunity_per_state": 0.023318092004144083, "calib_regret_per_state": 0.011811167273477943, "calib_captured_fraction": 0.493476255631084, "calib_top1_match": 0.05531914893617021, "calib_n_audit_states": 1645, "t": 93.47} | |
| 15 | +{"step": 1000, "loss": -0.0617438405752182, "gain": 0.0008112452342174947, "harm": 0.4560224115848541, "nll": -2.905662775039673, "t": 93.57} | |
| 16 | +{"step": 1100, "loss": -0.10207153856754303, "gain": 0.001203094725497067, "harm": 0.3867413103580475, "nll": -2.9664528369903564, "t": 101.64} | |
| 17 | +{"step": 1200, "loss": -0.09816358983516693, "gain": 0.001390167511999607, "harm": 0.41572046279907227, "nll": -3.0741398334503174, "t": 109.49} | |
| 18 | +{"step": 1249, "calib_huber": 0.0012847311736074417, "calib_sign_acc": 0.6326348640213999, "calib_harm_brier": 0.15521432896712006, "calib_harm_ece": 0.07186548411846161, "calib_n_labels": 26916, "calib_oracle_opportunity_per_state": 0.023318092004144083, "calib_regret_per_state": 0.011166786567780747, "calib_captured_fraction": 0.52111062235297, "calib_top1_match": 0.06018237082066869, "calib_n_audit_states": 1645, "t": 116.26} | |
| 19 | +{"step": 1300, "loss": -0.11031846702098846, "gain": 0.0005297428579069674, "harm": 0.4200277030467987, "nll": -3.208620548248291, "t": 120.53} | |
| 20 | +{"step": 1400, "loss": -0.08227270841598511, "gain": 0.0012564704520627856, "harm": 0.41779661178588867, "nll": -2.9242746829986572, "t": 128.5} | |
| 21 | +{"step": 1499, "calib_huber": 0.0011141103800169725, "calib_sign_acc": 0.5541313716748403, "calib_harm_brier": 0.14586461934988063, "calib_harm_ece": 0.04005922004580498, "calib_n_labels": 26916, "calib_oracle_opportunity_per_state": 0.023318092004144083, "calib_regret_per_state": 0.011563696035135844, "calib_captured_fraction": 0.5040890981525956, "calib_top1_match": 0.0668693009118541, "calib_n_audit_states": 1645, "t": 139.64} | |
| 22 | +{"step": 1500, "loss": -0.11083218455314636, "gain": 0.0005095681408420205, "harm": 0.46461519598960876, "nll": -3.436493396759033, "t": 139.74} | |
| 23 | +{"step": 1600, "loss": -0.06091587245464325, "gain": 0.0010667721508070827, "harm": 0.4672386944293976, "nll": -2.956019878387451, "t": 147.54} | |
| 24 | +{"step": 1700, "loss": -0.08807265758514404, "gain": 0.0010536278132349253, "harm": 0.44384080171585083, "nll": -3.110466718673706, "t": 155.32} | |
| 25 | +{"step": 1749, "calib_huber": 0.0010563022508134387, "calib_sign_acc": 0.4426363501263189, "calib_harm_brier": 0.141879980127247, "calib_harm_ece": 0.02590574137866497, "calib_n_labels": 26916, "calib_oracle_opportunity_per_state": 0.023318092004144083, "calib_regret_per_state": 0.01162012717644132, "calib_captured_fraction": 0.5016690398864454, "calib_top1_match": 0.06322188449848025, "calib_n_audit_states": 1645, "t": 161.98} | |
| 26 | +{"step": 1800, "loss": -0.1428903043270111, "gain": 0.0009566989610902965, "harm": 0.3898843228816986, "nll": -3.3878915309906006, "t": 166.42} | |
| 27 | +{"step": 1900, "loss": -0.10342848300933838, "gain": 0.0008749199332669377, "harm": 0.5072088241577148, "nll": -3.579077959060669, "t": 174.07} | |
| 28 | +{"step": 1999, "loss": -0.0823371410369873, "gain": 0.0009618307230994105, "harm": 0.4634293019771576, "nll": -3.1501359939575195, "t": 181.79} | |
| 29 | +{"step": 1999, "calib_huber": 0.0010995379567305744, "calib_sign_acc": 0.45567692079060784, "calib_harm_brier": 0.14569287350422597, "calib_harm_ece": 0.0276187714189291, "calib_n_labels": 26916, "calib_oracle_opportunity_per_state": 0.023318092004144083, "calib_regret_per_state": 0.011232054849526078, "calib_captured_fraction": 0.5183115819454731, "calib_top1_match": 0.06930091185410335, "calib_n_audit_states": 1645, "t": 184.54} | |
| 30 | +{"event": "restored_best_calibration_checkpoint", "step": 1250, "score": -0.011166786567780747, "t": 184.54} | |
added
experiments/runs/controller_v2s5_seed01_20261030004719/checkpoint/checkpoint.json
+49 −0
@@ -0,0 +1,49 @@ | ||
| 1 | +{ | |
| 2 | + "config": { | |
| 3 | + "name": "tiny_p4v2", | |
| 4 | + "vocab_size": 128, | |
| 5 | + "d_model": 256, | |
| 6 | + "n_layers": 6, | |
| 7 | + "n_heads": 8, | |
| 8 | + "n_kv_heads": 4, | |
| 9 | + "ffn_width": 768, | |
| 10 | + "max_seq_len": 320, | |
| 11 | + "rope_theta": 10000.0, | |
| 12 | + "norm_eps": 1e-05, | |
| 13 | + "tie_embeddings": true, | |
| 14 | + "init_std": 0.02, | |
| 15 | + "use_workspace": true, | |
| 16 | + "w": 64, | |
| 17 | + "ffn_w": 192, | |
| 18 | + "n_slots": 16, | |
| 19 | + "n_editor_blocks": 2, | |
| 20 | + "n_editor_heads": 2, | |
| 21 | + "r_max": 8, | |
| 22 | + "eta_max": 0.25, | |
| 23 | + "clip_c": 1.0, | |
| 24 | + "clip_eps": 1e-06, | |
| 25 | + "readout_zero_init": false, | |
| 26 | + "readout_init_std": 0.2, | |
| 27 | + "readout_scale": 39.13882827758789, | |
| 28 | + "controller_hidden": 0, | |
| 29 | + "ctrl_input": "h", | |
| 30 | + "ctrl_use_entropy": true, | |
| 31 | + "lambda_cost": 0.3, | |
| 32 | + "kappa_risk": 0.5, | |
| 33 | + "dense_writes": false | |
| 34 | + }, | |
| 35 | + "saved_at": "2026-10-30T00:50:54-0400", | |
| 36 | + "run_id": "controller_v2s5_seed01_20261030004719", | |
| 37 | + "parent": "experiments/runs/p4v2_prisme_seed05_20261030001839/checkpoint", | |
| 38 | + "selected": { | |
| 39 | + "lambda": 0.3, | |
| 40 | + "kappa": 0.5, | |
| 41 | + "loss": 0.48367020866059185, | |
| 42 | + "edits_per_token": 0.2568208778173191, | |
| 43 | + "extra_ops_ratio": 0.027824353634391955, | |
| 44 | + "loss_reduction": 0.0037358171999242185, | |
| 45 | + "reduction_per_ops": 0.13426429411487234 | |
| 46 | + }, | |
| 47 | + "locked": true, | |
| 48 | + "weights_sha256": "958788a3ebabeed125e43ca842c6e0c0a26b2eb9741f65b990ede4325bfbceb9" | |
| 49 | +} | |
| \ No newline at end of file | ||
added
experiments/runs/controller_v2s5_seed01_20261030004719/config.yaml
+67 −0
@@ -0,0 +1,67 @@ | ||
| 1 | +experiment: | |
| 2 | + name: controller_v2s5 | |
| 3 | + seed: 1 | |
| 4 | + mode: prisme | |
| 5 | + model: from_checkpoint | |
| 6 | + checkpoint: experiments/runs/p4v2_prisme_seed05_20261030001839/checkpoint | |
| 7 | + labels: | |
| 8 | + train: experiments/runs/labels_v2s5_seed01_20261030004544/labels_train.pt | |
| 9 | + calib: experiments/runs/labels_v2s5_seed01_20261030004544/labels_calib.pt | |
| 10 | + train: | |
| 11 | + steps: 2000 | |
| 12 | + lr: 0.001 | |
| 13 | + weight_decay: 0.01 | |
| 14 | + alpha: 1.0 | |
| 15 | + beta: 0.5 | |
| 16 | + gamma: 0.1 | |
| 17 | + huber_delta: 0.1 | |
| 18 | + log_every: 100 | |
| 19 | + eval_every: 250 | |
| 20 | + seq_len: 320 | |
| 21 | + lambda_grid: | |
| 22 | + - 0.0 | |
| 23 | + - 0.01 | |
| 24 | + - 0.03 | |
| 25 | + - 0.1 | |
| 26 | + - 0.3 | |
| 27 | + kappa_grid: | |
| 28 | + - 0.0 | |
| 29 | + - 0.5 | |
| 30 | + sweep_batches: 10 | |
| 31 | + max_budget: 8 | |
| 32 | + selection_rule: max_loss_reduction_per_ops | |
| 33 | + model_overrides: | |
| 34 | + ctrl_input: h | |
| 35 | + ctrl_use_entropy: true | |
| 36 | +model: | |
| 37 | + name: tiny_p4v2 | |
| 38 | + vocab_size: 128 | |
| 39 | + d_model: 256 | |
| 40 | + n_layers: 6 | |
| 41 | + n_heads: 8 | |
| 42 | + n_kv_heads: 4 | |
| 43 | + ffn_width: 768 | |
| 44 | + max_seq_len: 320 | |
| 45 | + rope_theta: 10000.0 | |
| 46 | + norm_eps: 1.0e-05 | |
| 47 | + tie_embeddings: true | |
| 48 | + init_std: 0.02 | |
| 49 | + use_workspace: true | |
| 50 | + w: 64 | |
| 51 | + ffn_w: 192 | |
| 52 | + n_slots: 16 | |
| 53 | + n_editor_blocks: 2 | |
| 54 | + n_editor_heads: 2 | |
| 55 | + r_max: 8 | |
| 56 | + eta_max: 0.25 | |
| 57 | + clip_c: 1.0 | |
| 58 | + clip_eps: 1.0e-06 | |
| 59 | + readout_zero_init: false | |
| 60 | + readout_init_std: 0.2 | |
| 61 | + readout_scale: 39.13882827758789 | |
| 62 | + controller_hidden: 0 | |
| 63 | + ctrl_input: h | |
| 64 | + ctrl_use_entropy: true | |
| 65 | + lambda_cost: 0.0 | |
| 66 | + kappa_risk: 0.0 | |
| 67 | + dense_writes: false | |
added
experiments/runs/controller_v2s5_seed01_20261030004719/manifest.json
+151 −0
Large diff (152 lines) is not loaded by default to keep the page fast.Load diff
added
experiments/runs/controller_v2s5_seed01_20261030004719/metrics.jsonl
+30 −0
Large diff (30 lines) is not loaded by default to keep the page fast.Load diff
added
experiments/runs/labels_mini_seed01_20261030005150/config.yaml
+58 −0
Large diff (58 lines) is not loaded by default to keep the page fast.Load diff
added
experiments/runs/labels_mini_seed01_20261030005150/manifest.json
+40 −0
Large diff (41 lines) is not loaded by default to keep the page fast.Load diff
added
experiments/runs/labels_mini_seed01_20261030005150/metrics.jsonl
+0 −0
Large diff (0 lines) is not loaded by default to keep the page fast.Load diff
added
experiments/runs/labels_v2s2_seed01_20261030004543/config.yaml
+58 −0
Large diff (58 lines) is not loaded by default to keep the page fast.Load diff
added
experiments/runs/labels_v2s2_seed01_20261030004543/manifest.json
+40 −0
Large diff (41 lines) is not loaded by default to keep the page fast.Load diff
added
experiments/runs/labels_v2s2_seed01_20261030004543/metrics.jsonl
+0 −0
Large diff (0 lines) is not loaded by default to keep the page fast.Load diff
added
experiments/runs/labels_v2s3_seed01_20261030004544/config.yaml
+58 −0
Large diff (58 lines) is not loaded by default to keep the page fast.Load diff
added
experiments/runs/labels_v2s3_seed01_20261030004544/manifest.json
+40 −0
Large diff (41 lines) is not loaded by default to keep the page fast.Load diff
added
experiments/runs/labels_v2s3_seed01_20261030004544/metrics.jsonl
+0 −0
Large diff (0 lines) is not loaded by default to keep the page fast.Load diff
added
experiments/runs/labels_v2s4_seed01_20261030004544/config.yaml
+58 −0
Large diff (58 lines) is not loaded by default to keep the page fast.Load diff
added
experiments/runs/labels_v2s4_seed01_20261030004544/manifest.json
+40 −0
Large diff (41 lines) is not loaded by default to keep the page fast.Load diff
added
experiments/runs/labels_v2s4_seed01_20261030004544/metrics.jsonl
+0 −0
Large diff (0 lines) is not loaded by default to keep the page fast.Load diff
added
experiments/runs/labels_v2s5_seed01_20261030004544/config.yaml
+58 −0
Large diff (58 lines) is not loaded by default to keep the page fast.Load diff
added
experiments/runs/labels_v2s5_seed01_20261030004544/manifest.json
+40 −0
Large diff (41 lines) is not loaded by default to keep the page fast.Load diff
added
experiments/runs/labels_v2s5_seed01_20261030004544/metrics.jsonl
+0 −0
Large diff (0 lines) is not loaded by default to keep the page fast.Load diff
added
experiments/runs/mini_backbone_seed01_20261030005114/checkpoint/checkpoint.json
+39 −0
Large diff (40 lines) is not loaded by default to keep the page fast.Load diff
added
experiments/runs/mini_backbone_seed01_20261030005114/config.yaml
+88 −0
Large diff (88 lines) is not loaded by default to keep the page fast.Load diff
added
experiments/runs/mini_backbone_seed01_20261030005114/em_dev_iid_b0.json
+1 −0
Large diff (2 lines) is not loaded by default to keep the page fast.Load diff
added
experiments/runs/mini_backbone_seed01_20261030005114/manifest.json
+42 −0
Large diff (43 lines) is not loaded by default to keep the page fast.Load diff
added
experiments/runs/mini_backbone_seed01_20261030005114/metrics.jsonl
+6 −0
Large diff (6 lines) is not loaded by default to keep the page fast.Load diff
added
experiments/runs/mini_editor_seed01_20261030005118/checkpoint/checkpoint.json
+39 −0
Large diff (40 lines) is not loaded by default to keep the page fast.Load diff
added
experiments/runs/mini_editor_seed01_20261030005118/config.yaml
+106 −0
Large diff (106 lines) is not loaded by default to keep the page fast.Load diff
added
experiments/runs/mini_editor_seed01_20261030005118/em_dev_iid_b0.json
+1 −0
Large diff (2 lines) is not loaded by default to keep the page fast.Load diff
added
experiments/runs/mini_editor_seed01_20261030005118/em_dev_iid_b2.json
+1 −0
Large diff (2 lines) is not loaded by default to keep the page fast.Load diff
added
experiments/runs/mini_editor_seed01_20261030005118/manifest.json
+55 −0
Large diff (56 lines) is not loaded by default to keep the page fast.Load diff
added
experiments/runs/mini_editor_seed01_20261030005118/metrics.jsonl
+6 −0
Large diff (6 lines) is not loaded by default to keep the page fast.Load diff
modified
paper/main.log
+90 −78
Large diff (317 lines) is not loaded by default to keep the page fast.Load diff
modified
paper/main.pdf
+0 −0
Binary file not shown.
modified
paper/sections/abstract.tex
+20 −1
Large diff (21 lines) is not loaded by default to keep the page fast.Load diff
modified
paper/sections/conclusion.tex
+16 −1
Large diff (17 lines) is not loaded by default to keep the page fast.Load diff
modified
paper/sections/limitations.tex
+22 −1
Large diff (23 lines) is not loaded by default to keep the page fast.Load diff
modified
paper/sections/mechanistic.tex
+44 −1
Large diff (45 lines) is not loaded by default to keep the page fast.Load diff
modified
paper/sections/reproducibility.tex
+11 −1
Large diff (12 lines) is not loaded by default to keep the page fast.Load diff
modified
paper/sections/results.tex
+127 −1
Large diff (128 lines) is not loaded by default to keep the page fast.Load diff
added
paper/sections/results_pilot.tex
+1 −0
Large diff (1 lines) is not loaded by default to keep the page fast.Load diff
modified
paper/tables/numbers.tex
+74 −16
Large diff (101 lines) is not loaded by default to keep the page fast.Load diff
added
paper/tables/routing_seeds.tex
+14 −0
Large diff (14 lines) is not loaded by default to keep the page fast.Load diff
added
reproducibility/data_card.md
+24 −0
Large diff (24 lines) is not loaded by default to keep the page fast.Load diff
added
reproducibility/model_card.md
+12 −0
Large diff (12 lines) is not loaded by default to keep the page fast.Load diff
added
reproducibility/run_index.md
+39 −0
Large diff (39 lines) is not loaded by default to keep the page fast.Load diff
added
results/analyzed/routing_seeds_v2.json
+66 −0
Large diff (67 lines) is not loaded by default to keep the page fast.Load diff
added
results/raw/routing_mini.json
+130 −0
Large diff (131 lines) is not loaded by default to keep the page fast.Load diff
added
results/raw/routing_v2s2.json
+290 −0
Large diff (291 lines) is not loaded by default to keep the page fast.Load diff
added
results/raw/routing_v2s3.json
+290 −0
Large diff (291 lines) is not loaded by default to keep the page fast.Load diff
added
results/raw/routing_v2s4.json
+290 −0
Large diff (291 lines) is not loaded by default to keep the page fast.Load diff
added
results/raw/routing_v2s5.json
+290 −0
Large diff (291 lines) is not loaded by default to keep the page fast.Load diff
modified
scripts/make_results_tables.py
+95 −5
Large diff (132 lines) is not loaded by default to keep the page fast.Load diff
added
scripts/reproduce_pilot.sh
+65 −0
Large diff (65 lines) is not loaded by default to keep the page fast.Load diff
added
scripts/run_index.py
+28 −0
Large diff (29 lines) is not loaded by default to keep the page fast.Load diff