SPB Git

spb/wp31_uqo

Public
4.9 KB · 66 lines shellscript
1#!/bin/bash2# Miniature end-to-end replication on CPU (minutes): backbone -> editor bootstrap -> counterfactual labels ->3# controller -> routing evaluation. Produces real run directories (tag "mini") and results/raw/routing_mini.json.4set -e5cd "$(dirname "$0")/.."6PY=.venv/bin/python7export PRISME_MINI=18test -f data/splits/synthetic_v1/train.jsonl || $PY -c "import sys; sys.path.insert(0,'.'); from data.generators.synthetic import write_splits; write_splits('data/splits/synthetic_v1')"9$PY - <<'PY'10import yaml11model = {"name": "mini", "vocab_size": 128, "d_model": 96, "n_layers": 2, "n_heads": 4, "n_kv_heads": 2, "ffn_width": 256, "max_seq_len": 320,12         "w": 32, "ffn_w": 96, "n_slots": 16, "n_editor_heads": 2, "r_max": 8, "readout_zero_init": False, "readout_init_std": 0.2,13         "ctrl_input": "h", "ctrl_use_entropy": True}14data = {"kind": "synthetic", "tokenizer": "char", "splits_dir": "data/splits/synthetic_v1", "loss_span": "all", "eval_splits": ["dev_iid"]}15bb = {"name": "mini_backbone", "seed": 1, "mode": "backbone_only", "model": model, "init": {"freeze_backbone": False}, "data": data,16      "train": {"batch_size": 16, "seq_len": 320, "steps": 150, "lr": 1e-3, "warmup": 10, "weight_decay": 0.1, "grad_clip": 1.0, "log_every": 50, "eval_every": 150, "eval_batches": 2, "ckpt_every": 150},17      "em_max_items": 32}18yaml.safe_dump(bb, open("configs/experiments/mini_backbone.yaml", "w"), sort_keys=False)19PY20$PY -m training.train_editor --config configs/experiments/mini_backbone.yaml --device cpu --run-root experiments/runs > experiments/logs/mini_backbone.log 2>&121BB=$(ls -td experiments/runs/mini_backbone_seed* | head -1)22$PY - "$BB" <<'PY'23import sys, yaml24bb = sys.argv[1]25e = yaml.safe_load(open("configs/experiments/mini_backbone.yaml"))26e.update(name="mini_editor", mode="prisme", init={"backbone_checkpoint": f"{bb}/checkpoint", "freeze_backbone": True, "auto_readout_scale": True},27         budgets=[0, 1, 2, 4, 8], budget_probs=[0.2] * 5, budget_per="position", em_budgets=[0, 2], em_max_items=32)28e["data"]["loss_span"] = "answer"; e["train"].update(steps=120, eval_every=120, ckpt_every=120)29yaml.safe_dump(e, open("configs/experiments/mini_editor.yaml", "w"), sort_keys=False)30PY31$PY -m training.train_editor --config configs/experiments/mini_editor.yaml --device cpu > experiments/logs/mini_editor.log 2>&132ED=$(ls -td experiments/runs/mini_editor_seed* | head -1)33$PY - "$ED" <<'PY'34import sys, yaml35ed = sys.argv[1]36lab = {"name": "labels_mini", "seed": 1, "mode": "prisme", "model": "from_checkpoint", "checkpoint": f"{ed}/checkpoint", "use_policy": False,37       "data": {"kind": "synthetic", "tokenizer": "char", "splits_dir": "data/splits/synthetic_v1", "loss_span": "answer"},38       "collect": {"batch_size": 16, "seq_len": 320, "max_prefix": 2, "audit_every": 2},39       "partitions": {"train": {"split": "ctrl_train", "n_batches": 12, "stream_seed": 11}, "calib": {"split": "calib", "n_batches": 4, "stream_seed": 12}}}40yaml.safe_dump(lab, open("configs/experiments/labels_mini.yaml", "w"), sort_keys=False)41PY42$PY -m training.collect_interventions --config configs/experiments/labels_mini.yaml --device cpu > experiments/logs/labels_mini.log 2>&143L=$(ls -td experiments/runs/labels_mini_seed* | head -1)44$PY - "$ED" "$L" <<'PY'45import sys, yaml46ed, L = sys.argv[1], sys.argv[2]47ctl = {"name": "controller_mini", "seed": 1, "mode": "prisme", "model": "from_checkpoint", "checkpoint": f"{ed}/checkpoint",48       "labels": {"train": f"{L}/labels_train.pt", "calib": f"{L}/labels_calib.pt"},49       "train": {"steps": 60, "lr": 1e-3, "weight_decay": 0.01, "alpha": 1.0, "beta": 0.5, "gamma": 0.1, "huber_delta": 0.1, "log_every": 20, "eval_every": 30, "seq_len": 320},50       "lambda_grid": [0.0, 0.3], "kappa_grid": [0.0], "sweep_batches": 2, "max_budget": 4, "selection_rule": "max_loss_reduction_per_ops"}51yaml.safe_dump(ctl, open("configs/experiments/controller_mini.yaml", "w"), sort_keys=False)52PY53$PY -m training.train_controller --config configs/experiments/controller_mini.yaml --device cpu > experiments/logs/controller_mini.log 2>&154C=$(ls -td experiments/runs/controller_mini_seed* | head -1)55$PY - "$C" <<'PY'56import sys, yaml57c = sys.argv[1]58rt = {"seed": 1, "mode": "prisme", "model": "from_checkpoint", "checkpoint": f"{c}/checkpoint",59      "data": {"kind": "synthetic", "tokenizer": "char", "splits_dir": "data/splits/synthetic_v1", "loss_span": "answer", "split": "dev_iid"},60      "batch_size": 16, "seq_len": 320, "n_batches": 2, "budgets": [1, 2], "oracle_batches": 1, "two_step_batches": 1,61      "entropy_thresholds": [1.0], "norm_thresholds": [0.1], "lambda_grid": [0.0]}62yaml.safe_dump(rt, open("configs/experiments/routing_mini.yaml", "w"), sort_keys=False)63PY64$PY -m evaluation.routing --config configs/experiments/routing_mini.yaml --split dev_iid --device cpu --out results/raw/routing_mini.json > experiments/logs/routing_mini.log 2>&165echo "MINI PIPELINE OK: $BB -> $ED -> $L -> $C -> results/raw/routing_mini.json"66
Files · 20e88d79efe28fb13610284e7be1ef0ef40c265d
Menu

Theme