From c7bcb73cd301777728741d798f4a7bdf40c8c922 Mon Sep 17 00:00:00 2001 From: Sidharth Pal Date: Thu, 12 Mar 2026 00:41:20 +0100 Subject: [PATCH 01/11] Enhance README with version 2.0 features and links Updated README with new features and installation instructions. --- README.md | 24 +++++++++++++++++++++++- 1 file changed, 23 insertions(+), 1 deletion(-) diff --git a/README.md b/README.md index fb3b554..7f6ca54 100644 --- a/README.md +++ b/README.md @@ -6,6 +6,14 @@ hotcb lets you modify training behavior **while your run is active** — no rest Version 2.0 expands the original live-callback system into a full control plane: you can now swap callbacks, tune optimizer parameters, and adjust loss weights — all from another terminal while the model trains. +Now tune hyperparameters in 2 not 2000 runs !! + + + +https://github.com/user-attachments/assets/2de80dc6-da66-4344-a2fc-8e726d2d9221 + + + --- ## What you get @@ -29,6 +37,20 @@ Plus: --- +[recipe_and_mutations_with_scheduling](https://github.com/sidphbot/hotcb/blob/master/screens/recipe_and_mutations_with_scheduling.png) + +[mutations](https://github.com/sidphbot/hotcb/blob/master/screens/mutations.png) + +[mutation_exanpded_impact_log](https://github.com/sidphbot/hotcb/blob/master/screens/mutation_exanpded_impact_log.png) + +[automated-ai-free-training-intervention](https://github.com/sidphbot/hotcb/blob/master/screens/automated-ai-free-training-intervention.png) + +[comparison_with_mutation_changes](https://github.com/sidphbot/hotcb/blob/master/screens/comparison_with_mutation_changes.png) + +[dynamic_manifold_vis](https://github.com/sidphbot/hotcb/blob/master/screens/dynamic_manifold_vis.png) + +--- + ## Installation ```bash @@ -47,7 +69,7 @@ pip install "hotcb[yaml]" pip install "hotcb[dashboard]" ``` -**With AI autopilot (LLM-driven optimization):** +**With AI autopilot (LLM or Rule driven live optimization - Optionally):** ```bash pip install "hotcb[dashboard,ai]" From bae5f30ea7f51d574d55d649d30b84c771b41328 Mon Sep 17 00:00:00 2001 From: sidphbot Date: Thu, 12 Mar 2026 00:51:11 +0100 Subject: [PATCH 02/11] claude skill added --- .claude/skills/hotcb-autopilot/SKILL.md | 387 ++++++++++++++++++++++++ .gitignore | 3 +- 2 files changed, 389 insertions(+), 1 deletion(-) create mode 100644 .claude/skills/hotcb-autopilot/SKILL.md diff --git a/.claude/skills/hotcb-autopilot/SKILL.md b/.claude/skills/hotcb-autopilot/SKILL.md new file mode 100644 index 0000000..bc901c9 --- /dev/null +++ b/.claude/skills/hotcb-autopilot/SKILL.md @@ -0,0 +1,387 @@ +--- +name: hotcb-autopilot +description: Launch AI-driven training optimization with hotcb. Checks installation, asks the user for run config, optionally deep-reads training code for context-aware optimization, then runs as the live autopilot — reading metrics, analyzing trends, and issuing hotcb commands to tune hyperparameters, loss weights, and callbacks during training. Use when the user wants to optimize a PyTorch training run with AI assistance. +--- + +# hotcb AI Autopilot — Claude Code Skill + +You are acting as the AI autopilot for hotcb, a live training control plane for PyTorch. +Your job: read training metrics, analyze trends, and issue hotcb commands to optimize training — all without restarting. + +## Phase 0: Understand the Training Code (optional, user-gated) + +**Before anything else**, ask the user one question: + +> "Can I read your training code? This lets me understand your model architecture, loss function, optimizer setup, augmentation pipeline, and logging — so I can make smarter decisions during training (and occasionally suggest code changes). This uses extra tokens but gives much better results. (y/n)" + +### If the user says yes: + +Ask them to point you to the key files (or directories) — e.g. "Which files contain your training loop, model definition, loss, and data pipeline?" + +Then read those files and produce a **training context summary** saved to `/hotcb.training_context.md`. This file is reused in future invocations so you don't re-read the codebase every time. + +The summary should cover: + +```markdown +# Training Context — +Generated by hotcb autopilot on + +## Model Architecture +- Type: (e.g. ResNet-50, GPT-2, ViT-B/16, custom UNet) +- Parameters: (approx count if visible) +- Key layers / heads: (what matters for loss routing, freezing, etc.) + +## Loss Function +- Type: (CrossEntropy, MSE, multi-task weighted sum, custom) +- Terms: (list each term, its weight, whether it's toggleable) +- Key metric relationship: (which loss terms most affect which metrics) + +## Optimizer & Scheduler +- Optimizer: (Adam, AdamW, SGD, etc.) with initial params (lr, wd, momentum) +- Scheduler: (cosine, step, warmup+decay, none) +- Known sensitivities: (e.g. "lr > 1e-3 likely unstable for this arch") + +## Data Pipeline +- Dataset: (name/size if visible) +- Augmentations: (list key transforms) +- Batch size / accumulation: (if visible) + +## Logging & Metrics +- What metrics are logged: (train_loss, val_loss, val_acc, grad_norm, lr, etc.) +- Logging frequency: (every step, every N steps, every epoch) +- Validation frequency: (every N steps, every epoch) + +## Notable Code Patterns +- (Anything relevant: gradient clipping, mixed precision, EMA, custom callbacks, etc.) +``` + +**Keep the summary concise** — aim for 50-100 lines. This is context for the autopilot, not full documentation. + +If `hotcb.training_context.md` already exists in the run dir, ask: "I found an existing training context from a previous session. Should I reuse it, or re-read the code?" If reuse, just load it. Do not re-scan. + +### If the user says no: + +Skip entirely. Proceed to Phase 1. You'll operate on metrics alone (still effective, just less context for decisions). + +### Using the context during autopilot + +When `hotcb.training_context.md` exists: +- **Inform your decisions**: e.g. if the model uses cosine scheduling, don't fight the scheduler with lr adjustments unless it's clearly broken +- **Suggest code changes** (karpathy-style): if you notice something during training that a code change would fix better than a knob turn — e.g. "your augmentation pipeline doesn't include mixup, which could help with the overfitting I'm seeing" or "your warmup is 100 steps but this model typically needs 500" — suggest the edit with a specific diff. Don't force it; suggest and let the user decide. +- **Loss term awareness**: if you know the loss is a weighted sum of 3 terms, you can make much smarter `loss set_params` calls +- **Architecture awareness**: know what "grad_norm is spiking" means for this specific model + +## Phase 1: Quick Setup + +### 1.1 Check hotcb installation + +```bash +python3 -c "import hotcb; print('hotcb OK')" 2>&1 && python3 -c "import fastapi, uvicorn, websockets; print('dashboard deps OK')" 2>&1 +``` + +If not installed: tell user to run `pip install "hotcb[dashboard]"` (or `pip install -e ".[dev,all]"` if developing from source). + +### 1.2 Check for launch config + +Look for `hotcb.launch.json` in the project root (or current directory). This file is created during integration and contains everything needed to launch — **if it exists, skip all user questions and go straight to Phase 2.** + +```bash +cat hotcb.launch.json 2>/dev/null || echo "NOT_FOUND" +``` + +The file looks like: + +```json +{ + "train_fn": "my_project.train:train", + "run_dir": "./runs", + "key_metric": "val_loss", + "max_steps": 5000, + "max_time": 300, + "autopilot": "ai_suggest", + "port": 8421 +} +``` + +All fields are optional except `train_fn` (or training must already be running). If `hotcb.launch.json` exists: +- Use its values as defaults +- Print: "Found hotcb.launch.json — launching with: train_fn=X, key_metric=Y, max_time=Z" +- Go directly to Phase 2 (still ask Phase 0 code-reading question if `hotcb.training_context.md` doesn't exist yet) + +### 1.3 If no launch config — ask the user + +Do NOT scan the repo for integration. Ask the user directly: + +1. **Run directory**: "Where is your run directory? (path with `hotcb.metrics.jsonl`, or I'll create one)" +2. **Training status**: "Is training already running, or should I start it? If I should start it, what's the training function? (e.g. `my_module:train`)" +3. **Key metric**: "What metric should I optimize? (e.g. `val_loss`, `val_accuracy`)" +4. **Time/step limit**: "How long should training run? (e.g. `300` seconds, `5000` steps, or both)" +5. **Integration check**: "Does your training loop write `hotcb.metrics.jsonl` and read `hotcb.commands.jsonl`? (If not, I'll show you the 10-line integration snippet)" + +If the user says integration isn't done, show this minimal contract: + +```python +# Add to your training loop — 10 lines total +import json, os + +def write_metrics(run_dir, step, metrics_dict): + with open(os.path.join(run_dir, "hotcb.metrics.jsonl"), "a") as f: + f.write(json.dumps({"step": step, "metrics": metrics_dict}) + "\n") + +def read_commands(run_dir, offset=0): + path = os.path.join(run_dir, "hotcb.commands.jsonl") + if not os.path.exists(path): return [], offset + cmds = [] + with open(path) as f: + for i, line in enumerate(f): + if i < offset: continue + line = line.strip() + if line: + try: cmds.append(json.loads(line)) + except: pass + return cmds, offset + len(cmds) +``` + +Or for adapter users: `HotCBLightning(kernel)` / `HotCBHFCallback(kernel)` handle this automatically. + +For the full integration reference (all options, metrics/command format, loss weight exposure, train_fn contract), read `INTEGRATION.md` in the hotcb repo. That file is designed to be self-contained context for AI agents working on external training projects. + +## Phase 2: Launch + +Build the launch command from either `hotcb.launch.json` values or user answers. + +Use the autopilot mode from the config/user — do NOT override it to `off`. If the user specified `ai_suggest` or `ai_auto`, launch with that. If `hotcb.launch.json` has `"autopilot": "ai_suggest"`, use `--autopilot ai_suggest`. If no autopilot was specified, default to `ai_suggest` (since the user invoked this skill, they want AI optimization). + +### 2.1 If training needs to be started: + +```bash +hotcb launch \ + --train-fn \ + --run-dir \ + --max-steps \ + --max-time \ + --key-metric \ + --port \ + --autopilot & +LAUNCH_PID=$! +echo "Dashboard: http://localhost:" +``` + +Omit `--max-steps` or `--max-time` if not specified. Include both if both are set (whichever limit hits first wins). + +If `hotcb.launch.json` exists, you can also use: +```bash +hotcb launch --config-file hotcb.launch.json & +``` + +### 2.2 If training is already running (just attach dashboard): + +```bash +hotcb serve --dir --port --autopilot & +SERVER_PID=$! +echo "Dashboard: http://localhost:" +``` + +### 2.2 Wait for metrics + +Poll until metrics start flowing: +```bash +for i in $(seq 1 30); do + if [ -s "/hotcb.metrics.jsonl" ]; then + echo "Metrics flowing" + break + fi + sleep 1 +done +``` + +## Phase 3: Autopilot Loop + +**This is where YOU (Claude Code) act as the AI autopilot.** + +You replace the external LLM — you read metrics directly, reason about them, and issue hotcb commands via the REST API or CLI. No API key needed. + +### 3.1 Read current state + +Use the REST API to get current metrics and status: + +```bash +# Get latest metrics +curl -s http://localhost:8421/api/metrics/history?last_n=20 | python3 -m json.tool + +# Get metric names +curl -s http://localhost:8421/api/metrics/names | python3 -m json.tool + +# Get current status +curl -s http://localhost:8421/api/status | python3 -m json.tool + +# Get applied mutations +curl -s http://localhost:8421/api/applied/history?last_n=10 | python3 -m json.tool +``` + +Or read JSONL files directly: +```bash +tail -5 /hotcb.metrics.jsonl | python3 -m json.tool +``` + +### 3.2 Analyze trends + +For each metric, compute: +- **Direction**: Is it going up, down, or flat? +- **Rate**: How fast is it changing? +- **Volatility**: Is it noisy or smooth? +- **Key events**: Any spikes, plateaus, or trend reversals? + +Focus on the **key metric** but monitor all metrics for health. + +If `hotcb.training_context.md` exists, cross-reference your analysis with the known model/loss/optimizer setup. For example: if context says cosine LR schedule is active, a slowly decreasing lr is expected, not a problem. + +### 3.3 Decide and act + +Based on your analysis: + +**If training is healthy** (loss decreasing steadily, no divergence): +→ Do nothing. Report status to user. Check back in 50-100 steps. + +**If loss has plateaued** (flat for 20+ steps): +→ Reduce learning rate by 50%: +```bash +curl -s -X POST http://localhost:8421/api/opt/set \ + -H 'Content-Type: application/json' \ + -d '{"params": {"lr": }}' +``` +Or via CLI: `hotcb --dir set lr=` + +**If loss is diverging** (increasing sharply): +→ Reduce learning rate aggressively (10x): +```bash +curl -s -X POST http://localhost:8421/api/opt/set \ + -H 'Content-Type: application/json' \ + -d '{"params": {"lr": }}' +``` + +**If overfitting** (train loss << val loss, or val loss rising while train loss falls): +→ Increase weight decay: +```bash +curl -s -X POST http://localhost:8421/api/opt/set \ + -H 'Content-Type: application/json' \ + -d '{"params": {"weight_decay": }}' +``` + +**If multi-task and one task is dominating**: +→ Adjust loss weights: +```bash +curl -s -X POST http://localhost:8421/api/loss/set \ + -H 'Content-Type: application/json' \ + -d '{"params": {"weight_a": 0.5, "weight_b": 0.5}}' +``` + +### 3.4 Suggest code changes (if training context available) + +When you have `hotcb.training_context.md`, you can occasionally suggest code-level fixes — things a knob turn can't do: + +- "Your augmentation is missing X, which would help with the overfitting pattern I'm seeing" +- "The warmup schedule is too short for this model size — suggest changing line N in train.py" +- "Consider adding gradient clipping — grad_norm has been volatile" +- "The validation frequency is too low to catch divergence early — suggest validating every 50 steps instead of every epoch" + +**Present as a suggestion with a concrete diff.** Don't apply without user approval. These are between-check-in suggestions, not every cycle. + +### 3.5 Report to user + +After each analysis cycle, report: +1. Current step and key metrics +2. Trend assessment (healthy/plateau/diverging/overfitting) +3. Action taken (if any) with reasoning +4. Next check-in time + +Format: +``` +## Step {N} — {Assessment} +- train_loss: {val} ({trend}) +- val_loss: {val} ({trend}) +- lr: {val} +- Action: {what you did and why, or "none — training healthy"} +- Next check: step {N+50} +``` + +### 3.6 Cadence + +- **Normal**: Check every 50 steps +- **After intervention**: Check in 20 steps to see effect +- **If diverging**: Check every 10 steps +- **If healthy and improving**: Can extend to every 100 steps + +### 3.7 Graduation principle + +Start with small changes: +1. First intervention: lr *= 0.5 +2. If no improvement after 30 steps: lr *= 0.5 again +3. If still no improvement: try weight_decay adjustment +4. Only after 3+ failed interventions: consider declaring run degenerate + +### 3.8 Multi-run awareness + +If a run is truly degenerate (NaN loss, diverged beyond recovery): +1. Save learnings about what failed +2. Suggest to user: "This run has diverged. I recommend restarting with lr={suggested_lr}." +3. Don't keep trying to fix an unfixable run + +## Phase 4: Finalization + +When training completes (metrics stop flowing or max_steps reached): + +1. Summarize the run: + - Final key metric value + - Total interventions made + - What worked and what didn't +2. Export recipe: `hotcb --dir recipe export` +3. If training context was read, suggest improvements for next run (code-level) +4. Suggest next steps + +## Key Principles + +1. **Conservative**: When in doubt, do nothing. Healthy training doesn't need intervention. +2. **Graduated**: Small changes first. Never change lr by more than 50% in one step. +3. **Observable**: Wait enough steps after an intervention to see its effect (20-50 steps minimum). +4. **Transparent**: Always explain your reasoning to the user. +5. **Reversible**: Prefer changes that can be undone. Don't disable callbacks unless clearly needed. +6. **Code-aware**: When you have training context, use it. A code suggestion is sometimes better than a knob turn. + +## Available hotcb Commands Reference + +```bash +# Optimizer +hotcb --dir set lr=0.001 +hotcb --dir set weight_decay=0.01 +hotcb --dir opt set_params lr=0.001 weight_decay=0.01 + +# Loss +hotcb --dir loss set_params weight_a=0.7 weight_b=0.3 + +# Callbacks +hotcb --dir cb enable +hotcb --dir cb disable + +# Status +hotcb --dir status + +# Recipe export +hotcb --dir recipe export +``` + +## REST API Reference + +``` +GET /api/metrics/names — list discovered metric names +GET /api/metrics/history — recent metric records (?last_n=500) +GET /api/applied/history — applied mutations (?last_n=200) +GET /api/status — run status (freeze, files) +GET /api/health — server health +GET /api/train/status — training thread status +POST /api/opt/set — set optimizer params {"params": {"lr": 0.001}} +POST /api/loss/set — set loss params {"params": {"weight_a": 0.7}} +GET /api/autopilot/status — autopilot state +GET /api/autopilot/ai/status — AI autopilot state (cost, key_metric, etc.) +GET /api/autopilot/ai/history — AI decision history with reasoning +``` diff --git a/.gitignore b/.gitignore index ac6abfb..e6f946f 100644 --- a/.gitignore +++ b/.gitignore @@ -5,7 +5,8 @@ dist/ *.egg-info/ .eggs/ .idea/ -.claude/ +.claude/worktrees/ +.claude/setting* lightning_logs/ data/* # (optional) If you use pip editable installs, also ignore: From 94768f84c22374bc67c167a8305deffba05dbf5e Mon Sep 17 00:00:00 2001 From: Sidharth Pal Date: Thu, 12 Mar 2026 00:52:45 +0100 Subject: [PATCH 03/11] Convert image links to Markdown format Updated image links in README to use Markdown syntax. --- README.md | 12 ++++++------ 1 file changed, 6 insertions(+), 6 deletions(-) diff --git a/README.md b/README.md index 7f6ca54..76a19ac 100644 --- a/README.md +++ b/README.md @@ -37,17 +37,17 @@ Plus: --- -[recipe_and_mutations_with_scheduling](https://github.com/sidphbot/hotcb/blob/master/screens/recipe_and_mutations_with_scheduling.png) +![recipe_and_mutations_with_scheduling](https://github.com/sidphbot/hotcb/blob/master/screens/recipe_and_mutations_with_scheduling.png) -[mutations](https://github.com/sidphbot/hotcb/blob/master/screens/mutations.png) +![mutations](https://github.com/sidphbot/hotcb/blob/master/screens/mutations.png) -[mutation_exanpded_impact_log](https://github.com/sidphbot/hotcb/blob/master/screens/mutation_exanpded_impact_log.png) +![mutation_exanpded_impact_log](https://github.com/sidphbot/hotcb/blob/master/screens/mutation_exanpded_impact_log.png) -[automated-ai-free-training-intervention](https://github.com/sidphbot/hotcb/blob/master/screens/automated-ai-free-training-intervention.png) +![automated-ai-free-training-intervention](https://github.com/sidphbot/hotcb/blob/master/screens/automated-ai-free-training-intervention.png) -[comparison_with_mutation_changes](https://github.com/sidphbot/hotcb/blob/master/screens/comparison_with_mutation_changes.png) +![comparison_with_mutation_changes](https://github.com/sidphbot/hotcb/blob/master/screens/comparison_with_mutation_changes.png) -[dynamic_manifold_vis](https://github.com/sidphbot/hotcb/blob/master/screens/dynamic_manifold_vis.png) +![dynamic_manifold_vis](https://github.com/sidphbot/hotcb/blob/master/screens/dynamic_manifold_vis.png) --- From de9515784f8f76a568632ce2d8dbfb33a92b3b1a Mon Sep 17 00:00:00 2001 From: Sidharth Pal Date: Thu, 12 Mar 2026 01:10:08 +0100 Subject: [PATCH 04/11] Update README with logo and project details Added logo image and improved project description. --- README.md | 2 ++ 1 file changed, 2 insertions(+) diff --git a/README.md b/README.md index 76a19ac..369b2a9 100644 --- a/README.md +++ b/README.md @@ -1,4 +1,6 @@ # hotcb +hotcb_logo + **Live Training Control Plane for PyTorch** From b5546b3f6e519117be1b72f30eecf860f5e3371b Mon Sep 17 00:00:00 2001 From: Sidharth Pal Date: Thu, 12 Mar 2026 01:30:49 +0100 Subject: [PATCH 05/11] Update README.md --- README.md | 9 +++++++-- 1 file changed, 7 insertions(+), 2 deletions(-) diff --git a/README.md b/README.md index 369b2a9..2b16ce4 100644 --- a/README.md +++ b/README.md @@ -14,7 +14,7 @@ Now tune hyperparameters in 2 not 2000 runs !! https://github.com/user-attachments/assets/2de80dc6-da66-4344-a2fc-8e726d2d9221 - +In the video you can see a model distillation run being balanced for classification feature tokens and spatial maps in terms of both direction(cos) and structure(mse+grad). The mutations applied here are taken by ai autonomously via hot b AI-Autopilot mode show thier impact (features vs spatial map) quantitatively(impact analysis) and qualitatively(curve steps). --- @@ -38,17 +38,22 @@ Plus: - **Freeze modes**: production lock, deterministic replay, replay-with-adjustments --- - +Live Mutation Scheduling Recipe editor: ![recipe_and_mutations_with_scheduling](https://github.com/sidphbot/hotcb/blob/master/screens/recipe_and_mutations_with_scheduling.png) +Mutation tracking: ![mutations](https://github.com/sidphbot/hotcb/blob/master/screens/mutations.png) +Mutation impact analysis: ![mutation_exanpded_impact_log](https://github.com/sidphbot/hotcb/blob/master/screens/mutation_exanpded_impact_log.png) +Rule based Autopilot (AI mode in video above) ![automated-ai-free-training-intervention](https://github.com/sidphbot/hotcb/blob/master/screens/automated-ai-free-training-intervention.png) +Mutation Recipe impact comparison: ![comparison_with_mutation_changes](https://github.com/sidphbot/hotcb/blob/master/screens/comparison_with_mutation_changes.png) +Dynamic metric space manifold update: ![dynamic_manifold_vis](https://github.com/sidphbot/hotcb/blob/master/screens/dynamic_manifold_vis.png) --- From 04530549693941f6a94287efa6ad708b195e174a Mon Sep 17 00:00:00 2001 From: Sidharth Pal Date: Thu, 12 Mar 2026 08:51:55 +0100 Subject: [PATCH 06/11] Delete hottune_upgrade_plan.md --- hottune_upgrade_plan.md | 1187 --------------------------------------- 1 file changed, 1187 deletions(-) delete mode 100644 hottune_upgrade_plan.md diff --git a/hottune_upgrade_plan.md b/hottune_upgrade_plan.md deleted file mode 100644 index 0d8e64b..0000000 --- a/hottune_upgrade_plan.md +++ /dev/null @@ -1,1187 +0,0 @@ -Your current architecture already supports the key runtime pieces: the Lightning adapter injects `optimizer`, `scheduler`, and optional `loss_state` into `env`, and the kernel already owns run paths, polling, recipe replay, ledger writing, and module dispatch for `cb`, `opt`, and `loss`. That means `hottune` can fit naturally as another kernel module rather than a separate repo. - -# **1\. Objective** - -`hottune` is an **optional hotcb module** that performs **online, constrained, Bayesian-guided hyperparameter adaptation during training**, with: - -* safe-point application only - -* bounded search spaces - -* recipe persistence across runs - -* rollback or conservative acceptance logic - -* framework-agnostic operation through adapter-provided metric access and kernel-owned actuators - -This is **not** intended to replace offline HPO entirely. It is meant to cover the gap between: - -* static recipes - -* full-run sweeps - -* manual mid-run tweaking - -The core value proposition is: - -**observe → propose bounded mutation → apply at safe point → evaluate over horizon → accept/reject → persist learning into next recipe** - -# **2\. Non-goals** - -Version 1 should **not** try to do all of the following: - -* full RL-based controller training - -* arbitrary optimizer replacement mid-run - -* automatic model architecture changes - -* unbounded mutation of user code - -* opaque “AI decides everything” behavior - -* required dependencies in base install - -# **3\. Position in the existing hotcb architecture** - -## **3.1 Existing state** - -Your kernel currently: - -* manages `run_dir` - -* tails command and yaml control planes - -* writes an applied ledger - -* owns recipe/freeze/replay behavior - -* dispatches ops to modules `cb`, `opt`, and `loss` through `apply_op` - -* dispatches callback events afterward. - -Your Lightning adapter currently: - -* builds `env` - -* exposes framework, phase, step, epoch, model, trainer, log - -* exposes `optimizer`, `scheduler`, and optional `loss_state` - -* normalizes `loss` from outputs - -* calls `kernel.apply(env, events=...)`. - -That is already enough to support `hottune` with **minimal architectural change**. - -## **3.2 New module placement** - -Add a new module under the kernel: - -* module key: `"tune"` - -* implementation: `HotTuneController` - -Kernel modules become: - -* `cb` - -* `opt` - -* `loss` - -* `tune` - -`hottune` should be **optional at runtime** and **cheap when unused**. - -# **4\. High-level architecture** - -`hottune` consists of five layers. - -## **4.1 Metric access layer** - -A standardized way for the adapter to expose metrics to the tuner. - -Required adapter addition: - -* `env["metric"] : Callable[[str, Any], Any]` - -This accessor should abstract away framework-specific storage. - -## **4.2 Actuation layer** - -A stable interface for applying mutations to live training state. - -Recommended ownership: - -* actuators are **registered into the kernel** - -* tuner interacts via kernel, not raw optimizer objects - -## **4.3 Policy/search layer** - -Responsible for choosing the next mutation. - -Initial strategy: - -* constrained Bayesian optimization / TPE-style proposal over mutation space - -* phase-aware priors - -* cooldowns and guardrails - -## **4.4 Evaluation layer** - -Measures whether a mutation helped over a short horizon. - -Outputs: - -* accepted - -* rejected - -* rolled back - -* ignored - -* blocked by safety - -## **4.5 Recipe evolution layer** - -Persists cross-run learning: - -* mutation success rates - -* phase-specific winning ranges - -* instability histories - -* default priors for future runs - -# **5\. Packaging and install model** - -Base package remains lightweight. - -Suggested extras: - -* `hotcb[tune]` → installs `optuna` and any tiny numerical deps - -* no hard requirement for tune deps in default install - -Suggested package structure: - -src/hotcb/ - adapters/ - modules/ - callback/ - hotopt/ - hotloss/ - hottune/ - \_\_init\_\_.py - controller.py - policy.py - search.py - constraints.py - evaluator.py - recipe.py - storage.py - state.py - schemas.py - events.py - actuators/ - \_\_init\_\_.py - base.py - optimizer.py - loss\_state.py - kernel.py - -# **6\. Adapter contract** - -## **6.1 Required additions** - -Every supported adapter should expose: - -* `env["metric"]` - -* `env["kernel"]` - -The current Lightning adapter already exposes raw objects that are useful for actuation. - -## **6.2 Metric accessor behavior** - -Signature: - -metric(name: str, default: Any \= None) \-\> Any - -Expected behavior: - -* first check framework-native callback metrics - -* then logged metrics - -* then normalized env fields like `loss` - -* convert tensor scalars to plain Python numbers when possible - -* return `default` if missing - -## **6.3 Recommended standard metric names** - -Adapters should normalize toward a shared namespace where practical: - -* `train/loss` - -* `val/loss` - -* `val/score` - -* `lr` - -* `grad/norm` - -* `time/step_sec` - -* `system/gpu_mem_mb` - -* `system/cpu_mem_mb` - -Not every framework must supply every metric. - -# **7\. Kernel integration** - -## **7.1 New kernel responsibilities** - -The kernel should become the home for **actuator registration and safe mutation application**. - -Add methods: - -register\_actuator(name: str, actuator: BaseActuator) \-\> None -get\_actuator(name: str) \-\> BaseActuator | None -list\_actuators() \-\> dict\[str, BaseActuator\] -apply\_patch(name: str, patch: dict, \*, source: str, validate: bool \= True) \-\> ApplyResult -begin\_transaction(label: str | None \= None) \-\> MutationTransaction -write\_tune\_record(kind: str, payload: dict) \-\> None - -## **7.2 Why kernel ownership is preferred** - -Because the kernel already owns: - -* application procedures - -* run directory - -* recipe pathing - -* ledgers - -* policy/freeze context - -That makes it the correct control plane for tuned mutations as well. The existing kernel already centralizes module dispatch and applied logging, so this is a natural extension rather than a new subsystem. - -# **8\. Actuator system** - -## **8.1 Base actuator interface** - -class BaseActuator(Protocol): - name: str - - def snapshot(self) \-\> dict: ... - def validate(self, patch: dict) \-\> ValidationResult: ... - def apply(self, patch: dict) \-\> ApplyResult: ... - def restore(self, snapshot: dict) \-\> ApplyResult: ... - def describe\_space(self) \-\> dict: ... - -## **8.2 Required semantics** - -### **snapshot** - -Returns minimal state needed for rollback of actuator-managed parameters. - -### **validate** - -Checks: - -* types - -* bounds - -* allowed phase - -* cooldown - -* reversibility - -* user-declared constraints - -### **apply** - -Applies the mutation to the live object. - -### **restore** - -Best-effort rollback to prior actuator state. - -### **describe\_space** - -Returns the legal mutation schema for search and documentation. - -## **8.3 v1 reference actuators** - -### **Optimizer actuator** - -File: - -* `actuators/optimizer.py` - -Supports: - -* LR multiplicative change - -* LR absolute set - -* weight decay multiplicative change - -* beta1/beta2 small bounded changes if optimizer supports them - -* optional scheduler scale factor if supported - -Patch examples: - -{"op": "lr\_mult", "value": 0.85} -{"op": "lr\_set", "value": 0.0003} -{"op": "wd\_mult", "value": 1.15} -{"op": "betas\_set", "value": \[0.9, 0.98\]} - -### **Loss-state actuator** - -File: - -* `actuators/loss_state.py` - -Assumes mutable `loss_state` dict-like structure. - -Supports: - -* scalar weight adjustments - -* bounded deltas - -* multiplicative changes - -* freezing a weight temporarily if user allows it - -Patch examples: - -{"op": "set", "key": "sp\_mse\_w", "value": 1.2} -{"op": "mult", "key": "grad\_w", "value": 1.1} -{"op": "delta", "key": "hf\_w", "value": \-0.05} - -## **8.4 User-defined actuators** - -Users may register custom actuators for: - -* augmentation knobs - -* EMA decay - -* teacher/student blend - -* freeze-unfreeze schedules - -* sampling curriculum - -# **9\. Tuning model** - -## **9.1 Tuning unit** - -The atomic unit is a **mutation**. - -A mutation is not “the whole config”. - It is a **bounded change** to one or a few live knobs. - -Example: - -* `opt.lr_mult = 0.85` - -* `loss.sp_mse_w += 0.1` - -* `loss.grad_w *= 1.1` - -## **9.2 Decision cycle** - -At a decision event: - -1. read current state and recent metrics - -2. determine if tuning is allowed now - -3. ask policy/search layer for next mutation - -4. validate mutation - -5. snapshot affected actuator state - -6. apply mutation - -7. create an evaluation segment - -8. after horizon, score outcome - -9. accept or restore snapshot - -10. write records - -11. update in-run recipe stats - -# **10\. Policy model** - -## **10.1 Initial policy choice** - -Use **Bayesian/TPE-style proposal over mutation space**, because that fits your stated preference and works well with sparse, expensive evaluations. - -Version 1 can implement this through Optuna-backed sampling internally. - -## **10.2 Context features** - -The proposal is conditioned on a compact context: - -* phase bin: early / mid / late - -* recent train loss slope - -* recent val metric slope - -* recent instability flags - -* recent gradient norm volatility - -* last accepted mutation type - -* cooldown state - -* mutation budget consumed - -## **10.3 Search dimensions** - -The search space should be over: - -* actuator choice - -* mutation op type - -* mutation magnitude - -* optional key within actuator - -This is better than searching raw full config vectors. - -## **10.4 Phase bins** - -Default bins: - -* early: first 20% - -* mid: 20–70% - -* late: final 30% - -Can be step-based or epoch-based. - -## **10.5 Cooldowns** - -Each mutation family has a cooldown to prevent thrashing. - -Example: - -* LR mutation cooldown: 2 decision windows - -* same loss key cooldown: 1 decision window - -* any mutation after reject: 1 window global cooldown - -# **11\. Constraints and safety** - -This is the most important part. - -## **11.1 Hard constraints** - -Each mutation candidate must pass: - -* key exists - -* actuator exists - -* patch type valid - -* bounds valid - -* phase allowed - -* cooldown satisfied - -* max cumulative drift not exceeded - -* risk class allowed in current mode - -## **11.2 Risk classes** - -Every mutation type gets a risk level: - -* `low`: LR small mult, loss scalar small delta - -* `medium`: beta changes, larger LR drops - -* `high`: optimizer family swap, freeze/unfreeze - -Version 1 supports only `low` and optionally some `medium`. - -## **11.3 Max drift constraints** - -Prevent recipe wandering too far from base config. - -Examples: - -* LR cannot move outside base\_lr × \[0.2, 3.0\] - -* weight decay outside base\_wd × \[0.25, 4.0\] forbidden - -* loss weights cannot exceed user bounds - -## **11.4 Stability blockers** - -Mutation blocked if: - -* NaN or inf detected recently - -* anomaly callback raised critical flag - -* gradient norm above emergency threshold - -* validation metric unavailable for too long - -* run in replay/freeze mode forbids tune mutations - -Kernel freeze/replay semantics already exist, so `tune` should respect them exactly like `cb`, `opt`, and `loss`. - -# **12\. Evaluation logic** - -## **12.1 Segment** - -A segment is the evaluation window following one mutation. - -Stored fields: - -* segment id - -* start step - -* end step - -* decision event - -* mutation id - -* pre metrics - -* post metrics - -* smoothed deltas - -* stability flags - -* accept/reject result - -## **12.2 Horizon** - -A horizon can be defined by: - -* fixed steps - -* fixed eval events - -* first validation epoch end after mutation - -Recommended v1: - -* evaluate on next validation epoch end - -* optionally require minimum train steps elapsed too - -## **12.3 Scoring** - -Each recipe defines an objective score. - -Generic default: - -score\_delta \= - primary\_metric\_gain - \- instability\_penalty - \- excessive\_train\_regression\_penalty - -For loss-minimization: - -* gain \= old best minus new best - -For maximize metric: - -* gain \= new minus old - -## **12.4 Acceptance** - -Accept if: - -* score\_delta \> epsilon - -* no blocker triggered - -* no severe regression in backup metric - -Otherwise: - -* reject and restore if rollback available - -* else mark rejected and enter cooldown - -## **12.5 Rollback modes** - -### **Full rollback** - -Actuator restore supported. - -### **Soft rollback** - -Only revert actuator-managed scalars. - -### **No rollback** - -Allowed only for low-risk mutations and only when explicitly configured. - -# **13\. Recipe system** - -## **13.1 Recipe levels** - -There are two recipe layers. - -### **Base recipe** - -User-authored defaults and legal bounds. - -### **Evolved recipe** - -Auto-updated priors and learned preferences from prior runs. - -## **13.2 Files** - -Add to run dir: - -* `hotcb.tune.recipe.yaml` - -* `hotcb.tune.mutations.jsonl` - -* `hotcb.tune.segments.jsonl` - -* `hotcb.tune.study.sqlite` or equivalent optional sampler state - -* `hotcb.tune.summary.json` - -## **13.3 Recipe contents** - -version: 1 -objective: - primary: val/alignment\_score - mode: max - backup\_metrics: - \- val/loss - \- grad/norm -phases: - early: {start\_frac: 0.0, end\_frac: 0.2} - mid: {start\_frac: 0.2, end\_frac: 0.7} - late: {start\_frac: 0.7, end\_frac: 1.0} -actuators: - opt: - enabled: true - mutations: - lr\_mult: - bounds: \[0.7, 1.2\] - prior\_center: 0.95 - cooldown: 2 - risk: low - wd\_mult: - bounds: \[0.8, 1.25\] - prior\_center: 1.0 - cooldown: 2 - risk: low - loss: - enabled: true - keys: - sp\_mse\_w: - mode: mult - bounds: \[0.5, 2.0\] - max\_step\_mult: 1.15 - cooldown: 1 - grad\_w: - mode: mult - bounds: \[0.3, 3.0\] - max\_step\_mult: 1.15 - cooldown: 1 -search: - algorithm: tpe - startup\_trials: 8 - candidate\_count: 24 - phase\_conditioned: true -acceptance: - epsilon: 0.001 - horizon: next\_val\_epoch\_end - rollback\_on\_reject: true -safety: - block\_on\_nan: true - block\_on\_anomaly: true - max\_global\_reject\_streak: 4 - -## **13.4 Evolution logic** - -After each run, update: - -* win rate per mutation family - -* mean accepted magnitude by phase - -* reject causes - -* instability correlation - -* priors for next run - -Keep it simple: - -* exponential moving averages - -* count-based confidence - -* no black-box magic in v1 - -# **14\. Storage formats** - -## **14.1 Mutations log** - -`hotcb.tune.mutations.jsonl` - -Each line: - -{ - "mutation\_id": "m\_00017", - "step": 14800, - "epoch": 4, - "phase\_bin": "mid", - "event": "val\_epoch\_end", - "actuator": "loss", - "patch": {"op": "mult", "key": "grad\_w", "value": 1.1}, - "proposal\_source": "tpe", - "context": { - "train\_loss\_slope": \-0.004, - "val\_score\_slope": 0.0003 - }, - "snapshot\_ref": "snap\_00017", - "status": "applied" -} - -## **14.2 Segments log** - -`hotcb.tune.segments.jsonl` - -{ - "segment\_id": "s\_00017", - "mutation\_id": "m\_00017", - "start\_step": 14800, - "end\_step": 15640, - "horizon\_type": "next\_val\_epoch\_end", - "pre": {"val/alignment\_score": 0.621, "val/loss": 0.842}, - "post": {"val/alignment\_score": 0.629, "val/loss": 0.835}, - "delta": {"val/alignment\_score": 0.008, "val/loss": \-0.007}, - "stability": {"nan": false, "anomaly": false, "grad\_spike": false}, - "decision": "accepted", - "score\_delta": 0.0074 -} - -## **14.3 Summary file** - -`hotcb.tune.summary.json` - Contains compact run summary for downstream tooling. - -# **15\. Events** - -## **15.1 New tuning-friendly events** - -You should add coarser events to adapters, especially Lightning: - -* `fit_start` - -* `train_batch_end` - -* `val_batch_end` - -* `val_epoch_end` - -* `run_end` - -Right now the Lightning adapter defaults to batch-end train and val events; for tuning, `val_epoch_end` is the key decision point. - -## **15.2 Tuner event usage** - -Recommended: - -* observe continuously if needed - -* propose/apply only at `val_epoch_end` - -* finalize/flush at `run_end` - -# **16\. CLI and control-plane integration** - -## **16.1 Philosophy** - -`hottune` should fit the same control-plane story as hotcb. - -## **16.2 New commands** - -Examples: - -hotcb tune enable -hotcb tune disable -hotcb tune status -hotcb tune set objective.primary=val/alignment\_score -hotcb tune set acceptance.epsilon=0.002 -hotcb tune set actuators.loss.keys.grad\_w.bounds=\[0.3,2.5\] -hotcb tune export-recipe \--out run\_dir/hotcb.tune.recipe.yaml -hotcb tune evolve-recipe \--from runs/\*/hotcb.tune.summary.json \--out recipe\_next.yaml - -## **16.3 YAML support** - -Allow a tune section in `hotcb.yaml` or a dedicated `hotcb.tune.yaml`. - -# **17\. Runtime modes** - -## **17.1 Off** - -No overhead beyond tiny module existence. - -## **17.2 Observe-only** - -No mutations; just collect windows and estimate what would have been proposed. - -Very useful for debugging. - -## **17.3 Suggest-only** - -Writes proposals to logs or control plane, but does not apply automatically. - -## **17.4 Active** - -Applies bounded mutations. - -## **17.5 Replay** - -Replays prior tune mutations from recipe, subject to existing kernel replay rules. - -# **18\. Module API** - -## **18.1 Controller class** - -`HotTuneController` - -Responsibilities: - -* maintain tune state - -* respond to control ops - -* handle event-driven proposal/evaluation - -* write tune storage artifacts - -## **18.2 Kernel interaction** - -Either: - -* `kernel.modules["tune"] = HotTuneController(...)` - or equivalent modular registration - -## **18.3 Public methods** - -class HotTuneController: - def apply\_op(self, op: HotOp, env: dict) \-\> ModuleResult: ... - def on\_event(self, event: str, env: dict) \-\> None: ... - def close(self, env: dict | None \= None) \-\> None: ... - -`on_event` can be called by kernel alongside callback dispatch, or the tune logic can be driven through `apply_op` plus an explicit event dispatch path. I would recommend explicit event dispatch support for tune, not only command application. - -# **19\. Search engine details** - -## **19.1 Default engine** - -Optuna TPE under optional dependency. - -## **19.2 Study organization** - -One study per run, optionally resumed from prior recipe stats. - -Optionally persist study database under run dir. - -## **19.3 Candidate generation** - -At each decision event: - -* generate several candidates - -* score feasibility through constraints - -* choose top candidate by sampler utility and novelty penalty - -## **19.4 Novelty penalty** - -Discourage repeating the same rejected mutation too quickly. - -# **20\. Failure behavior** - -## **20.1 If tune deps missing** - -Module self-disables and logs: - -* tuning unavailable - -* install `hotcb[tune]` - -## **20.2 If no metric accessor** - -Self-disable or fall back to observe-only with warning. - -## **20.3 If no actuators registered** - -Observe-only mode only. - -## **20.4 If mutation apply fails** - -* write failed mutation record - -* do not crash training - -* respect auto-disable-on-error if configured - -This mirrors hotcb’s existing defensive style around module apply and ledger logging. - -# **21\. Testing strategy** - -## **21.1 Unit tests** - -Test: - -* metric accessor normalization - -* actuator validate/apply/restore - -* phase binning - -* cooldown logic - -* acceptance logic - -* recipe evolve logic - -* serialization of logs - -## **21.2 Deterministic simulation tests** - -Build a fake trainer loop with synthetic objective surfaces. - -Scenarios: - -* convex improvement region - -* noisy plateaus - -* delayed reward - -* misleading short-term spikes - -* instability-triggered blocks - -## **21.3 Adapter integration tests** - -Lightning: - -* metric function works - -* optimizer actuator wiring works - -* loss\_state actuator wiring works - -* val\_epoch\_end event emitted - -## **21.4 Failure tests** - -* missing metric names - -* actuator missing - -* rollback failure - -* optuna not installed - -* invalid recipe bounds - -## **21.5 Replay tests** - -Ensure tune records replay consistently with freeze/replay modes. - -# **22\. Documentation plan** - -Add docs sections for: - -* what `hottune` is - -* when to use it - -* required adapter contract - -* built-in actuators - -* recipe format - -* observe-only mode - -* safety model - -* how to evolve a recipe across runs - -* examples for Lightning / HF / bare torch - -# **23\. Recommended v1 scope** - -Keep v1 intentionally tight. - -## **23.1 Included** - -* metric accessor contract - -* kernel actuator registry - -* optimizer actuator - -* loss-state actuator - -* TPE proposal - -* next-val-epoch acceptance - -* rollback for actuator-managed params - -* recipe persistence and evolution - -* observe-only mode - -## **23.2 Excluded from v1** - -* optimizer class swaps - -* arbitrary scheduler graph mutations - -* RL/meta-learning controller - -* multi-objective Pareto UI - -* distributed cross-worker shared tuner - -* automatic architecture edits - -# **24\. Minimal code changes required** - -## **24.1 Lightning adapter** - -Add: - -* `env["metric"]` - -* `env["kernel"]` - -* `on_validation_epoch_end` support to emit `val_epoch_end` - -The rest is already close enough because `optimizer`, `scheduler`, and `loss_state` are already exposed. - -## **24.2 Kernel** - -Add: - -* actuator registry - -* tune artifact writers - -* tune event dispatch or module event hook - -* optional transaction wrapper - -## **24.3 New module** - -Add `hottune` controller and its storage/policy helpers. - -# **25\. Suggested roadmap** - -## **Phase 1** - -Infrastructure only: - -* metric accessor - -* kernel actuator registry - -* optimizer/loss actuators - -* observe-only tune module - -## **Phase 2** - -Active bounded tuning: - -* TPE proposal - -* acceptance logic - -* rollback - -* logs and summary - -## **Phase 3** - -Recipe evolution: - -* evolve priors - -* export/import recipes - -* compare runs - -## **Phase 4** - -Advanced: - -* extra actuators - -* suggest-only mode - -* replay of tune recipes - -* richer dashboards - -# **26\. Final recommendation** - -Yes, `hottune` should live **inside the single package**, as an **optional module** built around: - -* adapter-provided `metric()` - -* kernel-owned actuator registry - -* bounded mutation search - -* short-horizon evaluation - -* recipe evolution across runs - From a4aa52be89ee41274e5bc58148ce6f80ff75a7e9 Mon Sep 17 00:00:00 2001 From: Sidharth Pal Date: Thu, 12 Mar 2026 08:52:47 +0100 Subject: [PATCH 07/11] Delete v3_simulator_wip_plan.md --- v3_simulator_wip_plan.md | 418 --------------------------------------- 1 file changed, 418 deletions(-) delete mode 100644 v3_simulator_wip_plan.md diff --git a/v3_simulator_wip_plan.md b/v3_simulator_wip_plan.md deleted file mode 100644 index 429151b..0000000 --- a/v3_simulator_wip_plan.md +++ /dev/null @@ -1,418 +0,0 @@ -# hotcb 2.0 — Live Training Control Plane: Dashboard & Interactive System Plan - -## Realism Assessment: The Paradigm Shift - -**The core insight is sound.** Training today is "fire and forget" — you set hyperparameters, walk away, and check back hours/days later. The feedback loop is glacially slow. Making it interactive (3-10 interventions/hour instead of 1/3-hours) is genuinely valuable. Here's why: - -**What makes this realistic:** -- You already have the hard part built — the kernel, actuators, freeze/replay, tune engine. Most "interactive training" projects die trying to build safe hot-mutation infrastructure. You have it. -- The JSONL streaming architecture is inherently dashboard-friendly — just tail the files. -- Recipe replay means every human intervention is reproducible, which is the killer feature for papers and production. -- XGBoost projections on loss curves are computationally cheap and surprisingly accurate for short-horizon forecasting. - -**What to be honest about:** -- The LinkedIn traction issue isn't the concept — it's that callback hot-swap alone is a power-user niche. The dashboard + interactive tuning story is what makes it "paradigm shift" material. **Lead with the UI, not the plumbing.** -- At-scale (100B+ params, multi-node) the human-in-the-loop model breaks down — but your freeze/recipe modes already handle this correctly. Position it as: "interactive development → freeze recipe → production replay." -- Competition: W&B Sweeps, Optuna Dashboard, Ray Tune — but none of them do **live hot-swap with human override + replay**. That's your moat. - -**Marketing pivot suggestion:** Don't call it "callback management." Call it something like **"hotcb: Live Training Cockpit"** or **"Interactive Training Control Plane."** The simulation/cockpit metaphor maps perfectly to your knobs + graphs + projections vision. - ---- - -## Architecture Overview - -``` -┌─────────────────────────────────────────────────────┐ -│ Training Process │ -│ ┌──────────┐ ┌──────────┐ ┌───────────────────┐ │ -│ │ Adapter │→│ HotKernel │→│ Actuators/Modules │ │ -│ │(LT/HF) │ │ │ │(opt/loss/cb/tune) │ │ -│ └──────────┘ └────┬─────┘ └───────────────────┘ │ -│ │ JSONL streams + metrics │ -│ ▼ │ -│ ┌──────────────────────────────────────────┐ │ -│ │ MetricsCollector (new) │ │ -│ │ - intercepts env metrics at each step │ │ -│ │ - writes hotcb.metrics.jsonl │ │ -│ │ - ring buffer for feature snapshots │ │ -│ └──────────────┬───────────────────────────┘ │ -└─────────────────┼─────────────────────────────────────┘ - │ filesystem (JSONL/YAML) - ▼ -┌─────────────────────────────────────────────────────┐ -│ hotcb-server (new, separate process) │ -│ ┌─────────────┐ ┌──────────────┐ ┌────────────┐ │ -│ │ File Tailer │ │ Projection │ │ WebSocket │ │ -│ │ (metrics, │ │ Engine │ │ Server │ │ -│ │ applied, │ │ (XGBoost, │ │ (FastAPI) │ │ -│ │ mutations, │ │ manifold, │ │ │ │ -│ │ segments) │ │ feature-PCA)│ │ │ │ -│ └─────────────┘ └──────────────┘ └────────────┘ │ -│ ┌─────────────┐ ┌──────────────┐ ┌────────────┐ │ -│ │ Notification │ │ Recipe │ │ REST API │ │ -│ │ Engine │ │ Editor │ │ (commands, │ │ -│ │ (email/slack)│ │ (trim/edit/ │ │ status) │ │ -│ │ │ │ replay) │ │ │ │ -│ └─────────────┘ └──────────────┘ └────────────┘ │ -└─────────────────────┬───────────────────────────────┘ - │ HTTP + WebSocket - ▼ -┌─────────────────────────────────────────────────────┐ -│ Dashboard (React SPA, served by hotcb-server) │ -│ │ -│ ┌─ Control Bar ──────────────────────────────────┐ │ -│ │ [Mode: Engineer ▾] [Freeze ▾] [Notifications] │ │ -│ └─────────────────────────────────────────────────┘ │ -│ ┌─ Live Metrics Panel ───────────────────────────┐ │ -│ │ streaming loss/metric charts (multi-run) │ │ -│ │ + projection overlays (dashed lines) │ │ -│ │ + intervention markers (vertical lines) │ │ -│ └─────────────────────────────────────────────────┘ │ -│ ┌─ Knob Panel ──────┐ ┌─ Projection Panel ──────┐ │ -│ │ lr: [====●===] 3e-4│ │ XGBoost forecast │ │ -│ │ wd: [==●=====] 1e-2│ │ manifold plot │ │ -│ │ loss_w: [●===] 0.5 │ │ feature PCA (3D) │ │ -│ │ [Apply] [Schedule] │ │ [Lock metrics ▾] │ │ -│ └────────────────────┘ └─────────────────────────┘ │ -│ ┌─ Mutation Timeline ─────────────────────────────┐ │ -│ │ step 100: lr 3e-4→1e-3 ✓ step 200: wd +0.01 ✗│ │ -│ │ [Edit Recipe] [Export] [Replay Preview] │ │ -│ └─────────────────────────────────────────────────┘ │ -└───────────────────────────────────────────────────────┘ -``` - -**Key design decision:** The server is a **separate process** that communicates with the training process only through the filesystem (JSONL streams). This means: -- Zero coupling to training code — no new imports in training loop -- Works with any framework adapter (Lightning, HF, raw PyTorch) -- Dashboard can attach/detach without affecting training -- Multiple dashboards can observe the same run - ---- - -## Tech Stack - -| Layer | Choice | Rationale | -|-------|--------|-----------| -| **Server** | FastAPI + uvicorn | Async WebSocket native, lightweight, Python ecosystem | -| **File tailing** | watchdog + incremental JSONL read | Reuse existing `FileCursor` pattern from `util.py` | -| **Frontend** | React + TypeScript | Professional look, rich ecosystem, SSR not needed | -| **Charts** | Plotly.js (via react-plotly) | 3D support, streaming updates, publication-quality | -| **Knobs/Controls** | Custom React + headless UI | Sliders, toggles, scheduling modals | -| **Projections** | XGBoost (server-side) | Multivariate forecast, cheap, well-understood | -| **Manifolds** | UMAP/t-SNE (server-side) | For metric manifolds and feature space | -| **Feature extraction** | PyTorch hooks (opt-in) | Register forward hooks on selected layers | -| **Notifications** | slack_sdk + smtplib | Threshold-based alerts, anomaly projections | -| **Build** | Vite for frontend, bundled as static assets | `hotcb serve` serves the SPA | -| **State sync** | WebSocket (server→client), REST POST (client→server→JSONL) | Unidirectional data flow | - ---- - -## Phase Plan - -### Phase 1: Foundation — Metrics Streaming + Server Skeleton (Week 1-2) - -**Goal:** Get a live dashboard showing streaming metrics from a running training. - -**New modules:** -- `hotcb.server` — FastAPI app - - `hotcb.server.app` — main app, mount static, WebSocket endpoints - - `hotcb.server.tailer` — background task tailing JSONL files, pushing to WebSocket - - `hotcb.server.api` — REST endpoints for commands, status, config -- `hotcb.metrics` — MetricsCollector - - Hooks into kernel.apply() to capture `env["metric"]` values - - Writes `hotcb.metrics.jsonl` with step, epoch, timestamp, metric_name, value - - Configurable metric whitelist/blacklist - -**CLI addition:** -```bash -hotcb serve --dir --port 8421 --host 0.0.0.0 -``` - -**Frontend (minimal):** -- Single page with streaming line charts (Plotly) -- Multi-metric overlay (select which metrics to show) -- Intervention markers from `hotcb.applied.jsonl` -- Basic status bar (freeze mode, tune mode, active mutations) - -**Kernel changes:** -- Add `MetricsCollector` to kernel (opt-in, zero overhead when unused) -- Emit structured metric events: `{"step": N, "metrics": {"train_loss": 0.5, "val_loss": 0.6, ...}}` - -### Phase 2: Interactive Controls — Knobs + Commands (Week 2-3) - -**Goal:** Control training from the dashboard. - -**Server additions:** -- REST endpoints that write to `hotcb.commands.jsonl`: - - `POST /api/opt/set` — `{lr: 0.001, wd: 0.01}` - - `POST /api/loss/set` — `{recon_w: 0.5}` - - `POST /api/tune/mode` — `{mode: "active"}` - - `POST /api/cb/{id}/enable|disable` - - `POST /api/freeze` — `{mode: "prod"}` - - `POST /api/schedule` — `{at_step: 500, module: "opt", op: "set_params", params: {...}}` -- Validation endpoint: `POST /api/validate` — dry-run a mutation against actuator bounds - -**Frontend additions:** -- **Knob panel:** Sliders for each actuator parameter with: - - Current value (live from applied ledger) - - Bounds from `actuator.describe_space()` / tune recipe - - "Apply" button → writes command - - "Schedule" button → deferred application at step N -- **Quick actions:** Enable/disable tune, freeze mode toggle -- **Command history:** Live feed of applied operations with status badges - -### Phase 3: Projections — XGBoost + Metric Forecasting (Week 3-4) - -**Goal:** Show where training is heading. - -**Server additions:** -- `hotcb.server.projections` module: - - **Univariate forecast:** XGBoost trained on recent N steps of a single metric, projects K steps ahead - - **Multivariate forecast:** Given a proposed HP change, predict impact on all tracked metrics - - Train XGBoost on (step, hp_values, metric_values) → next_metric_values - - Show "what-if" overlays: "if you change lr to X, projected loss trajectory is..." - - **Confidence bands:** Bootstrap or quantile regression for uncertainty -- WebSocket channel for projection updates (recomputed on new data or HP change preview) - -**Frontend additions:** -- Dashed projection lines on metric charts with confidence bands -- "What-if" mode: drag a knob, see projected impact before committing -- "Lock metrics" selector: choose a set of metrics to project together -- Projection horizon slider (how far ahead to forecast) - -### Phase 4: Manifolds + Feature Space (Week 4-5) - -**Goal:** Visualize the loss landscape and feature space dynamics. - -**Server additions:** -- `hotcb.server.manifolds`: - - **Metric manifold:** UMAP/t-SNE on the vector of (all tracked metrics) across steps - - Shows trajectory through metric space, colored by time - - Intervention points highlighted - - **Feature space projection (opt-in):** - - Training process registers forward hooks on selected layers - - Writes activation snapshots to `hotcb.features.bin` (memory-mapped, ring buffer) - - Server reads snapshots, runs PCA→3D - - Shows how representation space evolves - -**Frontend additions:** -- 3D Plotly scatter for metric manifold (rotatable, zoomable) -- 3D feature space viewer (toggled on-demand to avoid overhead) -- Color coding: step progression, intervention markers, segment boundaries -- Side-by-side: metric manifold + loss curve, linked brushing - -**Kernel changes:** -- Optional `FeatureCapture` hook: - ```python - kernel.enable_feature_capture(model, layer_names=["encoder.layer.4"], every_n_steps=50, max_samples=256) - ``` -- Writes compressed activations (PCA pre-reduced to 64 dims in-process to save I/O) - -### Phase 5: Management — Notifications + Alerts (Week 5-6) - -**Goal:** The dashboard works for you when you're away. - -**Server additions:** -- `hotcb.server.notifications`: - - **Threshold alerts:** "Notify me if val_loss > X" or "if projection shows divergence" - - **Anomaly detection:** Z-score on recent metric windows, flag spikes - - **Channels:** Slack webhook, email (SMTP), desktop notification (WebSocket push) - - **Suggestion toggles:** "Pause and suggest" mode — when anomaly detected, pause tune and suggest human review -- **Scheduling:** Cron-like for recurring checks - -**Frontend additions:** -- Notification panel with alert history -- Alert configuration UI (metric, threshold, channel, action) -- "Call for help" button → sends formatted Slack/email with current state snapshot + charts - -### Phase 6: Recipe Editor + Replay Dashboard (Week 6-7) - -**Goal:** Edit and replay training recipes with the same visual quality. - -**Server additions:** -- `hotcb.server.recipe_editor`: - - Load recipe JSONL, parse into timeline - - CRUD operations on recipe entries (add, remove, modify, reorder) - - Apply adjustment overlays (shift_step, replace_params, etc.) - - Validate recipe against actuator bounds - - Export edited recipe - -**Frontend additions:** -- **Timeline editor:** Visual timeline of all recipe entries - - Drag to reorder, click to edit params, right-click to delete - - "Insert intervention" at any step -- **Replay preview:** Show what the recipe would do at each step (dry-run visualization) -- **Diff view:** Compare two recipes side-by-side -- **Replay dashboard:** Same streaming charts, but replaying a previous run's recipe - - Overlay: original run metrics vs. replay run metrics - -### Phase 7: Multi-Mode UI — Engineer / Education / Vibe-Coder (Week 7-8) - -**Goal:** Three audience modes. - -**Mode definitions:** -- **Engineer mode** (default): All knobs exposed, raw metric names, actuator details, full recipe editor, CLI integration -- **Education mode:** Simplified knobs with explanations ("Learning Rate: how fast the model learns"), tooltips, guided tutorials, "what does this do?" on every control, limited to safe mutations -- **Vibe-coder mode:** AI-assisted suggestions, natural language commands ("make it learn faster"), auto-bounds from tune recipe, simplified dashboard with just key metrics + a "health score" - -**Implementation:** -- Mode stored in dashboard state + persisted to `hotcb.ui.json` -- Components conditionally render based on mode -- Education mode: wrap controls in `` components with tooltip text from a knowledge base -- Vibe-coder mode: add a chat/command bar that translates NL → hotcb commands (could use a local LLM or rule-based for v1) - -### Phase 8: Self-Mode + Community Guidelines (Week 8-9) - -**Goal:** Autonomous operation with guardrails. - -**Server additions:** -- `hotcb.server.autopilot`: - - **Rule engine:** Load community guidelines YAML (published best practices) - ```yaml - rules: - - if: "val_loss plateau > 5 epochs" - then: "reduce lr by 0.5x" - confidence: high - - if: "train_loss < val_loss * 0.5" - then: "increase weight_decay by 2x" - confidence: medium - ``` - - **Action loop:** Monitor metrics → match rules → propose or auto-apply based on confidence - - **Human-in-the-loop:** Low confidence → notify + wait for approval. High confidence → apply + notify. - - **Community guideline sources:** Built-in defaults + user-contributed YAML files (future: community repo) - -**Integration with tune module:** -- Self-mode uses the existing tune controller but with rule-based proposals instead of TPE -- Mutations go through the same safety checks (constraints, cooldowns, risk levels) - -### Phase 9: Benchmarking + Paper Eval (Week 9-10) - -**Goal:** Reproducible benchmarks for publication. - -**Components:** -- `hotcb.bench` module: - - **Benchmark suite:** Standard tasks (CIFAR-10, MNIST, synthetic) with defined HP search spaces - - **Comparison modes:** - - Baseline: fixed HP, no intervention - - Auto-tune: hotcb tune in active mode (no human) - - Human-interactive: hotcb with dashboard (track human decision times, quality) - - Recipe replay: reproduce best interactive run - - **Metrics collected:** final metric, time-to-target, human intervention count, compute cost - - **Export:** LaTeX tables, matplotlib figures, raw CSV - -**Production recipe-replay benchmark:** -- Compare: original training (hours of tuning) vs. recipe replay (deterministic, no search overhead) -- Show: same final quality, fraction of the compute - ---- - -## Multi-Run Support - -One thing your vision implies but isn't explicit: **multi-run comparison.** - -- Dashboard should support attaching to multiple `run_dir`s simultaneously -- Overlay metrics from different runs (different HP configs, different recipes) -- Compare: "Run A (lr=1e-3) vs Run B (lr=1e-4)" live -- This is what makes the "simulation with knobs" metaphor really land - -Implementation: server takes `--dirs run1,run2,run3` or discovers runs in a parent directory. - ---- - -## Critical Path & Dependencies - -``` -Phase 1 (metrics + server) ← everything depends on this - ├── Phase 2 (knobs) ← needs server + WebSocket - ├── Phase 3 (projections) ← needs metrics stream - │ └── Phase 5 (notifications) ← needs projections for anomaly - ├── Phase 4 (manifolds) ← needs metrics, independent of knobs - ├── Phase 6 (recipe editor) ← needs server, independent of projections - └── Phase 7 (multi-mode) ← needs all UI components to exist - └── Phase 8 (self-mode) ← needs multi-mode + projections - └── Phase 9 (benchmarks) ← needs everything working -``` - -Phases 2, 3, 4, 6 can be parallelized after Phase 1. - ---- - -## Package Structure (proposed) - -``` -src/hotcb/ -├── ... (existing) -├── metrics/ -│ ├── __init__.py -│ ├── collector.py # MetricsCollector, hooks into kernel -│ └── features.py # FeatureCapture (opt-in forward hooks) -├── server/ -│ ├── __init__.py -│ ├── app.py # FastAPI app, mount everything -│ ├── tailer.py # Background JSONL tailers → WebSocket -│ ├── api.py # REST endpoints (commands, status, config) -│ ├── projections.py # XGBoost forecasting, what-if -│ ├── manifolds.py # UMAP/t-SNE computation -│ ├── notifications.py # Slack/email alerts -│ ├── recipe_editor.py # Recipe CRUD + validation -│ ├── autopilot.py # Self-mode rule engine -│ └── static/ # Built React SPA assets -├── dashboard/ # React source (separate build) -│ ├── package.json -│ ├── src/ -│ │ ├── App.tsx -│ │ ├── components/ -│ │ │ ├── MetricsChart.tsx -│ │ │ ├── KnobPanel.tsx -│ │ │ ├── ProjectionOverlay.tsx -│ │ │ ├── ManifoldViewer.tsx -│ │ │ ├── RecipeTimeline.tsx -│ │ │ ├── NotificationPanel.tsx -│ │ │ └── ModeSelector.tsx -│ │ ├── hooks/ -│ │ │ ├── useWebSocket.ts -│ │ │ └── useMetrics.ts -│ │ └── stores/ -│ │ └── dashboardStore.ts # zustand -│ └── vite.config.ts -└── bench/ - ├── __init__.py - ├── tasks.py # Benchmark task definitions - ├── runner.py # Benchmark execution - └── report.py # LaTeX/CSV export -``` - -**Optional deps update for pyproject.toml:** -```toml -[project.optional-dependencies] -tune = ["optuna>=3.0", "pyyaml>=6.0"] -dashboard = ["fastapi>=0.100", "uvicorn>=0.20", "websockets>=11.0", "xgboost>=1.7", "umap-learn>=0.5"] -bench = ["matplotlib>=3.5", "pandas>=1.5"] -all = ["hotcb[tune,dashboard,bench]"] -``` - ---- - -## What Would Make This a Paper - -**Title idea:** *"From Passive to Active: Human-in-the-Loop Training Control with Live Hyperparameter Steering"* - -**Key claims to benchmark:** -1. Human-interactive tuning reaches target metric in fewer GPU-hours than grid/random/Bayesian search alone -2. Recipe replay achieves deterministic reproduction with zero search overhead -3. XGBoost projections give actionable 80%+ accuracy on short-horizon metric forecasting -4. The combined human+auto system (self-mode with human override) outperforms either alone - -**Eval plan:** -- Tasks: CIFAR-10 ResNet, GPT-2 small fine-tune, simple GAN -- Baselines: fixed HP, Optuna standalone, W&B Sweeps -- Conditions: hotcb auto-only, hotcb human-only, hotcb human+auto -- Metrics: time-to-target, final quality, total interventions, compute cost - ---- - -## Summary - -The vision is ambitious but **architecturally grounded** — the hard infrastructure (kernel, actuators, replay) already exists. The dashboard/server layer is a natural extension that reads the same JSONL streams your CLI already produces. The paradigm shift narrative is credible if you lead with the interactive experience rather than the plumbing. - -**Immediate next step when ready to implement:** Phase 1 — MetricsCollector + FastAPI server + basic streaming charts. That alone is a demo-able product. From b9a26e602e924a609d819a395683d0b75f50c37a Mon Sep 17 00:00:00 2001 From: sidphbot Date: Sat, 14 Mar 2026 02:22:00 +0100 Subject: [PATCH 08/11] fixes underway --- .claude/commands/stream.md | 48 ++ .claude/plans/STREAMS.md | 114 +++++ .claude/skills/hotcb-autopilot/SKILL.md | 22 +- .coverage | Bin 692224 -> 696320 bytes CLAUDE.md | 15 +- INTEGRATION.md | 52 +- MAINTENANCE.md | 233 +++++++++ MANIFEST.in | 3 + README.md | 6 +- dev-notes/dashboard_fixes_v2.md | 335 +++++++++++++ dev-notes/phased_implementation_plan.md | 6 +- dev-notes/principled_config_refactor.md | 467 ++++++++++++++++++ ...estructuring_and_usage_doc_upgrade_plan.md | 92 ++-- dev-notes/upgrade_plan.md | 20 +- docs/concepts.md | 15 +- docs/custom_training_configs.md | 101 ++-- docs/examples/bare_torch_example.py | 6 +- docs/examples/hf_example.py | 2 +- docs/examples/lightning_example.py | 6 +- docs/modules/hotloss.md | 26 +- docs/modules/hottune.md | 8 +- examples/callbacks/feat_viz.py | 38 -- examples/callbacks/my_diag.py | 10 - examples/callbacks/print_metrics.py | 23 - examples/hf_train.py | 56 --- examples/hotcb.yaml | 23 - examples/hotcb_mydiag_example.yaml | 25 - examples/lightning_train.py | 53 -- hottune_upgrade_plan.md | 18 +- pyproject.toml | 10 + src/hotcb/actuators/__init__.py | 2 +- .../{loss_state.py => mutable_state.py} | 44 +- src/hotcb/adapters/hf.py | 46 +- src/hotcb/adapters/lightning.py | 43 +- src/hotcb/capabilities.py | 12 +- src/hotcb/cli.py | 15 +- src/hotcb/demo.py | 121 ++--- src/hotcb/finetune_demo.py | 448 ++++++----------- src/hotcb/freeze.py | 12 +- src/hotcb/golden_demo.py | 212 +++----- src/hotcb/kernel.py | 1 + src/hotcb/launch.py | 12 +- src/hotcb/metrics/collector.py | 27 +- src/hotcb/modules/cb/controller.py | 2 - src/hotcb/modules/loss.py | 26 +- src/hotcb/py.typed | 0 src/hotcb/recipe.py | 4 +- src/hotcb/server/ai_engine.py | 19 +- src/hotcb/server/ai_prompts.py | 7 +- src/hotcb/server/api.py | 72 +++ src/hotcb/server/app.py | 265 ++++++++-- src/hotcb/server/launcher.py | 119 ++--- src/hotcb/server/projections.py | 5 +- src/hotcb/server/static/css/dashboard.css | 157 +++++- src/hotcb/server/static/index.html | 39 +- src/hotcb/server/static/js/charts.js | 392 ++++++++++++--- src/hotcb/server/static/js/controls.js | 265 +++++++++- src/hotcb/server/static/js/init.js | 26 +- src/hotcb/server/static/js/manifold3d.js | 11 +- src/hotcb/server/static/js/panels.js | 246 ++++++++- src/hotcb/server/static/js/utils.js | 4 + src/hotcb/server/static/js/websocket.js | 56 ++- src/hotcb/tests/test_hotloss.py | 56 +-- src/hotcb/tests/test_hottune.py | 88 ++-- src/hotcb/tests/test_integration_lightning.py | 10 +- src/hotcb/tests/test_kernel_core.py | 6 +- src/hotcb/tests/test_new_features.py | 12 +- src/hotcb/tests/test_robustness.py | 14 +- src/hotcb/util.py | 29 +- 69 files changed, 3395 insertions(+), 1363 deletions(-) create mode 100644 .claude/commands/stream.md create mode 100644 .claude/plans/STREAMS.md create mode 100644 MAINTENANCE.md create mode 100644 MANIFEST.in create mode 100644 dev-notes/dashboard_fixes_v2.md create mode 100644 dev-notes/principled_config_refactor.md delete mode 100644 examples/callbacks/feat_viz.py delete mode 100644 examples/callbacks/my_diag.py delete mode 100644 examples/callbacks/print_metrics.py delete mode 100644 examples/hf_train.py delete mode 100644 examples/hotcb.yaml delete mode 100644 examples/hotcb_mydiag_example.yaml delete mode 100644 examples/lightning_train.py rename src/hotcb/actuators/{loss_state.py => mutable_state.py} (78%) create mode 100644 src/hotcb/py.typed diff --git a/.claude/commands/stream.md b/.claude/commands/stream.md new file mode 100644 index 0000000..a883a86 --- /dev/null +++ b/.claude/commands/stream.md @@ -0,0 +1,48 @@ +Read `.claude/plans/STREAMS.md` and help the user manage work streams. + +**Behavior based on args:** + +- **No args** (`/stream`): Show the roadmap table from STREAMS.md. Ask which stream to attach to, or offer to create a new one. + +- **Stream ID** (`/stream fix-error-handling`): Attach to that stream. Read its section, show plan + last log entry, start working on next unchecked item. + +- **`new`** (`/stream new`): Ask for: ID, type, priority, summary, goal. Add section + table row to STREAMS.md. + +- **`branch `** (`/stream branch feature-x`): Import an existing git branch as a stream. + 1. Run `git log --oneline main..` (or `master..`) to see commits + 2. Run `git diff --stat main..` to see affected files + 3. Propose a stream ID, type, and summary based on the branch content + 4. Ask user to confirm or adjust + 5. Create the stream section in STREAMS.md with the branch noted, committed work as checked items, and uncommitted/remaining as unchecked + 6. If the branch has uncommitted changes (check `git status`), note those in the plan too + +- **`status`** (`/stream status`): Show just the table with current statuses. + +- **`done`** (`/stream done`): Mark current stream as `done`. Add dated log entry. + +- **`release`** (`/stream release`): Set current stream to `planned` (pausing). Log what's left. + +**When attaching to a stream:** +1. Set its status to `active` in the table row +2. Note the current git branch in the Branch column +3. Read the stream's plan section +4. Tell the user what's done and what's next +5. Start working on the first unchecked `- [ ]` item + +**When finishing work (session ending or switching streams):** +1. Update checkboxes for completed items +2. Append a dated log line summarizing what was done and what's next +3. Update `STREAMS.md` — this is the only file that matters + +**New stream section format:** +``` +--- + +## +**Goal:** +**Branch:** (if from `/stream branch`) +**Files:** +- [x] Already done thing (from git log) +- [ ] Remaining thing +**Log:** — Created from branch . +``` diff --git a/.claude/plans/STREAMS.md b/.claude/plans/STREAMS.md new file mode 100644 index 0000000..409d69a --- /dev/null +++ b/.claude/plans/STREAMS.md @@ -0,0 +1,114 @@ +# Streams + +> **Protocol:** claim a stream (`status → active`, note your branch), work, +> update checkboxes + log, release when done (`→ done`) or paused (`→ planned`). +> New stream: add a section + row to table. Use `/stream` to browse/attach. +> Use `/stream branch ` to import an existing git branch as a stream. + +| ID | Type | Pri | Status | Branch | Summary | +|----|------|-----|--------|--------|---------| +| v2-stabilization | chore | p0 | active | claude_skill | Post-2.0 stabilization: maintenance fixes, demo restructure, dashboard UX, docs, coordination | +| fix-error-handling | fix | p2 | planned | — | Replace bare `except: pass` with specific types + logging | +| fix-api-consistency | refactor | p3 | planned | — | Standardize REST responses to `{status, data?, error?}` | +| fix-adapter-imports | fix | p3 | planned | — | Gate lightning/hf imports with friendly ImportError | +| feature-test-coverage | test | p1 | planned | — | Integration tests for demos, launcher, dashboard E2E | +| docs-examples-refresh | docs | p2 | planned | — | Verify examples, add notebooks | +| chore-release-prep | chore | p1 | planned | — | sdist/wheel validation, changelog, PyPI publish | + +Dependencies: `chore-release-prep` blocks on `v2-stabilization` + `feature-test-coverage` + +--- + +## v2-stabilization +**Goal:** Full post-2.0 stabilization pass — audit, fix, restructure, document. This is the `claude_skill` branch. +**Branch:** `claude_skill` (diverged from `master`, 1 commit + large uncommitted working tree) +**Scope:** +- MAINTENANCE.md P0-P2 audit and fixes (28 items fixed) +- Demo restructuring to HotKernel integration path +- Dashboard UX (controls hydration, stale data, run dir backup) +- Docs cleanup (INTEGRATION.md, concepts.md, custom_training_configs.md) +- Claude Code skill (`.claude/skills/hotcb-autopilot/`) +- Multi-agent coordination system (`.claude/plans/`, `/stream` command) + +**Done:** +- [x] MAINTENANCE.md audit — all P0 user-reported (1.1-1.6) +- [x] Frontend P1 fixes (API error handling, WS backoff, listener leaks, Three.js, tooltip colors, forecast polling, intervals) +- [x] Backend P1 fixes (malformed JSON, JSONL locking, FreezeState validation, duplicate imports, deps) +- [x] Packaging P2 (MANIFEST.in, py.typed) +- [x] Accessibility P2 (focus styles, ARIA labels) +- [x] Demo restructuring — 3 demos rewritten to HotKernel + MetricsCollector + actuators +- [x] Docs — fixed mc.log() refs, updated framework examples, deleted legacy examples/ +- [x] NaN/inf, [object Object], chart waiting, staged knob highlights, sys import +- [x] Claude Code skill (SKILL.md with 5-phase autopilot protocol) +- [x] Dashboard slider sync from WS metrics, `_slidersInitialized` +- [x] Launcher run dir backup (`_backup_run_dir_if_needed`) +- [x] Launcher JSONL truncation on start (was skip-if-exists) +- [x] `weight_decay` added to demo metrics +- [x] Multi-agent coordination (STREAMS.md + /stream command) + +**Remaining:** +- [ ] Manual verify: sliders sync on each demo config +- [ ] Manual verify: no stale timeline on restart +- [ ] Manual verify: backup dir created on re-run +- [ ] Commit all working tree changes +- [ ] PR to main + +**Log:** +- 2026-03-12: MAINTENANCE.md audit, P0-P2 fixes, demo restructuring, docs cleanup +- 2026-03-13: Dashboard UX fixes (slider sync, stale data, backup). Plans system created. 754 tests pass. + +--- + +## fix-error-handling +**Goal:** Replace silent `except Exception: pass` with specific types + `log.warning()`. +**Files:** `cli.py`, `kernel.py`, `recipe.py` (audit for others) +- [ ] Audit all bare-except sites +- [ ] Replace with specific exceptions + logging +- [ ] Verify tests pass + +--- + +## fix-api-consistency +**Goal:** Unify REST responses to `{status, data?, error?}`. Breaking change — needs frontend + SKILL.md updates. +**Files:** `api.py`, `utils.js`, `controls.js`, `init.js`, `panels.js`, `SKILL.md`, `INTEGRATION.md` +- [ ] Catalog current response shapes +- [ ] Design envelope schema +- [ ] Update backend + frontend + docs + +--- + +## fix-adapter-imports +**Goal:** Friendly error when `pytorch_lightning` / `transformers` not installed. +**Files:** `adapters/lightning.py`, `adapters/hf.py` +- [ ] Wrap imports in try/except with install instructions +- [ ] Add test for the friendly error message + +--- + +## feature-test-coverage +**Goal:** Integration tests for demo→launcher→dashboard→stop cycle. Currently 754 unit tests, zero integration. +**Files:** `src/hotcb/tests/` +- [ ] Test demo functions: run 10 steps, check metrics JSONL fields +- [ ] Test launcher lifecycle: start → status → stop → reset +- [ ] Test run dir backup: existing data → start → verify backup +- [ ] Test `/api/state/controls` returns correct values +- [ ] Test WS initial data burst + +--- + +## docs-examples-refresh +**Goal:** Verify `docs/examples/` match v2.0, add Jupyter notebooks. +**Files:** `docs/examples/*.py` +- [ ] Verify 3 existing examples run +- [ ] Create notebook using `launch()` API +- [ ] Create notebook for autopilot comparison + +--- + +## chore-release-prep +**Goal:** PyPI 2.0.0 publish. Depends on `v2-stabilization` + `feature-test-coverage`. +- [ ] Merge fix branches to main +- [ ] Build sdist + wheel, verify static files included +- [ ] Test install in fresh venv, run `hotcb demo` +- [ ] Write CHANGELOG.md +- [ ] Tag + publish diff --git a/.claude/skills/hotcb-autopilot/SKILL.md b/.claude/skills/hotcb-autopilot/SKILL.md index bc901c9..aac7b3b 100644 --- a/.claude/skills/hotcb-autopilot/SKILL.md +++ b/.claude/skills/hotcb-autopilot/SKILL.md @@ -76,9 +76,12 @@ When `hotcb.training_context.md` exists: ### 1.1 Check hotcb installation ```bash -python3 -c "import hotcb; print('hotcb OK')" 2>&1 && python3 -c "import fastapi, uvicorn, websockets; print('dashboard deps OK')" 2>&1 +python3 -c "import hotcb; print('hotcb OK')" 2>&1 || PYTHONPATH=src python3 -c "import hotcb; print('hotcb OK (dev mode)')" 2>&1 +python3 -c "import fastapi, uvicorn, websockets; print('dashboard deps OK')" 2>&1 ``` +If the import only works with `PYTHONPATH=src`, prefix all subsequent `python3` and `hotcb` commands with `PYTHONPATH=src`. + If not installed: tell user to run `pip install "hotcb[dashboard]"` (or `pip install -e ".[dev,all]"` if developing from source). ### 1.2 Check for launch config @@ -312,6 +315,23 @@ Format: - **If diverging**: Check every 10 steps - **If healthy and improving**: Can extend to every 100 steps +**Wall-clock cap**: Regardless of step-based cadence, NEVER wait more than 60 seconds between checks. If training is slow (e.g., 1 step/sec), the step-based cadence may translate to minutes of silence. Always set a wall-clock timeout: + +```bash +# Example: wait for step-based cadence OR 60s, whichever comes first +NEXT_CHECK_STEP= +TIMEOUT=60 +START=$(date +%s) +while true; do + LATEST=$(curl -s http://localhost:8421/api/metrics/history?last_n=1 | python3 -c "import sys,json; d=json.load(sys.stdin); print(d['records'][-1]['step'] if d.get('records') else 0)" 2>/dev/null || echo 0) + ELAPSED=$(( $(date +%s) - START )) + if [ "$LATEST" -ge "$NEXT_CHECK_STEP" ] || [ "$ELAPSED" -ge "$TIMEOUT" ]; then break; fi + sleep 3 +done +``` + +This ensures responsiveness even with slow training loops. + ### 3.7 Graduation principle Start with small changes: diff --git a/.coverage b/.coverage index 571558ef62ffd71c6ed338cc8a045b8801f66233..6bbad2b0cf1aa5abaa36ebda467028dc8c275bde 100644 GIT binary patch literal 696320 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 z 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 literal 692224 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ξf)t}Ju0!0Lm>W|lt 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�sKfAPlCW|`# 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 z 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�I#q<+$o5c!!g?s`3y=_81KZ+F` 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 0: time.sleep(step_delay) diff --git a/MAINTENANCE.md b/MAINTENANCE.md new file mode 100644 index 0000000..03f2db7 --- /dev/null +++ b/MAINTENANCE.md @@ -0,0 +1,233 @@ +# MAINTENANCE.md — hotcb Release Readiness Audit + +Generated: 2026-03-12 + +## Priority Legend +- **P0** — Must fix before release (broken functionality) +- **P1** — Should fix (poor UX, data loss risk) +- **P2** — Nice to fix (code quality, polish) +- **P3** — Backlog (low-impact improvements) + +--- + +## 1. User-Reported Issues (P0) + +### 1.1 Claude Skill PYTHONPATH Issue +**File:** `.claude/skills/hotcb-autopilot/SKILL.md:78-79` +**Problem:** Skill uses `python3 -c "import hotcb; ..."` which fails when hotcb is installed in editable mode or not on `sys.path`. Need `PYTHONPATH=src` prefix or `python3 -m hotcb` pattern. +**Fix:** Update all `python3 -c` invocations to use `PYTHONPATH=src python3 -c` or `python3 -m` equivalents. + +### 1.2 Claude Skill Cadence Cap +**File:** `.claude/skills/hotcb-autopilot/SKILL.md:309-314` +**Problem:** Phase 3.6 cadence section has no wall-clock time limit. If training is slow (1 step/sec), "check every 100 steps" means 100 seconds of silence. Need max 60-second wall-clock cap. +**Fix:** Add wall-clock time limit to cadence rules. + +### 1.3 Tooltip Position — Show on Side, Not Top +**File:** `src/hotcb/server/static/js/charts.js:312-314` +**Problem:** Chart.js tooltip appears above the cursor, blocking view of data points. Should appear to the side. +**Fix:** Register a custom Chart.js tooltip positioner that places tooltip to the right of the cursor. + +### 1.4 Controls Don't Reflect State for Non-Demo Projects +**Files:** `src/hotcb/server/static/js/controls.js:579-627`, `src/hotcb/server/app.py:398-468` +**Problem:** `/api/train/status` returns empty config when training wasn't started via the dashboard's `TrainingLauncher`. External training (via adapters, `hotcb launch`, or direct kernel usage) writes `hotcb.run.json` and `hotcb.applied.jsonl` but the frontend only syncs from launcher status. +**Fix:** On dashboard load, call `/api/state/controls` to hydrate sliders from last applied opt/loss params and run config from `hotcb.run.json`. Add frontend init that reads this endpoint. + +### 1.5 Mutation Capsules Don't Render for Non-Demo Runs +**File:** `src/hotcb/server/static/js/panels.js` (addTimelineItem function) +**Problem:** Applied JSONL records from external training use `payload` field for params, not `params`. The capsule rendering code only checks `rec.params`. Similarly, chart annotation code in `charts.js:76` only checks `rec.params`. +**Fix:** Check both `rec.params` and `rec.payload` in timeline rendering and chart annotations. + +### 1.6 Autopilot Alert Tooltips +**File:** `src/hotcb/server/static/js/controls.js:795-845` +**Problem:** Autopilot action items show truncated `condition_met` (80 chars). No hover tooltip with full detail. +**Fix:** Add `title` attribute with full condition text, and show rule parameters on hover. + +--- + +## 2. Frontend Issues (P1) + +### 2.1 API Error Handling — Missing HTTP Status Check +**File:** `src/hotcb/server/static/js/utils.js:8-15` +**Problem:** `api()` function doesn't check `r.ok` before calling `r.json()`. 404/500 responses cause silent failures or JSON parse errors. +**Fix:** Add `if (!r.ok)` check, return structured error. + +### 2.2 WebSocket Reconnection — No Backoff +**File:** `src/hotcb/server/static/js/websocket.js:16-25` +**Problem:** Reconnects every 3s with no exponential backoff, no max retries, no cleanup of old WS instance. +**Fix:** Add exponential backoff (3s → 6s → 12s → 30s cap), max 20 retries, cleanup old `S.ws`. + +### 2.3 Event Listener Leaks in Metric Dropdown +**File:** `src/hotcb/server/static/js/charts.js:648-653` +**Problem:** `document.addEventListener('click', ...)` is re-registered on every `_renderMetricDropdown()` call. Old listeners reference stale `wrapper` closures. +**Fix:** Use a single delegated listener or remove old listener before adding new one. + +### 2.4 Three.js Memory Leaks +**File:** `src/hotcb/server/static/js/manifold3d.js:70-131` +**Problem:** Scene children removed but geometry/material not disposed. GPU memory accumulates. +**Fix:** Call `.geometry.dispose()` and `.material.dispose()` before removing from scene. + +### 2.5 Chart Tooltip Hardcoded Colors +**File:** `src/hotcb/server/static/js/charts.js:312-313` +**Problem:** Tooltip background/border colors are hardcoded midnight theme values. Don't update on theme switch. +**Fix:** Read from CSS variables on tooltip render, or update chart options in `setTheme()`. + +### 2.6 Forecast Polling Floods +**File:** `src/hotcb/server/static/js/charts.js:824-829` +**Problem:** `fetchAllForecasts()` spawns one request per metric name. With 50+ metrics, this is 50+ concurrent requests every 5s. +**Fix:** Batch forecast API or limit concurrent requests to 5-10. + +### 2.7 Interval Accumulation +**Files:** `src/hotcb/server/static/js/init.js:127,204`, `src/hotcb/server/static/js/controls.js:194,317` +**Problem:** `setInterval` calls not stored in variables or cleared on reset. Multiple intervals can accumulate. +**Fix:** Store interval IDs, clear on reset. + +--- + +## 3. Backend Issues (P1) + +### 3.1 Malformed JSON Crash in read_new_jsonl +**File:** `src/hotcb/util.py:58` +**Problem:** `json.loads(s)` without try-catch. Malformed JSONL lines crash the kernel's command loading. +**Fix:** Wrap in try-except, log warning, skip malformed lines. + +### 3.2 JSONL Append Race Condition +**File:** `src/hotcb/util.py:66` +**Problem:** `append_jsonl()` has no file locking. Concurrent writes from dashboard API + training thread can interleave lines. +**Fix:** Add `fcntl.flock()` around write. + +### 3.3 FreezeState Missing Mode Validation +**File:** `src/hotcb/freeze.py:22-40` +**Problem:** `FreezeState.load()` accepts any string for mode without validation. +**Fix:** Validate mode is in `{"off", "prod", "replay", "replay_adjusted"}`. + +### 3.4 Duplicate Imports +**File:** `src/hotcb/modules/cb/controller.py:7,15-16` +**Problem:** `dataclasses` and `util` imported twice. +**Fix:** Remove duplicate imports. + +### 3.5 Incomplete `all` Optional Dependencies +**File:** `pyproject.toml:38-43` +**Problem:** `all` extras missing `slack_sdk>=3.0` (notifications), `matplotlib>=3.5`, `pandas>=1.5` (bench). +**Fix:** Add missing deps to `all`. + +--- + +## 4. Packaging Issues (P2) + +### 4.1 Missing MANIFEST.in +**Problem:** No `MANIFEST.in` for sdist. `pyproject.toml` package-data globs may not work with all setuptools versions for source distributions. +**Fix:** Create `MANIFEST.in` with `recursive-include` for static files, guidelines, prompt YAML. + +### 4.2 Missing py.typed Marker +**Problem:** No PEP 561 `py.typed` marker. Type checkers don't recognize hotcb as typed. +**Fix:** Create `src/hotcb/py.typed` (empty file). + +--- + +## 5. Accessibility Issues (P2) + +### 5.1 Focus Styles +**File:** `src/hotcb/server/static/css/dashboard.css` +**Problem:** Multiple inputs use `outline: none` without adequate replacement. Violates WCAG 2.4.7. +**Fix:** Use `outline: 2px solid var(--accent); outline-offset: 2px;` or `:focus-visible`. + +### 5.2 Missing ARIA Labels +**File:** `src/hotcb/server/static/index.html` +**Problem:** Icon buttons (pin, close, tour) lack `aria-label`. Inputs lack associated `

+
...
+
...
+``` + +**Proposed:** +```html + +
+``` + +```javascript +// controls.js — generates from config +function buildControls(config) { + var panel = $('#knobPanel'); + panel.innerHTML = ''; + config.controls.opt_params.forEach(function(p) { + panel.appendChild(buildKnobRow(p)); + }); + config.controls.loss_params.forEach(function(p) { + panel.appendChild(buildKnobRow(p)); + }); +} + +function buildKnobRow(spec) { + // spec = {name: "lr", label: "Learning Rate", type: "log_range", + // min: 1e-7, max: 1.0, step: 0.01, default: 3.16e-4} + var row = document.createElement('div'); + row.className = 'knob-row'; + row.dataset.param = spec.name; + // ... build slider/input based on spec.type + return row; +} +``` + +No more `single-loss-only`, `multitask-only`, `finetune-only` CSS classes. If a param +isn't in `config.controls`, it doesn't get rendered. + +--- + +## Implementation Plan (TDD) + +### Phase 1: Config Object + Tests + +**Goal:** `DashboardConfig` exists, is testable, serializes to JSON, loads from YAML. + +``` +Tests to write FIRST: + test_config_defaults() — verify all defaults match documented values + test_config_from_yaml() — load hotcb.dashboard.yaml, verify override + test_config_from_env() — HOTCB_PORT=9000 overrides port + test_config_to_json() — round-trip serialization + test_config_merge_capabilities()— TrainingCapabilities merges into ControlConfig + test_param_spec_schema() — ParamSpec validates types and bounds + test_config_immutable_run_dir() — run_dir cannot be changed after construction +``` + +**Files:** +- `src/hotcb/server/config.py` — config dataclasses + loader +- `src/hotcb/tests/test_dashboard_config.py` — tests + +### Phase 2: Config Endpoint + Frontend Fetch + +**Goal:** `/api/config` serves the config. Frontend reads it at startup. + +``` +Tests to write FIRST: + test_config_endpoint_returns_full() — GET /api/config returns all sections + test_config_endpoint_includes_caps() — includes discovered ParamSpecs + test_config_endpoint_json_schema() — response matches expected shape +``` + +**Files:** +- `src/hotcb/server/app.py` — add `/api/config` endpoint +- `src/hotcb/server/static/js/state.js` — add `S.config` +- `src/hotcb/server/static/js/init.js` — fetch config at startup + +### Phase 3: Immutable `run_dir` + +**Goal:** Remove `_ctx` pattern. `run_dir` is set once and never changes. + +``` +Tests to write FIRST: + test_run_dir_immutable() — config.run_dir cannot be reassigned + test_launcher_writes_to_run_dir() — start() writes to config.run_dir, not subdirs + test_launcher_truncates_on_start() — start() clears JSONL files (like reset) + test_endpoints_use_config_run_dir() — all endpoints read config.run_dir + test_no_tailer_rewatch() — tailer.rewatch() is never called + test_compare_reads_siblings() — /api/runs/discover reads parent dir read-only +``` + +**Files:** +- `src/hotcb/server/app.py` — replace all `_ctx["run_dir"]` with `config.run_dir` +- `src/hotcb/server/launcher.py` — remove subdir creation, write to `run_dir` directly +- `src/hotcb/server/tailer.py` — remove `rewatch()` method + +### Phase 4: Dynamic Controls from Config + +**Goal:** Controls are generated from `config.controls`, not from hardcoded HTML. + +``` +Tests to write FIRST: + test_control_config_from_capabilities() — TrainingCapabilities → ParamSpec list + test_control_config_simple_demo() — simple demo produces lr+wd params + test_control_config_multitask_demo() — golden demo adds weight_a, weight_b + test_control_config_external_project() — external project discovers from caps.json + test_control_config_no_caps() — fallback: lr+wd only + test_opt_params_have_bounds() — bounds from actuator describe_space() + test_loss_params_have_bounds() — bounds from mutable_state actuator +``` + +**Files:** +- `src/hotcb/server/config.py` — add `ControlConfig.from_capabilities()` +- `src/hotcb/server/static/js/controls.js` — `buildControls(config)` replaces hardcoded HTML +- `src/hotcb/server/static/index.html` — remove hardcoded knob rows, keep container only + +### Phase 5: Replace Frontend Magic Numbers + +**Goal:** All JS magic numbers read from `S.config`. + +``` +Tests to write FIRST (backend contract tests): + test_config_chart_defaults() — chart config has expected defaults + test_config_ui_defaults() — UI config has expected defaults + test_config_ws_defaults() — WebSocket config has expected defaults +``` + +**Frontend changes (verified manually + by existing backend tests):** + +| Current literal | Replaced with | File | +|----------------|---------------|------| +| `_maxRenderPoints = 2000` | `S.config.chart.max_render_points` | charts.js | +| `tension: 0.15` | `S.config.chart.line_tension` | charts.js | +| `[6, 3]` (forecast dash) | `S.config.chart.forecast_dash` | charts.js | +| `[3, 4]` (mutation dash) | `S.config.chart.mutation_dash` | charts.js | +| `0.005` (staged threshold) | `S.config.ui.staged_change_threshold` | controls.js | +| `setInterval(..., 5000)` (state save) | `S.config.ui.state_save_interval` | init.js | +| `setInterval(..., 15000)` (alerts) | `S.config.ui.alert_poll_interval` | init.js | +| `setInterval(..., 10000)` (manifold) | `S.config.ui.manifold_refresh_interval` | panels.js | +| `setInterval(..., 5000)` (recipe) | `S.config.ui.recipe_refresh_interval` | panels.js | +| `setInterval(..., 5000)` (forecast) | `S.config.ui.forecast_poll_interval` | charts.js | +| `>= 10` (forecast cadence) | `S.config.ui.forecast_step_cadence` | charts.js | +| `batchSize = 8` | `S.config.ui.forecast_batch_size` | charts.js | +| `_wsMaxRetries = 20` | `S.config.server.ws_max_retries` | websocket.js | +| `3000 * 1.5^n, max 30000` | `S.config.server.ws_retry_base/cap` | websocket.js | +| `last_n=500` (metrics) | `S.config.server.history_limit_metrics` | app.py | +| `last_n=200` (applied) | `S.config.server.history_limit_applied` | app.py | +| `last_n=200` (WS burst) | `S.config.server.ws_initial_burst` | app.py | + +### Phase 6: Replace Backend Magic Numbers + +**Goal:** All Python magic numbers read from `DashboardConfig`. + +``` +Tests to write FIRST: + test_poll_interval_from_config() — tailer uses config.server.poll_interval + test_history_limits_from_config() — endpoints use config.server.history_limit_* + test_autopilot_thresholds_config() — autopilot reads config.autopilot.* + test_ai_cadence_from_config() — AI engine reads config.autopilot.ai_* +``` + +**Files:** +- `src/hotcb/server/app.py` — all endpoints read from config +- `src/hotcb/server/tailer.py` — poll_interval from config +- `src/hotcb/server/ai_engine.py` — cadence/thresholds from config +- `src/hotcb/server/autopilot.py` — thresholds from config + +--- + +## What This Does NOT Change + +- **Core kernel** — untouched. `kernel.apply(env, events)` contract stays. +- **Actuator protocol** — untouched. `snapshot/validate/apply/restore/describe_space`. +- **JSONL filesystem IPC** — untouched. Commands, applied, metrics stay as files. +- **Adapter layer** — untouched. Lightning/HF adapters still write capabilities.json. +- **Module system** — untouched. opt/loss/cb/tune modules stay. +- **CLI subcommands** — untouched (except `serve` gets new flags for config overrides). + +--- + +## Config File Format + +```yaml +# hotcb.dashboard.yaml (optional, placed in run_dir) + +server: + port: 8421 + poll_interval: 0.5 + history_limit_metrics: 500 + history_limit_applied: 200 + ws_initial_burst: 200 + +chart: + max_render_points: 2000 + line_tension: 0.15 + +controls: + # Override or extend discovered params + opt_params: + - name: lr + label: Learning Rate + type: log_range + min: 1.0e-7 + max: 1.0 + step: 0.01 + default: 3.16e-4 + - name: weight_decay + label: Weight Decay + type: log_range + min: 1.0e-6 + max: 1.0 + step: 0.01 + default: 1.0e-4 + # loss_params: auto-discovered from TrainingCapabilities if not specified + +autopilot: + divergence_threshold: 2.0 + ratio_threshold: 0.5 + ai_min_interval: 10 + ai_default_cadence: 50 + +ui: + state_save_interval: 5000 + alert_poll_interval: 15000 + staged_change_threshold: 0.005 +``` + +--- + +## Migration Path + +1. **Phase 1-2** are additive — no breaking changes. Config object + endpoint exist + alongside current code. +2. **Phase 3** removes `_ctx` and subdirectory creation — this is the breaking change. + Existing runs in subdirs still work (serve points at the subdir directly). +3. **Phase 4** removes hardcoded HTML controls — the UI looks the same but is generated. +4. **Phase 5-6** are pure refactors — same behavior, values come from config instead + of literals. + +Each phase has its own test suite that passes before moving on. No phase depends on +a later phase. Any phase can be shipped independently. + +--- + +## Verification + +After each phase: +```bash +pytest src/hotcb/tests/ -x -q --no-cov # full suite passes +hotcb demo # dashboard works with demo +hotcb serve --dir # dashboard works with real project +``` + +After Phase 3 specifically: +```bash +# Verify run_dir is truly immutable +hotcb serve --dir runs/exp1 +# Start training from dashboard → writes to runs/exp1/ directly +# Stop, start again → same dir, files truncated, no subdirs created +``` + +After Phase 4 specifically: +```bash +# Verify controls are discovered, not hardcoded +hotcb serve --dir +# Dashboard shows 3 loss weight sliders (not 2 hardcoded ones) +``` diff --git a/dev-notes/restructuring_and_usage_doc_upgrade_plan.md b/dev-notes/restructuring_and_usage_doc_upgrade_plan.md index 1636414..bf1748c 100644 --- a/dev-notes/restructuring_and_usage_doc_upgrade_plan.md +++ b/dev-notes/restructuring_and_usage_doc_upgrade_plan.md @@ -240,10 +240,10 @@ for step, batch in enumerate(dl): loss.backward() opt.step() - env \= {"framework":"torch", "phase":"train", "step":step, "optimizer":opt, "loss\_state":loss\_state} + env \= {"framework":"torch", "phase":"train", "step":step, "optimizer":opt, "mutable\_state":mutable\_state} kernel.apply(env, events=\["train\_step\_end"\]) -(README shouldn’t be perfect API-wise, but should show where optimizer/loss\_state go.) +(README shouldn’t be perfect API-wise, but should show where optimizer/mutable\_state go.) --- @@ -514,13 +514,13 @@ The general rule: * **hotopt** needs access to the optimizer (and optionally scheduler) -* **hotloss** needs access to a mutable loss configuration object (“loss\_state”) that your loss computation reads each step +* **hotloss** needs access to a mutable loss configuration object (“mutable\_state”) that your loss computation reads each step You can provide these in one of two ways: -1. directly on `env` (`env["optimizer"]`, `env["loss_state"]`), or +1. directly on `env` (`env["optimizer"]`, `env["mutable_state"]`), or -2. via resolver functions (`env["resolve_optimizer"]`, `env["resolve_loss_state"]`) when direct access is awkward. +2. via resolver functions (`env["resolve_optimizer"]`, `env["resolve_mutable_state"]`) when direct access is awkward. ### **1\) PyTorch Lightning** @@ -552,17 +552,17 @@ The easiest, most reliable pattern is to store your loss weights/flags in a **mu Example convention: -* `self.loss_state = {"weights": {...}, "terms": {...}, "ramps": {...}}` +* `self.mutable_state = {"weights": {...}, "terms": {...}, "ramps": {...}}` -* Your `training_step` (or loss function) reads from `self.loss_state` +* Your `training_step` (or loss function) reads from `self.mutable_state` Then the adapter sets: -* `env["loss_state"] = pl_module.loss_state` +* `env["mutable_state"] = pl_module.mutable_state` This ensures hotloss updates take effect immediately on the next step, without any trainer patching. -**Tip:** Prefer a single authoritative loss\_state dict that your loss code reads every step. Avoid copying it into local variables that never refresh. +**Tip:** Prefer a single authoritative mutable\_state dict that your loss code reads every step. Avoid copying it into local variables that never refresh. --- @@ -590,20 +590,20 @@ HF’s Trainer loss is commonly computed inside the model’s `forward()` or ins Recommended approach: -* Keep a mutable `loss_state` on the model instance, and have `compute_loss` / forward read from it. +* Keep a mutable `mutable_state` on the model instance, and have `compute_loss` / forward read from it. Example: -* `model.loss_state = {...}` +* `model.mutable_state = {...}` -* In `compute_loss`, use `model.loss_state["weights"]["distill"]` etc. +* In `compute_loss`, use `model.mutable_state["weights"]["distill"]` etc. Then the adapter sets: -* `env["loss_state"] = model.loss_state` +* `env["mutable_state"] = model.mutable_state` or provides: -* `env["resolve_loss_state"] = lambda: model.loss_state` +* `env["resolve_mutable_state"] = lambda: model.mutable_state` This is the cleanest cross-version approach because it doesn’t require patching Trainer internals. @@ -633,23 +633,23 @@ If you have multiple optimizers: Use a mutable dict and read it inside your loss computation each step: -* `loss_state = {"weights": {...}, "terms": {...}, "ramps": {...}}` +* `mutable_state = {"weights": {...}, "terms": {...}, "ramps": {...}}` -* Compute loss using values from `loss_state` +* Compute loss using values from `mutable_state` Then at safe point: -* `env["loss_state"] = loss_state` +* `env["mutable_state"] = mutable_state` This gives you fully deterministic, step-indexed changes that can be exported to a recipe and replayed later. --- -### **Recommended `loss_state` structure (portable across frameworks)** +### **Recommended `mutable_state` structure (portable across frameworks)** To keep configs consistent across Lightning/HF/bare torch, HotOps recommends a single shape: -loss\_state \= { +mutable\_state \= { "weights": { "distill": 0.2, "depth": 1.5, @@ -680,13 +680,13 @@ hotcb loss set ramps.depth.warmup\_frac=0.2 ramps.depth.end=2.0 This is what keeps HotOps safe, debuggable, and replayable. -## **Concrete snippets: exposing optimizer \+ loss\_state per framework** +## **Concrete snippets: exposing optimizer \+ mutable\_state per framework** ### **1\) PyTorch Lightning** -**Pattern:** store a mutable `loss_state` on your `LightningModule`, and let the HotOps Lightning adapter pull the optimizer from `trainer.optimizers`. +**Pattern:** store a mutable `mutable_state` on your `LightningModule`, and let the HotOps Lightning adapter pull the optimizer from `trainer.optimizers`. -#### **LightningModule with `loss_state`** +#### **LightningModule with `mutable_state`** import pytorch\_lightning as pl import torch @@ -698,7 +698,7 @@ class MyModel(pl.LightningModule): self.net \= torch.nn.Linear(10, 1\) \# Mutable, runtime-updatable loss config (hotloss mutates this). - self.loss\_state \= { + self.mutable\_state \= { "weights": {"main": 1.0, "aux": 0.2}, "terms": {"aux": True}, "ramps": {}, \# optional @@ -712,12 +712,12 @@ class MyModel(pl.LightningModule): pred \= self(x) main \= F.mse\_loss(pred, y) - w\_main \= float(self.loss\_state\["weights"\].get("main", 1.0)) + w\_main \= float(self.mutable\_state\["weights"\].get("main", 1.0)) loss \= w\_main \* main - if self.loss\_state\["terms"\].get("aux", False): + if self.mutable\_state\["terms"\].get("aux", False): aux \= (pred.abs().mean()) - w\_aux \= float(self.loss\_state\["weights"\].get("aux", 0.0)) + w\_aux \= float(self.mutable\_state\["weights"\].get("aux", 0.0)) loss \= loss \+ w\_aux \* aux self.log("train\_loss", loss) @@ -729,7 +729,7 @@ class MyModel(pl.LightningModule): #### **HotOps Lightning adapter (minimal)** -This is the key: add optimizer \+ loss\_state to `env` before calling `kernel.apply`. +This is the key: add optimizer \+ mutable\_state to `env` before calling `kernel.apply`. import pytorch\_lightning as pl from typing import Any, Dict, Optional, List @@ -765,7 +765,7 @@ class HotOpsCallback(pl.Callback): scheduler \= None \# Loss exposure (hotloss) - loss\_state \= getattr(pl\_module, "loss\_state", None) + mutable\_state \= getattr(pl\_module, "mutable\_state", None) env: Dict\[str, Any\] \= { "framework": "lightning", @@ -779,7 +779,7 @@ class HotOpsCallback(pl.Callback): "batch\_idx": batch\_idx, "optimizer": optimizer, "scheduler": scheduler, - "loss\_state": loss\_state, + "mutable\_state": mutable\_state, "log": lambda s: trainer.print(s), } @@ -799,9 +799,9 @@ hotops \--dir runs/exp1 loss set weights.main=1.0 weights.aux=0.1 terms.aux=fals ### **2\) HuggingFace `transformers.Trainer`** -**Pattern:** put a mutable `loss_state` on the model, and compute loss using it. Expose `trainer.optimizer` / `trainer.lr_scheduler` to env in the adapter hook. +**Pattern:** put a mutable `mutable_state` on the model, and compute loss using it. Expose `trainer.optimizer` / `trainer.lr_scheduler` to env in the adapter hook. -#### **Model with `loss_state` \+ custom `compute_loss`** +#### **Model with `mutable_state` \+ custom `compute_loss`** import torch from torch import nn @@ -813,7 +813,7 @@ class MyHFModel(nn.Module): self.net \= nn.Linear(10, 1\) \# Mutable loss config (hotloss mutates this) - self.loss\_state \= { + self.mutable\_state \= { "weights": {"main": 1.0, "aux": 0.2}, "terms": {"aux": True}, "ramps": {}, @@ -834,12 +834,12 @@ class MyTrainer(Trainer): labels \= out\["labels"\] main \= F.mse\_loss(pred, labels) - w\_main \= float(model.loss\_state\["weights"\].get("main", 1.0)) + w\_main \= float(model.mutable\_state\["weights"\].get("main", 1.0)) loss \= w\_main \* main - if model.loss\_state\["terms"\].get("aux", False): + if model.mutable\_state\["terms"\].get("aux", False): aux \= pred.abs().mean() - w\_aux \= float(model.loss\_state\["weights"\].get("aux", 0.0)) + w\_aux \= float(model.mutable\_state\["weights"\].get("aux", 0.0)) loss \= loss \+ w\_aux \* aux return (loss, out) if return\_outputs else loss @@ -866,14 +866,14 @@ class HotOpsHFCallback(TrainerCallback): optimizer \= None scheduler \= None - loss\_state \= None + mutable\_state \= None \# If you can pass trainer/model into kwargs when constructing callbacks, do it. if trainer is not None: optimizer \= getattr(trainer, "optimizer", None) scheduler \= getattr(trainer, "lr\_scheduler", None) if model is not None: - loss\_state \= getattr(model, "loss\_state", None) + mutable\_state \= getattr(model, "mutable\_state", None) env: Dict\[str, Any\] \= { "framework": "hf", @@ -885,7 +885,7 @@ class HotOpsHFCallback(TrainerCallback): "control": control, "optimizer": optimizer, "scheduler": scheduler, - "loss\_state": loss\_state, + "mutable\_state": mutable\_state, "log": print, } @@ -910,7 +910,7 @@ class HotOpsHFCallback(TrainerCallback): def on\_step\_end(self, args, state, control, \*\*kwargs): optimizer \= getattr(self.trainer, "optimizer", None) if self.trainer else None scheduler \= getattr(self.trainer, "lr\_scheduler", None) if self.trainer else None - loss\_state \= getattr(self.model\_ref, "loss\_state", None) if self.model\_ref else None + mutable\_state \= getattr(self.model\_ref, "mutable\_state", None) if self.model\_ref else None ... Then usage: @@ -924,7 +924,7 @@ trainer.train() ### **3\) Bare PyTorch loop** -**Pattern:** pass optimizer and loss\_state directly into `env` right after your step, at your chosen safe point. +**Pattern:** pass optimizer and mutable\_state directly into `env` right after your step, at your chosen safe point. import torch import torch.nn.functional as F @@ -932,7 +932,7 @@ import torch.nn.functional as F model \= torch.nn.Linear(10, 1).to(device) optimizer \= torch.optim.AdamW(model.parameters(), lr=3e-4, weight\_decay=0.01) -loss\_state \= { +mutable\_state \= { "weights": {"main": 1.0, "aux": 0.2}, "terms": {"aux": True}, "ramps": {}, @@ -950,10 +950,10 @@ for epoch in range(num\_epochs): pred \= model(x) main \= F.mse\_loss(pred, y) - loss \= float(loss\_state\["weights"\].get("main", 1.0)) \* main - if loss\_state\["terms"\].get("aux", False): + loss \= float(mutable\_state\["weights"\].get("main", 1.0)) \* main + if mutable\_state\["terms"\].get("aux", False): aux \= pred.abs().mean() - loss \= loss \+ float(loss\_state\["weights"\].get("aux", 0.0)) \* aux + loss \= loss \+ float(mutable\_state\["weights"\].get("aux", 0.0)) \* aux optimizer.zero\_grad(set\_to\_none=True) loss.backward() @@ -967,7 +967,7 @@ for epoch in range(num\_epochs): "epoch": epoch, "model": model, "optimizer": optimizer, - "loss\_state": loss\_state, + "mutable\_state": mutable\_state, "loss": loss.detach(), "log": print, } @@ -987,7 +987,7 @@ hotops \--dir runs/exp1 loss set weights.aux=0.05 terms.aux=true * If you have multiple optimizers/schedulers, define your own stable convention: * expose `env["optimizers"] = {...}` and make hotopt accept `name=` selectors, *or* * expose only the primary optimizer as `env["optimizer"]` and keep it simple. -* For loss, keep a single mutable `loss_state` dict and always read from it inside your loss computation each step. +* For loss, keep a single mutable `mutable_state` dict and always read from it inside your loss computation each step. # **Live CLI Examples** diff --git a/dev-notes/upgrade_plan.md b/dev-notes/upgrade_plan.md index 89bc1c2..91a7d98 100644 --- a/dev-notes/upgrade_plan.md +++ b/dev-notes/upgrade_plan.md @@ -662,19 +662,19 @@ Hotloss should not require hooking into autograd internals. It should mutate a * #### **13.3.3 Env requirements** -* `env["loss_state"]`: mutable mapping used by loss computation +* `env["mutable_state"]`: mutable mapping used by loss computation OR -* `env["resolve_loss_state"]`: callable +* `env["resolve_mutable_state"]`: callable If missing: * record `failed` or `skipped_noop` -#### **13.3.4 Suggested loss\_state shape** +#### **13.3.4 Suggested mutable\_state shape** A conventional structure: -loss\_state \= { +mutable\_state \= { "weights": {"distill": 0.2, "depth": 1.5}, "terms": {"aux\_depth": True, "aux\_heatmap": False}, "ramps": {"depth": {"type":"linear","warmup\_frac":0.2,"end":2.0}}, @@ -860,7 +860,7 @@ When using HotOps: hf but also expose: * optimizer/scheduler references if available - * loss\_state hook if user provides it + * mutable\_state hook if user provides it * Keep hotcb adapters for users who only install hotcb --- @@ -975,7 +975,7 @@ This spec requires Approach A as the end state. ### **18.5 Implement hotloss controller** -* Similar to hotopt but mutates `loss_state` +* Similar to hotopt but mutates `mutable_state` ### **18.6 Ledger writer** @@ -1166,9 +1166,9 @@ This is a full test plan. Assignable to agents as separate workstreams. ### **19.7 Unit tests — hotloss controller** -* Mutate weights/toggles in loss\_state dict +* Mutate weights/toggles in mutable\_state dict * Verify mapping rules (distill\_w → weights.distill, etc.) -* Missing loss\_state handling +* Missing mutable\_state handling * Error/auto-disable behavior --- @@ -1182,7 +1182,7 @@ Use a tiny Lightning model and trainer (CPU is fine). HotOps adapter must: * expose optimizer or resolver -* expose loss\_state if user supplies +* expose mutable\_state if user supplies Test: @@ -1313,7 +1313,7 @@ You said you’ll delegate agents. Here’s a clean breakdown: **Agent E — hotloss module** -* loss\_state contract \+ mapping +* mutable\_state contract \+ mapping * weights/toggles/ramps diff --git a/docs/concepts.md b/docs/concepts.md index 195ec95..c03645c 100644 --- a/docs/concepts.md +++ b/docs/concepts.md @@ -108,7 +108,7 @@ hotcb never kills training on a module error. When an op fails: 2. If `auto_disable_on_error` is enabled, the offending handle is disabled. 3. Training continues uninterrupted. -This applies uniformly to all modules. A bad callback, an invalid LR value, or a missing loss_state reference will be logged and isolated -- not propagated. +This applies uniformly to all modules. A bad callback, an invalid LR value, or a missing mutable_state reference will be logged and isolated -- not propagated. ## Safe-Point Updates Only @@ -164,16 +164,21 @@ Configuration: ## Metrics Collection -`MetricsCollector` writes training metrics to `hotcb.metrics.jsonl`: +`MetricsCollector` writes training metrics to `hotcb.metrics.jsonl`. It is an internal component — you create it and pass it to `HotKernel`, which calls `collect(env)` automatically each step: ```python +from hotcb.kernel import HotKernel from hotcb.metrics import MetricsCollector -mc = MetricsCollector("runs/exp1/hotcb.metrics.jsonl") -mc.log(step=100, metrics={"loss": 0.45, "lr": 0.001, "val_loss": 0.52}) +mc = MetricsCollector(os.path.join(run_dir, "hotcb.metrics.jsonl")) +kernel = HotKernel(run_dir=run_dir, metrics_collector=mc) + +# In your training loop, put metrics in env["metrics"]: +env = {"step": step, "metrics": {"loss": 0.45, "lr": 0.001}, ...} +kernel.apply(env, events=["train_step_end"]) # collector called internally ``` -The dashboard tails this file for live charts. The autopilot reads it for trend analysis. +Framework adapters (Lightning, HF) build the env automatically from logged/callback metrics. The dashboard tails this file for live charts. The autopilot reads it for trend analysis. ## Programmatic Launch API diff --git a/docs/custom_training_configs.md b/docs/custom_training_configs.md index 30230f7..b79167c 100644 --- a/docs/custom_training_configs.md +++ b/docs/custom_training_configs.md @@ -51,9 +51,8 @@ Your `train_fn` must: 1. **Accept 4 positional args**: `(run_dir, max_steps, step_delay, stop_event)` 2. **Check `stop_event`** periodically — call `stop_event.is_set()` each step -3. **Write metrics** to `{run_dir}/hotcb.metrics.jsonl` as JSON lines -4. **Read commands** from `{run_dir}/hotcb.commands.jsonl` to respond to UI knobs -5. **Write applied mutations** to `{run_dir}/hotcb.applied.jsonl` +3. **Provide metrics** — either manually write to `hotcb.metrics.jsonl`, or use `HotKernel` with `MetricsCollector` (recommended) +4. **Handle commands** — either manually poll `hotcb.commands.jsonl`, or let `HotKernel` route them automatically (recommended) ### Metric Record Format @@ -80,38 +79,27 @@ names and creates chart lines for each. ## Framework Examples -### Bare PyTorch +### Bare PyTorch (recommended: using HotKernel) ```python -import json, os, time, torch, torch.nn as nn +import os, time, torch, torch.nn as nn +from hotcb.kernel import HotKernel +from hotcb.metrics import MetricsCollector +from hotcb.actuators import OptimizerActuator def pytorch_training(run_dir, max_steps, step_delay, stop_event): - metrics_path = os.path.join(run_dir, "hotcb.metrics.jsonl") - commands_path = os.path.join(run_dir, "hotcb.commands.jsonl") - applied_path = os.path.join(run_dir, "hotcb.applied.jsonl") + mc = MetricsCollector(os.path.join(run_dir, "hotcb.metrics.jsonl")) + kernel = HotKernel(run_dir=run_dir, debounce_steps=1, metrics_collector=mc) + kernel.register_actuator("opt", OptimizerActuator()) model = nn.Linear(10, 2) optimizer = torch.optim.Adam(model.parameters(), lr=1e-3) loss_fn = nn.CrossEntropyLoss() - cmd_offset = 0 for step in range(1, max_steps + 1): if stop_event.is_set(): break - # --- Read commands from dashboard --- - cmds, cmd_offset = _read_commands(commands_path, cmd_offset) - for cmd in cmds: - if cmd.get("module") == "opt" and cmd.get("op") == "set_params": - params = cmd.get("params", {}) - if "lr" in params: - for pg in optimizer.param_groups: - pg["lr"] = float(params["lr"]) - _write_jsonl(applied_path, { - "step": step, "module": "opt", "op": "set_params", - "params": params, "status": "applied", - }) - # --- Training step --- x = torch.randn(32, 10) y = torch.randint(0, 2, (32,)) @@ -121,76 +109,69 @@ def pytorch_training(run_dir, max_steps, step_delay, stop_event): loss.backward() optimizer.step() - # --- Write metrics --- - _write_jsonl(metrics_path, { + # --- kernel handles everything: command polling, metric writing, ledger --- + env = { + "framework": "torch", + "phase": "train", "step": step, + "optimizer": optimizer, "metrics": { "train_loss": round(loss.item(), 6), "lr": optimizer.param_groups[0]["lr"], }, - }) + "log": print, + } + kernel.apply(env, events=["train_step_end"]) if step_delay > 0: time.sleep(step_delay) - -def _write_jsonl(path, record): - with open(path, "a") as f: - f.write(json.dumps(record) + "\n") - -def _read_commands(path, offset): - if not os.path.exists(path): - return [], offset - cmds = [] - with open(path) as f: - for i, line in enumerate(f): - if i < offset: - continue - line = line.strip() - if line: - try: cmds.append(json.loads(line)) - except: pass - return cmds, offset + len(cmds) + kernel.close(env) ``` ### PyTorch Lightning ```python -import json, os +import os import pytorch_lightning as pl -from hotcb.modules.cb import HotCallbackController +from hotcb.kernel import HotKernel +from hotcb.metrics import MetricsCollector +from hotcb.adapters.lightning import HotCBLightning +from hotcb.actuators import OptimizerActuator def lightning_training(run_dir, max_steps, step_delay, stop_event): - # hotcb provides a Lightning callback adapter - from hotcb.modules.cb.adapters import LightningAdapter + mc = MetricsCollector(os.path.join(run_dir, "hotcb.metrics.jsonl")) + kernel = HotKernel(run_dir=run_dir, debounce_steps=1, metrics_collector=mc) + kernel.register_actuator("opt", OptimizerActuator()) model = MyLightningModule() - adapter = LightningAdapter(run_dir=run_dir) - # The adapter handles JSONL I/O automatically: - # - Writes metrics on_train_batch_end / on_validation_end - # - Reads commands and applies them to optimizer/loss + # The adapter maps Lightning hooks to kernel.apply() automatically: + # - Builds env with optimizer, metrics, mutable_state from trainer/module + # - Fires train_batch_end, val_batch_end, val_epoch_end events trainer = pl.Trainer( max_steps=max_steps, - callbacks=[adapter], + callbacks=[HotCBLightning(kernel)], ) trainer.fit(model) - # Note: stop_event is checked internally by the adapter each step ``` ### HuggingFace Transformers ```python -import json, os +import os from transformers import Trainer, TrainingArguments +from hotcb.kernel import HotKernel +from hotcb.metrics import MetricsCollector +from hotcb.adapters.hf import HotCBHFCallback +from hotcb.actuators import OptimizerActuator def hf_training(run_dir, max_steps, step_delay, stop_event): - from hotcb.modules.cb.adapters import HuggingFaceAdapter + mc = MetricsCollector(os.path.join(run_dir, "hotcb.metrics.jsonl")) + kernel = HotKernel(run_dir=run_dir, debounce_steps=1, metrics_collector=mc) + kernel.register_actuator("opt", OptimizerActuator()) model = AutoModelForSequenceClassification.from_pretrained("bert-base-uncased") - tokenizer = AutoTokenizer.from_pretrained("bert-base-uncased") - - adapter = HuggingFaceAdapter(run_dir=run_dir, stop_event=stop_event) training_args = TrainingArguments( output_dir=os.path.join(run_dir, "checkpoints"), @@ -202,7 +183,7 @@ def hf_training(run_dir, max_steps, step_delay, stop_event): model=model, args=training_args, train_dataset=my_dataset, - callbacks=[adapter], # The adapter is a TrainerCallback + callbacks=[HotCBHFCallback(kernel)], ) trainer.train() ``` @@ -238,4 +219,4 @@ uvicorn.run(app, host="0.0.0.0", port=8421) |-------------|-------------------------------|-------|-------------| | `simple` | Simple (Quadratic) | 500 | Single-task synthetic. Test basic controls. | | `multitask` | Multi-Objective (Golden Demo) | 800 | Two-task with recipe-driven lambda shifts. | -| `finetune` | Finetune (Pretrained Backbone)| 600 | Transfer learning with freeze/unfreeze control. | +| `finetune` | Finetune (Pretrained Backbone)| 600 | Transfer learning with recipe-driven LR scheduling. | diff --git a/docs/examples/bare_torch_example.py b/docs/examples/bare_torch_example.py index f16509b..ec2ad7e 100644 --- a/docs/examples/bare_torch_example.py +++ b/docs/examples/bare_torch_example.py @@ -12,7 +12,7 @@ def main(): model = torch.nn.Linear(16, 1) optimizer = torch.optim.Adam(model.parameters(), lr=1e-3) - loss_state = {"weights": {"mse": 1.0}, "terms": {}, "ramps": {}} + mutable_state = {"weights": {"mse": 1.0}, "terms": {}, "ramps": {}} kernel = HotKernel(run_dir="runs/exp-001", debounce_steps=1) @@ -25,7 +25,7 @@ def main(): for step, (x, y) in enumerate(loader): optimizer.zero_grad() pred = model(x) - w = loss_state["weights"].get("mse", 1.0) + w = mutable_state["weights"].get("mse", 1.0) loss = w * torch.nn.functional.mse_loss(pred, y) loss.backward() optimizer.step() @@ -38,7 +38,7 @@ def main(): "model": model, "optimizer": optimizer, "loss": loss, - "loss_state": loss_state, + "mutable_state": mutable_state, "log": print, } kernel.apply(env, events=["train_step_end"]) diff --git a/docs/examples/hf_example.py b/docs/examples/hf_example.py index cdefedd..45be4d7 100644 --- a/docs/examples/hf_example.py +++ b/docs/examples/hf_example.py @@ -39,7 +39,7 @@ def main(): hotcb_cb = HotCBHFCallback( kernel, resolve_optimizer=lambda: trainer_ref.get("trainer") and trainer_ref["trainer"].optimizer, - loss_state={"weights": {"ce": 1.0}, "terms": {}, "ramps": {}}, + mutable_state={"weights": {"ce": 1.0}, "terms": {}, "ramps": {}}, ) args = TrainingArguments( diff --git a/docs/examples/lightning_example.py b/docs/examples/lightning_example.py index d870601..3c6f6d8 100644 --- a/docs/examples/lightning_example.py +++ b/docs/examples/lightning_example.py @@ -15,12 +15,12 @@ class TinyModel(pl.LightningModule): def __init__(self): super().__init__() self.net = torch.nn.Linear(16, 1) - self.loss_state = {"weights": {"mse": 1.0}, "terms": {}, "ramps": {}} + self.mutable_state = {"weights": {"mse": 1.0}, "terms": {}, "ramps": {}} def training_step(self, batch, batch_idx): x, y = batch pred = self.net(x) - w = self.loss_state["weights"].get("mse", 1.0) + w = self.mutable_state["weights"].get("mse", 1.0) return w * torch.nn.functional.mse_loss(pred, y) def configure_optimizers(self): @@ -30,7 +30,7 @@ def configure_optimizers(self): def main(): model = TinyModel() kernel = HotKernel(run_dir="runs/exp-001", debounce_steps=1) - hotcb_cb = HotCBLightning(kernel, loss_state=model.loss_state) + hotcb_cb = HotCBLightning(kernel, mutable_state=model.mutable_state) dataset = torch.utils.data.TensorDataset( torch.randn(200, 16), torch.randn(200, 1) diff --git a/docs/modules/hotloss.md b/docs/modules/hotloss.md index bbc7891..e192753 100644 --- a/docs/modules/hotloss.md +++ b/docs/modules/hotloss.md @@ -6,12 +6,12 @@ ### Weights (`_w` suffix) -Parameters ending in `_w` map to `loss_state["weights"]` with the suffix stripped: +Parameters ending in `_w` map to `mutable_state["weights"]` with the suffix stripped: ```bash hotcb loss set_params distill_w=0.2 depth_w=1.5 -# -> loss_state["weights"]["distill"] = 0.2 -# -> loss_state["weights"]["depth"] = 1.5 +# -> mutable_state["weights"]["distill"] = 0.2 +# -> mutable_state["weights"]["depth"] = 1.5 ``` ### Term Toggles (`terms.` prefix) @@ -20,8 +20,8 @@ Parameters starting with `terms.` toggle individual loss terms: ```bash hotcb loss set_params terms.aux_depth=false terms.aux_heatmap=true -# -> loss_state["terms"]["aux_depth"] = False -# -> loss_state["terms"]["aux_heatmap"] = True +# -> mutable_state["terms"]["aux_depth"] = False +# -> mutable_state["terms"]["aux_heatmap"] = True ``` A `terms` dict value also works: `terms='{"aux_depth":false}'`. @@ -32,17 +32,17 @@ Parameters starting with `ramps.` configure ramp schedules: ```bash hotcb loss set_params ramps.depth='{"type":"linear","warmup_frac":0.2,"end":2.0}' -# -> loss_state["ramps"]["depth"] = {"type": "linear", "warmup_frac": 0.2, "end": 2.0} +# -> mutable_state["ramps"]["depth"] = {"type": "linear", "warmup_frac": 0.2, "end": 2.0} ``` ### Fallback -Any parameter that does not match the above patterns is placed directly in `loss_state["weights"]`. +Any parameter that does not match the above patterns is placed directly in `mutable_state["weights"]`. -## Expected `loss_state` Shape +## Expected `mutable_state` Shape ```python -loss_state = { +mutable_state = { "weights": {"distill": 0.2, "depth": 1.5}, "terms": {"aux_depth": True, "aux_heatmap": False}, "ramps": {"depth": {"type": "linear", "warmup_frac": 0.2, "end": 2.0}}, @@ -55,12 +55,12 @@ Your loss function reads from this dict. hotcb mutates it; you consume it. The loss state must be accessible via `env`: -1. `env["loss_state"]` -- direct mutable dict reference. -2. `env["resolve_loss_state"]` -- callable that returns the dict. +1. `env["mutable_state"]` -- direct mutable dict reference. +2. `env["resolve_mutable_state"]` -- callable that returns the dict. -If neither is available, the op fails with `missing_loss_state`. +If neither is available, the op fails with `missing_mutable_state`. -Framework adapters accept a `loss_state` dict at construction time and inject it into every `env`. +Framework adapters accept a `mutable_state` dict at construction time and inject it into every `env`. ## Error Handling diff --git a/docs/modules/hottune.md b/docs/modules/hottune.md index 58c1241..c21df79 100644 --- a/docs/modules/hottune.md +++ b/docs/modules/hottune.md @@ -39,7 +39,7 @@ hottune consists of five layers: ```python from hotcb import HotKernel from hotcb.adapters.lightning import HotCBLightning -from hotcb.actuators import OptimizerActuator, LossStateActuator +from hotcb.actuators import OptimizerActuator, MutableStateActuator kernel = HotKernel( run_dir="runs/exp1", @@ -48,9 +48,9 @@ kernel = HotKernel( # Register actuators so tune knows what it can mutate kernel.register_actuator("opt", OptimizerActuator()) -kernel.register_actuator("loss", LossStateActuator()) +kernel.register_actuator("loss", MutableStateActuator()) -trainer = pl.Trainer(callbacks=[HotCBLightning(kernel, loss_state=model.loss_state)]) +trainer = pl.Trainer(callbacks=[HotCBLightning(kernel, mutable_state=model.mutable_state)]) trainer.fit(model, datamodule=dm) ``` @@ -116,7 +116,7 @@ Actuators are the bridge between the tuner and live training state. | `wd_set` | Absolute weight decay set | | `betas_set` | Set Adam betas | -**LossStateActuator** -- mutates loss weights: +**MutableStateActuator** -- mutates loss weights: | Op | Description | |---|---| diff --git a/examples/callbacks/feat_viz.py b/examples/callbacks/feat_viz.py deleted file mode 100644 index 8c300de..0000000 --- a/examples/callbacks/feat_viz.py +++ /dev/null @@ -1,38 +0,0 @@ -from __future__ import annotations -from typing import Any, Dict -import os -import json - - -class FeatureVizCallback: - def __init__(self, id: str, every: int = 200, out_dir: str = "debug/features") -> None: - self.id = id - self.every = int(every) - self.out_dir = out_dir - - def set_params(self, **kwargs: Any) -> None: - if "every" in kwargs: - self.every = int(kwargs["every"]) - if "out_dir" in kwargs: - self.out_dir = str(kwargs["out_dir"]) - - def handle(self, event: str, env: Dict[str, Any]) -> None: - step = int(env.get("step", 0)) - if self.every <= 0 or (step % self.every) != 0: - return - - # Example artifact: dump lightweight metadata - os.makedirs(self.out_dir, exist_ok=True) - payload = { - "id": self.id, - "event": event, - "step": step, - "phase": env.get("phase"), - "framework": env.get("framework"), - } - p = os.path.join(self.out_dir, f"feat_viz_step_{step:07d}.json") - with open(p, "w", encoding="utf-8") as f: - json.dump(payload, f, indent=2) - - log = env.get("log", print) - log(f"[feat_viz] wrote {p}") \ No newline at end of file diff --git a/examples/callbacks/my_diag.py b/examples/callbacks/my_diag.py deleted file mode 100644 index c6549fb..0000000 --- a/examples/callbacks/my_diag.py +++ /dev/null @@ -1,10 +0,0 @@ -class MyDiag: - def __init__(self, id: str, msg: str = "hi"): - self.id = id - self.msg = msg - def set_params(self, **kwargs): - if "msg" in kwargs: self.msg = kwargs["msg"] - def handle(self, event, env): - step = int(env.get("step", 0)) - if step % 30 == 0: - env.get("log", print)(f"[{self.id}] {self.msg} step={step} event={event}") \ No newline at end of file diff --git a/examples/callbacks/print_metrics.py b/examples/callbacks/print_metrics.py deleted file mode 100644 index 550dca8..0000000 --- a/examples/callbacks/print_metrics.py +++ /dev/null @@ -1,23 +0,0 @@ -from __future__ import annotations -from typing import Any, Dict - - -class PrintMetricsCallback: - def __init__(self, id: str, every: int = 50, prefix: str = "[metrics]") -> None: - self.id = id - self.every = int(every) - self.prefix = str(prefix) - - def set_params(self, **kwargs: Any) -> None: - if "every" in kwargs: - self.every = int(kwargs["every"]) - if "prefix" in kwargs: - self.prefix = str(kwargs["prefix"]) - - def handle(self, event: str, env: Dict[str, Any]) -> None: - step = int(env.get("step", 0)) - if self.every <= 0 or (step % self.every) != 0: - return - log = env.get("log", print) - phase = env.get("phase") - log(f"{self.prefix} id={self.id} event={event} step={step} phase={phase}") \ No newline at end of file diff --git a/examples/hf_train.py b/examples/hf_train.py deleted file mode 100644 index aeb04c4..0000000 --- a/examples/hf_train.py +++ /dev/null @@ -1,56 +0,0 @@ -import torch -from torch.utils.data import Dataset -from transformers import Trainer, TrainingArguments -from transformers import AutoModelForSequenceClassification, AutoTokenizer - -from hotcb import HotController -from adapters.hf import HotHFCallback - - -class TinyTextDS(Dataset): - def __init__(self, tok): - self.tok = tok - self.texts = ["hello world"] * 2048 - self.labels = [0] * 2048 - - def __len__(self): - return len(self.texts) - - def __getitem__(self, i): - enc = self.tok(self.texts[i], truncation=True, padding="max_length", max_length=16, return_tensors="pt") - item = {k: v.squeeze(0) for k, v in enc.items()} - item["labels"] = torch.tensor(self.labels[i]) - return item - - -def main(): - tok = AutoTokenizer.from_pretrained("distilbert-base-uncased") - model = AutoModelForSequenceClassification.from_pretrained("distilbert-base-uncased", num_labels=2) - ds = TinyTextDS(tok) - - controller = HotController( - config_path="examples/hotcb.yaml", - debounce_steps=10, - log_path="debug/hotcb.log", - ) - hot = HotHFCallback(controller=controller) - - args = TrainingArguments( - output_dir="debug/hf_out", - per_device_train_batch_size=16, - max_steps=200, - logging_steps=10, - report_to=[], - ) - - trainer = Trainer( - model=model, - args=args, - train_dataset=ds, - callbacks=[hot], - ) - trainer.train() - - -if __name__ == "__main__": - main() \ No newline at end of file diff --git a/examples/hotcb.yaml b/examples/hotcb.yaml deleted file mode 100644 index 51ae892..0000000 --- a/examples/hotcb.yaml +++ /dev/null @@ -1,23 +0,0 @@ -version: 1 -callbacks: - print_metrics: - enabled: true - target: - kind: python_file - path: examples/callbacks/print_metrics.py - symbol: PrintMetricsCallback - init: - every: 20 - prefix: "[metrics]" - params: - every: 20 - - feat_viz: - enabled: false - target: - kind: python_file - path: examples/callbacks/feat_viz.py - symbol: FeatureVizCallback - init: - every: 100 - out_dir: debug/features \ No newline at end of file diff --git a/examples/hotcb_mydiag_example.yaml b/examples/hotcb_mydiag_example.yaml deleted file mode 100644 index b81afc3..0000000 --- a/examples/hotcb_mydiag_example.yaml +++ /dev/null @@ -1,25 +0,0 @@ - # While training is running: - # - #Create a new file, e.g. /tmp/my_diag.py - copy from ./callbacks/my_diag.py - #Edit examples/hotcb.yaml and add below yaml content - #Save. Within a few steps (depending on debounce_steps) it’s loaded and running. - # - # - #Notes / constraints (so it behaves predictably) - # - #This is safe-point only: adapters call apply() at step boundaries; no mid-backward hijinks. - # - #“Remove” is disable (no detach). If you later want memory cleanup, use unload op (already supported). - # - #If a callback crashes, controller can auto-disable it (enabled by default). - # - #No DDP support (as requested). Adding it later = broadcast ops from rank0. - - my_diag: - enabled: true - target: - kind: python_file - path: /tmp/my_diag.py - symbol: MyDiag - init: - msg: "live loaded!" \ No newline at end of file diff --git a/examples/lightning_train.py b/examples/lightning_train.py deleted file mode 100644 index 39bd79b..0000000 --- a/examples/lightning_train.py +++ /dev/null @@ -1,53 +0,0 @@ -import torch -import torch.nn as nn -import lightning.pytorch as pl -from torch.utils.data import DataLoader, TensorDataset - -from hotcb import HotController -from adapters.lightning import HotCallbackController - - -class ToyModel(pl.LightningModule): - def __init__(self): - super().__init__() - self.net = nn.Sequential(nn.Linear(32, 64), nn.ReLU(), nn.Linear(64, 10)) - self.loss = nn.CrossEntropyLoss() - - def training_step(self, batch, batch_idx): - x, y = batch - logits = self.net(x) - loss = self.loss(logits, y) - self.log("train_loss", loss, prog_bar=True) - return loss - - def configure_optimizers(self): - return torch.optim.Adam(self.parameters(), lr=1e-3) - - -def main(): - # dummy data - x = torch.randn(20_000, 32) - y = torch.randint(0, 10, (20_000,)) - dl = DataLoader(TensorDataset(x, y), batch_size=128, shuffle=True, num_workers=0) - - controller = HotController( - config_path="examples/hotcb.yaml", - commands_path=None, # optionally: "examples/hotcb.commands.jsonl" - debounce_steps=5, # poll every 5 steps - poll_interval_sec=0.0, - auto_disable_on_error=True, - log_path="debug/hotcb.log", - ) - - hot = HotCallbackController(controller=controller) - - trainer = pl.Trainer( - max_epochs=3, - callbacks=[hot], - log_every_n_steps=10, - ) - trainer.fit(ToyModel(), train_dataloaders=dl) - - -if __name__ == "__main__": - main() \ No newline at end of file diff --git a/hottune_upgrade_plan.md b/hottune_upgrade_plan.md index 0d8e64b..73d4b25 100644 --- a/hottune_upgrade_plan.md +++ b/hottune_upgrade_plan.md @@ -1,4 +1,4 @@ -Your current architecture already supports the key runtime pieces: the Lightning adapter injects `optimizer`, `scheduler`, and optional `loss_state` into `env`, and the kernel already owns run paths, polling, recipe replay, ledger writing, and module dispatch for `cb`, `opt`, and `loss`. That means `hottune` can fit naturally as another kernel module rather than a separate repo. +Your current architecture already supports the key runtime pieces: the Lightning adapter injects `optimizer`, `scheduler`, and optional `mutable_state` into `env`, and the kernel already owns run paths, polling, recipe replay, ledger writing, and module dispatch for `cb`, `opt`, and `loss`. That means `hottune` can fit naturally as another kernel module rather than a separate repo. # **1\. Objective** @@ -66,7 +66,7 @@ Your Lightning adapter currently: * exposes framework, phase, step, epoch, model, trainer, log -* exposes `optimizer`, `scheduler`, and optional `loss_state` +* exposes `optimizer`, `scheduler`, and optional `mutable_state` * normalizes `loss` from outputs @@ -192,7 +192,7 @@ src/hotcb/ \_\_init\_\_.py base.py optimizer.py - loss\_state.py + mutable\_state.py kernel.py # **6\. Adapter contract** @@ -352,13 +352,13 @@ Patch examples: {"op": "wd\_mult", "value": 1.15} {"op": "betas\_set", "value": \[0.9, 0.98\]} -### **Loss-state actuator** +### **Mutable-state actuator** File: -* `actuators/loss_state.py` +* `actuators/mutable_state.py` -Assumes mutable `loss_state` dict-like structure. +Assumes mutable `mutable_state` dict-like structure. Supports: @@ -1013,7 +1013,7 @@ Lightning: * optimizer actuator wiring works -* loss\_state actuator wiring works +* mutable\_state actuator wiring works * val\_epoch\_end event emitted @@ -1067,7 +1067,7 @@ Keep v1 intentionally tight. * optimizer actuator -* loss-state actuator +* mutable-state actuator * TPE proposal @@ -1105,7 +1105,7 @@ Add: * `on_validation_epoch_end` support to emit `val_epoch_end` -The rest is already close enough because `optimizer`, `scheduler`, and `loss_state` are already exposed. +The rest is already close enough because `optimizer`, `scheduler`, and `mutable_state` are already exposed. ## **24.2 Kernel** diff --git a/pyproject.toml b/pyproject.toml index 4b8f459..1be04a1 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -40,6 +40,9 @@ all = [ "fastapi>=0.100", "uvicorn[standard]>=0.20", "websockets>=11.0", "xgboost>=1.7", "numpy>=1.24", "umap-learn>=0.5", "httpx>=0.25", + "slack_sdk>=3.0", + "matplotlib>=3.5", + "pandas>=1.5", ] docs = [ "mkdocs", @@ -67,6 +70,13 @@ package-dir = {"" = "src"} [tool.setuptools.packages.find] where = ["src"] +[tool.setuptools.package-data] +hotcb = [ + "server/static/**/*", + "server/guidelines/*.yaml", + "server/ai_system_prompt.yaml", +] + [tool.coverage.run] branch = true source = ["src/hotcb"] diff --git a/src/hotcb/actuators/__init__.py b/src/hotcb/actuators/__init__.py index c9e2c0f..aa35be4 100644 --- a/src/hotcb/actuators/__init__.py +++ b/src/hotcb/actuators/__init__.py @@ -1,3 +1,3 @@ from .base import BaseActuator, ValidationResult, ApplyResult # noqa: F401 from .optimizer import OptimizerActuator # noqa: F401 -from .loss_state import LossStateActuator # noqa: F401 +from .mutable_state import MutableStateActuator # noqa: F401 diff --git a/src/hotcb/actuators/loss_state.py b/src/hotcb/actuators/mutable_state.py similarity index 78% rename from src/hotcb/actuators/loss_state.py rename to src/hotcb/actuators/mutable_state.py index 9b0aeda..a29ab28 100644 --- a/src/hotcb/actuators/loss_state.py +++ b/src/hotcb/actuators/mutable_state.py @@ -6,11 +6,11 @@ from .base import ApplyResult, ValidationResult -class LossStateActuator: +class MutableStateActuator: """ - Actuator for live loss-state mutations. + Actuator for live mutable-state mutations. - Supports: set, mult, delta on named scalar keys within loss_state["weights"]. + Supports: set, mult, delta on named scalar keys within mutable_state["weights"]. """ name: str = "loss" @@ -23,11 +23,11 @@ def __init__( self.global_bounds = global_bounds self.key_bounds: Dict[str, tuple[float, float]] = key_bounds or {} - def _resolve_loss_state(self, env: dict) -> Optional[dict]: - ls = env.get("loss_state") - if ls is not None: - return ls - resolver = env.get("resolve_loss_state") + def _resolve_mutable_state(self, env: dict) -> Optional[dict]: + mutable_state = env.get("mutable_state") + if mutable_state is not None: + return mutable_state + resolver = env.get("resolve_mutable_state") if callable(resolver): try: return resolver() @@ -39,10 +39,10 @@ def _get_bounds(self, key: str) -> tuple[float, float]: return self.key_bounds.get(key, self.global_bounds) def snapshot(self, env: dict) -> dict: - ls = self._resolve_loss_state(env) - if ls is None: + mutable_state = self._resolve_mutable_state(env) + if mutable_state is None: return {} - weights = ls.get("weights", {}) + weights = mutable_state.get("weights", {}) return {"weights": copy.deepcopy(weights)} def validate(self, patch: dict, env: dict) -> ValidationResult: @@ -66,9 +66,9 @@ def validate(self, patch: dict, env: dict) -> ValidationResult: if errors: return ValidationResult(valid=False, errors=errors) - ls = self._resolve_loss_state(env) - if ls is not None: - weights = ls.get("weights", {}) + mutable_state = self._resolve_mutable_state(env) + if mutable_state is not None: + weights = mutable_state.get("weights", {}) bounds = self._get_bounds(key) if op == "set": if not (bounds[0] <= value <= bounds[1]): @@ -89,14 +89,14 @@ def validate(self, patch: dict, env: dict) -> ValidationResult: return ValidationResult(valid=len(errors) == 0, errors=errors) def apply(self, patch: dict, env: dict) -> ApplyResult: - ls = self._resolve_loss_state(env) - if ls is None: - return ApplyResult(success=False, error="missing_loss_state") + mutable_state = self._resolve_mutable_state(env) + if mutable_state is None: + return ApplyResult(success=False, error="missing_mutable_state") op = patch.get("op") key = patch.get("key") value = patch.get("value") - weights = ls.setdefault("weights", {}) + weights = mutable_state.setdefault("weights", {}) bounds = self._get_bounds(key) try: @@ -117,13 +117,13 @@ def apply(self, patch: dict, env: dict) -> ApplyResult: return ApplyResult(success=False, error=str(e)) def restore(self, snapshot: dict, env: dict) -> ApplyResult: - ls = self._resolve_loss_state(env) - if ls is None: - return ApplyResult(success=False, error="missing_loss_state") + mutable_state = self._resolve_mutable_state(env) + if mutable_state is None: + return ApplyResult(success=False, error="missing_mutable_state") saved_weights = snapshot.get("weights", {}) try: - ls["weights"] = copy.deepcopy(saved_weights) + mutable_state["weights"] = copy.deepcopy(saved_weights) return ApplyResult(success=True) except Exception as e: return ApplyResult(success=False, error=str(e)) diff --git a/src/hotcb/adapters/hf.py b/src/hotcb/adapters/hf.py index 5bfdfb5..715fbbf 100644 --- a/src/hotcb/adapters/hf.py +++ b/src/hotcb/adapters/hf.py @@ -5,7 +5,7 @@ from transformers import TrainerCallback, TrainerControl, TrainerState, TrainingArguments from hotcb.kernel import HotKernel -from hotcb.capabilities import TrainingCapabilities, validate_loss_state +from hotcb.capabilities import TrainingCapabilities, validate_mutable_state class HotCBHFCallback(TrainerCallback): @@ -13,7 +13,7 @@ class HotCBHFCallback(TrainerCallback): HuggingFace Trainer adapter for hotcb. Connects HF Trainer hooks to HotKernel, exposing optimizer and - loss_state in the env dict for hotopt/hotloss modules. + mutable_state in the env dict for hotopt/hotloss modules. Multi-optimizer support ----------------------- @@ -21,10 +21,10 @@ class HotCBHFCallback(TrainerCallback): exposed via ``env["optimizers"]``. Falls back to ``resolve_optimizer`` (single) for backward compat. - Loss state auto-detection - ------------------------- - If ``loss_state`` is not explicitly provided, the adapter looks for - a ``loss_state`` attribute on the model passed to ``on_step_end``. + Mutable state auto-detection + ---------------------------- + If ``mutable_state`` is not explicitly provided, the adapter looks for + a ``mutable_state`` attribute on the model passed to ``on_step_end``. """ def __init__( @@ -34,14 +34,14 @@ def __init__( eval_events: Optional[List[str]] = None, resolve_optimizer: Optional[Callable] = None, resolve_optimizers: Optional[Callable] = None, - loss_state: Optional[Dict[str, Any]] = None, + mutable_state: Optional[Dict[str, Any]] = None, ) -> None: self.kernel = kernel self.train_events = train_events or ["train_step_end"] self.eval_events = eval_events or ["eval_end"] self._resolve_optimizer = resolve_optimizer self._resolve_optimizers = resolve_optimizers - self._loss_state = loss_state + self._mutable_state = mutable_state self._capabilities: Optional[TrainingCapabilities] = None def on_train_begin(self, args: TrainingArguments, state: TrainerState, control: TrainerControl, **kwargs: Any): @@ -86,10 +86,10 @@ def _detect_capabilities( clip_val = getattr(args, "max_grad_norm", None) clip_wired = clip_val is not None and clip_val > 0 - # Loss state + # Mutable state ls_detected = False ls_keys: list[str] = [] - ls = self._resolve_loss_state_from_model(kwargs.get("model")) + ls = self._resolve_mutable_state_from_model(kwargs.get("model")) if ls is not None: ls_detected = True ls_keys = list(ls.get("weights", {}).keys()) @@ -100,8 +100,8 @@ def _detect_capabilities( optimizer_names=tuple(opt_names), num_param_groups=tuple(group_counts), grad_accumulation_steps=accum, - loss_state_detected=ls_detected, - loss_state_keys=tuple(ls_keys), + mutable_state_detected=ls_detected, + mutable_state_keys=tuple(ls_keys), grad_clip_value=float(clip_val) if clip_val else None, grad_clip_wired=clip_wired, ) @@ -175,16 +175,16 @@ def _metric(name: str, default: Any = None) -> Any: except Exception: pass - # -- loss_state (explicit > auto-detected from model) -- - if self._loss_state is not None: - valid, _ = validate_loss_state(self._loss_state) + # -- mutable_state (explicit > auto-detected from model) -- + if self._mutable_state is not None: + valid, _ = validate_mutable_state(self._mutable_state) if valid: - env["loss_state"] = self._loss_state + env["mutable_state"] = self._mutable_state else: model = extra.get("model") - ls = self._resolve_loss_state_from_model(model) + ls = self._resolve_mutable_state_from_model(model) if ls is not None: - env["loss_state"] = ls + env["mutable_state"] = ls # -- metrics dict for discovery -- if eval_metrics: @@ -228,12 +228,12 @@ def _resolve_all_optimizers(self) -> list: pass return [] - def _resolve_loss_state_from_model(self, model: Any) -> Optional[Dict[str, Any]]: - """Try to find loss_state on the model.""" + def _resolve_mutable_state_from_model(self, model: Any) -> Optional[Dict[str, Any]]: + """Try to find mutable_state on the model.""" if model is None: return None - if hasattr(model, "loss_state"): - valid, _ = validate_loss_state(model.loss_state) + if hasattr(model, "mutable_state"): + valid, _ = validate_mutable_state(model.mutable_state) if valid: - return model.loss_state + return model.mutable_state return None diff --git a/src/hotcb/adapters/lightning.py b/src/hotcb/adapters/lightning.py index a4347dc..f72945c 100644 --- a/src/hotcb/adapters/lightning.py +++ b/src/hotcb/adapters/lightning.py @@ -5,7 +5,7 @@ import pytorch_lightning as pl from hotcb.kernel import HotKernel -from hotcb.capabilities import TrainingCapabilities, validate_loss_state +from hotcb.capabilities import TrainingCapabilities, validate_mutable_state class HotCBLightning(pl.Callback): @@ -13,7 +13,7 @@ class HotCBLightning(pl.Callback): PyTorch Lightning adapter for hotcb. Connects Lightning hooks to HotKernel, exposing optimizer, scheduler, - and loss_state in the env dict for hotopt/hotloss modules. + and mutable_state in the env dict for hotopt/hotloss modules. Multi-optimizer support ----------------------- @@ -35,13 +35,13 @@ def __init__( kernel: HotKernel, train_events: Optional[List[str]] = None, val_events: Optional[List[str]] = None, - loss_state: Optional[Dict[str, Any]] = None, + mutable_state: Optional[Dict[str, Any]] = None, ) -> None: super().__init__() self.kernel = kernel self.train_events = train_events or ["train_batch_end"] self.val_events = val_events or ["val_batch_end"] - self._loss_state = loss_state + self._mutable_state = mutable_state self._capabilities: Optional[TrainingCapabilities] = None # -- lifecycle hooks --------------------------------------------------- @@ -130,10 +130,10 @@ def _detect_capabilities( if not auto_opt and accum == 1: accum = getattr(pl_module, "_grad_accum", 1) or 1 - # Loss state + # Mutable state ls_detected = False ls_keys: list[str] = [] - ls = self._resolve_loss_state(pl_module) + ls = self._resolve_mutable_state(pl_module) if ls is not None: ls_detected = True weights = ls.get("weights", {}) @@ -158,8 +158,8 @@ def _detect_capabilities( scheduler_types=tuple(sched_types), grad_accumulation_steps=accum, automatic_optimization=auto_opt, - loss_state_detected=ls_detected, - loss_state_keys=tuple(ls_keys), + mutable_state_detected=ls_detected, + mutable_state_keys=tuple(ls_keys), grad_clip_value=clip_val, grad_clip_wired=clip_wired, ) @@ -267,10 +267,10 @@ def _metric(name: str, default: Any = None) -> Any: except Exception: pass - # -- loss_state (explicit > auto-detected from pl_module) -- - ls = self._resolve_loss_state(pl_module) + # -- mutable_state (explicit > auto-detected from pl_module) -- + ls = self._resolve_mutable_state(pl_module) if ls is not None: - env["loss_state"] = ls + env["mutable_state"] = ls # -- grad accumulation detection -- batch_idx = extra.get("batch_idx") @@ -330,17 +330,24 @@ def _metric(name: str, default: Any = None) -> Any: # -- helpers ----------------------------------------------------------- - def _resolve_loss_state(self, pl_module: pl.LightningModule) -> Optional[Dict[str, Any]]: - """Resolve loss_state: explicit > pl_module attribute.""" - if self._loss_state is not None: - valid, normalized = validate_loss_state(self._loss_state) + def _resolve_mutable_state(self, pl_module: pl.LightningModule) -> Optional[Dict[str, Any]]: + """Resolve mutable_state: explicit > pl_module attribute.""" + if self._mutable_state is not None: + valid, normalized = validate_mutable_state(self._mutable_state) if valid: - return normalized if normalized is not self._loss_state else self._loss_state + return normalized if normalized is not self._mutable_state else self._mutable_state + if hasattr(pl_module, "mutable_state"): + obj = pl_module.mutable_state + valid, _ = validate_mutable_state(obj) + if valid: + return obj # return original ref so mutations are visible + + # Fallback: check loss_state (legacy name used by some integrations) if hasattr(pl_module, "loss_state"): obj = pl_module.loss_state - valid, _ = validate_loss_state(obj) + valid, _ = validate_mutable_state(obj) if valid: - return obj # return original ref so mutations are visible + return obj return None diff --git a/src/hotcb/capabilities.py b/src/hotcb/capabilities.py index 81097bf..b5c3d4f 100644 --- a/src/hotcb/capabilities.py +++ b/src/hotcb/capabilities.py @@ -25,8 +25,8 @@ class TrainingCapabilities: scheduler_types: Tuple[str, ...] = () grad_accumulation_steps: int = 1 # 1 = no accumulation automatic_optimization: bool = True - loss_state_detected: bool = False - loss_state_keys: Tuple[str, ...] = () + mutable_state_detected: bool = False + mutable_state_keys: Tuple[str, ...] = () grad_clip_value: Optional[float] = None # None = not configured grad_clip_wired: bool = False # True only if hotcb can actually modify it metric_names: Tuple[str, ...] = () @@ -35,7 +35,7 @@ def to_dict(self) -> Dict[str, Any]: d = asdict(self) # Convert tuples to lists for JSON for k in ("optimizer_names", "num_param_groups", "scheduler_types", - "loss_state_keys", "metric_names"): + "mutable_state_keys", "metric_names"): if isinstance(d[k], tuple): d[k] = list(d[k]) return d @@ -57,7 +57,7 @@ def load(cls, run_dir: str) -> Optional["TrainingCapabilities"]: d = json.load(f) # Convert lists back to tuples for k in ("optimizer_names", "num_param_groups", "scheduler_types", - "loss_state_keys", "metric_names"): + "mutable_state_keys", "metric_names"): if k in d and isinstance(d[k], list): d[k] = tuple(d[k]) return cls(**d) @@ -65,8 +65,8 @@ def load(cls, run_dir: str) -> Optional["TrainingCapabilities"]: return None -def validate_loss_state(obj: Any) -> Tuple[bool, dict]: - """Check if obj looks like a valid loss_state dict. +def validate_mutable_state(obj: Any) -> Tuple[bool, dict]: + """Check if obj looks like a valid mutable_state dict. Returns (valid, normalized_dict). Accepts both the standard ``{"weights": {...}, "terms": {...}}`` layout and a flat diff --git a/src/hotcb/cli.py b/src/hotcb/cli.py index f523023..bbc4114 100644 --- a/src/hotcb/cli.py +++ b/src/hotcb/cli.py @@ -430,15 +430,6 @@ def cmd_launch(args: argparse.Namespace) -> None: train_fn = getattr(args, "train_fn", None) config = getattr(args, "config", "multitask") - w = sys.stderr.write - w("\n") - w(" hotcb launch\n") - w(f" autopilot: {args.autopilot}\n") - if args.key_metric: - w(f" key metric: {args.key_metric}\n") - w(f" dashboard: http://{args.host}:{args.port}\n") - w("\n") - handle = launch( train_fn=train_fn, config=config, @@ -746,13 +737,13 @@ def build_parser() -> argparse.ArgumentParser: plaunch = sub.add_parser("launch", help="Start training + dashboard + autopilot in one command") plaunch.add_argument("--config", default="multitask", help="Built-in config: simple, multitask, finetune") - plaunch.add_argument("--config-file", default=None, help="Path to hotcb.launch.json (values used as defaults, CLI flags override)") + plaunch.add_argument("--config-file", default='hotcb.launch.json', help="Path to hotcb.launch.json (values used as defaults, CLI flags override)") plaunch.add_argument("--train-fn", default=None, help="Custom training function (module.path:fn_name)") plaunch.add_argument("--host", default="0.0.0.0", help="Bind host") plaunch.add_argument("--port", type=int, default=8421, help="Bind port") - plaunch.add_argument("--max-steps", type=int, default=800, help="Number of training steps") + plaunch.add_argument("--max-steps", type=int, default=None, help="Number of training steps (default: from config file, or 1000)") plaunch.add_argument("--max-time", type=float, default=None, help="Wall-clock time limit in seconds (stops training when reached)") - plaunch.add_argument("--step-delay", type=float, default=0.12, help="Seconds between steps") + plaunch.add_argument("--step-delay", type=float, default=None, help="Seconds between steps (default: from config file, or 0.1)") plaunch.add_argument("--autopilot", choices=["off", "suggest", "auto", "ai_suggest", "ai_auto"], default="off", help="Autopilot mode") plaunch.add_argument("--key-metric", default="val_loss", help="Primary optimization metric") diff --git a/src/hotcb/demo.py b/src/hotcb/demo.py index cfc1907..185b3d8 100644 --- a/src/hotcb/demo.py +++ b/src/hotcb/demo.py @@ -1,8 +1,9 @@ """ hotcb demo — launch a synthetic training with a live dashboard. -Runs a small neural network training loop in a background thread, -writing metrics to JSONL, while serving the dashboard on localhost. +Runs a synthetic training loop in a background thread using HotKernel +for control-plane integration, writing metrics via MetricsCollector, +while serving the dashboard on localhost. Open ``http://localhost:8421`` to interact with knobs, see live charts, forecasts, and tinker with the control plane. """ @@ -18,28 +19,15 @@ from typing import Optional -def _write_jsonl(path: str, record: dict) -> None: - with open(path, "a", encoding="utf-8") as f: - f.write(json.dumps(record) + "\n") +class _OptProxy: + """Minimal optimizer-like object for synthetic demos. + Provides ``param_groups`` so HotOptController can mutate lr/wd + exactly as it would with a real ``torch.optim.Optimizer``. + """ -def _read_commands(path: str, offset: int) -> tuple[list[dict], int]: - """Read new commands from offset, return (commands, new_offset).""" - if not os.path.exists(path): - return [], offset - cmds = [] - with open(path, "r", encoding="utf-8") as f: - for i, line in enumerate(f): - if i < offset: - continue - line = line.strip() - if not line: - continue - try: - cmds.append(json.loads(line)) - except json.JSONDecodeError: - pass - return cmds, offset + len(cmds) + def __init__(self, **kwargs): + self.param_groups = [kwargs] def _demo_training( @@ -49,54 +37,39 @@ def _demo_training( step_delay: float = 0.15, _stop_event: Optional[threading.Event] = None, ) -> None: - """Synthetic training loop that writes hotcb.metrics.jsonl. + """Synthetic training loop using HotKernel + MetricsCollector. Simulates a 2-layer network training on a quadratic task. - Responds to lr/wd changes from hotcb.commands.jsonl. + Responds to lr/wd changes via the kernel's opt module — dashboard + commands are picked up automatically by HotKernel each step. """ - metrics_path = os.path.join(run_dir, "hotcb.metrics.jsonl") - commands_path = os.path.join(run_dir, "hotcb.commands.jsonl") - applied_path = os.path.join(run_dir, "hotcb.applied.jsonl") + from hotcb.kernel import HotKernel + from hotcb.metrics import MetricsCollector + from hotcb.actuators import OptimizerActuator + + # --- Wire up kernel + metrics --- + mc = MetricsCollector(os.path.join(run_dir, "hotcb.metrics.jsonl")) + kernel = HotKernel(run_dir=run_dir, debounce_steps=1, metrics_collector=mc) + kernel.register_actuator("opt", OptimizerActuator()) - # Simulated hyperparameters - lr = 1e-3 - wd = 1e-4 + # --- Optimizer proxy (kernel mutates param_groups in-place) --- + opt = _OptProxy(lr=1e-3, weight_decay=1e-4) - # Simulated training state + # --- Simulated training state --- loss = 2.5 + random.uniform(-0.1, 0.1) val_loss = 2.8 + random.uniform(-0.1, 0.1) grad_norm = 5.0 - cmd_offset = 0 for step in range(1, max_steps + 1): if _stop_event is not None and _stop_event.is_set(): break - # Check for commands - cmds, cmd_offset = _read_commands(commands_path, cmd_offset) - for cmd in cmds: - module = cmd.get("module", "") - op = cmd.get("op", "") - params = cmd.get("params", {}) - if module == "opt" and op == "set_params": - if "lr" in params: - lr = float(params["lr"]) - if "weight_decay" in params: - wd = float(params["weight_decay"]) - _write_jsonl(applied_path, { - "step": step, "module": "opt", "op": "set_params", - "params": {"lr": lr, "weight_decay": wd}, - "decision": "applied", "status": "applied", - "source": cmd.get("source", "interactive"), - }) - elif module == "loss" and op == "set_params": - _write_jsonl(applied_path, { - "step": step, "module": "loss", "op": "set_params", - "params": params, - "decision": "applied", "status": "applied", - "source": cmd.get("source", "interactive"), - }) - - # Simulate loss decay with noise + + # Read lr and wd FROM the proxy — kernel's opt module mutates these + # when dashboard commands arrive via hotcb.commands.jsonl + lr = opt.param_groups[0]["lr"] + wd = opt.param_groups[0].get("weight_decay", 1e-4) + + # --- Simulate loss decay with noise --- # lr affects convergence speed; wd adds regularization effect lr_factor = min(lr * 300, 1.0) # higher lr = faster convergence up to a point decay = 0.005 * lr_factor * (1 + 0.3 * math.sin(step * 0.05)) @@ -115,30 +88,44 @@ def _demo_training( accuracy = min(0.99, max(0.1, 1.0 - loss * 0.35 + random.gauss(0, 0.01))) val_accuracy = min(0.99, max(0.1, 1.0 - val_loss * 0.3 + random.gauss(0, 0.015))) - record = { + # --- Build env dict for the kernel --- + env = { + "framework": "synthetic", + "phase": "train", "step": step, + "optimizer": opt, "metrics": { "train_loss": round(loss, 6), "val_loss": round(val_loss, 6), "grad_norm": round(grad_norm, 4), "lr": lr, + "weight_decay": wd, "accuracy": round(accuracy, 4), "val_accuracy": round(val_accuracy, 4), }, + "log": lambda s: None, } - _write_jsonl(metrics_path, record) + + # --- Kernel safe-point: poll commands, apply ops, collect metrics --- + kernel.apply(env, events=["train_step_end"]) + if _stop_event is not None and _stop_event.is_set(): break time.sleep(step_delay) - # Write a final summary (only numeric metrics to avoid parse errors) - _write_jsonl(metrics_path, { + # --- Finalize --- + final_env = { + "framework": "synthetic", + "phase": "train", "step": max_steps, + "optimizer": opt, "metrics": { "train_loss": round(loss, 6), "val_loss": round(val_loss, 6), }, - }) + "log": lambda s: None, + } + kernel.close(final_env) def run_demo( @@ -153,7 +140,7 @@ def run_demo( if run_dir is None: run_dir = tempfile.mkdtemp(prefix="hotcb_demo_") - # Bootstrap run directory + # Bootstrap run directory — truncate any existing files for a clean start os.makedirs(run_dir, exist_ok=True) for fname in [ "hotcb.commands.jsonl", @@ -161,9 +148,7 @@ def run_demo( "hotcb.metrics.jsonl", "hotcb.recipe.jsonl", ]: - path = os.path.join(run_dir, fname) - if not os.path.exists(path): - open(path, "w").close() + open(os.path.join(run_dir, fname), "w").close() # Write freeze state with open(os.path.join(run_dir, "hotcb.freeze.json"), "w") as f: @@ -182,4 +167,4 @@ def run_demo( # Run dashboard server (blocking) — training is started from the UI from .server.app import run_server - run_server(run_dir=run_dir, host=host, port=port, poll_interval=0.3) + run_server(run_dir=run_dir, host=host, port=port, poll_interval=0.3, demo_mode=True) diff --git a/src/hotcb/finetune_demo.py b/src/hotcb/finetune_demo.py index fb8be6c..eda027c 100644 --- a/src/hotcb/finetune_demo.py +++ b/src/hotcb/finetune_demo.py @@ -1,11 +1,11 @@ """ -hotcb finetune demo — Transfer learning with backbone freeze/unfreeze control. +hotcb finetune demo — Transfer learning with recipe-driven LR control. Demonstrates: -- Pretrained backbone finetuning on a small 5-class dataset (1000 samples) -- Live backbone freeze/unfreeze toggle via recipe and interactive commands -- Overfitting dynamics on small datasets -- Feature drift monitoring from pretrained initialization +- Recipe-driven LR changes at scheduled steps +- Interactive optimizer overrides from the dashboard +- Observable metric impact from mutations (loss, accuracy, grad_norm) +- Feature drift monitoring over training progression Usage: python -m hotcb.finetune_demo @@ -22,48 +22,24 @@ import time from typing import Optional +from hotcb.kernel import HotKernel +from hotcb.metrics import MetricsCollector +from hotcb.actuators import OptimizerActuator, MutableStateActuator + + +class _OptProxy: + """Minimal optimizer-like object for synthetic demos.""" + + def __init__(self, **kwargs): + self.param_groups = [kwargs] + def _write_jsonl(path: str, record: dict) -> None: + """Append a single JSON record to a JSONL file (features/recipe only).""" with open(path, "a", encoding="utf-8") as f: f.write(json.dumps(record) + "\n") -def _read_commands(path: str, offset: int) -> tuple[list[dict], int]: - """Read new commands from offset, return (commands, new_offset).""" - if not os.path.exists(path): - return [], offset - cmds = [] - with open(path, "r", encoding="utf-8") as f: - for i, line in enumerate(f): - if i < offset: - continue - line = line.strip() - if not line: - continue - try: - cmds.append(json.loads(line)) - except json.JSONDecodeError: - pass - return cmds, offset + len(cmds) - - -def _read_recipe(path: str) -> list[dict]: - """Read all recipe entries from a JSONL file.""" - entries: list[dict] = [] - if not os.path.exists(path): - return entries - with open(path, "r", encoding="utf-8") as f: - for line in f: - line = line.strip() - if not line: - continue - try: - entries.append(json.loads(line)) - except json.JSONDecodeError: - pass - return entries - - def _finetune_training( run_dir: str, *, @@ -71,258 +47,164 @@ def _finetune_training( step_delay: float = 0.12, _stop_event: Optional[threading.Event] = None, ) -> None: - """Finetuning simulation: pretrained backbone on a small 5-class dataset. + """Transfer learning simulation proving mutation impact via HotKernel. - Simulates transfer learning where a pretrained ImageNet backbone is - finetuned on 1000 samples across 5 classes. The backbone starts frozen - (only classifier head trains), and a recipe unfreezes it at step 200. + Three phases driven by a recipe that reduces LR: + - Phase 1 (steps 1-200): Fast head convergence with default LR (5e-4) + - Phase 2 (steps 200-400): Recipe reduces LR to 2e-4 for fine-tuning + - Phase 3 (steps 400-600): Recipe reduces LR to 5e-5 to mitigate overfitting - Training dynamics: - - Frozen phase (steps 1-200): fast head convergence, low grad norm - - Unfrozen phase (steps 200+): full model trains, loss spike then faster - convergence, higher grad norm - - Overfitting risk after step 400 on the small dataset + Interactive control: the dashboard can adjust LR and weight_decay at any + time; the kernel routes those commands through the opt module which + mutates the optimizer proxy in-place. """ - metrics_path = os.path.join(run_dir, "hotcb.metrics.jsonl") commands_path = os.path.join(run_dir, "hotcb.commands.jsonl") - applied_path = os.path.join(run_dir, "hotcb.applied.jsonl") features_path = os.path.join(run_dir, "hotcb.features.jsonl") recipe_path = os.path.join(run_dir, "hotcb.recipe.jsonl") - # Write the finetune recipe - recipe_entries = [ + # --- Optimizer proxy (kernel mutates param_groups via opt module) --- + opt = _OptProxy(lr=5e-4, weight_decay=5e-4) + + # --- Mutable state for loss weight (kernel mutates via loss module) --- + mutable_state: dict = { + "weights": {"main": 1.0}, + "terms": {}, + "ramps": {}, + } + + # --- Wire HotKernel + MetricsCollector + actuators --- + mc = MetricsCollector(os.path.join(run_dir, "hotcb.metrics.jsonl")) + kernel = HotKernel(run_dir=run_dir, debounce_steps=1, metrics_collector=mc) + kernel.register_actuator("opt", OptimizerActuator()) + kernel.register_actuator("loss", MutableStateActuator()) + + # --- Recipe: scheduled commands written to commands.jsonl at trigger steps --- + recipe_schedule: dict = { + 200: {"module": "opt", "op": "set_params", "params": {"lr": 2e-4}, + "source": "recipe"}, + 400: {"module": "opt", "op": "set_params", "params": {"lr": 5e-5}, + "source": "recipe"}, + } + + # Write recipe display entries so the dashboard shows the schedule + recipe_display = [ { "at": {"step": 200}, - "module": "cb", + "module": "opt", "op": "set_params", - "params": {"backbone_frozen": False}, - "description": "Unfreeze backbone for full finetuning", + "params": {"lr": 2e-4}, + "description": "Reduce LR for fine-tuning phase", }, { "at": {"step": 400}, "module": "opt", "op": "set_params", - "params": {"lr": 1e-4}, - "description": "Reduce LR for fine-grained tuning, mitigate overfitting", + "params": {"lr": 5e-5}, + "description": "Reduce LR further to mitigate overfitting", }, ] with open(recipe_path, "w", encoding="utf-8") as f: - for entry in recipe_entries: + for entry in recipe_display: f.write(json.dumps(entry) + "\n") - # Hyperparameters - lr = 5e-4 - wd = 5e-4 - backbone_frozen = True - - # Training state + # --- Training state --- train_loss = 2.5 + random.uniform(-0.05, 0.05) val_loss = 2.7 + random.uniform(-0.05, 0.05) head_loss = 2.5 + random.uniform(-0.03, 0.03) - grad_norm = 0.5 + random.uniform(-0.05, 0.05) - feature_drift = 0.0 # how much backbone features have shifted - loss_weight = 1.0 # adjustable via loss module - - # Convergence targets - # Frozen phase can only get so far (head-only has limited capacity) - frozen_target_loss = 0.75 - # Unfrozen phase can converge much further - unfrozen_target_loss = 0.12 + grad_norm = 2.0 + random.uniform(-0.1, 0.1) + feature_drift = 0.0 - # Track the step at which backbone was unfrozen (for transition dynamics) - unfreeze_step: Optional[int] = None - # Pre-unfreeze loss snapshot (for spike calculation) - pre_unfreeze_loss: Optional[float] = None - - cmd_offset = 0 - recipe_applied: set[int] = set() + # Track which recipe steps have been injected + recipe_injected: set = set() for step in range(1, max_steps + 1): if _stop_event is not None and _stop_event.is_set(): break - # --- Process recipe entries --- - current_recipe = _read_recipe(recipe_path) - for idx, entry in enumerate(current_recipe): - if idx in recipe_applied: - continue - at_step = entry.get("at", {}).get("step", 0) - if step >= at_step: - module = entry.get("module", "") - op = entry.get("op", "") - params = entry.get("params", {}) - if module == "cb" and op == "set_params": - if "backbone_frozen" in params: - new_frozen = bool(params["backbone_frozen"]) - if backbone_frozen and not new_frozen: - # Transitioning from frozen to unfrozen - unfreeze_step = step - pre_unfreeze_loss = train_loss - elif not backbone_frozen and new_frozen: - # Re-freezing backbone - unfreeze_step = None - backbone_frozen = new_frozen - elif module == "opt" and op == "set_params": - if "lr" in params: - lr = float(params["lr"]) - if "weight_decay" in params: - wd = float(params["weight_decay"]) - elif module == "loss" and op == "set_params": - if "weight" in params: - loss_weight = float(params["weight"]) - _write_jsonl(applied_path, { - "step": step, - "module": module, - "op": op, - "params": params, - "decision": "applied", - "status": "applied", - "source": "recipe", - "description": entry.get("description", ""), - }) - recipe_applied.add(idx) - - # --- Process interactive commands --- - cmds, cmd_offset = _read_commands(commands_path, cmd_offset) - for cmd in cmds: - module = cmd.get("module", "") - op = cmd.get("op", "") - params = cmd.get("params", {}) - if module == "opt" and op == "set_params": - if "lr" in params: - lr = float(params["lr"]) - if "weight_decay" in params: - wd = float(params["weight_decay"]) - _write_jsonl(applied_path, { - "step": step, - "module": "opt", - "op": "set_params", - "params": {"lr": lr, "weight_decay": wd}, - "decision": "applied", - "status": "applied", - "source": "interactive", - }) - elif module == "cb" and op == "set_params": - if "backbone_frozen" in params: - new_frozen = bool(params["backbone_frozen"]) - if backbone_frozen and not new_frozen: - unfreeze_step = step - pre_unfreeze_loss = train_loss - elif not backbone_frozen and new_frozen: - unfreeze_step = None - backbone_frozen = new_frozen - _write_jsonl(applied_path, { - "step": step, - "module": "cb", - "op": "set_params", - "params": {"backbone_frozen": backbone_frozen}, - "decision": "applied", - "status": "applied", - "source": "interactive", - }) - elif module == "loss" and op == "set_params": - if "weight" in params: - loss_weight = float(params["weight"]) - _write_jsonl(applied_path, { - "step": step, - "module": "loss", - "op": "set_params", - "params": params, - "decision": "applied", - "status": "applied", - "source": "interactive", - }) + # --- Inject scheduled recipe commands --- + for trigger_step, cmd in recipe_schedule.items(): + if step == trigger_step and trigger_step not in recipe_injected: + _write_jsonl(commands_path, cmd) + recipe_injected.add(trigger_step) + + # --- Read current optimizer state (kernel may have mutated it) --- + lr = opt.param_groups[0]["lr"] + wd = opt.param_groups[0].get("weight_decay", 5e-4) + loss_weight = mutable_state["weights"].get("main", 1.0) # --- Simulate training dynamics --- - # Effective learning rate with warmup (first 30 steps) + # Effective LR with warmup (first 30 steps) warmup_factor = min(1.0, step / 30.0) effective_lr = lr * warmup_factor - if backbone_frozen: - # === FROZEN BACKBONE: only head trains === - # Fast initial convergence but plateaus early - target = frozen_target_loss - convergence_rate = 0.012 * min(effective_lr * 1000, 1.0) + # Convergence rate scales with LR — demonstrates mutation impact + convergence_rate = 0.015 * min(effective_lr * 2000, 1.5) + if step <= 200: + # Phase 1: Fast head convergence (pretrained features help) + target = 0.70 noise = random.gauss(0, 0.012 * max(train_loss, 0.05)) train_loss = max( target * 0.95, train_loss * (1 - convergence_rate) + noise, ) - - # Head loss tracks train loss closely when frozen + # Head loss tracks train loss closely head_loss = train_loss + random.gauss(0, 0.005) - - # Grad norm stays low (only head parameters) - grad_target = 0.3 + 0.2 * (train_loss / 2.5) - grad_norm = grad_norm * 0.97 + grad_target * 0.03 + random.gauss(0, 0.02) - grad_norm = max(0.08, grad_norm) - - # No feature drift when backbone is frozen - feature_drift = max(0.0, feature_drift * 0.999 + random.gauss(0, 0.001)) - - else: - # === UNFROZEN BACKBONE: full model trains === - target = unfrozen_target_loss - steps_since_unfreeze = ( - step - unfreeze_step if unfreeze_step is not None else step + # Grad norm decreases as head converges + grad_target = 1.2 + 1.0 * (train_loss / 2.5) + grad_norm = grad_norm * 0.97 + grad_target * 0.03 + random.gauss(0, 0.03) + elif step <= 400: + # Phase 2: Fine-tuning with reduced LR + target = 0.25 + noise = random.gauss(0, 0.008 * max(train_loss, 0.03)) + train_loss = max( + target * 0.9, + train_loss * (1 - convergence_rate) + noise, ) - - # Loss spike right after unfreezing (new gradient flow destabilizes) - if steps_since_unfreeze <= 15 and pre_unfreeze_loss is not None: - # Sharp spike then rapid recovery - spike_magnitude = 0.25 * math.exp(-steps_since_unfreeze / 5.0) - spike_noise = random.gauss(0, 0.02) - train_loss = pre_unfreeze_loss + spike_magnitude + spike_noise + # Small grad norm spike when LR changes, then settle + steps_in_phase = step - 200 + if steps_in_phase <= 10: + spike = 0.3 * math.exp(-steps_in_phase / 4.0) + grad_target = 0.8 + spike + 0.5 * (train_loss / 0.7) else: - # Faster convergence than frozen phase - convergence_rate = 0.018 * min(effective_lr * 1000, 1.0) - noise = random.gauss(0, 0.008 * max(train_loss, 0.03)) - train_loss = max( - target * 0.9, - train_loss * (1 - convergence_rate) + noise, - ) - - # Head loss diverges from total as backbone contributes - head_loss = max( - 0.05, - train_loss * 0.6 + random.gauss(0, 0.01), + grad_target = 0.6 + 0.5 * (train_loss / 0.7) + grad_norm = grad_norm * 0.95 + grad_target * 0.05 + random.gauss(0, 0.02) + head_loss = max(0.08, train_loss * 0.65 + random.gauss(0, 0.01)) + else: + # Phase 3: Very low LR, overfitting tendency on small dataset + target = 0.12 + noise = random.gauss(0, 0.005 * max(train_loss, 0.02)) + train_loss = max( + target * 0.85, + train_loss * (1 - convergence_rate) + noise, ) - - # Grad norm jumps up then decays - if steps_since_unfreeze <= 20: - # Initial jump when backbone unfreezes - grad_target = 3.0 + 1.5 * math.exp(-steps_since_unfreeze / 8.0) + # Another small spike at LR change + steps_in_phase = step - 400 + if steps_in_phase <= 10: + spike = 0.2 * math.exp(-steps_in_phase / 4.0) + grad_target = 0.5 + spike + 0.3 * (train_loss / 0.25) else: - grad_target = 1.0 + 2.0 * (train_loss / 1.0) - grad_norm = grad_norm * 0.92 + grad_target * 0.08 + random.gauss(0, 0.05) - grad_norm = max(0.15, grad_norm) - - # Feature drift increases as backbone weights change - drift_rate = 0.003 * min(effective_lr * 2000, 1.0) - feature_drift = min( - 1.0, - feature_drift + drift_rate + random.gauss(0, 0.001), - ) + grad_target = 0.3 + 0.3 * (train_loss / 0.25) + grad_norm = grad_norm * 0.95 + grad_target * 0.05 + random.gauss(0, 0.015) + head_loss = max(0.05, train_loss * 0.55 + random.gauss(0, 0.008)) - # --- Validation metrics --- - # Small dataset = overfitting risk, especially after step 400 + grad_norm = max(0.08, grad_norm) + + # --- Validation loss: overfit gap grows, especially after step 400 --- if step < 400: - overfit_gap = 0.03 + step * 0.0002 * (1 - wd * 500) + overfit_gap = 0.03 + step * 0.0002 * max(0.1, 1 - wd * 500) else: - # Overfitting accelerates on the small dataset - overfit_gap = 0.03 + 400 * 0.0002 * (1 - wd * 500) - overfit_gap += (step - 400) * 0.0008 * (1 - wd * 500) - + overfit_gap = 0.03 + 400 * 0.0002 * max(0.1, 1 - wd * 500) + overfit_gap += (step - 400) * 0.0008 * max(0.1, 1 - wd * 500) overfit_gap = max(0.02, overfit_gap) val_loss = max( - target * 1.1 if not backbone_frozen else frozen_target_loss * 1.05, + target * 1.1, train_loss + overfit_gap + random.gauss(0, 0.015), ) - # Accuracy: derived from loss with logistic mapping + # --- Accuracy from logistic mapping of loss --- accuracy = min( 0.98, max(0.20, 1.0 / (1.0 + math.exp(2.5 * (train_loss - 0.8))) @@ -334,14 +216,23 @@ def _finetune_training( + random.gauss(0, 0.01)), ) - # Apply loss weight scaling + # --- Feature drift: increases as model trains further from init --- + drift_rate = 0.002 * min(effective_lr * 2000, 1.0) + feature_drift = min( + 1.0, + feature_drift + drift_rate + random.gauss(0, 0.001), + ) + + # --- Apply loss weight scaling --- scaled_train_loss = train_loss * loss_weight scaled_val_loss = val_loss * loss_weight - record = { + # --- Build env and call kernel.apply --- + env = { "step": step, "epoch": step // 50, - "wall_time": time.time(), + "optimizer": opt, + "mutable_state": mutable_state, "metrics": { "train_loss": round(scaled_train_loss, 6), "val_loss": round(scaled_val_loss, 6), @@ -349,37 +240,21 @@ def _finetune_training( "val_accuracy": round(val_accuracy, 4), "grad_norm": round(grad_norm, 4), "lr": lr, - "backbone_frozen": 1 if backbone_frozen else 0, + "weight_decay": wd, "head_loss": round(head_loss, 6), "feature_drift": round(feature_drift, 6), }, - "hp": { - "lr": lr, - "weight_decay": wd, - "backbone_frozen": backbone_frozen, - }, } - _write_jsonl(metrics_path, record) + kernel.apply(env, events=["train_step_end"]) # --- Feature capture (every 20 steps) --- if step % 20 == 0: - # Simulate PCA-reduced activations - # Frozen: features stay clustered near pretrained position - # Unfrozen: features spread then re-cluster in new arrangement - if backbone_frozen: - spread = 0.4 + 0.1 * random.random() - center_shift = 0.0 - else: - steps_unfrozen = ( - step - unfreeze_step if unfreeze_step is not None else 0 - ) - # Features initially scatter then re-cluster - spread = max(0.25, 0.8 - steps_unfrozen * 0.003) - center_shift = min(2.0, steps_unfrozen * 0.01) + progress = step / max_steps + spread = max(0.25, 0.6 - progress * 0.4) + center_shift = progress * 1.5 activations = [] for cls in range(5): - # Each class gets a distinct cluster center cx = math.cos(cls * 2 * math.pi / 5) * (1.5 + center_shift) cy = math.sin(cls * 2 * math.pi / 5) * (1.5 + center_shift) cz = 0.5 * math.sin(cls * math.pi / 5 + step * 0.005) @@ -398,16 +273,14 @@ def _finetune_training( break time.sleep(step_delay) - # Final summary - _write_jsonl(metrics_path, { + # --- Finalize --- + final_env = { "step": max_steps, - "metrics": { - "train_loss": round(scaled_train_loss, 6), - "val_loss": round(scaled_val_loss, 6), - "accuracy": round(accuracy, 4), - "val_accuracy": round(val_accuracy, 4), - }, - }) + "epoch": max_steps // 50, + "optimizer": opt, + "mutable_state": mutable_state, + } + kernel.close(final_env) def run_finetune_demo( @@ -418,10 +291,11 @@ def run_finetune_demo( step_delay: float = 0.12, run_dir: Optional[str] = None, ) -> None: - """Launch finetune demo: backbone freeze/unfreeze training + dashboard server.""" + """Launch finetune demo: recipe-driven LR control + dashboard server.""" if run_dir is None: run_dir = tempfile.mkdtemp(prefix="hotcb_finetune_") + # Bootstrap run directory — truncate any existing files for a clean start os.makedirs(run_dir, exist_ok=True) for fname in [ "hotcb.commands.jsonl", @@ -430,9 +304,7 @@ def run_finetune_demo( "hotcb.recipe.jsonl", "hotcb.features.jsonl", ]: - path = os.path.join(run_dir, fname) - if not os.path.exists(path): - open(path, "w").close() + open(os.path.join(run_dir, fname), "w").close() with open(os.path.join(run_dir, "hotcb.freeze.json"), "w") as f: json.dump({"mode": "off"}, f) @@ -440,23 +312,23 @@ def run_finetune_demo( import sys w = sys.stderr.write w("\n") - w(" ╔══════════════════════════════════════════════╗\n") - w(" ║ hotcb Finetune Demo ║\n") - w(" ║ Transfer Learning Control Plane ║\n") - w(" ╚══════════════════════════════════════════════╝\n") + w(" +================================================+\n") + w(" | hotcb Finetune Demo |\n") + w(" | Transfer Learning Control Plane |\n") + w(" +================================================+\n") w(f"\n Run dir: {run_dir}\n") w(f" Dashboard: http://localhost:{port}\n") w(f" Training: {max_steps} steps @ {step_delay}s/step\n\n") - w(" This demo simulates finetuning a pretrained backbone on a\n") - w(" small 5-class dataset (1000 samples).\n\n") + w(" This demo simulates finetuning a pretrained model on a\n") + w(" small 5-class dataset using HotKernel integration.\n\n") w(" Recipe schedule:\n") - w(" Step 200: Unfreeze backbone (frozen -> full finetuning)\n") - w(" Step 400: Reduce LR to 1e-4 (mitigate overfitting)\n\n") + w(" Step 200: Reduce LR to 2e-4 (fine-tuning phase)\n") + w(" Step 400: Reduce LR to 5e-5 (mitigate overfitting)\n\n") w(" Watch for:\n") - w(" * Loss spike at backbone unfreeze (step 200)\n") - w(" * Grad norm jump when backbone gradients start flowing\n") - w(" * Feature drift increasing after unfreeze\n") - w(" * Val loss diverging from train loss after step 400\n\n") + w(" * Fast convergence in phase 1 (default LR)\n") + w(" * Convergence rate change at LR mutations (steps 200, 400)\n") + w(" * Growing val/train gap after step 400 (overfitting)\n") + w(" * Interactive LR/weight_decay overrides from dashboard\n\n") w(" Press Ctrl+C to stop.\n\n") train_thread = threading.Thread( @@ -471,7 +343,7 @@ def run_finetune_demo( train_thread.start() from .server.app import run_server - run_server(run_dir=run_dir, host=host, port=port, poll_interval=0.3) + run_server(run_dir=run_dir, host=host, port=port, poll_interval=0.3, demo_mode=True) if __name__ == "__main__": diff --git a/src/hotcb/freeze.py b/src/hotcb/freeze.py index f30d325..92655fe 100644 --- a/src/hotcb/freeze.py +++ b/src/hotcb/freeze.py @@ -4,8 +4,13 @@ from dataclasses import dataclass from typing import Optional +import logging + from .util import safe_mtime +_log = logging.getLogger("hotcb.freeze") +_VALID_FREEZE_MODES = {"off", "prod", "replay", "replay_adjusted"} + @dataclass class FreezeState: @@ -30,8 +35,13 @@ def load(cls, path: str) -> "FreezeState": # On parse error, default to off but keep mtime to avoid loops. return cls(mode="off", _mtime=safe_mtime(path)) + mode = str(data.get("mode", "off")) + if mode not in _VALID_FREEZE_MODES: + _log.warning("Invalid freeze mode %r, defaulting to 'off'", mode) + mode = "off" + return cls( - mode=str(data.get("mode", "off")), + mode=mode, recipe_path=data.get("recipe_path"), adjust_path=data.get("adjust_path"), policy=str(data.get("policy", "best_effort")), diff --git a/src/hotcb/golden_demo.py b/src/hotcb/golden_demo.py index 62e48e4..346db86 100644 --- a/src/hotcb/golden_demo.py +++ b/src/hotcb/golden_demo.py @@ -6,6 +6,7 @@ - Live loss weight manipulation via recipe - Feature capture data for activation visualization - Realistic training dynamics (warmup, plateau, intervention response) +- Proper HotKernel integration (same path as real training loops) Usage: python -m hotcb.golden_demo @@ -23,45 +24,11 @@ from typing import Optional -def _write_jsonl(path: str, record: dict) -> None: - with open(path, "a", encoding="utf-8") as f: - f.write(json.dumps(record) + "\n") - - -def _read_commands(path: str, offset: int) -> tuple[list[dict], int]: - """Read new commands from offset, return (commands, new_offset).""" - if not os.path.exists(path): - return [], offset - cmds = [] - with open(path, "r", encoding="utf-8") as f: - for i, line in enumerate(f): - if i < offset: - continue - line = line.strip() - if not line: - continue - try: - cmds.append(json.loads(line)) - except json.JSONDecodeError: - pass - return cmds, offset + len(cmds) - - -def _read_recipe(path: str) -> list[dict]: - """Read all recipe entries from a JSONL file.""" - entries: list[dict] = [] - if not os.path.exists(path): - return entries - with open(path, "r", encoding="utf-8") as f: - for line in f: - line = line.strip() - if not line: - continue - try: - entries.append(json.loads(line)) - except json.JSONDecodeError: - pass - return entries +class _OptProxy: + """Minimal optimizer-like object for synthetic demos.""" + + def __init__(self, **kwargs): + self.param_groups = [kwargs] def _golden_training( @@ -78,16 +45,21 @@ def _golden_training( - Task B: Reconstruction (MSE loss -> reconstruction error) Both tasks share a backbone and have controllable loss weights. - A recipe at step 200 shifts focus from Task A to Task B, and at step 500 - rebalances them. + A recipe automatically shifts loss weights at steps 200, 400, 500. + + Uses HotKernel + MetricsCollector + actuators, exactly like a real + training integration. """ - metrics_path = os.path.join(run_dir, "hotcb.metrics.jsonl") + from hotcb.kernel import HotKernel + from hotcb.metrics import MetricsCollector + from hotcb.actuators import OptimizerActuator, MutableStateActuator + + # --- File paths --- commands_path = os.path.join(run_dir, "hotcb.commands.jsonl") - applied_path = os.path.join(run_dir, "hotcb.applied.jsonl") features_path = os.path.join(run_dir, "hotcb.features.jsonl") recipe_path = os.path.join(run_dir, "hotcb.recipe.jsonl") - # Write the golden recipe + # --- Write recipe display entries (for dashboard UI) --- recipe_entries = [ {"at": {"step": 200}, "module": "loss", "op": "set_params", "params": {"weight_a": 0.3, "weight_b": 0.7}, @@ -103,87 +75,58 @@ def _golden_training( for entry in recipe_entries: f.write(json.dumps(entry) + "\n") - # Hyperparameters - lr = 1e-3 - wd = 1e-4 - weight_a = 0.7 # classification weight - weight_b = 0.3 # reconstruction weight - - # Training state - loss_a = 2.3 + random.uniform(-0.05, 0.05) # CE loss - loss_b = 1.5 + random.uniform(-0.05, 0.05) # MSE loss + # --- Scheduled recipe commands (written to commands.jsonl at the right step) --- + recipe_schedule = { + 200: {"module": "loss", "op": "set_params", + "params": {"weight_a": 0.3, "weight_b": 0.7}, "source": "recipe"}, + 400: {"module": "opt", "op": "set_params", + "params": {"lr": 5e-4}, "source": "recipe"}, + 500: {"module": "loss", "op": "set_params", + "params": {"weight_a": 0.5, "weight_b": 0.5}, "source": "recipe"}, + } + + # --- Optimizer proxy --- + opt = _OptProxy(lr=1e-3, weight_decay=1e-4) + + # --- Mutable state for multi-task loss weights --- + mutable_state = { + "weights": {"weight_a": 0.7, "weight_b": 0.3}, + "terms": {}, + "ramps": {}, + } + + # --- Wire HotKernel + MetricsCollector + actuators --- + mc = MetricsCollector(os.path.join(run_dir, "hotcb.metrics.jsonl")) + kernel = HotKernel(run_dir=run_dir, debounce_steps=1, metrics_collector=mc) + kernel.register_actuator("opt", OptimizerActuator()) + kernel.register_actuator("loss", MutableStateActuator()) + + # --- Training state --- + loss_a = 2.3 + random.uniform(-0.05, 0.05) # CE loss + loss_b = 1.5 + random.uniform(-0.05, 0.05) # MSE loss val_loss_a = 2.5 val_loss_b = 1.7 grad_norm = 4.0 - cmd_offset = 0 - recipe_applied: set[int] = set() # indices of already-applied recipe entries # Convergence targets - target_loss_a = 0.15 # Achievable CE loss - target_loss_b = 0.08 # Achievable MSE loss + target_loss_a = 0.15 + target_loss_b = 0.08 for step in range(1, max_steps + 1): - # --- Check stop event (for in-process thread control) --- + # --- Check stop event --- if _stop_event is not None and _stop_event.is_set(): break - # --- Process recipe entries (re-read file to pick up scheduled additions) --- - current_recipe = _read_recipe(recipe_path) - for idx, entry in enumerate(current_recipe): - if idx in recipe_applied: - continue - at_step = entry.get("at", {}).get("step", 0) - if step >= at_step: - module = entry.get("module", "") - op = entry.get("op", "") - params = entry.get("params", {}) - if module == "loss" and op == "set_params": - if "weight_a" in params: - weight_a = float(params["weight_a"]) - if "weight_b" in params: - weight_b = float(params["weight_b"]) - elif module == "opt" and op == "set_params": - if "lr" in params: - lr = float(params["lr"]) - _write_jsonl(applied_path, { - "step": step, "module": module, "op": op, - "params": params, - "decision": "applied", "status": "applied", - "source": "recipe", - "description": entry.get("description", ""), - }) - recipe_applied.add(idx) - - # --- Process interactive commands --- - cmds, cmd_offset = _read_commands(commands_path, cmd_offset) - for cmd in cmds: - module = cmd.get("module", "") - op = cmd.get("op", "") - params = cmd.get("params", {}) - if module == "opt" and op == "set_params": - if "lr" in params: - lr = float(params["lr"]) - if "weight_decay" in params: - wd = float(params["weight_decay"]) - _write_jsonl(applied_path, { - "step": step, "module": "opt", "op": "set_params", - "params": {"lr": lr, "weight_decay": wd}, - "decision": "applied", "status": "applied", - "source": "interactive", - }) - elif module == "loss" and op == "set_params": - if "weight" in params: - weight_a = float(params.get("weight", weight_a)) - if "weight_a" in params: - weight_a = float(params["weight_a"]) - if "weight_b" in params: - weight_b = float(params["weight_b"]) - _write_jsonl(applied_path, { - "step": step, "module": "loss", "op": "set_params", - "params": params, - "decision": "applied", "status": "applied", - "source": "interactive", - }) + # --- Inject scheduled recipe commands --- + if step in recipe_schedule: + with open(commands_path, "a", encoding="utf-8") as f: + f.write(json.dumps(recipe_schedule[step]) + "\n") + + # --- Read current state from kernel-managed objects --- + lr = opt.param_groups[0]["lr"] + wd = opt.param_groups[0]["weight_decay"] + weight_a = mutable_state["weights"]["weight_a"] + weight_b = mutable_state["weights"]["weight_b"] # --- Simulate training dynamics --- # Warmup phase (steps 1-50) @@ -221,10 +164,12 @@ def _golden_training( val_accuracy_a = min(0.98, max(0.1, 1.0 - val_loss_a * 0.35 + random.gauss(0, 0.01))) recon_score = min(0.99, max(0.1, 1.0 - loss_b * 0.5 + random.gauss(0, 0.01))) - record = { + # --- Build env dict --- + env = { "step": step, "epoch": step // 50, - "wall_time": time.time(), + "optimizer": opt, + "mutable_state": mutable_state, "metrics": { "train_loss": round(total_loss, 6), "val_loss": round(weight_a * val_loss_a + weight_b * val_loss_b, 6), @@ -237,6 +182,7 @@ def _golden_training( "recon_score": round(recon_score, 4), "grad_norm": round(grad_norm, 4), "lr": lr, + "weight_decay": wd, "weight_a": weight_a, "weight_b": weight_b, }, @@ -245,7 +191,9 @@ def _golden_training( "weight_decay": wd, }, } - _write_jsonl(metrics_path, record) + + # --- Let kernel process commands + collect metrics --- + kernel.apply(env, events=["train_step_end"]) # --- Feature capture (every 20 steps) --- if step % 20 == 0: @@ -259,25 +207,20 @@ def _golden_training( round(math.cos(step * 0.015) * (1 + random.gauss(0, spread)), 4), round(math.sin(step * 0.01 + 1.5) * (1 + random.gauss(0, spread)), 4), ]) - _write_jsonl(features_path, { - "step": step, - "layer": "backbone.fc2", - "activations": activations, - }) + with open(features_path, "a", encoding="utf-8") as f: + f.write(json.dumps({ + "step": step, + "layer": "backbone.fc2", + "activations": activations, + }) + "\n") # Check stop event before sleeping if _stop_event is not None and _stop_event.is_set(): break time.sleep(step_delay) - # Final summary - _write_jsonl(metrics_path, { - "step": max_steps, - "metrics": { - "train_loss": round(total_loss, 6), - "val_loss": round(weight_a * val_loss_a + weight_b * val_loss_b, 6), - }, - }) + # --- Finalize --- + kernel.close(env) def run_golden_demo( @@ -292,6 +235,7 @@ def run_golden_demo( if run_dir is None: run_dir = tempfile.mkdtemp(prefix="hotcb_golden_") + # Bootstrap run directory — truncate any existing files for a clean start os.makedirs(run_dir, exist_ok=True) for fname in [ "hotcb.commands.jsonl", @@ -300,9 +244,7 @@ def run_golden_demo( "hotcb.recipe.jsonl", "hotcb.features.jsonl", ]: - path = os.path.join(run_dir, fname) - if not os.path.exists(path): - open(path, "w").close() + open(os.path.join(run_dir, fname), "w").close() with open(os.path.join(run_dir, "hotcb.freeze.json"), "w") as f: json.dump({"mode": "off"}, f) @@ -336,7 +278,7 @@ def run_golden_demo( train_thread.start() from .server.app import run_server - run_server(run_dir=run_dir, host=host, port=port, poll_interval=0.3) + run_server(run_dir=run_dir, host=host, port=port, poll_interval=0.3, demo_mode=True) if __name__ == "__main__": diff --git a/src/hotcb/kernel.py b/src/hotcb/kernel.py index 56e4189..cfccd8c 100644 --- a/src/hotcb/kernel.py +++ b/src/hotcb/kernel.py @@ -337,6 +337,7 @@ def _write_ledger( "id": op.id, "source": op.source, "decision": decision, + "params": op.params, "payload": payload, "error": error, "traceback": traceback_str, diff --git a/src/hotcb/launch.py b/src/hotcb/launch.py index 088b7c9..93ebbbc 100644 --- a/src/hotcb/launch.py +++ b/src/hotcb/launch.py @@ -31,6 +31,7 @@ def train_fn(run_dir, max_steps, step_delay, stop_event): import json import logging import os +import sys import tempfile import threading import time @@ -312,6 +313,15 @@ def launch( run_dir = tempfile.mkdtemp(prefix="hotcb_run_") _seed_run_dir(run_dir) + w = sys.stderr.write + w("\n") + w(" hotcb launch\n") + w(f" autopilot: {autopilot}\n") + if key_metric: + w(f" key metric: {key_metric}\n") + w(f" dashboard: http://{host}:{port}\n") + w("\n") + # Write AI state if AI mode if autopilot in ("ai_suggest", "ai_auto"): ai_state = { @@ -423,7 +433,7 @@ def _server_wrapper(): try: from .server.app import create_app import uvicorn - app = create_app(run_dir) + app = create_app(run_dir, demo_mode=True) # Configure autopilot mode after app is created ap_engine = app.state.autopilot_engine diff --git a/src/hotcb/metrics/collector.py b/src/hotcb/metrics/collector.py index de7e23d..ee26779 100644 --- a/src/hotcb/metrics/collector.py +++ b/src/hotcb/metrics/collector.py @@ -194,12 +194,13 @@ def _extract(self, env: Dict[str, Any]) -> Dict[str, float]: def _persist(self, snap: MetricSnapshot) -> None: """Append snapshot to JSONL file.""" - record = { + from ..util import sanitize_floats + record = sanitize_floats({ "step": snap.step, "epoch": snap.epoch, "wall_time": snap.wall_time, "metrics": snap.metrics, - } + }) try: with open(self.path, "a", encoding="utf-8") as f: f.write(json.dumps(record, ensure_ascii=False) + "\n") @@ -208,21 +209,27 @@ def _persist(self, snap: MetricSnapshot) -> None: @staticmethod def _to_float(v: Any) -> Optional[float]: - """Best-effort conversion to float.""" + """Best-effort conversion to float. Returns None for NaN/inf.""" + import math if v is None: return None + result: Optional[float] = None if isinstance(v, (int, float)): - return float(v) - # torch.Tensor - if hasattr(v, "item"): + result = float(v) + elif hasattr(v, "item"): + # torch.Tensor try: - return float(v.item()) + result = float(v.item()) except Exception: pass - try: - return float(v) - except (TypeError, ValueError): + else: + try: + result = float(v) + except (TypeError, ValueError): + return None + if result is not None and (math.isnan(result) or math.isinf(result)): return None + return result @staticmethod def _well_known_names() -> Set[str]: diff --git a/src/hotcb/modules/cb/controller.py b/src/hotcb/modules/cb/controller.py index e6139f5..fac6d1c 100644 --- a/src/hotcb/modules/cb/controller.py +++ b/src/hotcb/modules/cb/controller.py @@ -12,8 +12,6 @@ from .ops import Op from .protocol import CallbackTarget from .util import FileCursor, read_new_jsonl, safe_mtime -from dataclasses import dataclass, field -from .util import FileCursor, read_new_jsonl, safe_mtime @dataclass diff --git a/src/hotcb/modules/loss.py b/src/hotcb/modules/loss.py index b721b21..6740c91 100644 --- a/src/hotcb/modules/loss.py +++ b/src/hotcb/modules/loss.py @@ -27,13 +27,13 @@ def __init__(self, auto_disable_on_error: bool = True) -> None: self._actuator = None def set_actuator(self, actuator) -> None: - """Register a LossStateActuator for pre-apply validation.""" + """Register a MutableStateActuator for pre-apply validation.""" self._actuator = actuator - def _resolve_loss_state(self, env: dict): - if "loss_state" in env: - return env.get("loss_state") - resolver = env.get("resolve_loss_state") + def _resolve_mutable_state(self, env: dict): + if "mutable_state" in env: + return env.get("mutable_state") + resolver = env.get("resolve_mutable_state") if callable(resolver): try: return resolver() @@ -60,9 +60,9 @@ def apply_op(self, op: HotOp, env: dict) -> ModuleResult: return ModuleResult(decision="skipped_noop", notes="handle_disabled") params = op.params or {} handle.last_params.update(params) - loss_state = self._resolve_loss_state(env) - if loss_state is None: - return ModuleResult(decision="failed", error="missing_loss_state") + mutable_state = self._resolve_mutable_state(env) + if mutable_state is None: + return ModuleResult(decision="failed", error="missing_mutable_state") # Pre-validate via actuator if registered if self._actuator is not None: @@ -81,7 +81,7 @@ def apply_op(self, op: HotOp, env: dict) -> ModuleResult: pass # validation is best-effort try: - self._apply_params(loss_state, params) + self._apply_params(mutable_state, params) return ModuleResult(decision="applied", payload=params) except Exception as e: handle.last_error = str(e) @@ -104,10 +104,10 @@ def _actuator_weight_patches(params: dict): elif isinstance(v, (int, float)): yield k, v - def _apply_params(self, loss_state: dict, params: dict) -> None: - weights = loss_state.setdefault("weights", {}) - terms = loss_state.setdefault("terms", {}) - ramps = loss_state.setdefault("ramps", {}) + def _apply_params(self, mutable_state: dict, params: dict) -> None: + weights = mutable_state.setdefault("weights", {}) + terms = mutable_state.setdefault("terms", {}) + ramps = mutable_state.setdefault("ramps", {}) for k, v in params.items(): if k.endswith("_w"): diff --git a/src/hotcb/py.typed b/src/hotcb/py.typed new file mode 100644 index 0000000..e69de29 diff --git a/src/hotcb/recipe.py b/src/hotcb/recipe.py index fea704f..62bd583 100644 --- a/src/hotcb/recipe.py +++ b/src/hotcb/recipe.py @@ -226,7 +226,9 @@ def _load(self, recipe_path: str, adjust_path: Optional[str]) -> None: self._recipe_mtime = safe_mtime(recipe_path) except FileNotFoundError: self._entries = [] - except Exception: + except Exception as exc: + import logging + logging.getLogger("hotcb.recipe").warning("Failed to load recipe %s: %s", recipe_path, exc) self._entries = [] # Apply overlay if adjust file exists diff --git a/src/hotcb/server/ai_engine.py b/src/hotcb/server/ai_engine.py index b8b36c7..a6010b8 100644 --- a/src/hotcb/server/ai_engine.py +++ b/src/hotcb/server/ai_engine.py @@ -320,18 +320,27 @@ async def invoke( cost_usd=cost, ) - # Process next_check + # Process next_check — cap all values to prevent exponential sleep nc = parsed["next_check"] nc_mode = nc.get("mode", "periodic") + max_wait = max(self.config.cadence * 4, 200) # never wait more than 4x cadence or 200 steps if nc_mode == "at_step": - self.state.next_check_step = nc.get("step") + requested_step = nc.get("step", step + self.config.cadence) + # Cap: don't let AI schedule more than max_wait steps ahead + capped_step = min(requested_step, step + max_wait) + self.state.next_check_step = capped_step elif nc_mode == "in_n_steps": - self.state.next_check_step = step + nc.get("n", 50) + n = min(nc.get("n", 50), max_wait) + self.state.next_check_step = step + n elif nc_mode == "on_next_alert": - self.state.next_check_step = None # will fire on next alert - self.state.cadence_override = 999999 # effectively disable periodic + # Still set a periodic fallback so we don't sleep forever + self.state.next_check_step = step + max_wait + self.state.cadence_override = max_wait elif nc_mode == "periodic": interval = nc.get("interval", self.config.cadence) + # Cap periodic interval + interval = min(interval, max_wait) + interval = max(interval, 10) # minimum 10 steps self.state.cadence_override = interval self.state.next_check_step = None diff --git a/src/hotcb/server/ai_prompts.py b/src/hotcb/server/ai_prompts.py index 168f605..344fc7b 100644 --- a/src/hotcb/server/ai_prompts.py +++ b/src/hotcb/server/ai_prompts.py @@ -310,7 +310,8 @@ def format_raw_metrics( ## Guidelines - Prefer "noop" when metrics are trending well. Don't fix what isn't broken. - Make small adjustments first (e.g., reduce lr by 0.5x, not 0.1x). -- After making a change, set next_check to wait enough steps to observe the effect (typically 20-50 steps). +- After making a change, set next_check to wait 20-50 steps to observe the effect. NEVER set next_check more than 200 steps ahead — training runs are often short. +- Use "in_n_steps" mode with n between 20 and 100. Do NOT use large values. - If you see divergence (loss spike), reduce lr aggressively. - If you see plateau, try reducing lr by 0.5x or adjusting loss weights. - Only declare_rerun if training is truly degenerate (loss diverged, NaN, etc.). @@ -497,8 +498,8 @@ def build_context( ga = capabilities.get("grad_accumulation_steps", 1) if ga > 1: cap_lines.append(f"- **Grad accumulation**: {ga} steps") - if capabilities.get("loss_state_detected"): - ls_keys = capabilities.get("loss_state_keys", []) + if capabilities.get("mutable_state_detected"): + ls_keys = capabilities.get("mutable_state_keys", []) cap_lines.append(f"- **Loss terms**: {', '.join(ls_keys)}") clip = capabilities.get("grad_clip_value") if clip is not None: diff --git a/src/hotcb/server/api.py b/src/hotcb/server/api.py index cee5ab5..b3c8479 100644 --- a/src/hotcb/server/api.py +++ b/src/hotcb/server/api.py @@ -90,6 +90,65 @@ async def loss_set(body: LossSetRequest, request: Request): return {"status": "queued", "command": cmd} +@router.get("/loss/params") +async def loss_params(request: Request): + """Return current loss weight values from the latest metrics or applied ledger.""" + run_dir: str = request.app.state.run_dir + + # Strategy 1: read from latest metrics (most up-to-date) + metrics_path = os.path.join(run_dir, "hotcb.metrics.jsonl") + latest_metrics: Dict[str, Any] = {} + if os.path.exists(metrics_path): + last_line = "" + with open(metrics_path, "r", encoding="utf-8") as f: + for line in f: + stripped = line.strip() + if stripped: + last_line = stripped + if last_line: + try: + rec = json.loads(last_line) + latest_metrics = rec.get("metrics", {}) + except json.JSONDecodeError: + pass + + # Strategy 2: read last applied loss params + applied_path = os.path.join(run_dir, "hotcb.applied.jsonl") + last_applied: Dict[str, Any] = {} + if os.path.exists(applied_path): + with open(applied_path, "r", encoding="utf-8") as f: + for line in f: + stripped = line.strip() + if not stripped: + continue + try: + rec = json.loads(stripped) + except json.JSONDecodeError: + continue + if rec.get("module") == "loss" and rec.get("decision") == "applied": + p = rec.get("params") or rec.get("payload") + if p: + last_applied.update(p) + + # Strategy 3: read from capabilities file for key names + from ..capabilities import TrainingCapabilities + caps = TrainingCapabilities.load(run_dir) + mutable_keys = list(caps.mutable_state_keys) if caps and caps.mutable_state_keys else [] + + # Extract weight-related metrics (w/* prefix from training loop logging) + current_weights: Dict[str, float] = {} + for k, v in latest_metrics.items(): + if k.startswith("train_w/"): + key = k.replace("train_w/", "") + current_weights[key] = v + + return { + "mutable_state_keys": mutable_keys, + "current_weights": current_weights, + "last_applied": last_applied, + } + + @router.post("/tune/mode") async def tune_mode(body: TuneModeRequest, request: Request): op = "enable" if body.mode != "off" else "disable" @@ -159,6 +218,19 @@ async def cb_load(body: CbLoadRequest, request: Request): return {"status": "queued", "command": cmd} +class CbSetParamsRequest(BaseModel): + id: str = "main" + params: Dict[str, Any] = Field(..., min_length=1) + + +@router.post("/cb/set_params") +async def cb_set_params(body: CbSetParamsRequest, request: Request): + """Set parameters on a callback.""" + cmd = {"module": "cb", "op": "set_params", "id": body.id, "params": body.params} + _append(request, cmd) + return {"status": "queued", "command": cmd} + + @router.post("/cb/{cb_id}/enable") async def cb_enable(cb_id: str, request: Request): cmd = {"module": "cb", "op": "enable", "id": cb_id} diff --git a/src/hotcb/server/app.py b/src/hotcb/server/app.py index 03c2e0d..7e2310f 100644 --- a/src/hotcb/server/app.py +++ b/src/hotcb/server/app.py @@ -4,7 +4,7 @@ Provides: - WebSocket endpoint for streaming metrics / applied / tune data - REST endpoints for status, config, and commands -- Static file serving for the React SPA (when built) +- Static file serving for the dashboard frontend Start via CLI:: @@ -65,11 +65,13 @@ def disconnect(self, ws: Any) -> None: conns.discard(ws) async def broadcast(self, channel: str, data: Any) -> None: + from ..util import sanitize_floats + safe_data = sanitize_floats(data) conns = self._connections.get(channel, set()) dead: List[Any] = [] for ws in conns: try: - await ws.send_json({"channel": channel, "data": data}) + await ws.send_json({"channel": channel, "data": safe_data}) except Exception: dead.append(ws) for ws in dead: @@ -92,6 +94,7 @@ def create_app( *, poll_interval: float = 0.5, multi_dirs: Optional[List[str]] = None, + demo_mode: bool = False, ) -> Any: """ Build the FastAPI application wired to *run_dir*. @@ -132,6 +135,12 @@ def create_app( projection_engine = ProjectionEngine() notification_engine = NotificationEngine() manifold_engine = ManifoldEngine() + + # run_dir is immutable — set once at startup, never changed. + # Keep the original CLI path for discovery; resolve for monitoring. + cli_run_dir = run_dir + run_dir = _resolve_active_run_dir(run_dir) + autopilot_engine = AutopilotEngine.with_default_guidelines(run_dir=run_dir, mode="off") training_launcher = TrainingLauncher(run_dir=run_dir) @@ -140,7 +149,7 @@ def create_app( autopilot_engine.set_ai_engine(ai_engine) _tailer_task: Optional[asyncio.Task] = None - # Resolve JSONL paths + # Resolve JSONL paths — tailer watches run_dir once, forever all_dirs = [run_dir] + (multi_dirs or []) @asynccontextmanager @@ -232,6 +241,7 @@ async def _autopilot_feed(ch: str, records: list) -> None: # Store references for use by route modules app.state.run_dir = run_dir + app.state.demo_mode = demo_mode app.state.all_dirs = all_dirs app.state.manager = manager app.state.tailer = tailer @@ -346,6 +356,27 @@ async def health(): "tailer_running": tailer.is_running, } + @app.get("/api/runs/discover") + async def discover_runs(): + """Scan CLI-provided dir for run subdirs with metrics data (TensorBoard-style).""" + parent = cli_run_dir + discovered = [] + # Check if parent itself is a run dir + parent_metrics = os.path.join(parent, "hotcb.metrics.jsonl") + if os.path.exists(parent_metrics): + discovered.append(_build_run_info(parent)) + # Scan subdirs + try: + for name in sorted(os.listdir(parent)): + subpath = os.path.join(parent, name) + if os.path.isdir(subpath) and os.path.exists( + os.path.join(subpath, "hotcb.metrics.jsonl") + ): + discovered.append(_build_run_info(subpath)) + except OSError: + pass + return {"runs": discovered} + # --- UI mode endpoints --- _VALID_UI_MODES = {"engineer", "education", "vibe_coder"} @@ -435,36 +466,42 @@ async def get_control_state(): state["training_running"] = training_launcher.running state["training_config"] = training_launcher._config if training_launcher.running else {} - # Last applied opt/loss params from applied ledger + # Last applied opt/loss params — use cached scan to avoid re-reading + # the entire file on every poll cycle applied_path = os.path.join(run_dir, "hotcb.applied.jsonl") - last_opt_params: dict = {} - last_loss_params: dict = {} - if os.path.exists(applied_path): + last_opt_params, last_loss_params, modules_seen = _get_applied_summary(applied_path) + state["last_opt_params"] = last_opt_params + state["last_loss_params"] = last_loss_params + + # Module availability detection + loss_active = "loss" in modules_seen + if not loss_active: try: - with open(applied_path, "r") as f: - for line in f: - line = line.strip() - if not line: - continue - try: - rec = json.loads(line) - except json.JSONDecodeError: - continue - if rec.get("decision") != "applied": - continue - if rec.get("module") == "opt" and rec.get("payload"): - last_opt_params.update(rec["payload"]) - elif rec.get("module") == "loss" and rec.get("payload"): - last_loss_params.update(rec["payload"]) + from ..capabilities import TrainingCapabilities + caps = TrainingCapabilities.load(run_dir) + if caps and getattr(caps, 'mutable_state_detected', False): + loss_active = True except Exception: pass - state["last_opt_params"] = last_opt_params - state["last_loss_params"] = last_loss_params + state["modules_active"] = { + "opt": True, + "loss": loss_active, + "cb": "cb" in modules_seen, + } + + # External training detection + is_launcher = training_launcher.running or bool( + training_launcher._active_config_id + ) + state["is_external"] = not is_launcher and bool(last_metrics) # AI autopilot state if ai_engine: state["ai_key_metric"] = ai_engine.state.key_metric + # Demo mode flag — frontend hides Training card when false + state["demo_mode"] = demo_mode + return state return app @@ -549,11 +586,59 @@ def _discover_metric_names(run_dir: str) -> List[str]: def _read_tail(path: str, last_n: int) -> List[dict]: - """Read the last N records from a JSONL file.""" + """Read the last N records from a JSONL file efficiently. + + For small files or small last_n, reads from the end using seek + to avoid scanning the entire file. + """ if not os.path.exists(path): return [] - records: List[dict] = [] try: + file_size = os.path.getsize(path) + except OSError: + return [] + if file_size == 0: + return [] + + # For small files (< 512KB) or requesting everything, just read all + if file_size < 512 * 1024 or last_n > 50000: + records: List[dict] = [] + try: + with open(path, "r", encoding="utf-8") as f: + for line in f: + line = line.strip() + if not line: + continue + try: + records.append(json.loads(line)) + except json.JSONDecodeError: + continue + except Exception: + return [] + return records[-last_n:] + + # For large files, read from the end — estimate ~200 bytes per record + chunk_size = min(file_size, last_n * 300 + 4096) + try: + with open(path, "rb") as f: + f.seek(max(0, file_size - chunk_size)) + if f.tell() > 0: + f.readline() # skip partial first line + tail_bytes = f.read() + lines = tail_bytes.decode("utf-8", errors="replace").splitlines() + records = [] + for line in lines: + line = line.strip() + if not line: + continue + try: + records.append(json.loads(line)) + except json.JSONDecodeError: + continue + if len(records) >= last_n: + return records[-last_n:] + # If we didn't get enough, fall back to full scan + records = [] with open(path, "r", encoding="utf-8") as f: for line in f: line = line.strip() @@ -563,13 +648,134 @@ def _read_tail(path: str, last_n: int) -> List[dict]: records.append(json.loads(line)) except json.JSONDecodeError: continue + return records[-last_n:] except Exception: return [] - return records[-last_n:] + + +# Cache for applied ledger scan — avoids re-reading entire file every 5s +_applied_cache: Dict[str, Any] = {"mtime": 0, "size": 0, "opt": {}, "loss": {}, "modules": set()} + + +def _get_applied_summary(applied_path: str) -> tuple: + """Return (last_opt_params, last_loss_params, modules_seen) with mtime caching.""" + try: + st = os.stat(applied_path) + mtime, size = st.st_mtime, st.st_size + except OSError: + return {}, {}, set() + + if mtime == _applied_cache["mtime"] and size == _applied_cache["size"]: + return dict(_applied_cache["opt"]), dict(_applied_cache["loss"]), set(_applied_cache["modules"]) + + last_opt: dict = {} + last_loss: dict = {} + modules: set = set() + try: + with open(applied_path, "r") as f: + for line in f: + line = line.strip() + if not line: + continue + try: + rec = json.loads(line) + except json.JSONDecodeError: + continue + mod = rec.get("module") + if mod: + modules.add(mod) + if rec.get("decision") != "applied": + continue + p = rec.get("params") or rec.get("payload") + if mod == "opt" and p: + last_opt.update(p) + elif mod == "loss" and p: + last_loss.update(p) + except Exception: + pass + + _applied_cache.update({"mtime": mtime, "size": size, "opt": dict(last_opt), "loss": dict(last_loss), "modules": set(modules)}) + return last_opt, last_loss, modules + + +def _resolve_active_run_dir(run_dir: str) -> str: + """Resolve run_dir to the active run subdir if it's a parent directory. + + If run_dir contains hotcb.metrics.jsonl directly, it's a single run dir. + Otherwise, scan for subdirs with metrics and return the latest. + """ + metrics_direct = os.path.join(run_dir, "hotcb.metrics.jsonl") + if os.path.exists(metrics_direct): + return run_dir + subdirs = [] + try: + for name in os.listdir(run_dir): + subpath = os.path.join(run_dir, name) + if os.path.isdir(subpath) and os.path.exists( + os.path.join(subpath, "hotcb.metrics.jsonl") + ): + subdirs.append(subpath) + except OSError: + pass + if subdirs: + subdirs.sort(key=os.path.getmtime, reverse=True) + return subdirs[0] + return run_dir + + +def _build_run_info(run_path: str) -> dict: + """Build run discovery info from a run directory.""" + run_id = os.path.basename(run_path) + label = run_id + step_count = 0 + metric_names: set = set() + + run_json = os.path.join(run_path, "hotcb.run.json") + if os.path.exists(run_json): + try: + with open(run_json) as f: + meta = json.load(f) + label = meta.get("config_name", meta.get("config_id", run_id)) + except Exception: + pass + + metrics_path = os.path.join(run_path, "hotcb.metrics.jsonl") + if os.path.exists(metrics_path): + try: + with open(metrics_path) as f: + first_rec = None + last_rec = None + for line in f: + line = line.strip() + if not line: + continue + step_count += 1 + try: + rec = json.loads(line) + if first_rec is None: + first_rec = rec + last_rec = rec + except json.JSONDecodeError: + continue + if first_rec: + metric_names.update(first_rec.get("metrics", {}).keys()) + if last_rec: + metric_names.update(last_rec.get("metrics", {}).keys()) + except Exception: + pass + + return { + "run_id": run_id, + "dir": run_path, + "label": label, + "step_count": step_count, + "metric_names": sorted(metric_names), + } async def _send_initial_data(ws: Any, run_dir: str, channels: Set[str]) -> None: """Send a burst of recent data when a client first connects.""" + from ..util import sanitize_floats channel_files = { "metrics": "hotcb.metrics.jsonl", "applied": "hotcb.applied.jsonl", @@ -583,7 +789,7 @@ async def _send_initial_data(ws: Any, run_dir: str, channels: Set[str]) -> None: records = _read_tail(os.path.join(run_dir, filename), 200) if records: try: - await ws.send_json({"channel": ch, "data": records, "initial": True}) + await ws.send_json({"channel": ch, "data": sanitize_floats(records), "initial": True}) except Exception: break @@ -599,12 +805,13 @@ def run_server( port: int = 8421, poll_interval: float = 0.5, multi_dirs: Optional[List[str]] = None, + demo_mode: bool = False, ) -> None: """Start the dashboard server (blocking).""" _check_deps() import uvicorn - app = create_app(run_dir, poll_interval=poll_interval, multi_dirs=multi_dirs) + app = create_app(run_dir, poll_interval=poll_interval, multi_dirs=multi_dirs, demo_mode=demo_mode) log.info("Starting hotcb dashboard at http://%s:%d", host, port) log.info("Monitoring: %s", run_dir) uvicorn.run(app, host=host, port=port, log_level="info") diff --git a/src/hotcb/server/launcher.py b/src/hotcb/server/launcher.py index d2957e9..ed4aa72 100644 --- a/src/hotcb/server/launcher.py +++ b/src/hotcb/server/launcher.py @@ -79,8 +79,8 @@ def _get_builtin_configs() -> List[TrainingConfig]: name="Finetune (Pretrained Backbone)", description=( "Transfer learning simulation: pretrained backbone finetuned " - "on a small dataset. Backbone freeze/unfreeze is the control " - "toggle. Shows overfitting dynamics on small data." + "on a small dataset with recipe-driven LR scheduling. " + "Shows overfitting dynamics and mutation impact on convergence." ), train_fn=_run_finetune, defaults={"max_steps": 600, "step_delay": 0.12}, @@ -197,7 +197,10 @@ def start( import random as _rng effective_seed = seed if seed is not None else _rng.randint(0, 2**31 - 1) - self._active_run_dir = run_dir or self._run_dir + # Write flat to run_dir — no subdirs, no rewiring. + # Truncate existing JSONL files for a clean start. + target_dir = run_dir or self._run_dir + self._active_run_dir = target_dir self._active_config_id = config_id self._config = { "config_id": config_id, @@ -208,14 +211,12 @@ def start( } self._stop_event.clear() - # Ensure run_dir exists and seed empty JSONL files - os.makedirs(self._active_run_dir, exist_ok=True) + os.makedirs(target_dir, exist_ok=True) for fname in _JSONL_FILES: - path = os.path.join(self._active_run_dir, fname) - if not os.path.exists(path): - open(path, "w").close() + path = os.path.join(target_dir, fname) + open(path, "w").close() # truncate for clean start - freeze_path = os.path.join(self._active_run_dir, "hotcb.freeze.json") + freeze_path = os.path.join(target_dir, "hotcb.freeze.json") if not os.path.exists(freeze_path): with open(freeze_path, "w") as f: json.dump({"mode": "off"}, f) @@ -230,22 +231,22 @@ def start( "step_delay": effective_delay, "seed": effective_seed, "started_at": self._started_at, - "run_dir": self._active_run_dir, + "run_dir": target_dir, } self._run_meta = run_meta - with open(os.path.join(self._active_run_dir, "hotcb.run.json"), "w") as f: + with open(os.path.join(target_dir, "hotcb.run.json"), "w") as f: json.dump(run_meta, f, indent=2) log.info( "[hotcb.launcher] starting %s (run_dir=%s, steps=%d, delay=%.3f)", - cfg.name, self._active_run_dir, effective_steps, effective_delay, + cfg.name, target_dir, effective_steps, effective_delay, ) self._thread = threading.Thread( target=self._run_training, kwargs={ "train_fn": cfg.train_fn, - "run_dir": self._active_run_dir, + "run_dir": target_dir, "max_steps": effective_steps, "step_delay": effective_delay, }, @@ -257,7 +258,7 @@ def start( return { "started": True, - "run_dir": self._active_run_dir, + "run_dir": target_dir, "config": self._config, } @@ -308,15 +309,7 @@ def _save_run_summary(self, run_dir: str) -> None: except Exception: pass - # Append to parent-level history - parent_dir = os.path.dirname(run_dir.rstrip("/")) - if parent_dir: - history_path = os.path.join(parent_dir, "hotcb.runs.jsonl") - try: - with open(history_path, "a") as f: - f.write(json.dumps(summary) + "\n") - except Exception: - pass + # Run summary is now in the run's own hotcb.run.json (no global index) def stop(self) -> dict: if not self.running: @@ -393,13 +386,17 @@ async def start_training(body: StartRequest, request: Request): ) if "error" in result: return JSONResponse(status_code=409, content=result) - # Clear stale engine state from previous runs + # run_dir is immutable — launcher writes flat to it, tailer already watches it. + # Clear stale engine state from previous runs. projection = getattr(request.app.state, 'projection_engine', None) if projection: projection._steps.clear() projection._metrics.clear() projection._hp_keys.clear() projection._hp_values.clear() + autopilot = getattr(request.app.state, 'autopilot_engine', None) + if autopilot and hasattr(autopilot, 'reset'): + autopilot.reset() return result @router.get("/status") @@ -477,35 +474,33 @@ async def list_runs(): return {"runs": runs} + def _find_run_dir(run_id: str) -> Optional[str]: + """Find a run directory by run_id (subdir name or run.json match).""" + rd = _launcher._run_dir + # Check as subdir of run_dir + subpath = os.path.join(rd, run_id) + if os.path.isdir(subpath): + return subpath + # Check current dir's run.json + rj = os.path.join(rd, "hotcb.run.json") + if os.path.exists(rj): + try: + with open(rj) as f: + meta = json.load(f) + if meta.get("run_id") == run_id: + return rd + except Exception: + pass + # Check active run dir + if _launcher._active_run_dir: + if os.path.basename(_launcher._active_run_dir.rstrip("/")) == run_id: + return _launcher._active_run_dir + return None + @router.get("/runs/{run_id}/metrics") async def get_run_metrics(run_id: str, last_n: int = 2000): """Get metrics from a specific run by its ID.""" - run_dir = _launcher._run_dir - parent_dir = os.path.dirname(run_dir.rstrip("/")) - - # Find the run directory - target_dir = None - # Check current run_dir - run_json = os.path.join(run_dir, "hotcb.run.json") - if os.path.exists(run_json): - with open(run_json) as f: - meta = json.load(f) - if meta.get("run_id") == run_id: - target_dir = run_dir - - # Check history - if not target_dir and parent_dir: - history_path = os.path.join(parent_dir, "hotcb.runs.jsonl") - if os.path.exists(history_path): - with open(history_path) as f: - for line in f: - try: - entry = json.loads(line.strip()) - if entry.get("run_id") == run_id and entry.get("run_dir"): - target_dir = entry["run_dir"] - break - except Exception: - pass + target_dir = _find_run_dir(run_id) if not target_dir: return JSONResponse(status_code=404, content={"error": f"Run {run_id} not found"}) @@ -527,29 +522,7 @@ async def get_run_metrics(run_id: str, last_n: int = 2000): @router.get("/runs/{run_id}/applied") async def get_run_applied(run_id: str, last_n: int = 200): """Get applied mutations from a specific run by its ID.""" - run_dir = _launcher._run_dir - parent_dir = os.path.dirname(run_dir.rstrip("/")) - - target_dir = None - run_json = os.path.join(run_dir, "hotcb.run.json") - if os.path.exists(run_json): - with open(run_json) as f: - meta = json.load(f) - if meta.get("run_id") == run_id: - target_dir = run_dir - - if not target_dir and parent_dir: - history_path = os.path.join(parent_dir, "hotcb.runs.jsonl") - if os.path.exists(history_path): - with open(history_path) as f: - for line in f: - try: - entry = json.loads(line.strip()) - if entry.get("run_id") == run_id and entry.get("run_dir"): - target_dir = entry["run_dir"] - break - except Exception: - pass + target_dir = _find_run_dir(run_id) if not target_dir: return JSONResponse(status_code=404, content={"error": f"Run {run_id} not found"}) diff --git a/src/hotcb/server/projections.py b/src/hotcb/server/projections.py index 6c2f438..2cdd58c 100644 --- a/src/hotcb/server/projections.py +++ b/src/hotcb/server/projections.py @@ -45,7 +45,8 @@ class ForecastResult: method: str # "xgboost" or "fallback_linear" def to_dict(self) -> dict: - return { + from ..util import sanitize_floats + return sanitize_floats({ "steps": self.steps, "values": self.values, "forecast": self.values, # alias for dashboard JS @@ -53,7 +54,7 @@ def to_dict(self) -> dict: "upper": self.upper, "metric_name": self.metric_name, "method": self.method, - } + }) # --------------------------------------------------------------------------- diff --git a/src/hotcb/server/static/css/dashboard.css b/src/hotcb/server/static/css/dashboard.css index cfce608..a98862a 100644 --- a/src/hotcb/server/static/css/dashboard.css +++ b/src/hotcb/server/static/css/dashboard.css @@ -156,6 +156,7 @@ select.header-select { padding: 3px 8px; font-size: 11px; font-family: var(--font-sans); cursor: pointer; } select.header-select:focus { outline: none; border-color: var(--accent); } +select.header-select:focus-visible { outline: 2px solid var(--accent); outline-offset: 1px; } .main { display: grid; grid-template-columns: 1fr 310px; gap: 0; min-height: calc(100vh - 44px); } .left-col { display: grid; grid-template-rows: 1fr auto auto; overflow-y: auto; border-right: 1px solid var(--border); } @@ -204,6 +205,22 @@ select.header-select:focus { outline: none; border-color: var(--accent); } border-bottom: 1px solid var(--border); flex-shrink: 0; } .metric-toggles { display: flex; flex-wrap: wrap; gap: 8px; align-items: center; } +.step-range-controls { + display: flex; align-items: center; gap: 4px; flex-shrink: 0; +} +.step-range-controls .range-btn.active { + background: var(--accent); color: var(--bg-primary); font-weight: 700; +} +.range-custom-wrap { + display: flex; align-items: center; gap: 2px; margin-left: 4px; +} +.range-input { + width: 52px; font-size: 10px; padding: 2px 4px; font-family: var(--font-mono); + background: var(--bg-input); color: var(--text-primary); border: 1px solid var(--border); + border-radius: 3px; text-align: center; +} +.range-input:focus { border-color: var(--accent); outline: none; } +.range-sep { color: var(--text-muted); font-size: 10px; } /* Metric dropdown */ .metric-dropdown-wrap { position: relative; } .metric-dropdown-btn { @@ -236,9 +253,17 @@ select.header-select:focus { outline: none; border-color: var(--accent); } transition: background 0.1s; } .metric-dropdown-item:hover { background: var(--bg-hover); } -.metric-dropdown-item input { accent-color: var(--accent); width: 12px; height: 12px; flex-shrink: 0; } -.metric-dropdown-item .swatch { width: 8px; height: 8px; border-radius: 2px; display: inline-block; flex-shrink: 0; } +.metric-dot { + width: 14px; height: 14px; border-radius: 50%; border: 2px solid; + cursor: pointer; flex-shrink: 0; transition: background 0.15s, box-shadow 0.15s; +} +.metric-dot.active { background: currentColor; } +.metric-dot.pinned { box-shadow: 0 0 0 2px var(--accent); } .metric-dropdown-name { flex: 1; overflow: hidden; text-overflow: ellipsis; white-space: nowrap; } +.metric-pin-icon { + font-size: 10px; flex-shrink: 0; margin-left: 2px; + opacity: 0.8; cursor: pointer; +} .metric-dropdown-note { padding: 4px 10px; font-size: 9px; color: var(--text-muted); font-style: italic; font-family: var(--font-mono); @@ -254,8 +279,8 @@ select.header-select:focus { outline: none; border-color: var(--accent); } .bottom-panel .card-header { flex-shrink: 0; } .timeline-list { flex: 1; overflow-y: auto; padding: 2px 0; } .timeline-item { - display: grid; grid-template-columns: 60px 70px 1fr 60px; - gap: 6px; align-items: center; padding: 4px 12px; + display: grid; grid-template-columns: 60px 44px auto 1fr 54px auto; + gap: 4px; align-items: center; padding: 4px 12px; font-size: 10px; border-bottom: 1px solid rgba(30,46,68,0.4); font-family: var(--font-mono); } @@ -269,6 +294,14 @@ select.header-select:focus { outline: none; border-color: var(--accent); } .tl-module.loss { background: rgba(255,152,51,0.12); color: var(--orange); } .tl-module.cb { background: rgba(153,102,255,0.12); color: var(--purple); } .tl-module.tune { background: rgba(0,212,170,0.12); color: var(--accent); } +.tl-capsules { display: flex; flex-wrap: wrap; gap: 3px; overflow: hidden; } +.tl-capsule { + display: inline-flex; align-items: center; gap: 2px; + padding: 1px 5px; border-radius: 8px; font-size: 8px; font-weight: 600; + background: rgba(0,212,170,0.08); color: var(--text-secondary); + border: 1px solid rgba(0,212,170,0.15); white-space: nowrap; +} +.tl-capsule-val { color: var(--accent); font-weight: 700; } .tl-decision { text-align: right; font-weight: 700; font-size: 9px; } .tl-decision.applied { color: var(--green); } .tl-decision.failed { color: var(--red); } @@ -278,7 +311,8 @@ select.header-select:focus { outline: none; border-color: var(--accent); } /* Knobs */ /* ================================================================== */ .knob-row { - display: grid; grid-template-columns: 42px 1fr 65px; + position: relative; + display: grid; grid-template-columns: 42px 1fr 78px; align-items: center; gap: 5px; margin-bottom: 6px; } .knob-label { font-size: 10px; font-weight: 700; font-family: var(--font-mono); color: var(--text-secondary); } @@ -289,6 +323,7 @@ select.header-select:focus { outline: none; border-color: var(--accent); } font-size: 10px; padding: 2px 5px; text-align: right; } .knob-input:focus { outline: none; border-color: var(--accent); } +.knob-input:focus-visible { outline: 2px solid var(--accent); outline-offset: 1px; } input[type="range"] { -webkit-appearance: none; width: 100%; height: 3px; background: var(--border); border-radius: 2px; outline: none; @@ -397,6 +432,7 @@ body.mode-education .knob-explain { display: block; } .recipe-edit-form input:focus, .recipe-edit-form select:focus { outline: none; border-color: var(--accent); } +.recipe-edit-form input:focus-visible, .recipe-edit-form select:focus-visible { outline: 2px solid var(--accent); outline-offset: 1px; } .recipe-edit-actions { display: flex; gap: 4px; justify-content: flex-end; } @@ -445,6 +481,7 @@ body.mode-education .knob-explain { display: block; } .rule-edit-form input:focus, .rule-edit-form select:focus { outline: none; border-color: var(--accent); } +.rule-edit-form input:focus-visible, .rule-edit-form select:focus-visible { outline: 2px solid var(--accent); outline-offset: 1px; } /* ================================================================== */ /* Chat (vibe-coder) */ @@ -469,6 +506,7 @@ body.mode-vibe_coder .chat-panel { display: flex; flex-direction: column; } font-size: 12px; padding: 6px 10px; } .chat-input-row input:focus { outline: none; border-color: var(--accent); } +.chat-input-row input:focus-visible { outline: 2px solid var(--accent); outline-offset: 1px; } .chat-input-row input::placeholder { color: var(--text-muted); } /* ================================================================== */ @@ -496,6 +534,7 @@ body.mode-vibe_coder .chat-panel { display: flex; flex-direction: column; } } .modal textarea { min-height: 60px; resize: vertical; } .modal input:focus, .modal select:focus, .modal textarea:focus { outline: none; border-color: var(--accent); } +.modal input:focus-visible, .modal select:focus-visible, .modal textarea:focus-visible { outline: 2px solid var(--accent); outline-offset: 1px; } .modal-actions { display: flex; gap: 8px; justify-content: flex-end; margin-top: 16px; } /* ================================================================== */ @@ -688,7 +727,7 @@ body.metric-focus-mode .metric-card { max-width: 100%; } flex-shrink: 0; } .right-col > .card .card-body { - overflow-y: auto; + overflow: visible; } /* Compare zoom mode */ @@ -700,3 +739,109 @@ body.compare-zoom-mode #compareSidebar { display: none; } body.compare-zoom-mode #compareOverlayInfo { display: block !important; } body.compare-zoom-mode .chart-area { min-height: calc(100vh - 88px); } body.compare-zoom-mode .tab-content[data-tab="compare"] { flex: 1; } + +/* ================================================================== */ +/* Health card collapsible */ +/* ================================================================== */ +.health-toggle { + border: none; background: none; cursor: pointer; + color: var(--text-muted); font-size: 10px; padding: 0 4px; + transition: transform 0.2s; +} +.health-toggle:hover { color: var(--text-secondary); } +.health-toggle.collapsed { transform: rotate(-90deg); } +.health-details { transition: max-height 0.25s ease, opacity 0.2s ease; overflow: hidden; } +.health-details.collapsed { max-height: 0 !important; opacity: 0; padding: 0 !important; margin: 0 !important; } + +/* ================================================================== */ +/* Chart waiting overlay */ +/* ================================================================== */ +.chart-waiting { + position: absolute; inset: 0; display: flex; align-items: center; + justify-content: center; background: var(--bg-primary); z-index: 5; + transition: opacity 0.4s ease; +} +.chart-waiting.hidden { opacity: 0; pointer-events: none; } +.chart-waiting-inner { text-align: center; } +.chart-waiting-pulse { + width: 36px; height: 36px; margin: 0 auto 12px; + border-radius: 50%; border: 2px solid var(--accent-dim); + border-top-color: var(--accent); + animation: cwSpin 1.2s linear infinite; +} +@keyframes cwSpin { to { transform: rotate(360deg); } } +.chart-waiting-text { + font-size: 13px; font-weight: 600; color: var(--text-secondary); + font-family: var(--font-sans); +} +.chart-waiting-hint { + font-size: 10px; color: var(--text-muted); margin-top: 4px; + font-family: var(--font-sans); +} + +/* ================================================================== */ +/* Slider staged-change highlight */ +/* ================================================================== */ +.knob-row.staged { background: rgba(0, 212, 170, 0.06); border-radius: 4px; } +.knob-row.staged .knob-label { color: var(--accent); } +.knob-row.staged::after { + content: 'changed'; position: absolute; right: 4px; top: 50%; + transform: translateY(-50%); font-size: 8px; font-weight: 700; + color: var(--accent); text-transform: uppercase; letter-spacing: 0.5px; + font-family: var(--font-mono); +} + +/* ================================================================== */ +/* Run summary panel */ +/* ================================================================== */ +.run-summary-overlay { + position: fixed; inset: 0; background: rgba(0,0,0,0.6); + z-index: 1000; display: flex; align-items: center; justify-content: center; + animation: fadeIn 0.2s ease; +} +.run-summary-panel { + background: var(--bg-card); border: 1px solid var(--border-bright); + border-radius: var(--radius-lg); width: 520px; max-width: 90vw; + max-height: 80vh; overflow-y: auto; padding: 20px 24px; + box-shadow: 0 12px 40px rgba(0,0,0,0.5); + animation: slideUp 0.25s ease; +} +@keyframes slideUp { + from { transform: translateY(20px); opacity: 0; } + to { transform: translateY(0); opacity: 1; } +} +@keyframes fadeIn { + from { opacity: 0; } to { opacity: 1; } +} +.run-summary-panel h3 { + font-size: 14px; font-weight: 700; color: var(--accent); + margin-bottom: 12px; font-family: var(--font-mono); +} +.run-summary-panel .summary-meta { + font-size: 10px; color: var(--text-muted); margin-bottom: 12px; + font-family: var(--font-mono); line-height: 1.5; +} +.run-summary-panel table { + width: 100%; border-collapse: collapse; font-size: 10px; + font-family: var(--font-mono); margin-bottom: 12px; +} +.run-summary-panel th { + text-align: left; font-weight: 700; color: var(--text-muted); + text-transform: uppercase; letter-spacing: 0.5px; font-size: 9px; + padding: 4px 8px; border-bottom: 1px solid var(--border); +} +.run-summary-panel td { + padding: 3px 8px; color: var(--text-primary); + border-bottom: 1px solid rgba(30,46,68,0.4); +} +.run-summary-panel td.positive { color: var(--green); } +.run-summary-panel td.negative { color: var(--red); } +.run-summary-panel td.neutral { color: var(--text-muted); } +.run-summary-panel .best-move { + font-size: 10px; padding: 8px 10px; margin-bottom: 12px; + background: rgba(0,212,170,0.06); border: 1px solid rgba(0,212,170,0.15); + border-radius: var(--radius); color: var(--text-secondary); line-height: 1.4; +} +.run-summary-panel .summary-actions { + display: flex; gap: 8px; justify-content: flex-end; +} diff --git a/src/hotcb/server/static/index.html b/src/hotcb/server/static/index.html index 4d959a9..ed27e0b 100644 --- a/src/hotcb/server/static/index.html +++ b/src/hotcb/server/static/index.html @@ -66,8 +66,28 @@
+
+ + + + + + + + + +
+
+
+ +
+
+
+
Waiting for metrics...
+
Start training or connect to a running experiment
+
+
-
@@ -301,7 +321,10 @@

Add Autopilot Rule

-
Training Health
+
+ Training Health + +
--
@@ -309,7 +332,9 @@

Add Autopilot Rule

Evaluating...
-
+
+
+
@@ -317,7 +342,7 @@

Add Autopilot Rule

Command Bar
- +
@@ -448,12 +473,12 @@

Add Autopilot Rule

Two-task training with recipe-driven loss weight shifts.
- + - + s - +
diff --git a/src/hotcb/server/static/js/charts.js b/src/hotcb/server/static/js/charts.js index 8f01f11..5ecc234 100644 --- a/src/hotcb/server/static/js/charts.js +++ b/src/hotcb/server/static/js/charts.js @@ -9,6 +9,46 @@ var _forecastCache = {}; // metric -> {forecast, mutation} // Highlighted mutation step (set when user clicks a timeline item) var _highlightedMutationStep = null; +// Step range control: 'all' | 'last200' | 'last500' | {min, max} +var _chartStepRange = 'all'; + +// Max points to render per dataset (avoids sluggish charts on very long runs) +var _maxRenderPoints = 2000; + +/** + * LTTB (Largest-Triangle-Three-Buckets) downsampling. + * Takes [{x, y}] and returns a reduced array preserving visual shape. + */ +function _lttbDownsample(data, threshold) { + if (data.length <= threshold) return data; + var sampled = [data[0]]; // always keep first + var bucketSize = (data.length - 2) / (threshold - 2); + var a = 0; // index of previously selected point + for (var i = 0; i < threshold - 2; i++) { + // Calculate bucket range + var bStart = Math.floor((i + 1) * bucketSize) + 1; + var bEnd = Math.min(Math.floor((i + 2) * bucketSize) + 1, data.length - 1); + // Average of next bucket (for triangle area calc) + var avgX = 0, avgY = 0, cnt = 0; + var nbStart = Math.floor((i + 2) * bucketSize) + 1; + var nbEnd = Math.min(Math.floor((i + 3) * bucketSize) + 1, data.length - 1); + if (nbStart > data.length - 1) { nbStart = data.length - 1; nbEnd = data.length - 1; } + for (var j = nbStart; j <= nbEnd; j++) { avgX += data[j].x; avgY += data[j].y; cnt++; } + avgX /= cnt; avgY /= cnt; + // Pick point in current bucket with largest triangle area + var maxArea = -1, maxIdx = bStart; + var ax = data[a].x, ay = data[a].y; + for (var k = bStart; k <= bEnd; k++) { + var area = Math.abs((ax - avgX) * (data[k].y - ay) - (ax - data[k].x) * (avgY - ay)); + if (area > maxArea) { maxArea = area; maxIdx = k; } + } + sampled.push(data[maxIdx]); + a = maxIdx; + } + sampled.push(data[data.length - 1]); // always keep last + return sampled; +} + // ---- Mutation annotation plugin for Chart.js ---- var mutationAnnotationPlugin = { id: 'mutationAnnotations', @@ -21,12 +61,19 @@ var mutationAnnotationPlugin = { var top = yScale.top; var bottom = yScale.bottom; + // Determine actual data range — skip annotations outside metric data + var dataMinStep = _getMinStep(); + var dataMaxStep = _getMaxStep(); + if (dataMaxStep === 0) return; // no metric data yet + // Collect visible annotations with pixel positions for staggering var annotations = []; S.appliedData.forEach(function(rec) { var step = rec.step; if (step === undefined || step === null) return; + // Filter to both visible x-axis range AND actual data range if (step < xScale.min || step > xScale.max) return; + if (step < dataMinStep || step > dataMaxStep) return; var x = xScale.getPixelForValue(step); annotations.push({rec: rec, x: x, step: step}); }); @@ -73,12 +120,16 @@ var mutationAnnotationPlugin = { // Build compact label — split into multiple lines if needed var lines = []; - if (rec.params && typeof rec.params === 'object') { - var keys = Object.keys(rec.params); + var annotParams = (rec.params && typeof rec.params === 'object') ? rec.params : + (rec.payload && typeof rec.payload === 'object') ? rec.payload : null; + if (annotParams) { + var keys = Object.keys(annotParams); keys.slice(0, 3).forEach(function(k) { - var v = rec.params[k]; + var v = annotParams[k]; if (typeof v === 'number') { v = v < 0.01 || v > 1e4 ? v.toExponential(1) : parseFloat(v.toPrecision(3)); + } else if (typeof v === 'object' && v !== null) { + v = JSON.stringify(v); } lines.push(k + '\u2192' + v); }); @@ -128,6 +179,14 @@ var mutationAnnotationPlugin = { // Register the plugin globally Chart.register(mutationAnnotationPlugin); +// Custom tooltip positioner — show to the right of the cursor +Chart.Tooltip.positioners.rightOfCursor = function(elements, eventPosition) { + return { + x: eventPosition.x + 15, + y: eventPosition.y + }; +}; + // ---- Linear regression slope helper ---- function _linregSlope(points) { // points: [{step, value}, ...] — returns slope (value per step) @@ -285,13 +344,14 @@ function scrollChartToStep(step) { var xScale = S.chartInstance.scales.x; if (!xScale) return; var range = xScale.max - xScale.min; - if (range <= 0) return; + if (range <= 0) range = 200; // Only adjust if the step is outside the visible range if (step >= xScale.min && step <= xScale.max) return; var half = range / 2; - S.chartInstance.options.scales.x.min = step - half; - S.chartInstance.options.scales.x.max = step + half; + _chartStepRange = { min: Math.max(0, step - half), max: step + half }; + _applyChartStepRange(); S.chartInstance.update('none'); + _updateRangeButtons(); } function createMetricsChart() { @@ -309,10 +369,14 @@ function createMetricsChart() { }, plugins: { legend: {display:false}, - tooltip: { backgroundColor:'#121c2b', borderColor:'#2a4060', borderWidth:1, - titleFont:{family:'JetBrains Mono',size:11}, bodyFont:{family:'JetBrains Mono',size:11} } + tooltip: { backgroundColor: getComputedStyle(document.documentElement).getPropertyValue('--bg-card').trim() || '#121c2b', + borderColor: getComputedStyle(document.documentElement).getPropertyValue('--border-bright').trim() || '#2a4060', borderWidth:1, + titleFont:{family:'JetBrains Mono',size:11}, bodyFont:{family:'JetBrains Mono',size:11}, + usePointStyle: true, boxWidth: 8, boxHeight: 8, + intersect: false, mode: 'nearest', axis: 'x', position: 'rightOfCursor' } }, - elements: { point: {radius:0, hoverRadius:3}, line: {borderWidth:1.5, tension:0.3} } + interaction: { mode: 'nearest', axis: 'x', intersect: false }, + elements: { point: {radius:0, hoverRadius:5, hitRadius:10}, line: {borderWidth:1.5, tension:0.15} } } }); } @@ -335,21 +399,27 @@ function updateChart() { var pts = S.metricsData[name] || []; var color = getColor(name); - // Live data line + // Live data line (LTTB-downsampled for rendering performance) + var chartPts = pts.map(function(p) { return {x: p.step, y: p.value}; }); + chartPts = _lttbDownsample(chartPts, _maxRenderPoints); datasets.push({ label: name, - data: pts.map(function(p) { return {x: p.step, y: p.value}; }), + data: chartPts, borderColor: color, backgroundColor: 'transparent', - tension: 0.3, + tension: 0.15, }); var lastStep = pts.length ? pts[pts.length - 1].step : 0; var lastVal = pts.length ? pts[pts.length - 1].value : null; var cache = _forecastCache[name]; + var showOverlays = S.focusMetric === name || (S.pinnedMetrics && S.pinnedMetrics.has(name)); - // Forecast overlay (dotted extension in same color but lighter) - if (cache && cache.forecast && cache.forecast.values && cache.forecast.values.length) { + // Forecast overlay — only shown for pinned or focused metrics to reduce clutter + // Guard: only render if forecast steps are contiguous with current data (avoids stale cross-run connectors) + if (showOverlays && cache && cache.forecast && cache.forecast.values && cache.forecast.values.length + && lastStep > 0 && lastVal !== null + && cache.forecast.steps && cache.forecast.steps[0] <= lastStep + 50) { var fc = cache.forecast; var fcPts = [{x: lastStep, y: lastVal}]; // Connect to last actual point fc.values.forEach(function(v, i) { fcPts.push({x: fc.steps[i], y: v}); }); @@ -359,7 +429,7 @@ function updateChart() { borderColor: color, borderDash: [6, 3], backgroundColor: 'transparent', - tension: 0.3, + tension: 0.15, borderWidth: 1.2, pointRadius: 0, }); @@ -375,43 +445,149 @@ function updateChart() { borderColor: 'transparent', backgroundColor: hexToRgba(color, 0.06), fill: '+1', - pointRadius: 0, tension: 0.3, + pointRadius: 0, tension: 0.15, }); datasets.push({ label: '_' + name + '_hi', data: hiPts, borderColor: 'transparent', backgroundColor: 'transparent', - pointRadius: 0, tension: 0.3, + pointRadius: 0, tension: 0.15, }); } } - // Mutation impact overlay (cyan dotted) - if (cache && cache.mutation && cache.mutation.values && cache.mutation.values.length) { + // Mutation impact overlay — only shown for pinned or focused metrics + // Guard: only render if fromStep is within current data range (avoids stale cross-run connectors) + if (showOverlays && cache && cache.mutation && cache.mutation.values && cache.mutation.values.length) { var mu = cache.mutation; - var muPts = [{x: mu.fromStep, y: mu.fromVal}]; - mu.values.forEach(function(v, i) { muPts.push({x: mu.steps[i], y: v}); }); - datasets.push({ - label: name + ' post-change', - data: muPts, - borderColor: 'rgba(51,204,221,0.7)', - borderDash: [3, 4], - backgroundColor: 'transparent', - tension: 0.3, - borderWidth: 1.2, - pointRadius: 0, - }); + var inDataRange = pts.length > 0 && mu.fromStep >= pts[0].step && mu.fromStep <= pts[pts.length - 1].step; + if (inDataRange) { + var muPts = [{x: mu.fromStep, y: mu.fromVal}]; + mu.values.forEach(function(v, i) { muPts.push({x: mu.steps[i], y: v}); }); + datasets.push({ + label: name + ' post-change', + data: muPts, + borderColor: 'rgba(51,204,221,0.7)', + borderDash: [3, 4], + backgroundColor: 'transparent', + tension: 0.15, + borderWidth: 1.2, + pointRadius: 0, + }); + } } }); S.chartInstance.data.datasets = datasets; + + // Apply step range to x-axis + _applyChartStepRange(); + S.chartInstance.update('none'); // Also update any pinned metric cards updateMetricCards(); } +function _getMaxStep() { + var maxStep = 0; + S.metricNames.forEach(function(name) { + var pts = S.metricsData[name] || []; + if (pts.length) maxStep = Math.max(maxStep, pts[pts.length - 1].step); + }); + return maxStep; +} + +function _getMinStep() { + var minStep = Infinity; + S.metricNames.forEach(function(name) { + var pts = S.metricsData[name] || []; + if (pts.length) minStep = Math.min(minStep, pts[0].step); + }); + return minStep === Infinity ? 0 : minStep; +} + +function _applyChartStepRange() { + if (!S.chartInstance) return; + var xOpts = S.chartInstance.options.scales.x; + if (_chartStepRange === 'all') { + delete xOpts.min; + delete xOpts.max; + } else if (_chartStepRange === 'last200') { + var mx = _getMaxStep(); + xOpts.min = Math.max(0, mx - 200); + delete xOpts.max; + } else if (_chartStepRange === 'last500') { + var mx2 = _getMaxStep(); + xOpts.min = Math.max(0, mx2 - 500); + delete xOpts.max; + } else if (typeof _chartStepRange === 'object' && _chartStepRange !== null) { + xOpts.min = _chartStepRange.min; + xOpts.max = _chartStepRange.max; + } +} + +function setChartStepRange(mode) { + _chartStepRange = mode; + updateChart(); + _updateRangeButtons(); +} + +function _updateRangeButtons() { + var btns = document.querySelectorAll('#stepRangeControls .range-btn[data-range]'); + btns.forEach(function(btn) { + var isActive = (typeof _chartStepRange === 'string' && btn.dataset.range === _chartStepRange); + btn.classList.toggle('active', isActive); + }); + // Update custom inputs if range is a custom object + var minEl = document.getElementById('rangeMin'); + var maxEl = document.getElementById('rangeMax'); + if (minEl && maxEl) { + if (typeof _chartStepRange === 'object' && _chartStepRange !== null) { + minEl.value = _chartStepRange.min != null ? _chartStepRange.min : ''; + maxEl.value = _chartStepRange.max != null ? _chartStepRange.max : ''; + } + } +} + +function initStepRangeControls() { + var container = document.getElementById('stepRangeControls'); + if (!container) return; + + // Preset buttons + container.querySelectorAll('.range-btn[data-range]').forEach(function(btn) { + btn.addEventListener('click', function() { + setChartStepRange(btn.dataset.range); + }); + }); + + // Custom range apply + var applyBtn = document.getElementById('rangeApply'); + var minEl = document.getElementById('rangeMin'); + var maxEl = document.getElementById('rangeMax'); + if (applyBtn && minEl && maxEl) { + applyBtn.addEventListener('click', function() { + var mn = minEl.value !== '' ? parseInt(minEl.value, 10) : undefined; + var mx = maxEl.value !== '' ? parseInt(maxEl.value, 10) : undefined; + if (mn === undefined && mx === undefined) { + setChartStepRange('all'); + } else { + setChartStepRange({ + min: mn !== undefined ? mn : 0, + max: mx !== undefined ? mx : undefined + }); + } + }); + // Enter key in inputs triggers apply + [minEl, maxEl].forEach(function(el) { + el.addEventListener('keydown', function(e) { + if (e.key === 'Enter') applyBtn.click(); + }); + }); + } +} + function hexToRgba(hex, alpha) { var r = parseInt(hex.slice(1, 3), 16); var g = parseInt(hex.slice(3, 5), 16); @@ -421,6 +597,7 @@ function hexToRgba(hex, alpha) { var _metricToggleState = {}; // metric name -> boolean (checked) var _metricDropdownShowAll = false; +var _dropdownCloseHandler = null; var _commonMetricPatterns = [ 'train_loss', 'val_loss', 'loss', 'accuracy', 'val_accuracy', 'train_accuracy', 'lr', 'learning_rate', 'grad_norm', 'grad_norm_total', @@ -583,49 +760,72 @@ function _renderMetricDropdown(container) { var visible = _getVisibleMetrics(); visible.forEach(function(name) { var color = getColor(name); - var row = document.createElement('label'); + var row = document.createElement('div'); row.className = 'metric-dropdown-item'; - var cb = document.createElement('input'); - cb.type = 'checkbox'; - cb.checked = !!_metricToggleState[name]; - cb.dataset.metric = name; - cb.addEventListener('change', function(e) { + var isActive = !!_metricToggleState[name]; + var isPinned = S.pinnedMetrics && S.pinnedMetrics.has(name); + + // Filled/hollow dot toggle (replaces checkbox + swatch) + var dot = document.createElement('span'); + dot.className = 'metric-dot' + (isActive ? ' active' : '') + (isPinned ? ' pinned' : ''); + dot.style.color = color; + dot.style.borderColor = color; + if (isActive) dot.style.background = color; + dot.title = isActive ? 'Hide metric' : 'Show metric'; + dot.addEventListener('click', function(e) { e.stopPropagation(); - _metricToggleState[name] = cb.checked; - // Update the badge count + _metricToggleState[name] = !_metricToggleState[name]; var cnt = 0; S.metricNames.forEach(function(n) { if (_metricToggleState[n]) cnt++; }); var badge = wrapper.querySelector('.metric-count-badge'); if (badge) badge.textContent = cnt + '/' + totalCount; + _renderMetricDropdown(container); updateChart(); }); - - var swatch = document.createElement('span'); - swatch.className = 'swatch'; - swatch.style.background = color; + // Double-click or right-click to toggle pin + dot.addEventListener('dblclick', function(e) { + e.stopPropagation(); e.preventDefault(); + toggleMetricCard(name); + _renderMetricDropdown(container); + }); + dot.addEventListener('contextmenu', function(e) { + e.preventDefault(); e.stopPropagation(); + toggleMetricCard(name); + _renderMetricDropdown(container); + }); var label = document.createElement('span'); label.className = 'metric-dropdown-name'; label.textContent = name; - - var pinBtn = document.createElement('button'); - var isPinned = S.pinnedMetrics && S.pinnedMetrics.has(name); - pinBtn.className = 'pin-btn' + (isPinned ? ' pin-btn-active' : ''); - pinBtn.dataset.metric = name; - pinBtn.title = isPinned ? 'Unpin metric card' : 'Pin metric card'; - pinBtn.innerHTML = '📌'; - pinBtn.addEventListener('click', function(e) { - e.preventDefault(); + label.addEventListener('click', function(e) { e.stopPropagation(); - toggleMetricCard(name); + _metricToggleState[name] = !_metricToggleState[name]; + var cnt = 0; + S.metricNames.forEach(function(n) { if (_metricToggleState[n]) cnt++; }); + var badge = wrapper.querySelector('.metric-count-badge'); + if (badge) badge.textContent = cnt + '/' + totalCount; _renderMetricDropdown(container); + updateChart(); }); - row.appendChild(cb); - row.appendChild(swatch); + row.appendChild(dot); row.appendChild(label); - row.appendChild(pinBtn); + + // Pin indicator — visible icon when metric is pinned + if (isPinned) { + var pinIcon = document.createElement('span'); + pinIcon.className = 'metric-pin-icon'; + pinIcon.textContent = '\u{1F4CC}'; + pinIcon.title = 'Pinned \u2014 double-click dot to unpin'; + pinIcon.addEventListener('click', function(e) { + e.stopPropagation(); + toggleMetricCard(name); + _renderMetricDropdown(container); + }); + row.appendChild(pinIcon); + } + list.appendChild(row); }); @@ -642,13 +842,19 @@ function _renderMetricDropdown(container) { panel.appendChild(list); wrapper.appendChild(panel); - // Close dropdown when clicking outside - document.addEventListener('click', function closeDropdown(e) { - if (!wrapper.contains(e.target)) { - var p = wrapper.querySelector('.metric-dropdown-panel'); - if (p) p.classList.remove('open'); - } - }); + // Close dropdown when clicking outside (single delegated listener) + if (!_dropdownCloseHandler) { + _dropdownCloseHandler = function(e) { + var wraps = document.querySelectorAll('.metric-dropdown-wrap'); + wraps.forEach(function(w) { + if (!w.contains(e.target)) { + var p = w.querySelector('.metric-dropdown-panel'); + if (p) p.classList.remove('open'); + } + }); + }; + document.addEventListener('click', _dropdownCloseHandler); + } } // ---- Per-metric pinnable cards ---- @@ -746,12 +952,14 @@ function updateSingleMetricCard(name) { var color = getColor(name); var pts = S.metricsData[name] || []; + var chartPts = pts.map(function(p) { return {x: p.step, y: p.value}; }); + chartPts = _lttbDownsample(chartPts, 500); // mini cards need fewer points datasets.push({ label: name, - data: pts.map(function(p) { return {x: p.step, y: p.value}; }), + data: chartPts, borderColor: color, backgroundColor: 'transparent', - tension: 0.3, + tension: 0.15, }); var lastStep = pts.length ? pts[pts.length - 1].step : 0; @@ -767,7 +975,7 @@ function updateSingleMetricCard(name) { label: 'forecast', data: fcPts, borderColor: color, borderDash: [6, 3], - backgroundColor: 'transparent', tension: 0.3, borderWidth: 1.2, pointRadius: 0, + backgroundColor: 'transparent', tension: 0.15, borderWidth: 1.2, pointRadius: 0, }); } @@ -780,7 +988,7 @@ function updateSingleMetricCard(name) { label: 'post-change', data: muPts, borderColor: 'rgba(51,204,221,0.7)', borderDash: [3, 4], - backgroundColor: 'transparent', tension: 0.3, borderWidth: 1.2, pointRadius: 0, + backgroundColor: 'transparent', tension: 0.15, borderWidth: 1.2, pointRadius: 0, }); } @@ -819,17 +1027,31 @@ async function fetchAllForecasts() { return; } _forecastInFlight = true; - var promises = []; - S.metricNames.forEach(function(name) { - promises.push(fetchForecastForMetric(name)); - }); - await Promise.all(promises); + // Only fetch forecasts for pinned or focused metrics — not all metrics + var names = []; + if (S.focusMetric) { + names.push(S.focusMetric); + } + if (S.pinnedMetrics) { + S.pinnedMetrics.forEach(function(name) { + if (names.indexOf(name) === -1) names.push(name); + }); + } + if (names.length === 0) { + _forecastInFlight = false; + return; + } + var batchSize = 4; + for (var i = 0; i < names.length; i += batchSize) { + var batch = names.slice(i, i + batchSize); + await Promise.all(batch.map(fetchForecastForMetric)); + } _forecastInFlight = false; updateChart(); // If new data arrived while we were fetching, refresh again if (_forecastPendingRefresh) { _forecastPendingRefresh = false; - setTimeout(fetchAllForecasts, 500); + setTimeout(fetchAllForecasts, 1000); } } @@ -842,17 +1064,29 @@ async function fetchForecastForMetric(name) { function startForecastPolling() { if (_forecastTimer) clearInterval(_forecastTimer); - // Poll every 5s as a baseline, but also triggered on new metrics - _forecastTimer = setInterval(fetchAllForecasts, 5000); - fetchAllForecasts(); + // Poll every 10s as a baseline — new metrics also trigger refresh via onNewMetricsForForecast + _forecastTimer = setInterval(function() { + // Only fetch if we have pinned/focused metrics to avoid wasted work + if ((S.pinnedMetrics && S.pinnedMetrics.size > 0) || S.focusMetric) { + fetchAllForecasts(); + } + }, 10000); + // Delay initial fetch to let the dashboard settle + setTimeout(function() { + if ((S.pinnedMetrics && S.pinnedMetrics.size > 0) || S.focusMetric) { + fetchAllForecasts(); + } + }, 3000); } // Called from websocket when new metrics arrive — trigger forecast refresh function onNewMetricsForForecast(maxStep) { - // Only trigger every 10 steps to avoid flooding - if (maxStep - _lastForecastStep >= 10) { + // Only trigger every 20 steps, and only if there are pinned/focused metrics + if (maxStep - _lastForecastStep >= 20) { _lastForecastStep = maxStep; - fetchAllForecasts(); + if ((S.pinnedMetrics && S.pinnedMetrics.size > 0) || S.focusMetric) { + fetchAllForecasts(); + } } } diff --git a/src/hotcb/server/static/js/controls.js b/src/hotcb/server/static/js/controls.js index 825ad68..a34ecbe 100644 --- a/src/hotcb/server/static/js/controls.js +++ b/src/hotcb/server/static/js/controls.js @@ -10,6 +10,45 @@ var _applyQueue = []; var _lastApplyStep = 0; var _healthEma = null; // EMA-smoothed health score +// Track last-applied slider values for staged-change highlighting +var _appliedKnobs = {}; + +function _markStagedChanges() { + var knobs = { + lr: {slider: 'knobLr', transform: function(v) { return Math.pow(10, parseFloat(v)); }}, + wd: {slider: 'knobWd', transform: function(v) { return Math.pow(10, parseFloat(v)); }}, + loss_w: {slider: 'knobLossW', transform: function(v) { return parseFloat(v); }}, + weight_a: {slider: 'knobWeightA', transform: function(v) { return parseFloat(v); }}, + weight_b: {slider: 'knobWeightB', transform: function(v) { return parseFloat(v); }}, + }; + Object.keys(knobs).forEach(function(key) { + var cfg = knobs[key]; + var el = document.getElementById(cfg.slider); + if (!el) return; + var row = el.closest('.knob-row'); + if (!row) return; + var current = cfg.transform(el.value); + var applied = _appliedKnobs[key]; + if (applied !== undefined && Math.abs(current - applied) / Math.max(Math.abs(applied), 1e-12) > 0.005) { + row.classList.add('staged'); + } else { + row.classList.remove('staged'); + } + }); +} + +function _snapshotAppliedKnobs() { + _appliedKnobs.lr = lrFromSlider($('#knobLr').value); + _appliedKnobs.wd = Math.pow(10, parseFloat($('#knobWd').value)); + _appliedKnobs.loss_w = parseFloat($('#knobLossW').value); + _appliedKnobs.weight_a = parseFloat($('#knobWeightA').value); + _appliedKnobs.weight_b = parseFloat($('#knobWeightB').value); + var bbEl = $('#knobBackbone'); + if (bbEl) _appliedKnobs.backbone_frozen = bbEl.value === '1'; + // Clear all staged highlights + document.querySelectorAll('.knob-row.staged').forEach(function(el) { el.classList.remove('staged'); }); +} + function debounceApply(fn, delay) { if (_applyDebounceTimer) clearTimeout(_applyDebounceTimer); _applyDebounceTimer = setTimeout(fn, delay || 300); @@ -26,6 +65,9 @@ function _clearTrainingState() { S.chatHistory = []; S.alerts = []; _healthEma = null; + _appliedKnobs = {}; + // Reset WS slider sync flag so next training session re-syncs + if (typeof _slidersInitialized !== 'undefined') _slidersInitialized = false; // Clear focus/zoom state if (S.focusMetric) { S.focusMetric = null; @@ -44,6 +86,15 @@ function _clearTrainingState() { // Clear forecast cache _forecastCache = {}; _highlightedMutationStep = null; + // Clear metric toggle state so old metric names don't persist + if (typeof _metricToggleState !== 'undefined') _metricToggleState = {}; + if (typeof _metricDropdownShowAll !== 'undefined') _metricDropdownShowAll = false; + if (typeof _lastMetricCount !== 'undefined') _lastMetricCount = 0; + // Reset run-reset detection + if (typeof _lastSeenMaxStep !== 'undefined') _lastSeenMaxStep = 0; + // Reset step range to "All" for fresh run + if (typeof _chartStepRange !== 'undefined') _chartStepRange = 'all'; + if (typeof _updateRangeButtons === 'function') _updateRangeButtons(); clearTimelineDedup(); updateMetricToggles(); updateChart(); @@ -74,52 +125,93 @@ function initControls() { $('#knobLr').addEventListener('input', function(e) { var v = lrFromSlider(e.target.value); $('#knobLrVal').value = v.toExponential(2); + _markStagedChanges(); }); $('#knobWd').addEventListener('input', function(e) { var v = Math.pow(10, parseFloat(e.target.value)); $('#knobWdVal').value = v.toExponential(2); + _markStagedChanges(); }); $('#knobLossW').addEventListener('input', function(e) { $('#knobLossWVal').value = parseFloat(e.target.value).toFixed(2); + _markStagedChanges(); }); $('#knobWeightA').addEventListener('input', function(e) { $('#knobWeightAVal').value = parseFloat(e.target.value).toFixed(2); + _markStagedChanges(); }); $('#knobWeightB').addEventListener('input', function(e) { $('#knobWeightBVal').value = parseFloat(e.target.value).toFixed(2); + _markStagedChanges(); }); - // Apply + // Apply — diff-only: only send params that actually changed $('#btnApply').addEventListener('click', function() { var btn = $('#btnApply'); btn.textContent = 'Queued...'; btn.disabled = true; debounceApply(async function() { + var anyChanged = false; + // Threshold: relative difference > 0.5% avoids floating-point noise + function _isDiff(current, baseline) { + if (baseline === undefined) return true; + var denom = Math.max(Math.abs(baseline), 1e-12); + return Math.abs(current - baseline) / denom > 0.005; + } + + // OPT params — only include changed values var lr = lrFromSlider($('#knobLr').value); var wd = Math.pow(10, parseFloat($('#knobWd').value)); - var optParams = {lr: lr, weight_decay: wd}; - // Include opt_idx for multi-optimizer setups - var optIdxSel = document.getElementById('knobOptIdx'); - if (optIdxSel && optIdxSel.parentElement.style.display !== 'none') { - var idx = parseInt(optIdxSel.value); - if (idx > 0) optParams.opt_idx = idx; + var changedOpt = {}; + if (_isDiff(lr, _appliedKnobs.lr)) changedOpt.lr = lr; + if (_isDiff(wd, _appliedKnobs.wd)) changedOpt.weight_decay = wd; + if (Object.keys(changedOpt).length > 0) { + var optIdxSel = document.getElementById('knobOptIdx'); + if (optIdxSel && optIdxSel.parentElement.style.display !== 'none') { + var idx = parseInt(optIdxSel.value); + if (idx > 0) changedOpt.opt_idx = idx; + } + await api('POST', '/api/opt/set', {params: changedOpt}); + anyChanged = true; } - await api('POST', '/api/opt/set', {params: optParams}); + // LOSS params — only include changed values var configId = $('#trainConfig').value; if (configId === 'multitask') { var wa = parseFloat($('#knobWeightA').value); var wb = parseFloat($('#knobWeightB').value); - await api('POST', '/api/loss/set', {params: {weight_a: wa, weight_b: wb}}); + var changedLoss = {}; + if (_isDiff(wa, _appliedKnobs.weight_a)) changedLoss.weight_a = wa; + if (_isDiff(wb, _appliedKnobs.weight_b)) changedLoss.weight_b = wb; + if (Object.keys(changedLoss).length > 0) { + await api('POST', '/api/loss/set', {params: changedLoss}); + anyChanged = true; + } } else { var lw = parseFloat($('#knobLossW').value); - if (lw !== 1.0) await api('POST', '/api/loss/set', {params: {weight: lw}}); + if (_isDiff(lw, _appliedKnobs.loss_w)) { + await api('POST', '/api/loss/set', {params: {weight: lw}}); + anyChanged = true; + } } + // CB params — only send if backbone toggle changed if (configId === 'finetune') { var frozen = $('#knobBackbone').value === '1'; - await api('POST', '/api/cb/set_params', {params: {backbone_frozen: frozen}}); + if (_appliedKnobs.backbone_frozen === undefined || frozen !== _appliedKnobs.backbone_frozen) { + await api('POST', '/api/cb/set_params', {params: {backbone_frozen: frozen}}); + anyChanged = true; + } } + + if (!anyChanged) { + btn.textContent = 'No changes'; + btn.disabled = false; + setTimeout(function() { btn.textContent = 'Apply'; }, 1500); + return; + } + + _snapshotAppliedKnobs(); updateChart(); // Snapshot forecast at mutation point var allSteps = []; @@ -341,6 +433,9 @@ function initControls() { $('#themeSelect').addEventListener('change', function(e) { setTheme(e.target.value); }); + + // Hydrate controls from server state (works for both launcher and external training) + hydrateControlsFromServer().then(function() { _snapshotAppliedKnobs(); }); } /* ================================================================ */ @@ -375,7 +470,7 @@ async function loadCapabilities() { } // Loss state: show/hide loss controls based on detected keys - if (caps.loss_state_detected && caps.loss_state_keys && caps.loss_state_keys.length > 0) { + if (caps.mutable_state_detected && caps.mutable_state_keys && caps.mutable_state_keys.length > 0) { // Show loss controls — they might be hidden if no demo config selected var lossRows = document.querySelectorAll('[data-param="loss_w"]'); lossRows.forEach(function(el) { el.style.display = ''; }); @@ -390,6 +485,10 @@ async function loadCapabilities() { function syncSlidersFromApplied(params) { if (!params || typeof params !== 'object') return; + // Update applied knobs baseline so staged highlights reset + Object.keys(params).forEach(function(k) { + if (typeof params[k] === 'number') _appliedKnobs[k] = params[k]; + }); // lr if ('lr' in params && typeof params.lr === 'number' && params.lr > 0) { @@ -426,6 +525,83 @@ function syncSlidersFromApplied(params) { } } +async function hydrateControlsFromServer() { + try { + var state = await api('GET', '/api/state/controls'); + if (!state) return; + + // Demo mode gate: hide entire Training card when not in demo mode + if (state.demo_mode === false) { + var trainPanel = document.getElementById('trainPanel'); + if (trainPanel) { + var trainCard = trainPanel.closest('.card'); + if (trainCard) trainCard.style.display = 'none'; + } + } + + // Sync sliders from last applied params + if (state.last_opt_params) syncSlidersFromApplied(state.last_opt_params); + if (state.last_loss_params) syncSlidersFromApplied(state.last_loss_params); + + // Adaptive controls: hide modules not active for this training + var mods = state.modules_active || {opt: true, loss: false, cb: false}; + if (!mods.loss) { + document.querySelectorAll('.single-loss-only, .multitask-only').forEach(function(el) { + el.style.display = 'none'; + }); + } + if (!mods.cb) { + document.querySelectorAll('.finetune-only').forEach(function(el) { + el.style.display = 'none'; + }); + } + + // External training: hide demo config dropdown, show attached label + if (state.is_external) { + var trainConfig = document.getElementById('trainConfig'); + var trainConfigDesc = document.getElementById('trainConfigDesc'); + if (trainConfig) trainConfig.style.display = 'none'; + if (trainConfigDesc) trainConfigDesc.textContent = 'External Training (attached)'; + } + + // Sync config from run.json (for non-launcher runs) + var runCfg = state.run_config || {}; + if (runCfg.config_id) { + var sel = document.getElementById('trainConfig'); + // Only sync if it's a known config + if (sel) { + var found = false; + for (var i = 0; i < sel.options.length; i++) { + if (sel.options[i].value === runCfg.config_id) { found = true; break; } + } + if (found) { + sel.value = runCfg.config_id; + _updateConfigControls(runCfg.config_id); + } + } + if (runCfg.max_steps) { + var msEl = document.getElementById('trainMaxSteps'); + if (msEl) msEl.value = runCfg.max_steps; + } + } + + // Sync step counter + if (state.latest_step) { + var stepEl = document.getElementById('stepValue'); + if (stepEl) stepEl.textContent = state.latest_step; + } + + // Sync autopilot mode + if (state.autopilot_mode && state.autopilot_mode !== 'off') { + var modeSelect = document.getElementById('autopilotMode'); + if (modeSelect) { + modeSelect.value = state.autopilot_mode; + _updateAIConfigVisibility(state.autopilot_mode); + } + } + } catch (e) { /* ignore hydration errors */ } +} + function setTheme(theme) { document.documentElement.setAttribute('data-theme', theme); localStorage.setItem('hotcb-theme', theme); @@ -438,6 +614,17 @@ function setTheme(theme) { if (S.featureCtx && S.featureCtx.scene) { S.featureCtx.scene.background = new THREE.Color(bgColor); } + // Update chart tooltip colors for new theme + if (S.chartInstance) { + var cs = getComputedStyle(document.documentElement); + S.chartInstance.options.plugins.tooltip.backgroundColor = cs.getPropertyValue('--bg-card').trim(); + S.chartInstance.options.plugins.tooltip.borderColor = cs.getPropertyValue('--border-bright').trim(); + S.chartInstance.options.scales.x.grid.color = cs.getPropertyValue('--border').trim(); + S.chartInstance.options.scales.y.grid.color = cs.getPropertyValue('--border').trim(); + S.chartInstance.options.scales.x.ticks.color = cs.getPropertyValue('--text-muted').trim(); + S.chartInstance.options.scales.y.ticks.color = cs.getPropertyValue('--text-muted').trim(); + S.chartInstance.update('none'); + } } /** @@ -574,6 +761,10 @@ function setHealth(score, desc) { $('#healthDesc').textContent = desc; } +var _lastSyncedConfigId = null; +var _wasTrainingRunning = false; +var _runConfigName = ''; + async function pollTrainStatus() { try { var res = await api('GET', '/api/train/status'); @@ -582,25 +773,51 @@ async function pollTrainStatus() { var btnStart = $('#btnTrainStart'); var btnStop = $('#btnTrainStop'); if (res.running) { - var info = 'Running since ' + res.started_at; - if (res.config && res.config.max_steps) { - info += ' (' + res.config.max_steps + ' steps)'; - } - if (res.config && res.config.seed !== undefined) { - info += ' seed=' + res.config.seed; - // Backfill seed input so user can see/copy it - var seedInput = document.getElementById('trainSeed'); - if (seedInput && !seedInput.value) seedInput.value = res.config.seed; - } + _wasTrainingRunning = true; + var cfg = res.config || {}; + _runConfigName = cfg.config_name || cfg.config_id || ''; + var info = 'Running: ' + (cfg.config_name || cfg.config_id || '?'); + if (cfg.max_steps) info += ' (' + cfg.max_steps + ' steps)'; + if (cfg.seed !== undefined) info += ' seed=' + cfg.seed; el.textContent = info; el.style.color = 'var(--green, #4ade80)'; btnStart.disabled = true; btnStop.disabled = false; + + // Sync controls to match the running config (once per config change) + if (cfg.config_id && cfg.config_id !== _lastSyncedConfigId) { + _lastSyncedConfigId = cfg.config_id; + var sel = document.getElementById('trainConfig'); + if (sel && sel.value !== cfg.config_id) { + sel.value = cfg.config_id; + _updateConfigControls(cfg.config_id); + var desc = document.getElementById('trainConfigDesc'); + if (desc && cfg.config_name) desc.textContent = cfg.config_name; + } + if (cfg.max_steps) { + var msEl = document.getElementById('trainMaxSteps'); + if (msEl) msEl.value = cfg.max_steps; + } + if (cfg.step_delay !== undefined) { + var sdEl = document.getElementById('trainStepDelay'); + if (sdEl) sdEl.value = cfg.step_delay; + } + if (cfg.seed !== undefined) { + var seedInput = document.getElementById('trainSeed'); + if (seedInput) seedInput.value = cfg.seed; + } + } } else { + // Detect running → stopped transition + if (_wasTrainingRunning) { + _wasTrainingRunning = false; + showRunSummary(_runConfigName); + } el.textContent = 'Stopped'; el.style.color = 'var(--text-muted)'; btnStart.disabled = false; btnStop.disabled = true; + _lastSyncedConfigId = null; } } catch (e) { /* ignore poll errors */ } } @@ -786,9 +1003,11 @@ async function pollAutopilotStatus() { var ruleId = action.rule_id || '?'; var condition = action.condition_met || ''; if (condition.length > 80) condition = condition.substring(0, 77) + '...'; + var fullCondition = action.condition_met || ''; div.innerHTML = badge + ' step ' + step + ' ' + '' + ruleId + '
' + - '' + condition + ''; + '' + condition + ''; // Add "Apply" button for proposed (suggest-mode) actions if (action.status === 'proposed' && action.action_id) { diff --git a/src/hotcb/server/static/js/init.js b/src/hotcb/server/static/js/init.js index fee29dd..4a55fa7 100644 --- a/src/hotcb/server/static/js/init.js +++ b/src/hotcb/server/static/js/init.js @@ -2,6 +2,14 @@ * hotcb dashboard — initialization and data loading */ +function dismissChartWaiting() { + var el = document.getElementById('chartWaiting'); + if (el && !el.classList.contains('hidden')) { + el.classList.add('hidden'); + setTimeout(function() { el.style.display = 'none'; }, 500); + } +} + async function initialLoad() { // Status var status = await api('GET', '/api/status'); @@ -13,6 +21,7 @@ async function initialLoad() { // Metric history var hist = await api('GET', '/api/metrics/history?last_n=2000'); if (hist && hist.records && hist.records.length > 0) { + dismissChartWaiting(); hist.records.forEach(function(rec) { var step = rec.step || 0; var metrics = rec.metrics || {}; @@ -124,7 +133,7 @@ async function initialLoad() { // Periodic updates startForecastPolling(); - setInterval(fetchAlerts, 15000); + S._alertInterval = setInterval(fetchAlerts, 15000); // Show tour for first-time users (with delay to let UI settle) if (shouldShowTour()) { @@ -144,6 +153,18 @@ async function initialLoad() { initTabs(); initControls(); + // Health card collapse toggle + var healthToggle = document.getElementById('healthToggle'); + var healthDetails = document.getElementById('healthDetails'); + if (healthToggle && healthDetails) { + // Start collapsed + healthDetails.classList.add('collapsed'); + healthToggle.classList.add('collapsed'); + healthToggle.addEventListener('click', function() { + healthDetails.classList.toggle('collapsed'); + healthToggle.classList.toggle('collapsed'); + }); + } $('#btnTour').addEventListener('click', startTour); initRecipeEditor(); initAutopilotRulesEditor(); @@ -155,6 +176,7 @@ async function initialLoad() { initConfigWizard(); initCompare(); createMetricsChart(); + initStepRangeControls(); initialLoad(); connectWS(); @@ -189,6 +211,6 @@ async function initialLoad() { } // Persist UI state periodically and before page unload - setInterval(saveUIState, 5000); + S._saveStateInterval = setInterval(saveUIState, 5000); window.addEventListener('beforeunload', saveUIState); })(); diff --git a/src/hotcb/server/static/js/manifold3d.js b/src/hotcb/server/static/js/manifold3d.js index 65b5716..0f66441 100644 --- a/src/hotcb/server/static/js/manifold3d.js +++ b/src/hotcb/server/static/js/manifold3d.js @@ -71,9 +71,16 @@ function render3DPoints(ctx, points, interventionSteps) { if (!ctx) return; var scene = ctx.scene; - // Remove old data points + // Remove old data points and dispose GPU resources var old = scene.children.filter(function(c) { return c.userData && c.userData.isDataPoint; }); - old.forEach(function(o) { scene.remove(o); }); + old.forEach(function(o) { + scene.remove(o); + if (o.geometry) o.geometry.dispose(); + if (o.material) { + if (o.material.map) o.material.map.dispose(); + o.material.dispose(); + } + }); if (!points || points.length === 0) return; diff --git a/src/hotcb/server/static/js/panels.js b/src/hotcb/server/static/js/panels.js index 6698b26..43ddb41 100644 --- a/src/hotcb/server/static/js/panels.js +++ b/src/hotcb/server/static/js/panels.js @@ -92,16 +92,32 @@ function addTimelineItem(rec) { var step = rec.step || '?'; var mod = rec.module || '?'; var desc = rec.op || ''; - var params = rec.params ? JSON.stringify(rec.params) : ''; var decision = rec.decision || rec.status || 'applied'; var source = rec.source || 'interactive'; var sourceColor = source === 'recipe' ? 'var(--yellow, #facc15)' : source === 'autopilot' ? 'var(--cyan, #22d3ee)' : 'var(--text-muted)'; + // Build param capsules instead of raw JSON + var paramCapsules = ''; + var paramSrc = (rec.params && typeof rec.params === 'object') ? rec.params : + (rec.payload && typeof rec.payload === 'object') ? rec.payload : null; + if (paramSrc) { + var keys = Object.keys(paramSrc); + keys.forEach(function(k) { + var v = paramSrc[k]; + if (typeof v === 'number') { + v = v < 0.01 || v > 1e4 ? v.toExponential(1) : parseFloat(v.toPrecision(3)); + } else if (typeof v === 'object' && v !== null) { + v = JSON.stringify(v); + } + paramCapsules += '' + k + '' + v + ''; + }); + } div.innerHTML = 'step ' + step + '' + '' + mod + '' + - '' + desc + ' ' + params + '' + + '' + desc + '' + + '' + paramCapsules + '' + '' + decision + '' + '' + source + ''; @@ -118,6 +134,8 @@ function addTimelineItem(rec) { div.classList.remove('tl-active'); var existing = document.getElementById('impactSummary'); if (existing) existing.remove(); + // Restore user's chosen range instead of staying locked + _applyChartStepRange(); if (S.chartInstance) S.chartInstance.update('none'); return; } @@ -166,10 +184,42 @@ function _stopRecipeAutoRefresh() { function renderRecipe() { var list = $('#recipeList'); list.innerHTML = ''; - if (S.recipeEntries.length === 0) { + + // Show applied mutations from current run + if (S.appliedData && S.appliedData.length > 0) { + var appliedHeader = document.createElement('div'); + appliedHeader.style.cssText = 'font-size:9px;font-weight:700;text-transform:uppercase;color:var(--text-muted);padding:6px 4px 4px;letter-spacing:0.5px;border-bottom:1px solid var(--border);margin-bottom:4px;'; + appliedHeader.textContent = 'Applied This Run (' + S.appliedData.length + ')'; + list.appendChild(appliedHeader); + S.appliedData.forEach(function(rec) { + var div = document.createElement('div'); + div.style.cssText = 'display:grid;grid-template-columns:60px 44px 1fr;gap:4px;align-items:center;padding:3px 4px;font-size:9px;font-family:var(--font-mono);color:var(--text-muted);opacity:0.7;'; + var capsules = ''; + if (rec.params && typeof rec.params === 'object') { + Object.keys(rec.params).forEach(function(k) { + var v = rec.params[k]; + if (typeof v === 'number') v = v < 0.01 || v > 1e4 ? v.toExponential(1) : parseFloat(v.toPrecision(3)); + capsules += '' + k + '' + v + ''; + }); + } + div.innerHTML = 'step ' + (rec.step || '?') + '' + + '' + (rec.module || '?') + '' + + '' + (rec.op || '') + ' ' + capsules + ''; + list.appendChild(div); + }); + } + + if (S.recipeEntries.length === 0 && (!S.appliedData || S.appliedData.length === 0)) { list.innerHTML = '
No recipe entries. Click + Add to create one, or use Schedule from Controls.
'; return; } + if (S.recipeEntries.length === 0) return; + + // Recipe section header + var recipeHeader = document.createElement('div'); + recipeHeader.style.cssText = 'font-size:9px;font-weight:700;text-transform:uppercase;color:var(--accent);padding:8px 4px 4px;letter-spacing:0.5px;border-bottom:1px solid var(--border);margin-bottom:4px;'; + recipeHeader.textContent = 'Scheduled Recipe (' + S.recipeEntries.length + ')'; + list.appendChild(recipeHeader); S.recipeEntries.forEach(function(entry, idx) { var step = entry.at_step !== undefined ? entry.at_step : (entry.at ? entry.at.step : (entry.step || '?')); var mod = entry.module || '?'; @@ -889,7 +939,7 @@ function initCompare() { } async function fetchCompareRuns() { - var data = await api('GET', '/api/train/runs/history'); + var data = await api('GET', '/api/runs/discover'); if (!data || !data.runs) return; // Store run metadata @@ -901,7 +951,7 @@ async function fetchCompareRuns() { list.innerHTML = ''; if (data.runs.length === 0) { - list.innerHTML = '
No completed runs yet. Start and complete a training run first.
'; + list.innerHTML = '
No runs found. Start training or point at a directory with run subdirs.
'; return; } @@ -914,15 +964,13 @@ async function fetchCompareRuns() { 'background:' + (isSelected ? color + '11' : 'transparent') + ';transition:all 0.15s;'; var dot = ''; - var configLabel = run.config_name || run.config_id || '?'; - var runId = run.run_id || '?'; - var finalLoss = run.final_metrics && run.final_metrics.train_loss - ? run.final_metrics.train_loss.toFixed(4) : '--'; + var configLabel = run.label || run.run_id || '?'; + var stepInfo = run.step_count ? run.step_count + ' steps' : '--'; div.innerHTML = dot + '
' + '
' + configLabel + '
' + - '
' + runId + ' · loss: ' + finalLoss + '
' + + '
' + run.run_id + ' · ' + stepInfo + '
' + '
'; div.addEventListener('click', function() { @@ -1069,12 +1117,12 @@ function _rebuildCompareChart() { // Mutation annotation plugin for compare chart var compareAnnotations = []; - // Build metric-level dash patterns: first metric solid, rest dashed variants - var metricDashPatterns = [[], [6, 3], [2, 2], [8, 4, 2, 4], [4, 2], [10, 3]]; + // Color by metric name (consistent across runs), dash pattern by run/experiment + var runDashPatterns = [[], [6, 3], [3, 3], [8, 3, 2, 3], [4, 2], [10, 3]]; runIds.forEach(function(runId, runIdx) { var records = _compareAllData[runId] || []; - var color = _getCompareRunColor(runId); + var dashPattern = runDashPatterns[runIdx % runDashPatterns.length]; enabledMetrics.forEach(function(metricName, metricIdx) { var points = []; @@ -1086,15 +1134,17 @@ function _rebuildCompareChart() { }); if (points.length === 0) return; - // All metrics for the same run share the same color, differentiated by dash pattern - var dashPattern = metricDashPatterns[metricIdx % metricDashPatterns.length]; + // Color by metric name for consistency across runs + var color = typeof getColor === 'function' ? getColor(metricName) : _getCompareRunColor(runId); + var meta = _compareRunMeta[runId] || {}; + var runLabel = (meta.label || meta.config_name || runId).substring(0, 12); datasets.push({ - label: runId.substring(0, 8) + ' · ' + metricName, + label: runLabel + ' · ' + metricName, data: points, borderColor: color, backgroundColor: 'transparent', - tension: 0.3, + tension: 0.15, pointRadius: 0, borderWidth: 2, borderDash: dashPattern, @@ -1136,6 +1186,7 @@ function _rebuildCompareChart() { tooltip: { backgroundColor:'#121c2b', borderColor:'#2a4060', borderWidth:1, titleFont:{family:'JetBrains Mono',size:11}, bodyFont:{family:'JetBrains Mono',size:10}, + usePointStyle: true, boxWidth: 8, boxHeight: 8, callbacks: { label: function(ctx) { var raw = ctx.raw; @@ -1165,7 +1216,7 @@ function _rebuildCompareChart() { } }, }, - elements: { point: {radius:0, hoverRadius:3}, line: {tension:0.3} }, + elements: { point: {radius:0, hoverRadius:3}, line: {tension:0.15} }, }, }); @@ -1362,6 +1413,165 @@ async function updateCompareChart() { _rebuildCompareChart(); } +/* ================================================================ */ +/* End-of-run summary */ +/* ================================================================ */ + +function showRunSummary(configName) { + // Gather metric data + var metricNames = Object.keys(S.metricsData); + if (metricNames.length === 0) return; // no data, nothing to show + + // Build per-metric start/end/delta + var rows = []; + var maxStep = 0; + metricNames.forEach(function(name) { + var series = S.metricsData[name]; + if (!series || series.length === 0) return; + var first = series[0]; + var last = series[series.length - 1]; + if (last.step > maxStep) maxStep = last.step; + var delta = last.value - first.value; + var pctChange = first.value !== 0 ? (delta / Math.abs(first.value)) * 100 : 0; + rows.push({ + name: name, + start: first.value, + end: last.value, + delta: delta, + pctChange: pctChange, + direction: delta < -0.001 ? 'down' : delta > 0.001 ? 'up' : 'flat' + }); + }); + + // Sort by absolute delta (largest change first) + rows.sort(function(a, b) { return Math.abs(b.delta) - Math.abs(a.delta); }); + + // Count mutations + var mutationCount = S.appliedData ? S.appliedData.length : 0; + + // Find most impactful mutation + var bestMove = _findBestMutation(); + + // Build modal HTML + var overlay = document.createElement('div'); + overlay.className = 'run-summary-overlay'; + overlay.addEventListener('click', function(e) { + if (e.target === overlay) overlay.remove(); + }); + + var panel = document.createElement('div'); + panel.className = 'run-summary-panel'; + + var title = configName || 'Training'; + panel.innerHTML = '

Run Complete — ' + _esc(title) + '

' + + '
' + maxStep + ' steps · ' + + metricNames.length + ' metrics · ' + mutationCount + ' mutations applied
'; + + // Metrics table + var table = ''; + var showCount = Math.min(rows.length, 12); + for (var i = 0; i < showCount; i++) { + var r = rows[i]; + var cls = r.direction === 'down' ? 'negative' : r.direction === 'up' ? 'positive' : 'neutral'; + var arrow = r.direction === 'down' ? '▼' : r.direction === 'up' ? '▲' : '▬'; + var sign = r.delta > 0 ? '+' : ''; + table += '' + + '' + + '' + + '' + + ''; + } + if (rows.length > showCount) { + table += ''; + } + table += '
MetricStartEndChange
' + _esc(r.name) + '' + _fmtNum(r.start) + '' + _fmtNum(r.end) + '' + sign + _fmtNum(r.delta) + ' (' + sign + r.pctChange.toFixed(1) + '%)' + arrow + '
' + + (rows.length - showCount) + ' more metrics...
'; + panel.innerHTML += table; + + // Best move highlight + if (bestMove) { + panel.innerHTML += '
Best move: ' + + _esc(bestMove.desc) + '
'; + } + + // Action buttons + panel.innerHTML += '
' + + '' + + '' + + '
'; + + overlay.appendChild(panel); + document.body.appendChild(overlay); + + // Wire button events + var btnClose = document.getElementById('summaryBtnClose'); + if (btnClose) btnClose.addEventListener('click', function() { overlay.remove(); }); + var btnCompare = document.getElementById('summaryBtnCompare'); + if (btnCompare) btnCompare.addEventListener('click', function() { + overlay.remove(); + // Switch to Compare tab + var tab = document.querySelector('.tab[data-tab="compare"]'); + if (tab) tab.click(); + }); +} + +function _findBestMutation() { + if (!S.appliedData || S.appliedData.length === 0) return null; + + var best = null; + var bestImpact = 0; + + S.appliedData.forEach(function(mut) { + var step = mut.step; + if (!step) return; + + // Look at metric deltas in the 20 steps after this mutation + var metricNames = Object.keys(S.metricsData); + metricNames.forEach(function(name) { + var series = S.metricsData[name]; + if (!series || series.length < 3) return; + + // Find metric value at mutation step and 20 steps after + var atMut = null, afterMut = null; + for (var i = 0; i < series.length; i++) { + if (series[i].step >= step && atMut === null) atMut = series[i].value; + if (series[i].step >= step + 20 && afterMut === null) { + afterMut = series[i].value; + break; + } + } + if (atMut !== null && afterMut !== null) { + var impact = Math.abs(afterMut - atMut); + if (impact > bestImpact) { + bestImpact = impact; + var pct = atMut !== 0 ? ((afterMut - atMut) / Math.abs(atMut) * 100).toFixed(1) : '?'; + var dir = afterMut < atMut ? 'dropped' : 'increased'; + var desc = (mut.module || '?') + '.' + (mut.op || '?'); + if (mut.params) { + var keys = Object.keys(mut.params); + if (keys.length > 0) desc += ' (' + keys.map(function(k) { return k + '=' + mut.params[k]; }).join(', ') + ')'; + } + best = { desc: desc + ' at step ' + step + ' → ' + name + ' ' + dir + ' ' + pct + '%' }; + } + } + }); + }); + + return best; +} + +function _fmtNum(v) { + if (Math.abs(v) < 0.001 && v !== 0) return v.toExponential(2); + if (Math.abs(v) >= 1000) return v.toFixed(1); + return v.toPrecision(4); +} + +function _esc(s) { + var d = document.createElement('div'); + d.textContent = s; + return d.innerHTML; +} + /* ================================================================ */ /* Multi-run selector */ /* ================================================================ */ diff --git a/src/hotcb/server/static/js/utils.js b/src/hotcb/server/static/js/utils.js index 6d4d8c9..b45cb97 100644 --- a/src/hotcb/server/static/js/utils.js +++ b/src/hotcb/server/static/js/utils.js @@ -10,6 +10,10 @@ async function api(method, path, body) { if (body) opts.body = JSON.stringify(body); try { const r = await fetch(path, opts); + if (!r.ok) { + console.warn('API', r.status, path); + try { return await r.json(); } catch(_) { return null; } + } return await r.json(); } catch (e) { console.error('API error:', path, e); return null; } } diff --git a/src/hotcb/server/static/js/websocket.js b/src/hotcb/server/static/js/websocket.js index 33ff630..58a0ab6 100644 --- a/src/hotcb/server/static/js/websocket.js +++ b/src/hotcb/server/static/js/websocket.js @@ -2,12 +2,18 @@ * hotcb dashboard — WebSocket connection and message handling */ +var _wsRetryCount = 0; +var _wsMaxRetries = 20; +var _slidersInitialized = false; +var _lastSeenMaxStep = 0; // track for run-reset detection + function connectWS() { var proto = location.protocol === 'https:' ? 'wss:' : 'ws:'; var ws = new WebSocket(proto + '//' + location.host + '/ws'); S.ws = ws; ws.onopen = function() { + _wsRetryCount = 0; $('#wsStatus').className = 'status-dot ok'; $('#wsLabel').textContent = 'connected'; ws.send(JSON.stringify({channels: ['metrics', 'applied', 'mutations', 'segments']})); @@ -16,7 +22,11 @@ function connectWS() { ws.onclose = function() { $('#wsStatus').className = 'status-dot error'; $('#wsLabel').textContent = 'disconnected'; - setTimeout(connectWS, 3000); + if (_wsRetryCount < _wsMaxRetries) { + var delay = Math.min(3000 * Math.pow(1.5, _wsRetryCount), 30000); + _wsRetryCount++; + setTimeout(connectWS, delay); + } }; ws.onerror = function() { @@ -32,6 +42,27 @@ function connectWS() { if (!Array.isArray(data)) return; if (ch === 'metrics') { + if (typeof dismissChartWaiting === 'function') dismissChartWaiting(); + // Detect run reset: if incoming steps jump backwards, clear stale state + if (data.length > 0) { + var firstIncoming = data[0].step || 0; + if (_lastSeenMaxStep > 0 && firstIncoming < _lastSeenMaxStep - 10) { + // Steps went backwards — new run started. Flush stale caches. + S.metricsData = {}; + S.appliedData = []; + S.metricNames = new Set(); + S.latestMetrics = {}; + if (typeof _forecastCache !== 'undefined') _forecastCache = {}; + if (typeof _highlightedMutationStep !== 'undefined') _highlightedMutationStep = null; + _lastSeenMaxStep = 0; + _slidersInitialized = false; + var tl = document.getElementById('timelineList'); + if (tl) tl.innerHTML = ''; + if (typeof clearTimelineDedup === 'function') clearTimelineDedup(); + var mc = document.getElementById('mutationCount'); + if (mc) mc.textContent = '0'; + } + } var prevSize = S.metricNames.size; data.forEach(function(rec) { var step = rec.step || 0; @@ -43,9 +74,8 @@ function connectWS() { S.metricNames.add(name); if (!S.metricsData[name]) S.metricsData[name] = []; S.metricsData[name].push({step: step, value: value}); - if (S.metricsData[name].length > 5000) { - S.metricsData[name] = S.metricsData[name].slice(-4000); - } + // No client-side cap — keep all points. + // Downsampling for rendering happens in updateChart(). }); }); if (S.metricNames.size !== prevSize) { @@ -55,12 +85,23 @@ function connectWS() { } updateChart(); computeHealth(); + // Sync slider knobs from initial metrics (once per training session) + if (!_slidersInitialized && data.length > 0) { + _slidersInitialized = true; + var last = data[data.length - 1]; + var lm = last.metrics || {}; + var syncObj = {}; + if (lm.lr && lm.lr > 0) syncObj.lr = lm.lr; + if (lm.weight_decay && lm.weight_decay > 0) syncObj.weight_decay = lm.weight_decay; + if (Object.keys(syncObj).length > 0) syncSlidersFromApplied(syncObj); + } // Update step counter var maxStep = 0; S.metricNames.forEach(function(name) { var pts = S.metricsData[name] || []; if (pts.length) maxStep = Math.max(maxStep, pts[pts.length-1].step); }); + _lastSeenMaxStep = maxStep; var stepEl = document.getElementById('stepValue'); if (stepEl) stepEl.textContent = maxStep; // Trigger forecast refresh on new data @@ -80,9 +121,10 @@ function connectWS() { data.forEach(function(rec) { S.appliedData.push(rec); addTimelineItem(rec); - // Sync slider knobs from applied params - if (rec.params) { - syncSlidersFromApplied(rec.params); + // Sync slider knobs from applied params (check both fields) + var syncParams = rec.params || rec.payload; + if (syncParams) { + syncSlidersFromApplied(syncParams); } }); } diff --git a/src/hotcb/tests/test_hotloss.py b/src/hotcb/tests/test_hotloss.py index a161410..79aa61b 100644 --- a/src/hotcb/tests/test_hotloss.py +++ b/src/hotcb/tests/test_hotloss.py @@ -7,7 +7,7 @@ from hotcb.ops import HotOp -def _make_loss_state(): +def _make_mutable_state(): return {"weights": {}, "terms": {}, "ramps": {}} @@ -18,16 +18,16 @@ def _op(op="set_params", params=None, id="main"): class TestWeightsMutation: def test_distill_w_suffix(self): ctrl = HotLossController() - ls = _make_loss_state() - result = ctrl.apply_op(_op(params={"distill_w": 0.2, "depth_w": 1.5}), {"loss_state": ls}) + ls = _make_mutable_state() + result = ctrl.apply_op(_op(params={"distill_w": 0.2, "depth_w": 1.5}), {"mutable_state": ls}) assert result.decision == "applied" assert ls["weights"]["distill"] == 0.2 assert ls["weights"]["depth"] == 1.5 def test_fallback_to_weights_bucket(self): ctrl = HotLossController() - ls = _make_loss_state() - result = ctrl.apply_op(_op(params={"custom_metric": 0.5}), {"loss_state": ls}) + ls = _make_mutable_state() + result = ctrl.apply_op(_op(params={"custom_metric": 0.5}), {"mutable_state": ls}) assert result.decision == "applied" assert ls["weights"]["custom_metric"] == 0.5 @@ -35,16 +35,16 @@ def test_fallback_to_weights_bucket(self): class TestTermsToggle: def test_terms_dot_prefix(self): ctrl = HotLossController() - ls = _make_loss_state() - result = ctrl.apply_op(_op(params={"terms.aux_depth": False, "terms.aux_heatmap": True}), {"loss_state": ls}) + ls = _make_mutable_state() + result = ctrl.apply_op(_op(params={"terms.aux_depth": False, "terms.aux_heatmap": True}), {"mutable_state": ls}) assert result.decision == "applied" assert ls["terms"]["aux_depth"] is False assert ls["terms"]["aux_heatmap"] is True def test_terms_as_dict(self): ctrl = HotLossController() - ls = _make_loss_state() - result = ctrl.apply_op(_op(params={"terms": {"aux_depth": False, "aux_heatmap": True}}), {"loss_state": ls}) + ls = _make_mutable_state() + result = ctrl.apply_op(_op(params={"terms": {"aux_depth": False, "aux_heatmap": True}}), {"mutable_state": ls}) assert result.decision == "applied" assert ls["terms"]["aux_depth"] is False assert ls["terms"]["aux_heatmap"] is True @@ -53,32 +53,32 @@ def test_terms_as_dict(self): class TestRamps: def test_ramps_dot_prefix(self): ctrl = HotLossController() - ls = _make_loss_state() + ls = _make_mutable_state() ramp_cfg = {"type": "linear", "warmup_frac": 0.2, "end": 2.0} - result = ctrl.apply_op(_op(params={"ramps.depth": ramp_cfg}), {"loss_state": ls}) + result = ctrl.apply_op(_op(params={"ramps.depth": ramp_cfg}), {"mutable_state": ls}) assert result.decision == "applied" assert ls["ramps"]["depth"] == ramp_cfg def test_ramps_as_dict(self): ctrl = HotLossController() - ls = _make_loss_state() + ls = _make_mutable_state() ramp_cfg = {"type": "linear", "end": 2.0} - result = ctrl.apply_op(_op(params={"ramps": {"depth": ramp_cfg}}), {"loss_state": ls}) + result = ctrl.apply_op(_op(params={"ramps": {"depth": ramp_cfg}}), {"mutable_state": ls}) assert result.decision == "applied" assert ls["ramps"]["depth"] == ramp_cfg -class TestMissingLossState: - def test_no_loss_state_in_env(self): +class TestMissingMutableState: + def test_no_mutable_state_in_env(self): ctrl = HotLossController() result = ctrl.apply_op(_op(params={"distill_w": 0.2}), {}) assert result.decision == "failed" - assert result.error == "missing_loss_state" + assert result.error == "missing_mutable_state" - def test_resolve_loss_state_callable(self): + def test_resolve_mutable_state_callable(self): ctrl = HotLossController() - ls = _make_loss_state() - env = {"resolve_loss_state": lambda: ls} + ls = _make_mutable_state() + env = {"resolve_mutable_state": lambda: ls} result = ctrl.apply_op(_op(params={"distill_w": 0.3}), env) assert result.decision == "applied" assert ls["weights"]["distill"] == 0.3 @@ -87,8 +87,8 @@ def test_resolve_loss_state_callable(self): class TestEnableDisable: def test_disabled_handle_skips(self): ctrl = HotLossController() - ls = _make_loss_state() - env = {"loss_state": ls} + ls = _make_mutable_state() + env = {"mutable_state": ls} ctrl.apply_op(HotOp(module="loss", op="disable", id="main"), env) result = ctrl.apply_op(_op(params={"distill_w": 0.2}), env) assert result.decision == "skipped_noop" @@ -97,8 +97,8 @@ def test_disabled_handle_skips(self): def test_re_enable_then_apply(self): ctrl = HotLossController() - ls = _make_loss_state() - env = {"loss_state": ls} + ls = _make_mutable_state() + env = {"mutable_state": ls} ctrl.apply_op(HotOp(module="loss", op="disable", id="main"), env) ctrl.apply_op(HotOp(module="loss", op="enable", id="main"), env) result = ctrl.apply_op(_op(params={"distill_w": 0.2}), env) @@ -114,7 +114,7 @@ class BrokenDict(dict): def setdefault(self, key, default=None): raise RuntimeError("broken") - env = {"loss_state": BrokenDict()} + env = {"mutable_state": BrokenDict()} result = ctrl.apply_op(_op(params={"distill_w": 0.2}), env) assert result.decision == "failed" assert "broken" in result.error @@ -128,7 +128,7 @@ class BrokenDict(dict): def setdefault(self, key, default=None): raise RuntimeError("broken") - env = {"loss_state": BrokenDict()} + env = {"mutable_state": BrokenDict()} result = ctrl.apply_op(_op(params={"distill_w": 0.2}), env) assert result.decision == "failed" assert ctrl.handles["main"].enabled is True @@ -137,8 +137,8 @@ def setdefault(self, key, default=None): class TestStatus: def test_status_structure(self): ctrl = HotLossController() - ls = _make_loss_state() - ctrl.apply_op(_op(params={"distill_w": 0.2}), {"loss_state": ls}) + ls = _make_mutable_state() + ctrl.apply_op(_op(params={"distill_w": 0.2}), {"mutable_state": ls}) status = ctrl.status() assert "main" in status assert status["main"]["enabled"] is True @@ -149,6 +149,6 @@ def test_status_structure(self): class TestUnknownOp: def test_unknown_op_ignored(self): ctrl = HotLossController() - result = ctrl.apply_op(HotOp(module="loss", op="reset", id="main"), {"loss_state": {}}) + result = ctrl.apply_op(HotOp(module="loss", op="reset", id="main"), {"mutable_state": {}}) assert result.decision == "ignored" assert "unknown_op" in (result.notes or "") diff --git a/src/hotcb/tests/test_hottune.py b/src/hotcb/tests/test_hottune.py index 58cbdfd..42aac7b 100644 --- a/src/hotcb/tests/test_hottune.py +++ b/src/hotcb/tests/test_hottune.py @@ -12,7 +12,7 @@ from hotcb.actuators.base import ApplyResult, ValidationResult from hotcb.actuators.optimizer import OptimizerActuator -from hotcb.actuators.loss_state import LossStateActuator +from hotcb.actuators.mutable_state import MutableStateActuator from hotcb.modules.tune.schemas import ( AcceptanceConfig, ActuatorConfig, @@ -48,7 +48,7 @@ def make_env( epoch=1, phase="val", optimizer=None, - loss_state=None, + mutable_state=None, loss=None, metric_fn=None, max_steps=1000, @@ -61,8 +61,8 @@ def make_env( } if optimizer is not None: env["optimizer"] = optimizer - if loss_state is not None: - env["loss_state"] = loss_state + if mutable_state is not None: + env["mutable_state"] = mutable_state if loss is not None: env["loss"] = loss if metric_fn is not None: @@ -184,11 +184,11 @@ def test_lr_bounds_clamping(self): assert opt.param_groups[0]["lr"] == 1.0 # clamped -class TestLossStateActuator: +class TestMutableStateActuator: def test_snapshot_and_restore(self): ls = {"weights": {"main": 1.0, "aux": 0.5}} - env = {"loss_state": ls} - act = LossStateActuator() + env = {"mutable_state": ls} + act = MutableStateActuator() snap = act.snapshot(env) assert snap["weights"]["main"] == 1.0 @@ -199,51 +199,51 @@ def test_snapshot_and_restore(self): assert ls["weights"]["main"] == 1.0 def test_validate_set(self): - act = LossStateActuator(global_bounds=(0.0, 10.0)) + act = MutableStateActuator(global_bounds=(0.0, 10.0)) ls = {"weights": {"main": 1.0}} - env = {"loss_state": ls} + env = {"mutable_state": ls} assert act.validate({"op": "set", "key": "main", "value": 5.0}, env).valid assert not act.validate({"op": "set", "key": "main", "value": 11.0}, env).valid def test_validate_mult_bounds(self): - act = LossStateActuator(global_bounds=(0.0, 10.0)) + act = MutableStateActuator(global_bounds=(0.0, 10.0)) ls = {"weights": {"main": 5.0}} - env = {"loss_state": ls} + env = {"mutable_state": ls} assert not act.validate({"op": "mult", "key": "main", "value": 3.0}, env).valid # 15 > 10 def test_apply_set(self): ls = {"weights": {"main": 1.0}} - env = {"loss_state": ls} - act = LossStateActuator() + env = {"mutable_state": ls} + act = MutableStateActuator() result = act.apply({"op": "set", "key": "main", "value": 2.0}, env) assert result.success assert ls["weights"]["main"] == 2.0 def test_apply_mult(self): ls = {"weights": {"main": 1.0}} - env = {"loss_state": ls} - act = LossStateActuator() + env = {"mutable_state": ls} + act = MutableStateActuator() result = act.apply({"op": "mult", "key": "main", "value": 1.5}, env) assert result.success assert ls["weights"]["main"] == pytest.approx(1.5) def test_apply_delta(self): ls = {"weights": {"main": 1.0}} - env = {"loss_state": ls} - act = LossStateActuator() + env = {"mutable_state": ls} + act = MutableStateActuator() result = act.apply({"op": "delta", "key": "main", "value": 0.3}, env) assert result.success assert ls["weights"]["main"] == pytest.approx(1.3) - def test_apply_missing_loss_state(self): - act = LossStateActuator() + def test_apply_missing_mutable_state(self): + act = MutableStateActuator() result = act.apply({"op": "set", "key": "main", "value": 1.0}, {}) assert not result.success def test_key_bounds(self): - act = LossStateActuator(key_bounds={"main": (0.5, 1.5)}) + act = MutableStateActuator(key_bounds={"main": (0.5, 1.5)}) ls = {"weights": {"main": 1.0}} - env = {"loss_state": ls} + env = {"mutable_state": ls} assert not act.validate({"op": "set", "key": "main", "value": 2.0}, env).valid assert act.validate({"op": "set", "key": "main", "value": 1.2}, env).valid @@ -539,12 +539,12 @@ def test_on_event_active_proposes(self, tmp_path): opt = FakeOptimizer(lr=0.001) ctrl.register_actuator("opt", OptimizerActuator()) ls = {"weights": {"main_w": 1.0}} - ctrl.register_actuator("loss", LossStateActuator()) + ctrl.register_actuator("loss", MutableStateActuator()) def metric_fn(name, default=None): return {"val/loss": 0.5}.get(name, default) - env = make_env(optimizer=opt, loss_state=ls, metric_fn=metric_fn) + env = make_env(optimizer=opt, mutable_state=ls, metric_fn=metric_fn) ctrl.on_event("val_epoch_end", env) assert ctrl.state.mutation_counter >= 1 assert ctrl.state.active_mutation is not None @@ -558,7 +558,7 @@ def test_full_accept_cycle(self, tmp_path): opt = FakeOptimizer(lr=0.001) ls = {"weights": {"main_w": 1.0}} ctrl.register_actuator("opt", OptimizerActuator()) - ctrl.register_actuator("loss", LossStateActuator()) + ctrl.register_actuator("loss", MutableStateActuator()) # First val_epoch_end: proposes and applies mutation metrics_val = [0.5] @@ -568,13 +568,13 @@ def metric_fn(name, default=None): return metrics_val[0] return default - env = make_env(step=100, optimizer=opt, loss_state=ls, metric_fn=metric_fn) + env = make_env(step=100, optimizer=opt, mutable_state=ls, metric_fn=metric_fn) ctrl.on_event("val_epoch_end", env) assert ctrl.state.active_segment is not None # Second val_epoch_end: evaluates the segment metrics_val[0] = 0.3 # improvement - env = make_env(step=200, optimizer=opt, loss_state=ls, metric_fn=metric_fn) + env = make_env(step=200, optimizer=opt, mutable_state=ls, metric_fn=metric_fn) ctrl.on_event("val_epoch_end", env) # Segment should have been evaluated @@ -590,7 +590,7 @@ def test_full_reject_and_rollback_cycle(self, tmp_path): opt = FakeOptimizer(lr=0.001) ls = {"weights": {"main_w": 1.0}} ctrl.register_actuator("opt", OptimizerActuator()) - ctrl.register_actuator("loss", LossStateActuator()) + ctrl.register_actuator("loss", MutableStateActuator()) original_lr = opt.param_groups[0]["lr"] @@ -601,13 +601,13 @@ def metric_fn(name, default=None): return metrics_val[0] return default - env = make_env(step=100, optimizer=opt, loss_state=ls, metric_fn=metric_fn) + env = make_env(step=100, optimizer=opt, mutable_state=ls, metric_fn=metric_fn) ctrl.on_event("val_epoch_end", env) assert ctrl.state.active_segment is not None # Regression metrics_val[0] = 0.6 - env = make_env(step=200, optimizer=opt, loss_state=ls, metric_fn=metric_fn) + env = make_env(step=200, optimizer=opt, mutable_state=ls, metric_fn=metric_fn) ctrl.on_event("val_epoch_end", env) assert len(ctrl.state.history) == 1 @@ -773,7 +773,7 @@ def test_suggest_does_not_apply_mutation(self, tmp_path): opt = FakeOptimizer(lr=0.001) ls = {"weights": {"main_w": 1.0}} ctrl.register_actuator("opt", OptimizerActuator()) - ctrl.register_actuator("loss", LossStateActuator()) + ctrl.register_actuator("loss", MutableStateActuator()) original_lr = opt.param_groups[0]["lr"] original_w = ls["weights"]["main_w"] @@ -781,7 +781,7 @@ def test_suggest_does_not_apply_mutation(self, tmp_path): def metric_fn(name, default=None): return {"val/loss": 0.5}.get(name, default) - env = make_env(optimizer=opt, loss_state=ls, metric_fn=metric_fn) + env = make_env(optimizer=opt, mutable_state=ls, metric_fn=metric_fn) ctrl.on_event("val_epoch_end", env) # Mutation should be logged as suggested @@ -940,7 +940,7 @@ def _run_simulation(self, tmp_path, loss_surface, num_epochs=10): opt = FakeOptimizer(lr=0.001) ls = {"weights": {"main_w": 1.0}} ctrl.register_actuator("opt", OptimizerActuator()) - ctrl.register_actuator("loss", LossStateActuator()) + ctrl.register_actuator("loss", MutableStateActuator()) for epoch in range(num_epochs): step = epoch * 100 @@ -953,7 +953,7 @@ def metric_fn(name, default=None, _loss=current_loss): env = make_env( step=step, epoch=epoch, optimizer=opt, - loss_state=ls, loss=current_loss, + mutable_state=ls, loss=current_loss, metric_fn=metric_fn, max_steps=num_epochs * 100, ) ctrl.on_event("val_epoch_end", env) @@ -995,7 +995,7 @@ def test_instability_blocks(self, tmp_path): ctrl.state.mode = "active" opt = FakeOptimizer(lr=0.001) ctrl.register_actuator("opt", OptimizerActuator()) - ctrl.register_actuator("loss", LossStateActuator()) + ctrl.register_actuator("loss", MutableStateActuator()) env = make_env(step=100, optimizer=opt, loss=float("nan")) ctrl.on_event("val_epoch_end", env) @@ -1016,7 +1016,7 @@ def test_delayed_reward(self, tmp_path): opt = FakeOptimizer(lr=0.001) ls = {"weights": {"main_w": 1.0}} ctrl.register_actuator("opt", OptimizerActuator()) - ctrl.register_actuator("loss", LossStateActuator()) + ctrl.register_actuator("loss", MutableStateActuator()) for i, loss_val in enumerate(losses): def metric_fn(name, default=None, _v=loss_val): @@ -1024,7 +1024,7 @@ def metric_fn(name, default=None, _v=loss_val): env = make_env( step=i * 100, epoch=i, optimizer=opt, - loss_state=ls, loss=loss_val, metric_fn=metric_fn, + mutable_state=ls, loss=loss_val, metric_fn=metric_fn, ) ctrl.on_event("val_epoch_end", env) @@ -1070,14 +1070,14 @@ def test_rollback_failure_logged(self, tmp_path): opt = FakeOptimizer(lr=0.001) ls = {"weights": {"main_w": 1.0}} ctrl.register_actuator("opt", OptimizerActuator()) - ctrl.register_actuator("loss", LossStateActuator()) + ctrl.register_actuator("loss", MutableStateActuator()) metrics_val = [0.5] def metric_fn(name, default=None): return metrics_val[0] if name == "val/loss" else default - env = make_env(step=100, optimizer=opt, loss_state=ls, metric_fn=metric_fn) + env = make_env(step=100, optimizer=opt, mutable_state=ls, metric_fn=metric_fn) ctrl.on_event("val_epoch_end", env) if ctrl.state.active_segment: @@ -1099,9 +1099,9 @@ def test_missing_metric_fn(self, tmp_path): opt = FakeOptimizer(lr=0.001) ls = {"weights": {"main_w": 1.0}} ctrl.register_actuator("opt", OptimizerActuator()) - ctrl.register_actuator("loss", LossStateActuator()) + ctrl.register_actuator("loss", MutableStateActuator()) - env = make_env(step=100, optimizer=opt, loss_state=ls) + env = make_env(step=100, optimizer=opt, mutable_state=ls) # No metric_fn in env ctrl.on_event("val_epoch_end", env) # Should not crash, may or may not propose @@ -1163,15 +1163,15 @@ def test_validate_missing_value(self): assert any("missing value" in e for e in result.errors) def test_loss_actuator_validate_missing_key(self): - act = LossStateActuator() - env = {"loss_state": {"weights": {}}} + act = MutableStateActuator() + env = {"mutable_state": {"weights": {}}} result = act.validate({"op": "set", "value": 1.0}, env) assert not result.valid assert any("missing key" in e for e in result.errors) def test_loss_actuator_validate_non_numeric(self): - act = LossStateActuator() - env = {"loss_state": {"weights": {}}} + act = MutableStateActuator() + env = {"mutable_state": {"weights": {}}} result = act.validate({"op": "set", "key": "x", "value": "bad"}, env) assert not result.valid diff --git a/src/hotcb/tests/test_integration_lightning.py b/src/hotcb/tests/test_integration_lightning.py index ac5b962..c6f8fd8 100644 --- a/src/hotcb/tests/test_integration_lightning.py +++ b/src/hotcb/tests/test_integration_lightning.py @@ -160,16 +160,16 @@ def test_replay_same_lr_change(self, tmp_path): assert len(replay_applied) >= 1 -class TestLossStateMutation: - def test_loss_state_changed(self, tmp_path): +class TestMutableStateMutation: + def test_mutable_state_changed(self, tmp_path): run_dir = str(tmp_path / "run_loss") os.makedirs(run_dir, exist_ok=True) _write_commands(run_dir, {"module": "loss", "op": "set_params", "id": "main", "params": {"distill_w": 0.5}}) - loss_state = {"weights": {}, "terms": {}, "ramps": {}} + mutable_state = {"weights": {}, "terms": {}, "ramps": {}} kernel = HotKernel(run_dir=run_dir, debounce_steps=1) - adapter = HotCBLightning(kernel=kernel, loss_state=loss_state) + adapter = HotCBLightning(kernel=kernel, mutable_state=mutable_state) model = TinyModel() trainer = pl.Trainer( @@ -179,7 +179,7 @@ def test_loss_state_changed(self, tmp_path): ) trainer.fit(model) - assert loss_state["weights"]["distill"] == 0.5 + assert mutable_state["weights"]["distill"] == 0.5 ledger = _read_ledger(run_dir) loss_applied = [e for e in ledger if e.get("module") == "loss" and e.get("decision") == "applied"] diff --git a/src/hotcb/tests/test_kernel_core.py b/src/hotcb/tests/test_kernel_core.py index 833a1f0..5356ef5 100644 --- a/src/hotcb/tests/test_kernel_core.py +++ b/src/hotcb/tests/test_kernel_core.py @@ -175,17 +175,17 @@ def test_route_to_opt(self, run_dir, make_env, write_commands, read_ledger): def test_route_to_loss(self, run_dir, make_env, write_commands, read_ledger): """Ops with module='loss' reach the loss controller.""" - loss_state = {"weights": {}, "terms": {}, "ramps": {}} + mutable_state = {"weights": {}, "terms": {}, "ramps": {}} write_commands({"module": "loss", "op": "set_params", "params": {"kl_w": 0.5}}) kernel = HotKernel(run_dir, debounce_steps=1) - env = make_env(step=1, loss_state=loss_state) + env = make_env(step=1, mutable_state=mutable_state) kernel.apply(env, ["step"]) ledger = read_ledger() assert len(ledger) == 1 assert ledger[0]["decision"] == "applied" assert ledger[0]["module"] == "loss" - assert loss_state["weights"]["kl"] == 0.5 + assert mutable_state["weights"]["kl"] == 0.5 def test_route_to_core(self, run_dir, make_env, write_commands, read_ledger): """Ops with module='core' are handled by the kernel itself.""" diff --git a/src/hotcb/tests/test_new_features.py b/src/hotcb/tests/test_new_features.py index e0ae0dc..d08172c 100644 --- a/src/hotcb/tests/test_new_features.py +++ b/src/hotcb/tests/test_new_features.py @@ -187,13 +187,13 @@ def test_opt_set_params_failure_has_traceback(self): def test_loss_set_params_failure_has_traceback(self): """HotLossController.set_params failure produces a result with traceback.""" ctrl = HotLossController() - # Give a loss_state where _apply_params will raise due to non-dict value - # We force an error by patching the loss_state to raise on setdefault - class BadLossState(dict): + # Give a mutable_state where _apply_params will raise due to non-dict value + # We force an error by patching the mutable_state to raise on setdefault + class BadMutableState(dict): def setdefault(self, key, default=None): raise TypeError("intentional error for test") - env = {"loss_state": BadLossState()} + env = {"mutable_state": BadMutableState()} op = HotOp(module="loss", op="set_params", params={"kl_w": 0.5}) result = ctrl.apply_op(op, env) assert result.decision == "failed" @@ -226,7 +226,7 @@ def test_kernel_ledger_has_traceback_on_loss_failure( ): """When loss set_params fails through the kernel, ledger entry has traceback.""" - class BadLossState(dict): + class BadMutableState(dict): def setdefault(self, key, default=None): raise TypeError("intentional error for test") @@ -236,7 +236,7 @@ def setdefault(self, key, default=None): "params": {"kl_w": 0.5}, }) kernel = HotKernel(run_dir=run_dir, debounce_steps=1) - env = make_env(step=1, loss_state=BadLossState()) + env = make_env(step=1, mutable_state=BadMutableState()) kernel.apply(env, ["train_step_end"]) ledger = read_ledger() diff --git a/src/hotcb/tests/test_robustness.py b/src/hotcb/tests/test_robustness.py index 6557f43..d90c239 100644 --- a/src/hotcb/tests/test_robustness.py +++ b/src/hotcb/tests/test_robustness.py @@ -58,19 +58,23 @@ def test_jsonl_partial_line(run_dir, make_env, read_ledger): assert isinstance(ledger, list) # no crash -def test_read_new_jsonl_partial_line_raises(): - """read_new_jsonl itself must raise json.JSONDecodeError on malformed JSON.""" +def test_read_new_jsonl_skips_malformed_lines(): + """read_new_jsonl should skip malformed JSON lines instead of raising.""" import tempfile with tempfile.NamedTemporaryFile(mode="w", suffix=".jsonl", delete=False) as f: f.write(json.dumps({"module": "opt", "op": "enable"}) + "\n") - f.write('{"module":"opt"\n') + f.write('{"module":"opt"\n') # malformed + f.write(json.dumps({"module": "loss", "op": "set_params"}) + "\n") path = f.name try: cursor = FileCursor(path=path, offset=0) - with pytest.raises(json.JSONDecodeError): - read_new_jsonl(cursor) + records, _ = read_new_jsonl(cursor) + # Should get 2 valid records, malformed line skipped + assert len(records) == 2 + assert records[0]["module"] == "opt" + assert records[1]["module"] == "loss" finally: os.unlink(path) diff --git a/src/hotcb/util.py b/src/hotcb/util.py index a25466b..5d103b3 100644 --- a/src/hotcb/util.py +++ b/src/hotcb/util.py @@ -55,16 +55,25 @@ def read_new_jsonl(cursor: FileCursor, max_lines: int = 10_000) -> Tuple[List[di s = line.strip() if not s: continue - out.append(json.loads(s)) + try: + out.append(json.loads(s)) + except json.JSONDecodeError: + continue new_offset = f.tell() return out, FileCursor(path=cursor.path, offset=new_offset) def append_jsonl(path: str, obj: dict) -> None: - """Append a single JSON object to a JSONL file (creates parent dirs).""" + """Append a single JSON object as a line to a JSONL file (with file locking).""" + import fcntl ensure_dir(os.path.dirname(path)) + line = json.dumps(sanitize_floats(obj), ensure_ascii=False) + "\n" with open(path, "a", encoding="utf-8") as f: - f.write(json.dumps(obj, ensure_ascii=False) + "\n") + fcntl.flock(f, fcntl.LOCK_EX) + try: + f.write(line) + finally: + fcntl.flock(f, fcntl.LOCK_UN) def dedupe_keep_order(items: Iterable[Any]) -> List[Any]: @@ -82,6 +91,20 @@ def dedupe_keep_order(items: Iterable[Any]) -> List[Any]: return out +def sanitize_floats(obj: Any) -> Any: + """Replace NaN/inf/-inf with None recursively in dicts/lists for JSON safety.""" + import math + if isinstance(obj, float): + if math.isnan(obj) or math.isinf(obj): + return None + return obj + if isinstance(obj, dict): + return {k: sanitize_floats(v) for k, v in obj.items()} + if isinstance(obj, (list, tuple)): + return [sanitize_floats(v) for v in obj] + return obj + + def now() -> float: """Epoch seconds helper.""" return time.time() From 6fd04913a162958eb6dc8a7247547513299c8d0a Mon Sep 17 00:00:00 2001 From: sidphbot Date: Sun, 15 Mar 2026 01:46:37 +0100 Subject: [PATCH 09/11] refactor --- .claude/plans/dapper-baking-spark.md | 617 +++++++++++ .claude/plans/unified-actuator-config.md | 971 ++++++++++++++++++ .coverage | Bin 696320 -> 778240 bytes CLAUDE.md | 18 +- docs/concepts.md | 4 +- docs/custom_training_configs.md | 12 +- docs/modules/hottune.md | 48 +- src/hotcb/actuators/__init__.py | 153 ++- src/hotcb/actuators/actuator.py | 137 +++ src/hotcb/actuators/mutable_state.py | 141 --- src/hotcb/actuators/optimizer.py | 194 ---- src/hotcb/actuators/state.py | 179 ++++ src/hotcb/adapters/hf.py | 10 + src/hotcb/adapters/lightning.py | 101 +- src/hotcb/demo.py | 16 +- src/hotcb/finetune_demo.py | 19 +- src/hotcb/golden_demo.py | 18 +- src/hotcb/kernel.py | 144 ++- src/hotcb/modules/__init__.py | 2 - src/hotcb/modules/loss.py | 137 --- src/hotcb/modules/opt.py | 242 ----- src/hotcb/server/ai_engine.py | 22 +- src/hotcb/server/api.py | 12 +- src/hotcb/server/app.py | 172 +++- src/hotcb/server/autopilot.py | 19 +- src/hotcb/server/config.py | 401 ++++++++ src/hotcb/server/launcher.py | 83 +- src/hotcb/server/static/css/dashboard.css | 73 +- src/hotcb/server/static/index.html | 71 +- src/hotcb/server/static/js/charts.js | 144 ++- src/hotcb/server/static/js/controls.js | 486 +++++---- src/hotcb/server/static/js/init.js | 80 +- src/hotcb/server/static/js/panels.js | 189 +++- src/hotcb/server/static/js/state.js | 19 +- src/hotcb/server/static/js/websocket.js | 9 +- src/hotcb/server/tailer.py | 6 +- src/hotcb/tests/test_actuator_unified.py | 786 ++++++++++++++ src/hotcb/tests/test_dashboard_config.py | 705 +++++++++++++ src/hotcb/tests/test_freeze_modes.py | 11 +- src/hotcb/tests/test_hotloss.py | 461 ++++++--- src/hotcb/tests/test_hotopt.py | 345 ++++--- src/hotcb/tests/test_hottune.py | 317 +++++- src/hotcb/tests/test_integration_lightning.py | 12 +- src/hotcb/tests/test_kernel_core.py | 48 +- src/hotcb/tests/test_new_features.py | 137 ++- src/hotcb/tests/test_server_app.py | 197 ++++ src/hotcb/util.py | 36 +- 47 files changed, 6346 insertions(+), 1658 deletions(-) create mode 100644 .claude/plans/dapper-baking-spark.md create mode 100644 .claude/plans/unified-actuator-config.md create mode 100644 src/hotcb/actuators/actuator.py delete mode 100644 src/hotcb/actuators/mutable_state.py delete mode 100644 src/hotcb/actuators/optimizer.py create mode 100644 src/hotcb/actuators/state.py delete mode 100644 src/hotcb/modules/loss.py delete mode 100644 src/hotcb/modules/opt.py create mode 100644 src/hotcb/server/config.py create mode 100644 src/hotcb/tests/test_actuator_unified.py create mode 100644 src/hotcb/tests/test_dashboard_config.py diff --git a/.claude/plans/dapper-baking-spark.md b/.claude/plans/dapper-baking-spark.md new file mode 100644 index 0000000..5e43fbb --- /dev/null +++ b/.claude/plans/dapper-baking-spark.md @@ -0,0 +1,617 @@ +# Holistic Dashboard Stabilization — MutableState Redesign + +## Context + +The dashboard has drifted from hotcb's core principle: **the training framework is +sacred — hook onto it, never alter it.** The split into opt/loss/cb modules creates +hardcoded assumptions at every layer. External projects can't add custom controls +without fitting into one of 3 buckets. Ramps, terms, and custom signals get filtered +out at `kernel.py:263` because they don't match any module. + +**The fix:** Unify all mutable params into a single `MutableState` container with +per-param `HotcbActuator` instances. Each actuator has a user-provided `apply_fn`, +a metrics link for verification, and a state machine (INIT→UNTOUCHED→UNVERIFIED→ +VERIFIED→DISABLED). The user declares this on their model; the kernel discovers it +at first step; the dashboard generates controls from it. + +**Key decisions:** +- Existing opt/loss/cb modules become **thin wrappers** delegating to MutableState (backward compat) +- Verification window is **configurable per-actuator** (default 5 steps) +- Built-in `apply_fn` helpers provided for common cases (optimizer lr, wd, etc.) + +--- + +## Phase A: Foundation Bug Fixes + +Fix known bugs before any architectural changes. + +### A1: FileCursor deduplication +- `src/hotcb/modules/cb/util.py:12-35` — stale copy missing `last_size`/`truncated` +- Replace with re-exports from `hotcb.util` + +### A2: `_applied_cache` stale after reset +- `app.py:659` — add size-0 early return + `_clear_applied_cache()` function +- `launcher.py` reset endpoint calls cache clear + +### A3: `_resolve_active_run_dir` unreliable mtime +- `app.py:727` — sort by `hotcb.metrics.jsonl` mtime, not dir mtime + +### A4: Forecast gated on pinned metrics +- `charts.js:1040` — auto-select first 3 metrics if none pinned + +**Tests first** (`src/hotcb/tests/test_server_stability.py` — NEW): +``` +test_cb_util_reexports_canonical_filecursor +test_read_new_jsonl_detects_truncation +test_applied_summary_empty_file_returns_empty +test_applied_summary_cache_invalidated +test_resolve_uses_metrics_file_mtime +test_resolve_skips_backup_dirs +test_resolve_direct_metrics_returns_root +test_forecast_endpoint_returns_data +``` + +**Files:** `modules/cb/util.py`, `server/app.py`, `server/launcher.py`, `static/js/charts.js` + +--- + +## Phase B: `MutableState` + `HotcbActuator` Core + +The heart of the redesign. Defines the unified control plane data model. + +### `HotcbActuator` — 1 param ↔ 1 actuator + +```python +# src/hotcb/mutable_state.py (NEW) + +class ActuatorState(str, Enum): + INIT = "init" # declared but kernel hasn't seen it + UNTOUCHED = "untouched" # kernel discovered, populated current_value + UNVERIFIED = "unverified" # mutation applied, waiting for metrics verification + VERIFIED = "verified" # metrics confirmed change took effect + DISABLED = "disabled" # verification failed — grayed out in UI + +@dataclass +class Mutation: + step: int + old_value: Any + new_value: Any + verified: bool = False + verify_deadline: int = 0 # step by which verification must happen + +@dataclass +class HotcbActuator: + param_key: str # unique name: "lr", "weight_a", "temperature" + type: str # "float", "int", "bool", "choice" + apply_fn: Callable # user-provided: actually mutates the value + metrics_dict_name: str # key in env["metrics"] for verification + current_value: Any = None # INIT or last known + default_value: Any = None # initial/reset value + last_changed: int = -1 # step of last verified change (-1 = never) + state: ActuatorState = ActuatorState.INIT + mutations: List[Mutation] = field(default_factory=list) + verification_window: int = 5 # steps to wait before DISABLED + bounds: tuple = None # (min, max) for float/int + choices: list = None # for "choice" type + scale: str = "linear" # "linear" or "log10" for UI slider + label: str = "" # display label (defaults to param_key) + group: str = "" # visual grouping hint + + def to_spec(self) -> dict: + """Serialize for /api/controls — dashboard reads this.""" + return { + "param_key": self.param_key, + "label": self.label or self.param_key, + "type": self.type, + "scale": self.scale, + "bounds": list(self.bounds) if self.bounds else None, + "choices": self.choices, + "current_value": self.current_value, + "default_value": self.default_value, + "state": self.state.value, + "group": self.group, + } +``` + +### `MutableState` container + +```python +class MutableState: + actuators: Dict[str, HotcbActuator] # keyed by param_key + + def init_datastructures(self, metrics: dict): + """Called by kernel at first step. Verify metrics links, populate values.""" + for act in self.actuators.values(): + if act.metrics_dict_name in metrics: + act.current_value = metrics[act.metrics_dict_name] + act.state = ActuatorState.UNTOUCHED + # If metrics_dict_name not found, stay INIT (warn but don't disable yet) + + def change(self, param_key: str, new_value: Any, at_step: int): + """Apply mutation via actuator's apply_fn. Mark UNVERIFIED.""" + act = self.actuators[param_key] + if act.state == ActuatorState.DISABLED: + raise ValueError(f"Actuator {param_key} is disabled") + old = act.current_value + act.apply_fn(new_value) + act.mutations.append(Mutation( + step=at_step, old_value=old, new_value=new_value, + verify_deadline=at_step + act.verification_window + )) + act.current_value = new_value + act.state = ActuatorState.UNVERIFIED + + def verify_pending(self, metrics: dict, current_step: int): + """Called each step by kernel. Check metrics for verification.""" + for act in self.actuators.values(): + if act.state != ActuatorState.UNVERIFIED: + continue + pending = [m for m in act.mutations if not m.verified] + if not pending: + continue + latest = pending[-1] + metric_val = metrics.get(act.metrics_dict_name) + if metric_val is not None and metric_val != latest.old_value: + latest.verified = True + act.state = ActuatorState.VERIFIED + act.last_changed = current_step + elif current_step >= latest.verify_deadline: + act.state = ActuatorState.DISABLED + + def snapshot(self) -> dict: + """For rollback / recipe export.""" + return {k: act.current_value for k, act in self.actuators.items()} + + def get_specs(self) -> list: + """For dashboard /api/controls.""" + return [act.to_spec() for act in self.actuators.values()] +``` + +### Built-in `apply_fn` helpers + +```python +# src/hotcb/mutable_state.py — convenience functions + +def apply_optimizer_lr(optimizer, param_group_idx=0): + """Returns an apply_fn for optimizer learning rate.""" + def _apply(value): + for pg in optimizer.param_groups: + pg["lr"] = value + return _apply + +def apply_optimizer_wd(optimizer): + def _apply(value): + for pg in optimizer.param_groups: + pg["weight_decay"] = value + return _apply + +def apply_dict_key(target_dict, key): + """Returns an apply_fn for a dict key (e.g., loss weights).""" + def _apply(value): + target_dict[key] = value + return _apply + +def apply_attr(obj, attr_name): + """Returns an apply_fn for an object attribute.""" + def _apply(value): + setattr(obj, attr_name, value) + return _apply +``` + +### User-facing factory + +```python +def mutable_state(actuators: List[HotcbActuator]) -> MutableState: + """Create a MutableState from a list of actuators.""" + ms = MutableState() + ms.actuators = {a.param_key: a for a in actuators} + return ms +``` + +### User integration example + +```python +class MyModel(pl.LightningModule): + def __init__(self): + super().__init__() + # ... model layers ... + self.mutable_state = hotcb.mutable_state([ + HotcbActuator( + param_key="lr", type="float", scale="log10", + apply_fn=hotcb.apply_optimizer_lr(self.optimizer), + metrics_dict_name="lr", + bounds=(1e-7, 1.0), default_value=3e-4, + ), + HotcbActuator( + param_key="temperature", type="float", + apply_fn=hotcb.apply_attr(self, "temperature"), + metrics_dict_name="temperature", + bounds=(0.1, 10.0), default_value=1.0, + verification_window=10, # slow metric, give more time + ), + ]) +``` + +**Tests first** (`src/hotcb/tests/test_mutable_state.py` — NEW): +``` +test_actuator_state_machine_init_to_untouched +test_actuator_state_machine_untouched_to_unverified +test_actuator_state_machine_verified_on_metric_change +test_actuator_state_machine_disabled_on_timeout +test_mutable_state_init_from_metrics +test_mutable_state_change_calls_apply_fn +test_mutable_state_verify_pending_marks_verified +test_mutable_state_verify_pending_marks_disabled +test_mutable_state_snapshot +test_mutable_state_get_specs +test_builtin_apply_optimizer_lr +test_builtin_apply_optimizer_wd +test_builtin_apply_dict_key +test_builtin_apply_attr +test_mutable_state_disabled_rejects_change +test_actuator_custom_verification_window +test_mutable_state_multiple_mutations_same_param +``` + +**Files:** `src/hotcb/mutable_state.py` (NEW) + +--- + +## Phase C: Kernel Integration + Module Wrappers + +Wire `MutableState` into the kernel and make opt/loss/cb thin wrappers. + +### Kernel changes (`kernel.py`) + +1. **Discovery at first step:** In `apply()`, after first `_should_poll()`, check + `env` for `mutable_state` attribute on model/trainer objects. If found, store + reference and call `mutable_state.init_datastructures(env.get("metrics", {}))`. + +2. **Default module for MutableState commands:** At `kernel.py:263`, instead of + `unknown_module` error, route to MutableState if param_key matches a known actuator: + ```python + # After existing module lookup fails: + if self._mutable_state and op.params: + for key in op.params: + if key in self._mutable_state.actuators: + # Route through MutableState + self._mutable_state.change(key, op.params[key], current_step) + self._write_ledger(op, event, step, decision="applied", ...) + return + ``` + +3. **Verification each step:** After applying ops, call + `self._mutable_state.verify_pending(env.get("metrics", {}), current_step)` + +4. **Controls endpoint data source:** Add `kernel.get_control_specs()` that returns + `self._mutable_state.get_specs()` for the dashboard. + +### Thin wrappers for backward compat + +**opt module** (`modules/opt.py`): +- `apply_op()` still works for `{"module": "opt", "op": "set_params", "params": {"lr": 0.001}}` +- Internally delegates: if MutableState has an actuator for "lr", calls + `mutable_state.change("lr", 0.001, step)` instead of direct optimizer mutation +- If no MutableState, falls back to current direct optimizer mutation (legacy path) + +**loss module** (`modules/loss.py`): +- Same pattern: delegates to MutableState for known keys, falls back to direct + mutable_state dict mutation for legacy projects + +**cb module** (`modules/cb/`): +- Unchanged — callbacks are a different beast (load/unload/enable/disable). + But `set_params` can optionally delegate to MutableState if the callback + registered its params there. + +### Command format + +Dashboard sends: `POST /api/controls/apply {"changes": {"lr": 0.001, "temperature": 0.5}}` + +Server writes to `hotcb.commands.jsonl`: +```json +{"module": "mutable", "op": "set_params", "params": {"lr": 0.001, "temperature": 0.5}} +``` + +Kernel routes to MutableState default module handler. + +**Tests first** (`src/hotcb/tests/test_kernel_mutable.py` — NEW): +``` +test_kernel_discovers_mutable_state_at_first_step +test_kernel_routes_mutable_command +test_kernel_verifies_pending_each_step +test_kernel_opt_wrapper_delegates_to_mutable_state +test_kernel_loss_wrapper_delegates_to_mutable_state +test_kernel_legacy_opt_without_mutable_state +test_kernel_legacy_loss_without_mutable_state +test_kernel_unknown_param_key_fails_gracefully +test_kernel_disabled_actuator_rejects_command +test_kernel_get_control_specs +``` + +**Files:** `kernel.py`, `modules/opt.py`, `modules/loss.py` + +--- + +## Phase D: DashboardConfig + `/api/config` + `/api/controls` + +### DashboardConfig (`src/hotcb/server/config.py` — NEW) + +```python +@dataclass +class ServerConfig: + host: str = "0.0.0.0" + port: int = 8421 + poll_interval: float = 0.5 + ws_initial_burst: int = 500 + +@dataclass +class ChartConfig: + max_render_points: int = 2000 + line_tension: float = 0.15 + +@dataclass +class UIConfig: + state_save_interval: int = 5000 + alert_poll_interval: int = 15000 + forecast_poll_interval: int = 10000 + forecast_step_cadence: int = 20 + staged_change_threshold: float = 0.005 + +@dataclass +class DashboardConfig: + server: ServerConfig + chart: ChartConfig + ui: UIConfig + run_dir: str = "" + demo_mode: bool = False +``` + +### API endpoints + +- `GET /api/config` — returns `DashboardConfig` as JSON (frontend stores in `S.config`) +- `GET /api/controls` — returns `mutable_state.get_specs()` (actuator list with types, bounds, state) +- `POST /api/controls/apply` — accepts `{"changes": {key: value}}`, writes to commands.jsonl + +**Tests first** (`src/hotcb/tests/test_dashboard_config.py` — NEW): +``` +test_dashboard_config_defaults +test_config_endpoint_returns_full +test_controls_endpoint_returns_actuator_specs +test_controls_endpoint_without_mutable_state (returns empty/defaults) +test_controls_apply_writes_command +test_controls_apply_diff_only (0.5% threshold) +``` + +**Files:** `server/config.py` (NEW), `server/app.py`, `server/api.py` + +--- + +## Phase E: Dynamic Control Generation (Frontend) + +Replace hardcoded knob HTML with type-based templates generated from `/api/controls`. + +### Templates per actuator type + +| Actuator type | UI Template | +|---------------|-------------| +| `float + log10` | Range slider with log transform + exponential display | +| `float + linear` | Range slider with direct value + decimal display | +| `int` | Range slider with integer step | +| `bool` | Toggle switch | +| `choice` | Select dropdown | + +### Changes + +**`index.html`:** +- Remove hardcoded knob rows (~lines 360-408) +- Keep: `
` + Apply/Schedule buttons +- Remove CSS classes: `single-loss-only`, `multitask-only`, `finetune-only` + +**`controls.js`:** +- Add `buildControlsFromSpecs(specs)` — iterates specs, calls `buildKnobRow(spec)` +- Add `buildKnobRow(spec)` — creates slider/toggle/dropdown based on `spec.type` +- Each row shows actuator state: normal=VERIFIED, spinner=UNVERIFIED, grayed=DISABLED +- Apply handler: read all `[data-param]` inputs, diff against applied values, + POST to `/api/controls/apply` with changed params only +- Remove `_trainConfigDefaults`, `_updateConfigControls()`, all module-specific routing +- `demo_mode === false` → hide Training config dropdown row only (not entire card) + +**`init.js`:** +- Fetch `S.config = await api('GET', '/api/config')` at startup +- Fetch controls: `var specs = await api('GET', '/api/controls'); buildControlsFromSpecs(specs);` + +**`state.js`:** +- Add `S.config = null` + +**Actuator state in UI:** +- INIT: not shown (controls buffered until discovered) +- UNTOUCHED: normal slider, label shows "ready" +- UNVERIFIED: subtle pulse/spinner on the control row +- VERIFIED: solid, normal appearance +- DISABLED: grayed out, tooltip "Verification failed — param may not be mutable" + +**Tests (manual verification checklist):** +``` +hotcb demo → lr, wd, loss_w generated dynamically, all VERIFIED +hotcb demo --golden → lr, wd, weight_a, weight_b generated +hotcb serve --dir → controls from MutableState (or defaults) +Apply lr change → slider shows UNVERIFIED → VERIFIED after metric confirms +Apply broken param → shows UNVERIFIED → DISABLED after timeout +``` + +**Files:** `static/index.html`, `static/js/controls.js`, `static/js/init.js`, +`static/js/state.js`, `static/css/dashboard.css` + +--- + +## Phase F: Launcher Simplification + +**Principle:** Train function accepts minimal args. `max_steps`/`step_delay` are demo concerns. + +Use `inspect.signature` to detect arity: +- 0 args: `fn()` — fully external +- 1 arg: `fn(stop_event)` — respects stop signal +- 2 args: `fn(run_dir, stop_event)` — needs IPC dir +- 4 args: `fn(run_dir, max_steps, step_delay, stop_event)` — demo contract + +**Tests first:** +``` +test_launch_zero_arg_fn +test_launch_one_arg_fn +test_launch_two_arg_fn +test_launch_four_arg_backward_compat +``` + +**Files:** `launch.py`, `server/launcher.py` + +--- + +## Phase G: Metric UI Fixes + +### G1: Tooltip = non-interactive color sphere +Chart tooltip shows filled circle with `pointer-events: none`. Read-only color ref. + +### G2: Explicit pin button in metrics dropdown +Each dropdown item: `[dot] [name] [...] [pin-btn]` +- Dot: click toggles visibility (filled/hollow) +- Pin button: always visible, outline pushpin when unpinned, filled when pinned +- Click pin → `toggleMetricCard(name)` + +### G3: Persistent end-of-run summary pane +- Add "Summary" tab to left column tabs (index.html) +- On run complete: auto-save summary to `hotcb.run.summary.json`, populate Summary tab +- Tab persists — always accessible, not a dismissible popup +- `GET /api/run/summary` endpoint + +**Tests first:** +``` +test_run_summary_auto_saved +test_run_summary_endpoint +``` + +**Files:** `charts.js`, `panels.js`, `index.html`, `dashboard.css`, `app.py`, `launcher.py` + +--- + +## Phase H: External Golden Demo + Comprehensive Tests + +### External golden demo (`src/hotcb/tests/external_golden_demo.py` — NEW) + +Self-contained script that behaves exactly like an external project: +1. Isolated temp dir +2. Creates model with `mutable_state = hotcb.mutable_state([...])` +3. Registers custom actuators: `"alpha"`, `"beta"`, `"temperature"` (not standard names) +4. Uses built-in `apply_fn` helpers where applicable +5. Runs 50 steps with HotKernel +6. Returns run_dir for test verification + +### Integration tests (`src/hotcb/tests/test_external_integration.py` — NEW) + +``` +# Discovery +test_external_controls_discovered — /api/controls returns custom actuators +test_external_controls_have_bounds — specs have correct bounds +test_external_controls_show_state — UNTOUCHED initially, VERIFIED after change + +# Command flow +test_external_apply_custom_control — POST apply with alpha=0.5 +test_external_apply_triggers_verification — state goes UNVERIFIED → VERIFIED +test_external_apply_broken_param_disables — bad metrics_dict_name → DISABLED + +# Dashboard +test_external_demo_mode_false — Training config hidden, controls visible +test_external_capabilities_detected — capabilities endpoint works + +# Randomized +test_controls_random_float_names — random names +test_controls_random_types — mix of float, int, bool, choice +test_controls_random_bounds — random bound ranges + +# Both demo variants +test_builtin_demo_controls_match — built-in demo has expected controls +test_external_demo_controls_match — external demo has expected controls +test_both_demos_same_kernel_behavior — same apply/verify flow +``` + +--- + +## Phase I: Magic Number Centralization + +Replace all hardcoded constants with `DashboardConfig`/`S.config` references. + +**Frontend → `S.config.*`:** +- `_maxRenderPoints`, `tension`, dash patterns, poll intervals, thresholds, batch sizes + +**Backend → `config.*`:** +- History limits, WS burst, poll intervals, record estimates, cadence thresholds + +**Files:** All JS files, `app.py`, `tailer.py`, `ai_engine.py` + +--- + +## Phase Dependencies + +``` +A ─── Foundation fixes +│ +B ─── MutableState + HotcbActuator core (the heart) +│ +C ─── Kernel integration + module wrappers (depends on B) +│ +├── D ─── DashboardConfig + /api/config + /api/controls (depends on C) +│ │ +│ └── E ─── Dynamic frontend (depends on D) +│ +├── F ─── Launcher simplification (parallel with D/E) +│ +├── G ─── Metric UI fixes (parallel with D/E/F) +│ +└── H ─── External golden demo + integration tests (validates A-G) + │ + I ─── Magic number centralization (last) +``` + +## Files Summary + +| File | Phases | Action | +|------|--------|--------| +| `src/hotcb/mutable_state.py` | B | NEW — HotcbActuator, MutableState, apply_fn helpers | +| `src/hotcb/kernel.py` | C | MutableState discovery, routing, verification | +| `src/hotcb/modules/opt.py` | C | Thin wrapper delegating to MutableState | +| `src/hotcb/modules/loss.py` | C | Thin wrapper delegating to MutableState | +| `src/hotcb/modules/cb/util.py` | A | Remove dupe FileCursor | +| `src/hotcb/server/config.py` | D | NEW — DashboardConfig | +| `src/hotcb/server/app.py` | A,D,G | Fix cache/mtime, add /api/config, /api/controls, /api/run/summary | +| `src/hotcb/server/api.py` | D | Add /api/controls/apply | +| `src/hotcb/server/launcher.py` | A,F,G | Cache clear, signature detect, summary save | +| `src/hotcb/launch.py` | F | Signature detection | +| `static/index.html` | E,G | Remove hardcoded knobs, add Summary tab | +| `static/js/controls.js` | E | buildControlsFromSpecs(), type templates | +| `static/js/charts.js` | A,G | Forecast fix, pin button, tooltip sphere | +| `static/js/init.js` | D,E | Fetch config + controls | +| `static/js/state.js` | D | Add S.config | +| `static/js/panels.js` | G | Summary tab, replace overlay | +| `static/css/dashboard.css` | E,G | Control templates, pin button, summary tab | +| `tests/test_server_stability.py` | A | NEW — bug fix tests | +| `tests/test_mutable_state.py` | B | NEW — state machine + actuator tests | +| `tests/test_kernel_mutable.py` | C | NEW — kernel integration tests | +| `tests/test_dashboard_config.py` | D | NEW — config + controls endpoint tests | +| `tests/external_golden_demo.py` | H | NEW — external project simulation | +| `tests/test_external_integration.py` | H | NEW — comprehensive integration tests | + +## Verification + +```bash +# Every phase: +pytest src/hotcb/tests/ -x -q --no-cov + +# After Phase C: +# Existing opt/loss tests still pass (backward compat wrappers) + +# After Phase E (manual): +hotcb demo → controls generated from MutableState, state indicators work +hotcb serve --dir → custom controls discovered, verification visible + +# After Phase H: +pytest src/hotcb/tests/test_external_integration.py -v # full external flow +``` diff --git a/.claude/plans/unified-actuator-config.md b/.claude/plans/unified-actuator-config.md new file mode 100644 index 0000000..7623016 --- /dev/null +++ b/.claude/plans/unified-actuator-config.md @@ -0,0 +1,971 @@ +# Unified Actuator Model + Config Refactor + +## Context + +Two planned efforts — the **MutableState/HotcbActuator redesign** and the +**principled config refactor** (`dev-notes/principled_config_refactor.md`) — share a +critical overlap at the controls layer. If done separately, config refactor Phase 4 +(dynamic controls from `describe_space()`) would be immediately rewritten when the +actuator redesign changes the data source. Merging them eliminates throwaway work and +produces a cleaner result. + +**No backward compatibility needed** — opt/loss module wire format is not in production. + +--- + +## What We're Fixing + +### Problem 1: Three-module duplication + +`kernel.py:66-75` hard-codes `{cb, opt, loss, tune}`. `register_actuator()` (lines 89-102) +has `if name == "opt"` / `elif name == "loss"` wiring. `_apply_single()` at line 263 +rejects anything that isn't one of these four with `unknown_module` error. + +`HotOptController` and `HotLossController` duplicate the same pattern: +resolve target → optional actuator validation → apply params → handle errors → +enable/disable state. Each has its own `_resolve_*()`, `set_actuator()`, +`_actuator_patches()` translation layer. + +### Problem 2: Filtering / masquerading + +`MutableStateActuator.snapshot()` only backs up `weights` — terms and ramps have no +rollback. `HotLossController._actuator_weight_patches()` explicitly skips `terms.*` +and `ramps.*`, so they bypass actuator validation entirely. `describe_space()` doesn't +include them, so tune can't optimize them. + +Any external control that isn't a float weight gets shoved into an unvalidated bucket. +The user's additional ramps/terms are "masqueraded as loss state and getting filtered +out at some connections." + +### Problem 3: Dashboard hardcoded controls + +The UI has hardcoded slider names (`knobLr`, `knobWd`, `knobLossW`, etc.) and CSS +visibility classes (`single-loss-only`, `multitask-only`, `finetune-only`). Meanwhile +the core already has `TrainingCapabilities` and `describe_space()` — the dashboard +ignores both and hardcodes its own schema. + +### Problem 4: Magic numbers everywhere + +Poll intervals, history limits, thresholds, pixel sizes, batch sizes — bare literals +scattered across JS and Python files. No central source of truth. + +--- + +## Design + +### A. `HotcbActuator` — The Unified Parameter Handle + +Every controllable scalar/toggle/choice becomes one `HotcbActuator`. Replaces the +current split between `OptimizerActuator` (all optimizer params in one), +`MutableStateActuator` (all loss weights in one), and the module controllers +(`HotOptController`, `HotLossController`). + +```python +# src/hotcb/actuators/actuator.py + +class ActuatorType(Enum): + BOOL = "bool" + FLOAT = "float" + INT = "int" + CHOICE = "choice" # discrete set of allowed values + LOG_FLOAT = "log_float" # float on log scale (lr, wd) + TUPLE = "tuple" # e.g. betas + +class ActuatorState(Enum): + INIT = "init" # registered but not yet observed + UNTOUCHED = "untouched" # observed initial value, no mutations applied + UNVERIFIED = "unverified" # mutation applied, not yet confirmed via metrics + VERIFIED = "verified" # mutation confirmed via metrics_dict_name + DISABLED = "disabled" # user-disabled or auto-disabled on error + +@dataclass +class Mutation: + step: int + old_value: Any + new_value: Any + verified: bool = False + +@dataclass +class HotcbActuator: + """Single controllable parameter.""" + param_key: str # unique key, e.g. "lr", "recon_w", "use_augment" + type: ActuatorType # drives UI control type + apply_fn: Callable[[Any, dict], ApplyResult] # (value, env) -> result + metrics_dict_name: str = "" # metric name for verification (empty = no verification) + label: str = "" # display label, defaults to param_key + group: str = "" # UI grouping hint ("optimizer", "loss", "custom") + + # Bounds (for FLOAT, LOG_FLOAT, INT) + min_value: Optional[float] = None + max_value: Optional[float] = None + step_size: Optional[float] = None + log_base: float = 10.0 # for LOG_FLOAT + + # For CHOICE type + choices: Optional[list] = None + + # Mutable runtime state + current_value: Any = field(default=_INIT_SENTINEL) + state: ActuatorState = field(default=ActuatorState.INIT) + last_changed_step: int = -1 + mutations: list[Mutation] = field(default_factory=list) + + def validate(self, value: Any) -> ValidationResult: + """Type-check and bounds-check a proposed value.""" + ... + + def snapshot(self) -> dict: + """Return state for rollback.""" + return {"value": self.current_value, "state": self.state} + + def restore(self, snapshot: dict, env: dict) -> ApplyResult: + """Rollback to snapshot.""" + return self.apply_fn(snapshot["value"], env) + + def describe_space(self) -> dict: + """Return schema for tune search + UI generation.""" + return { + "param_key": self.param_key, + "type": self.type.value, + "label": self.label or self.param_key, + "group": self.group, + "min": self.min_value, + "max": self.max_value, + "step": self.step_size, + "log_base": self.log_base, + "choices": self.choices, + "current": self.current_value, + "state": self.state.value, + } +``` + +### B. `MutableState` — The Container + +```python +# src/hotcb/actuators/state.py + +class MutableState: + """Container of HotcbActuator instances. This is the user-facing API.""" + + def __init__(self, actuators: list[HotcbActuator]): + self._actuators: dict[str, HotcbActuator] = {a.param_key: a for a in actuators} + + def get(self, key: str) -> Optional[HotcbActuator]: + return self._actuators.get(key) + + def keys(self) -> list[str]: + return list(self._actuators.keys()) + + def apply(self, key: str, value: Any, env: dict, step: int) -> ApplyResult: + """Validate, apply, record mutation, transition state.""" + act = self._actuators.get(key) + if act is None: + return ApplyResult(success=False, error=f"unknown_param:{key}") + vr = act.validate(value) + if not vr.valid: + return ApplyResult(success=False, error="; ".join(vr.errors)) + old = act.current_value + result = act.apply_fn(value, env) + if result.success: + act.current_value = value + act.mutations.append(Mutation(step=step, old_value=old, new_value=value)) + act.last_changed_step = step + act.state = ActuatorState.UNVERIFIED + return result + + def initialize(self, env: dict) -> None: + """Read current values from live objects at first step. + Transitions all actuators INIT → UNTOUCHED.""" + ... + + def verify(self, key: str, metrics: dict) -> bool: + """Check metrics_dict_name in latest metrics. UNVERIFIED → VERIFIED if match.""" + ... + + def snapshot_all(self) -> dict: + """Snapshot all actuators for rollback.""" + ... + + def describe_all(self) -> list[dict]: + """Return describe_space() for all actuators. Used by config endpoint + tune.""" + ... +``` + +### C. Convenience Constructors + +```python +# src/hotcb/actuators/__init__.py + +def optimizer_actuators(optimizer, lr_bounds=(1e-7, 1.0), wd_bounds=(0, 1.0)) -> list[HotcbActuator]: + """Auto-create actuators for lr, weight_decay, betas, eps from a torch optimizer.""" + ... + +def loss_actuators(loss_weights: dict, global_bounds=(0.0, 100.0)) -> list[HotcbActuator]: + """Auto-create actuators from a dict of loss weight names → values.""" + ... + +def mutable_state(actuators: list[HotcbActuator]) -> MutableState: + """User-facing constructor.""" + return MutableState(actuators) +``` + +### D. Kernel Default Stream + +`kernel.py:263-266` becomes: + +```python +def _apply_single(self, op, env, event, step): + # ... freeze enforcement ... + + if op.module == "core": + ... # freeze/recipe ops + return + + if op.module == "cb": + ... # cb stays special — code lifecycle + return + + if op.module == "tune": + ... # tune stays special — search orchestrator + return + + # DEFAULT STREAM: opt, loss, or any custom param_key + # Route through MutableState + if self._mutable_state is not None: + key = self._resolve_param_key(op) # from op.params.key, op.target, or op.id + result = self._mutable_state.apply(key, op.params.get("value"), env, step) + self._write_ledger(op, event, step, + decision=result.decision, error=result.error, + payload=op.to_dict(), env=env) + else: + self._write_ledger(op, event, step, + decision="failed", error="no_mutable_state", + payload=op.to_dict(), env=env) +``` + +The `op.module` field is preserved in commands/ledger for grouping and UI display, +but it no longer determines which code path executes. Everything goes through the +same `MutableState.apply()` → `HotcbActuator.apply_fn()` pipeline. + +### E. `DashboardConfig` — Centralized Configuration + +```python +# src/hotcb/server/config.py + +@dataclass(frozen=True) +class ServerConfig: + host: str = "0.0.0.0" + port: int = 8421 + poll_interval: float = 0.5 + history_limit_metrics: int = 500 + history_limit_applied: int = 200 + ws_initial_burst: int = 200 + ws_max_retries: int = 20 + ws_retry_base: float = 3.0 + ws_retry_cap: float = 30.0 + +@dataclass(frozen=True) +class ChartConfig: + max_render_points: int = 2000 + line_tension: float = 0.15 + forecast_dash: tuple = (6, 3) + mutation_dash: tuple = (3, 4) + annotation_stagger_rows: int = 10 + annotation_min_distance: int = 70 + +@dataclass(frozen=True) +class AutopilotConfig: + divergence_threshold: float = 2.0 + ratio_threshold: float = 0.5 + ai_min_interval: int = 10 + ai_max_wait: int = 200 + ai_default_cadence: int = 50 + +@dataclass(frozen=True) +class UIConfig: + state_save_interval: int = 5000 + alert_poll_interval: int = 15000 + manifold_refresh_interval: int = 10000 + recipe_refresh_interval: int = 5000 + forecast_poll_interval: int = 5000 + forecast_step_cadence: int = 10 + forecast_batch_size: int = 8 + staged_change_threshold: float = 0.005 + health_ema_alpha: float = 0.1 + +@dataclass +class DashboardConfig: + server: ServerConfig = field(default_factory=ServerConfig) + chart: ChartConfig = field(default_factory=ChartConfig) + autopilot: AutopilotConfig = field(default_factory=AutopilotConfig) + ui: UIConfig = field(default_factory=UIConfig) + run_dir: str = "" # IMMUTABLE after startup + controls: list[dict] = field(default_factory=list) # populated from MutableState.describe_all() + + @classmethod + def load(cls, run_dir: str, yaml_path: Optional[str] = None, **cli_overrides) -> "DashboardConfig": + """Resolve: defaults → YAML → CLI → env vars → actuator discovery.""" + ... + + def to_dict(self) -> dict: + """Serialize for /api/config endpoint.""" + ... +``` + +The `controls` field is populated at startup from `MutableState.describe_all()` when +capabilities are available, or left empty for observe-only dashboards. + +### F. Immutable `run_dir` + +`run_dir` is set once at `create_app()` and never changes. Remove: +- `app.state.run_dir` mutation in launcher +- `_rewire_dir()` helper +- `tailer.rewire()` method + +Launcher writes to `config.run_dir` directly. For multi-run, launcher returns the new +path and the user restarts `hotcb serve` pointing at it. Compare tab reads sibling +dirs read-only via `/api/runs/discover`. + +### G. Dynamic Frontend Controls + +```javascript +// controls.js — replaces hardcoded HTML +function buildControls(controlSpecs) { + var panel = $('#knobPanel'); + panel.innerHTML = ''; + controlSpecs.forEach(function(spec) { + // spec = {param_key, type, label, group, min, max, step, current, state} + panel.appendChild(buildKnobRow(spec)); + }); +} + +function buildKnobRow(spec) { + // Generate slider/toggle/dropdown based on spec.type + // "log_float" → log-scale slider + // "float" → linear slider + // "bool" → toggle switch + // "choice" → dropdown + // "int" → integer stepper +} +``` + +No more `single-loss-only`, `multitask-only`, `finetune-only` CSS classes. + +--- + +## What Gets Deleted + +| File/Code | Reason | +|-----------|--------| +| `src/hotcb/modules/opt.py` | Absorbed into `HotcbActuator` + `optimizer_actuators()` | +| `src/hotcb/modules/loss.py` | Absorbed into `HotcbActuator` + `loss_actuators()` | +| `src/hotcb/actuators/optimizer.py` | Replaced by per-param `HotcbActuator` instances | +| `src/hotcb/actuators/mutable_state.py` | Replaced by per-param `HotcbActuator` instances | +| `kernel.py` hard-coded `opt`/`loss` module init | Default stream handles all | +| `kernel.py` `register_actuator()` `if name == "opt"` wiring | No more module↔actuator coupling | +| `capabilities.py` `validate_mutable_state()` | `MutableState` replaces the raw dict | +| `tailer.py` `rewire()` method | `run_dir` immutable | +| `app.py` `_rewire_dir()` helper | `run_dir` immutable | +| `app.py` `app.state.run_dir` mutation | `run_dir` immutable | +| `index.html` hardcoded knob rows | Dynamic generation from config | +| `controls.js` hardcoded slider names | Dynamic generation from config | +| CSS `single-loss-only`, `multitask-only`, `finetune-only` | Gone entirely | + +--- + +## What Stays + +| Component | Why | +|-----------|-----| +| `modules/cb/` | Code lifecycle management is fundamentally different from scalar params | +| `modules/tune/` | Search orchestrator — consumes actuators, doesn't become one | +| `actuators/base.py` `BaseActuator` Protocol | `HotcbActuator` implements a superset of it | +| `HotOp` and `command_to_hotop()` | Command format is orthogonal; `op.module` becomes metadata | +| `TrainingCapabilities` | Still useful for framework-level info (num_optimizers, has_scheduler, etc.) | +| JSONL filesystem IPC | Untouched | +| Adapter layer | Still populates capabilities; now also creates `MutableState` | +| `modules/result.py` `ModuleResult` | Still used by cb and tune modules | + +--- + +## Implementation Phases + +### Phase 1: `DashboardConfig` Foundation +**Goal:** Config dataclass exists, loads from YAML/env, serves at `/api/config`. +Frontend fetches once at startup. + +**New files:** +- `src/hotcb/server/config.py` +- `src/hotcb/tests/test_dashboard_config.py` + +**Modified files:** +- `src/hotcb/server/app.py` — add `/api/config` endpoint, construct config at startup +- `src/hotcb/server/static/js/state.js` — add `S.config` +- `src/hotcb/server/static/js/init.js` — fetch config before other init + +**Tests (write first):** +``` +test_config_defaults() + ServerConfig(), ChartConfig(), etc. have documented defaults. + DashboardConfig() is valid with all defaults. + +test_config_from_yaml() + Write a YAML file with server.port=9000, chart.line_tension=0.3. + Load → verify overrides applied, other defaults preserved. + +test_config_from_yaml_missing_file() + Load with nonexistent YAML → all defaults, no error. + +test_config_from_env() + Set HOTCB_PORT=9000, HOTCB_POLL_INTERVAL=1.0 in env. + Load → verify env overrides applied. + +test_config_env_overrides_yaml() + YAML sets port=9000, env sets HOTCB_PORT=8000. + Load → port is 8000 (env wins). + +test_config_cli_overrides_all() + YAML + env + cli_overrides={port: 7000}. + Load → port is 7000 (CLI wins). + +test_config_to_dict_roundtrip() + config.to_dict() → JSON serializable. + All nested sub-configs appear. + +test_config_run_dir_in_dict() + config = DashboardConfig(run_dir="/tmp/x") + d = config.to_dict() + assert d["run_dir"] == "/tmp/x" + +test_config_endpoint_returns_full(client) + GET /api/config → 200, body has server, chart, autopilot, ui, run_dir keys. + +test_config_endpoint_reflects_overrides(client) + App created with yaml overriding port. + GET /api/config → server.port matches override. +``` + +**Phase 1 does NOT touch:** controls, actuators, kernel, modules. + +--- + +### Phase 2: `HotcbActuator` + `MutableState` +**Goal:** New actuator types exist, state machine works, convenience constructors +produce correct actuators from optimizer/loss dicts. + +**New files:** +- `src/hotcb/actuators/actuator.py` — `HotcbActuator`, `ActuatorType`, `ActuatorState`, `Mutation` +- `src/hotcb/actuators/state.py` — `MutableState` container +- `src/hotcb/tests/test_actuator_unified.py` + +**Modified files:** +- `src/hotcb/actuators/__init__.py` — export `mutable_state()`, `optimizer_actuators()`, `loss_actuators()` + +**Tests (write first):** +``` +--- ActuatorType & validation --- + +test_float_actuator_validate_in_bounds() + HotcbActuator(type=FLOAT, min=0, max=1). validate(0.5) → valid. + +test_float_actuator_validate_out_of_bounds() + validate(1.5) → invalid, error mentions bounds. + +test_log_float_actuator_validate() + HotcbActuator(type=LOG_FLOAT, min=1e-7, max=1.0). validate(1e-4) → valid. + validate(-1.0) → invalid. + +test_bool_actuator_validate() + HotcbActuator(type=BOOL). validate(True) → valid. validate("yes") → invalid. + +test_int_actuator_validate() + HotcbActuator(type=INT, min=0, max=100). validate(50) → valid. + validate(50.5) → invalid (not int). + +test_choice_actuator_validate() + HotcbActuator(type=CHOICE, choices=["adam", "sgd", "adamw"]). + validate("adam") → valid. validate("rmsprop") → invalid. + +test_tuple_actuator_validate() + HotcbActuator(type=TUPLE). validate((0.9, 0.999)) → valid. + validate("not a tuple") → invalid. + +--- State machine --- + +test_initial_state_is_init() + Fresh actuator → state == INIT. + +test_initialize_transitions_to_untouched() + MutableState with lr actuator. + ms.initialize(env) → lr.state == UNTOUCHED, lr.current_value == actual lr. + +test_apply_transitions_to_unverified() + After initialize, ms.apply("lr", 1e-3, env, step=10). + lr.state == UNVERIFIED. + +test_verify_transitions_to_verified() + After apply, ms.verify("lr", {"lr": 1e-3}). + lr.state == VERIFIED. + +test_apply_after_verified_goes_back_to_unverified() + VERIFIED → apply new value → UNVERIFIED again. + +test_disabled_actuator_rejects_apply() + act.state = DISABLED. ms.apply("lr", ...) → fails with "actuator_disabled". + +test_disable_actuator() + ms.disable("lr") → lr.state == DISABLED. + +--- Mutation tracking --- + +test_mutation_recorded_on_apply() + ms.apply("lr", 1e-3, env, step=10) → lr.mutations has 1 entry. + mutation.step == 10, old_value == original, new_value == 1e-3. + +test_multiple_mutations_accumulated() + 3 applies → 3 mutations in list. + +test_last_changed_step_updated() + ms.apply("lr", ..., step=50) → lr.last_changed_step == 50. + +--- apply_fn --- + +test_apply_fn_receives_value_and_env() + Mock apply_fn. ms.apply("lr", 1e-3, env, step=1). + apply_fn called with (1e-3, env). + +test_apply_fn_failure_does_not_mutate_state() + apply_fn returns ApplyResult(success=False). + current_value unchanged, no mutation recorded, state unchanged. + +test_apply_fn_exception_caught() + apply_fn raises RuntimeError. + ms.apply() returns ApplyResult(success=False, error=...). + State not corrupted. + +--- Snapshot / restore --- + +test_snapshot_all() + MutableState with lr + wd. + snapshot = ms.snapshot_all() + Has entries for both keys with value + state. + +test_restore_from_snapshot() + Apply mutations, snapshot, apply more, restore. + Values back to snapshot state. + +--- describe_space --- + +test_describe_space_includes_all_fields() + act.describe_space() → dict with param_key, type, label, group, + min, max, step, choices, current, state. + +test_describe_all() + MutableState with 3 actuators. + ms.describe_all() → list of 3 dicts. + +--- Convenience constructors --- + +test_optimizer_actuators_from_torch_optimizer() + opt = MockOptimizer(lr=1e-3, weight_decay=1e-4, betas=(0.9, 0.999)). + acts = optimizer_actuators(opt) + → 3 actuators: lr (LOG_FLOAT), weight_decay (LOG_FLOAT), betas (TUPLE). + Each has correct current_value from optimizer. + +test_optimizer_actuators_bounds() + acts = optimizer_actuators(opt, lr_bounds=(1e-6, 0.1)) + → lr actuator has min=1e-6, max=0.1. + +test_optimizer_actuators_apply_fn_sets_param_groups() + acts = optimizer_actuators(opt) + lr_act = [a for a in acts if a.param_key == "lr"][0] + lr_act.apply_fn(5e-4, {"optimizer": opt}) + → all param groups now have lr=5e-4. + +test_optimizer_actuators_apply_fn_coordinates_scheduler() + Optimizer + scheduler with base_lrs. + lr_act.apply_fn(5e-4, {"optimizer": opt, "scheduler": sched}) + → scheduler.base_lrs updated too. + +test_loss_actuators_from_dict() + weights = {"recon": 1.0, "kl": 0.5, "perceptual": 0.3} + acts = loss_actuators(weights) + → 3 actuators, all FLOAT, correct current_values. + +test_loss_actuators_apply_fn_mutates_dict() + acts = loss_actuators(weights) + acts[0].apply_fn(2.0, {}) → weights["recon"] == 2.0. + +test_loss_actuators_bounds() + acts = loss_actuators(weights, global_bounds=(0, 10)) + → all have min=0, max=10. + +test_mutable_state_constructor() + ms = hotcb.mutable_state([a1, a2, a3]) + → isinstance(ms, MutableState), ms.keys() == ["lr", "wd", "recon_w"]. +``` + +**Phase 2 does NOT touch:** kernel, modules, server, frontend. + +--- + +### Phase 3: Kernel Unification (Default Stream) +**Goal:** Kernel routes opt/loss/custom ops through `MutableState`. Delete +`HotOptController`, `HotLossController`, `OptimizerActuator`, `MutableStateActuator`. + +**Deleted files:** +- `src/hotcb/modules/opt.py` +- `src/hotcb/modules/loss.py` +- `src/hotcb/actuators/optimizer.py` +- `src/hotcb/actuators/mutable_state.py` + +**Modified files:** +- `src/hotcb/kernel.py` — accept `MutableState`, remove opt/loss from `self.modules`, + default stream routing +- `src/hotcb/actuators/__init__.py` — remove old exports +- `src/hotcb/modules/__init__.py` — remove opt/loss re-exports if any +- `src/hotcb/ops.py` — `command_to_hotop()` default_module stays "cb" (unchanged) + +**Tests (write first):** + +``` +--- Kernel accepts MutableState --- + +test_kernel_init_with_mutable_state() + k = HotKernel(run_dir=..., mutable_state=ms) + k._mutable_state is ms. + +test_kernel_init_without_mutable_state() + k = HotKernel(run_dir=...) + k._mutable_state is None. No error. + +--- Default stream routing --- + +test_opt_set_params_routes_to_mutable_state() + op = HotOp(module="opt", op="set_params", params={"key": "lr", "value": 1e-3}) + Kernel with MutableState containing lr actuator. + kernel._apply_single(op, env, "train_step", 10) + → Ledger record has decision="applied". + → MutableState lr actuator now has current_value=1e-3. + +test_loss_set_params_routes_to_mutable_state() + op = HotOp(module="loss", op="set_params", params={"key": "recon_w", "value": 2.0}) + → Same routing, applied via MutableState. + +test_custom_module_routes_to_mutable_state() + op = HotOp(module="custom", op="set_params", params={"key": "dropout", "value": 0.3}) + MutableState has "dropout" actuator. + → Routes through default stream, applied successfully. + +test_unknown_param_key_fails_gracefully() + op = HotOp(module="opt", op="set_params", params={"key": "nonexistent", "value": 1.0}) + → Ledger: decision="failed", error="unknown_param:nonexistent". + +test_no_mutable_state_fails_gracefully() + Kernel with mutable_state=None. + op with module="opt" → decision="failed", error="no_mutable_state". + +test_cb_still_routes_to_cb_module() + op = HotOp(module="cb", op="enable", ...) + → Routes to CallbackModule, not MutableState. + +test_tune_still_routes_to_tune_module() + op = HotOp(module="tune", op="observe", ...) + → Routes to HotTuneController. + +test_core_still_routes_to_core() + op = HotOp(module="core", op="freeze", ...) + → Routes to _apply_core_op. + +--- Freeze enforcement still works --- + +test_freeze_blocks_default_stream() + Kernel in freeze mode="prod". + op with module="opt" → decision="ignored_freeze". + +test_freeze_blocks_custom_module() + op with module="custom" → decision="ignored_freeze". + +--- Param key resolution --- + +test_param_key_from_params_key() + op.params = {"key": "lr", "value": 1e-3} + _resolve_param_key(op) → "lr". + +test_param_key_from_legacy_opt_format() + op.module = "opt", op.params = {"lr": 1e-3} (no "key" field) + _resolve_param_key(op) → extracts "lr" from params dict. + +test_param_key_from_legacy_loss_format() + op.module = "loss", op.params = {"recon_w": 2.0} (suffix convention) + _resolve_param_key(op) → "recon". + +--- register_actuator compatibility with tune --- + +test_register_mutable_state_propagates_to_tune() + k = HotKernel(..., mutable_state=ms) + tune module can see all actuators via ms.describe_all(). + +--- Enable/disable via default stream --- + +test_enable_disable_actuator_via_op() + op = HotOp(module="opt", op="disable", params={"key": "lr"}) + → lr actuator state becomes DISABLED. + op = HotOp(module="opt", op="enable", params={"key": "lr"}) + → lr actuator state becomes UNTOUCHED (or last known good state). + +--- Ledger format --- + +test_ledger_preserves_module_field() + op with module="opt" applied via default stream. + Ledger record has module="opt" (not "default" or "mutable_state"). + +test_ledger_records_mutation_detail() + Applied lr change. + Ledger payload includes old_value, new_value, param_key. +``` + +**Migration of existing tests:** +- `test_hotopt.py` (12 tests): Rewrite to test through kernel default stream + instead of `HotOptController` directly. Same behaviors, different entry point. +- `test_hotloss.py` (14 tests): Same — rewrite to test through kernel. +- `test_kernel_core.py` `test_route_to_opt`, `test_route_to_loss`: Update to verify + default stream routing instead of module lookup. +- `test_hottune.py` actuator tests: Update `OptimizerActuator` → `optimizer_actuators()`, + `MutableStateActuator` → `loss_actuators()`. The tune controller's + `register_actuator()` interface may need updating to work with `MutableState`. +- `test_server_api.py` opt/loss endpoint tests: Still work — API writes same JSONL + commands, kernel routes differently. +- `test_new_features.py` opt/loss traceback tests: Rewrite for new error path. + +--- + +### Phase 4: Dynamic Controls from Actuators +**Goal:** `/api/config` `controls` field populated from `MutableState.describe_all()`. +Frontend generates controls dynamically. Remove all hardcoded slider HTML. + +**Modified files:** +- `src/hotcb/server/config.py` — `controls` populated from actuator metadata +- `src/hotcb/server/app.py` — wire `MutableState.describe_all()` into config +- `src/hotcb/server/static/index.html` — remove hardcoded knob rows, keep `
` +- `src/hotcb/server/static/js/controls.js` — `buildControls(specs)`, `buildKnobRow(spec)` +- `src/hotcb/server/static/css/dashboard.css` — remove `single-loss-only` etc. +- `src/hotcb/capabilities.py` — remove `validate_mutable_state()`, keep `TrainingCapabilities` + but remove `mutable_state_detected`/`mutable_state_keys` (now in `MutableState`) + +**Tests (write first):** +``` +test_config_controls_from_mutable_state() + App with MutableState(lr, wd, recon_w). + GET /api/config → controls has 3 entries. + Each has param_key, type, label, min, max, current. + +test_config_controls_empty_when_no_mutable_state() + App without MutableState. + GET /api/config → controls is []. + +test_config_controls_types_match_actuators() + MutableState with LOG_FLOAT lr, FLOAT recon_w, BOOL use_augment. + Controls: [{type: "log_float"}, {type: "float"}, {type: "bool"}]. + +test_config_controls_groups_present() + optimizer_actuators → group="optimizer". + loss_actuators → group="loss". + Custom → group="custom". + +test_config_controls_reflect_live_state() + Apply mutation to lr. + GET /api/config → lr control has updated current + state="unverified". + +--- Server API endpoints adapt --- + +test_opt_set_endpoint_still_works() + POST /api/opt/set with {params: {lr: 1e-3}} + → command written to JSONL with module="opt". + +test_loss_set_endpoint_still_works() + POST /api/loss/set with {params: {recon_w: 2.0}} + → command written to JSONL with module="loss". + +test_control_state_endpoint_uses_mutable_state() + GET /api/state/controls + → Returns live values from MutableState, not hardcoded schema. +``` + +--- + +### Phase 5: Immutable `run_dir` +**Goal:** `run_dir` set once, never mutated. Remove rewire infrastructure. + +**Modified files:** +- `src/hotcb/server/app.py` — remove `app.state.run_dir` mutation, use `config.run_dir` +- `src/hotcb/server/launcher.py` — write to `config.run_dir` directly, no subdirs +- `src/hotcb/server/tailer.py` — remove `rewire()` method + +**Tests (write first):** +``` +test_run_dir_set_once() + config = DashboardConfig(run_dir="/tmp/x") + All endpoints use "/tmp/x". No mutation observed. + +test_launcher_writes_to_config_run_dir() + Launcher.start() → JSONL files appear in config.run_dir, not subdirs. + +test_launcher_truncates_on_restart() + Launcher.start() twice → JSONL files truncated (like reset), no subdirs. + +test_tailer_no_rewire_method() + JsonlTailer has no rewire() attribute. + +test_endpoints_use_immutable_run_dir() + Start app. Simulate launcher. + GET /api/metrics/history → reads from original run_dir. + +test_compare_reads_siblings_readonly() + GET /api/runs/discover → scans parent dir. + Original monitored dir unchanged. +``` + +--- + +### Phase 6: Magic Number Extraction +**Goal:** All bare literals replaced with config reads. + +**Modified files:** +- `src/hotcb/server/app.py` — history limits, WS burst from config +- `src/hotcb/server/tailer.py` — poll_interval from config +- `src/hotcb/server/autopilot.py` — thresholds from config +- `src/hotcb/server/ai_engine.py` — cadence/thresholds from config +- `src/hotcb/server/static/js/charts.js` — read from `S.config.chart.*` +- `src/hotcb/server/static/js/controls.js` — threshold from `S.config.ui.*` +- `src/hotcb/server/static/js/websocket.js` — retries from `S.config.server.*` +- `src/hotcb/server/static/js/init.js` — intervals from `S.config.ui.*` +- `src/hotcb/server/static/js/panels.js` — intervals from `S.config.ui.*` + +**Tests (write first):** +``` +test_tailer_uses_config_poll_interval() + Config with poll_interval=2.0. + Tailer constructed with it → internal interval is 2.0. + +test_history_limits_from_config() + Config with history_limit_metrics=100. + GET /api/metrics/history → returns at most 100 records. + +test_ws_burst_from_config() + Config with ws_initial_burst=50. + WS connect → at most 50 records in initial burst. + +test_autopilot_thresholds_from_config() + Config with divergence_threshold=5.0. + Autopilot engine uses 5.0, not hardcoded 2.0. + +test_ai_cadence_from_config() + Config with ai_default_cadence=100. + AI engine uses 100, not hardcoded 50. +``` + +Frontend magic number replacement is verified manually + by existing test suite +(backend serves correct config, frontend reads it). + +--- + +## Adapter Integration + +Adapters (`lightning.py`, `hf.py`) currently populate `TrainingCapabilities` and +put `optimizer`/`mutable_state` in `env`. After this change: + +1. Adapters create `MutableState` from the optimizer + any user-registered actuators +2. Pass `MutableState` to kernel constructor (or register after init) +3. `env` still carries `optimizer`, `scheduler`, etc. for `apply_fn` closures +4. `TrainingCapabilities` still written to `hotcb.capabilities.json` for + framework-level info, but `mutable_state_detected`/`mutable_state_keys` + are replaced by `MutableState.describe_all()` + +--- + +## Demo Updates + +All 3 demos (`demo.py`, `golden_demo.py`, `finetune_demo.py`) currently create +`_OptProxy` + register `OptimizerActuator` and `MutableStateActuator`. After this: + +```python +# Instead of: +k.register_actuator("opt", OptimizerActuator()) +k.register_actuator("loss", MutableStateActuator()) + +# Becomes: +from hotcb.actuators import optimizer_actuators, loss_actuators, mutable_state +ms = mutable_state( + optimizer_actuators(opt_proxy) + loss_actuators(loss_weights) +) +k = HotKernel(run_dir=..., mutable_state=ms) +``` + +--- + +## Impact on Existing Test Suites + +| Test file | Tests | Impact | +|-----------|-------|--------| +| `test_hotopt.py` | 12 | **Rewrite**: Test via kernel default stream | +| `test_hotloss.py` | 14 | **Rewrite**: Test via kernel default stream | +| `test_kernel_core.py` | 19 | **Update 4**: route_to_opt/loss tests change; rest unchanged | +| `test_hottune.py` | 104+ | **Update ~30**: Replace OptimizerActuator/MutableStateActuator with new types | +| `test_server_api.py` | 40+ | **Unchanged**: API writes same JSONL, routing is kernel-internal | +| `test_server_app.py` | 15 | **Update ~5**: Config endpoint, status endpoint | +| `test_new_features.py` | 49 | **Update 2**: opt/loss traceback tests | +| `test_launch.py` | 21 | **Update ~5**: Actuator registration changes | +| `test_backend_gaps.py` | varies | **Update**: Actuator-related tests | + +New test files: +- `test_dashboard_config.py` — ~15 tests (Phase 1) +- `test_actuator_unified.py` — ~35 tests (Phase 2) +- Phase 3 kernel tests integrated into `test_kernel_core.py` + +--- + +## Phase Ordering & Dependencies + +``` +Phase 1 (Config) ──────────────────────────────────────→ Phase 5 (Immutable run_dir) + → Phase 6 (Magic numbers) +Phase 2 (Actuator types) → Phase 3 (Kernel) → Phase 4 (Dynamic controls) +``` + +Phases 1 and 2 are independent — can be done in parallel. +Phase 3 depends on Phase 2. +Phase 4 depends on Phases 1 + 3 (needs config endpoint + actuator metadata). +Phase 5 depends on Phase 1 (uses config). +Phase 6 depends on Phases 1 + 5 (config exists + run_dir stable). + +**Recommended order:** 1 → 2 → 3 → 4 → 5 → 6 +(Phases 1+2 could run in parallel if two sessions available.) + +--- + +## Verification + +After each phase: +```bash +pytest src/hotcb/tests/ -x -q --no-cov # full suite passes +``` + +After Phase 3 (the big one): +```bash +hotcb demo # all 3 demo configs work +hotcb demo --golden # golden demo metrics flow +``` + +After Phase 4: +```bash +hotcb serve --dir +# Dashboard shows 5 loss weight sliders (not 2 hardcoded ones) +``` + +After Phase 6: +```bash +# Create hotcb.dashboard.yaml with custom intervals +hotcb serve --dir runs/exp1 +# Verify custom values appear in browser console: S.config +``` diff --git a/.coverage b/.coverage index 6bbad2b0cf1aa5abaa36ebda467028dc8c275bde..a15f817036113add3e78dfcd10a738225b5b8715 100644 GIT binary patch literal 778240 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 literal 696320 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 z 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 diff --git a/CLAUDE.md b/CLAUDE.md index 726aee9..4fc579d 100644 --- a/CLAUDE.md +++ b/CLAUDE.md @@ -47,21 +47,31 @@ The kernel and training process communicate through the filesystem (JSONL files) | Module | Path | Controls | |--------|------|----------| | **cb** | `modules/cb/` | Callback load/unload/enable/disable/reconfigure. Has its own controller, loader, protocol, adapters | -| **opt** | `modules/opt.py` | Live optimizer param changes (lr, weight_decay, clip) | -| **loss** | `modules/loss.py` | Loss weights, term toggles, ramp configs | | **tune** | `modules/tune/` | Online constrained HPO via Optuna (optional `hotcb[tune]`) | +| **opt/loss/custom** | Default stream → `MutableState` | All scalar parameter control (lr, weights, custom knobs) via unified actuator system | ### Key types - **`HotOp`** (`ops.py`): Normalized operation dataclass — every command becomes one. Fields: `module`, `op`, `id`, `params`, `target`, etc. - **`CallbackTarget`** (`ops.py`): Specifies a callback to load (kind, path, symbol). -- **`HotKernel`** (`kernel.py`): Central coordinator. Holds module instances, actuator registry, optional `metrics_collector`. Called via `kernel.apply(env=..., events=...)` each training step. +- **`HotKernel`** (`kernel.py`): Central coordinator. Holds module instances, `MutableState`, optional `metrics_collector`. Called via `kernel.apply(env=..., events=...)` each training step. Ops for `cb`/`tune` route to their modules; all others (opt/loss/custom) go through the default stream to `MutableState`. +- **`HotcbActuator`** (`actuators/actuator.py`): Single controllable parameter — 1:1 mapping (param_key ↔ actuator). Has type (BOOL/FLOAT/INT/CHOICE/LOG_FLOAT/TUPLE), `apply_fn`, bounds, state machine (INIT→UNTOUCHED→UNVERIFIED→VERIFIED→DISABLED). +- **`MutableState`** (`actuators/state.py`): Container of `HotcbActuator` instances. Provides `apply()`, `initialize()`, `verify()`, `describe_all()`. - **`FreezeState`** (`freeze.py`): Freeze mode manager (off/prod/replay/replay_adjusted). - **`RecipePlayer`** (`recipe.py`): Deterministic replay of exported recipes. ### Actuator system (`src/hotcb/actuators/`) -Protocol-based (`BaseActuator`) — optimizer and mutable_state actuators register with the kernel and are auto-propagated to the tune controller. +Unified per-parameter actuator model. Convenience constructors: +- `optimizer_actuators(optimizer)` — creates lr, wd, betas actuators from a torch optimizer +- `loss_actuators(weights_dict)` — creates FLOAT actuators that mutate the original dict +- `mutable_state(actuators)` — wraps a list of `HotcbActuator` instances into a `MutableState` + +Adapters auto-discover optimizer actuators from the framework (Lightning/HF). Users register custom actuators via `mutable_state()`. + +### Dashboard config (`src/hotcb/server/config.py`) + +`DashboardConfig` centralizes all tunables (poll intervals, history limits, chart settings, UI timers). Loaded from defaults → YAML → env vars → CLI. Served at `/api/config`, fetched once by frontend into `S.config`. Controls are generated dynamically from `MutableState.describe_all()` — no hardcoded slider HTML. ### Server / Dashboard (`src/hotcb/server/`) diff --git a/docs/concepts.md b/docs/concepts.md index c03645c..d3a9773 100644 --- a/docs/concepts.md +++ b/docs/concepts.md @@ -44,8 +44,8 @@ Ops are routed by their `module` field: | Module | Controller | Purpose | |--------|-----------|---------| | `cb` | `CallbackModule` | Instrumentation callbacks | -| `opt` | `HotOptController` | Optimizer/scheduler control | -| `loss` | `HotLossController` | Loss weight/term/ramp control | +| `opt`, `loss`, custom | Default stream → `MutableState` | Optimizer, loss, and custom parameter control | +| `tune` | `HotTuneController` | Online constrained HPO | | `core` | Kernel itself | Freeze, unfreeze, status | ## The Three Streams diff --git a/docs/custom_training_configs.md b/docs/custom_training_configs.md index b79167c..9933bb9 100644 --- a/docs/custom_training_configs.md +++ b/docs/custom_training_configs.md @@ -85,15 +85,15 @@ names and creates chart lines for each. import os, time, torch, torch.nn as nn from hotcb.kernel import HotKernel from hotcb.metrics import MetricsCollector -from hotcb.actuators import OptimizerActuator +from hotcb.actuators import optimizer_actuators, mutable_state def pytorch_training(run_dir, max_steps, step_delay, stop_event): mc = MetricsCollector(os.path.join(run_dir, "hotcb.metrics.jsonl")) - kernel = HotKernel(run_dir=run_dir, debounce_steps=1, metrics_collector=mc) - kernel.register_actuator("opt", OptimizerActuator()) model = nn.Linear(10, 2) optimizer = torch.optim.Adam(model.parameters(), lr=1e-3) + ms = mutable_state(optimizer_actuators(optimizer)) + kernel = HotKernel(run_dir=run_dir, debounce_steps=1, metrics_collector=mc, mutable_state=ms) loss_fn = nn.CrossEntropyLoss() for step in range(1, max_steps + 1): @@ -137,12 +137,11 @@ import pytorch_lightning as pl from hotcb.kernel import HotKernel from hotcb.metrics import MetricsCollector from hotcb.adapters.lightning import HotCBLightning -from hotcb.actuators import OptimizerActuator def lightning_training(run_dir, max_steps, step_delay, stop_event): mc = MetricsCollector(os.path.join(run_dir, "hotcb.metrics.jsonl")) kernel = HotKernel(run_dir=run_dir, debounce_steps=1, metrics_collector=mc) - kernel.register_actuator("opt", OptimizerActuator()) + # Optimizer actuators auto-discovered by HotCBLightning adapter model = MyLightningModule() @@ -164,12 +163,11 @@ from transformers import Trainer, TrainingArguments from hotcb.kernel import HotKernel from hotcb.metrics import MetricsCollector from hotcb.adapters.hf import HotCBHFCallback -from hotcb.actuators import OptimizerActuator def hf_training(run_dir, max_steps, step_delay, stop_event): mc = MetricsCollector(os.path.join(run_dir, "hotcb.metrics.jsonl")) kernel = HotKernel(run_dir=run_dir, debounce_steps=1, metrics_collector=mc) - kernel.register_actuator("opt", OptimizerActuator()) + # Optimizer actuators auto-discovered by HotCBHFCallback adapter model = AutoModelForSequenceClassification.from_pretrained("bert-base-uncased") diff --git a/docs/modules/hottune.md b/docs/modules/hottune.md index c21df79..7ca72ab 100644 --- a/docs/modules/hottune.md +++ b/docs/modules/hottune.md @@ -39,18 +39,22 @@ hottune consists of five layers: ```python from hotcb import HotKernel from hotcb.adapters.lightning import HotCBLightning -from hotcb.actuators import OptimizerActuator, MutableStateActuator +from hotcb.actuators import optimizer_actuators, loss_actuators, mutable_state + +# Create MutableState with all controllable params +loss_weights = {"weight_a": 1.0, "weight_b": 0.5} +ms = mutable_state( + optimizer_actuators(optimizer) + loss_actuators(loss_weights) +) kernel = HotKernel( run_dir="runs/exp1", tune_recipe_path="tune_recipe.yaml", # optional + mutable_state=ms, ) -# Register actuators so tune knows what it can mutate -kernel.register_actuator("opt", OptimizerActuator()) -kernel.register_actuator("loss", MutableStateActuator()) - -trainer = pl.Trainer(callbacks=[HotCBLightning(kernel, mutable_state=model.mutable_state)]) +# Adapter auto-discovers optimizer actuators if not already in MutableState +trainer = pl.Trainer(callbacks=[HotCBLightning(kernel)]) trainer.fit(model, datamodule=dm) ``` @@ -64,10 +68,10 @@ hotcb --dir runs/exp1 tune enable --mode active ```python from hotcb import HotKernel -from hotcb.actuators import OptimizerActuator +from hotcb.actuators import optimizer_actuators, mutable_state -kernel = HotKernel(run_dir="runs/exp1") -kernel.register_actuator("opt", OptimizerActuator()) +ms = mutable_state(optimizer_actuators(optimizer)) +kernel = HotKernel(run_dir="runs/exp1", mutable_state=ms) for epoch in range(num_epochs): for step, batch in enumerate(dl): @@ -106,23 +110,21 @@ Actuators are the bridge between the tuner and live training state. ### Built-in actuators -**OptimizerActuator** -- mutates optimizer param groups: +**`optimizer_actuators(optimizer)`** -- creates per-param actuators for optimizer: -| Op | Description | -|---|---| -| `lr_mult` | Multiplicative LR change | -| `lr_set` | Absolute LR set | -| `wd_mult` | Multiplicative weight decay change | -| `wd_set` | Absolute weight decay set | -| `betas_set` | Set Adam betas | +| Param | Type | Description | +|---|---|---| +| `lr` | `LOG_FLOAT` | Learning rate (log-scale) | +| `weight_decay` | `LOG_FLOAT` | Weight decay (log-scale) | +| `betas` | `TUPLE` | Adam betas | -**MutableStateActuator** -- mutates loss weights: +**`loss_actuators(weights_dict)`** -- creates per-key actuators for loss weights: -| Op | Description | -|---|---| -| `set` | Set weight to absolute value | -| `mult` | Multiply weight by value | -| `delta` | Add value to weight | +| Param | Type | Description | +|---|---|---| +| Each key | `FLOAT` | Set weight to absolute value | + +Each `HotcbActuator` has a state machine: `INIT` -> `UNTOUCHED` -> `UNVERIFIED` -> `VERIFIED` (or `DISABLED`). ### Custom actuators diff --git a/src/hotcb/actuators/__init__.py b/src/hotcb/actuators/__init__.py index aa35be4..ffee8b7 100644 --- a/src/hotcb/actuators/__init__.py +++ b/src/hotcb/actuators/__init__.py @@ -1,3 +1,152 @@ from .base import BaseActuator, ValidationResult, ApplyResult # noqa: F401 -from .optimizer import OptimizerActuator # noqa: F401 -from .mutable_state import MutableStateActuator # noqa: F401 + +# --- Unified actuator types (Phase 2+3) --- +from .actuator import ( # noqa: F401 + ActuatorType, + ActuatorState, + HotcbActuator, + Mutation, + _INIT_SENTINEL, +) +from .state import MutableState # noqa: F401 + +from typing import Any, Callable, Dict, List, Optional, Tuple + + +def optimizer_actuators( + optimizer: Any, + lr_bounds: Tuple[float, float] = (1e-7, 1.0), + wd_bounds: Tuple[float, float] = (0.0, 1.0), +) -> List[HotcbActuator]: + """Create actuators for lr, weight_decay, betas from a torch optimizer (or _OptProxy). + + The ``apply_fn`` closures capture the optimizer reference so mutations + directly mutate the live object. + """ + actuators: List[HotcbActuator] = [] + pg = optimizer.param_groups[0] if optimizer.param_groups else {} + + # --- lr --- + if "lr" in pg: + _opt_ref = optimizer + + def _apply_lr(value: Any, env: dict, _opt=_opt_ref) -> ApplyResult: + try: + new_lr = float(value) + for g in _opt.param_groups: + g["lr"] = new_lr + # Scheduler coordination + scheduler = env.get("scheduler") + if scheduler is not None and hasattr(scheduler, "base_lrs"): + for i in range(len(scheduler.base_lrs)): + scheduler.base_lrs[i] = new_lr + return ApplyResult(success=True, detail={"lr": new_lr}) + except Exception as exc: + return ApplyResult(success=False, error=str(exc)) + + actuators.append(HotcbActuator( + param_key="lr", + type=ActuatorType.LOG_FLOAT, + apply_fn=_apply_lr, + metrics_dict_name="lr", + label="Learning Rate", + group="optimizer", + min_value=lr_bounds[0], + max_value=lr_bounds[1], + current_value=pg["lr"], + )) + + # --- weight_decay --- + if "weight_decay" in pg: + _opt_ref = optimizer + + def _apply_wd(value: Any, env: dict, _opt=_opt_ref) -> ApplyResult: + try: + new_wd = float(value) + for g in _opt.param_groups: + g["weight_decay"] = new_wd + return ApplyResult(success=True, detail={"weight_decay": new_wd}) + except Exception as exc: + return ApplyResult(success=False, error=str(exc)) + + actuators.append(HotcbActuator( + param_key="weight_decay", + type=ActuatorType.LOG_FLOAT, + apply_fn=_apply_wd, + metrics_dict_name="weight_decay", + label="Weight Decay", + group="optimizer", + min_value=wd_bounds[0], + max_value=wd_bounds[1], + current_value=pg["weight_decay"], + )) + + # --- betas --- + if "betas" in pg: + _opt_ref = optimizer + + def _apply_betas(value: Any, env: dict, _opt=_opt_ref) -> ApplyResult: + try: + new_betas = tuple(float(b) for b in value) + for g in _opt.param_groups: + g["betas"] = new_betas + return ApplyResult(success=True, detail={"betas": new_betas}) + except Exception as exc: + return ApplyResult(success=False, error=str(exc)) + + actuators.append(HotcbActuator( + param_key="betas", + type=ActuatorType.TUPLE, + apply_fn=_apply_betas, + metrics_dict_name="betas", + label="Betas", + group="optimizer", + current_value=tuple(pg["betas"]), + )) + + return actuators + + +def loss_actuators( + loss_weights: Dict[str, float], + global_bounds: Tuple[float, float] = (0.0, 100.0), + key_bounds: Optional[Dict[str, Tuple[float, float]]] = None, +) -> List[HotcbActuator]: + """Create FLOAT actuators from a dict of {name: value}. + + The ``apply_fn`` mutates the ORIGINAL dict that was passed in so the + training loop sees the change immediately. + """ + key_bounds = key_bounds or {} + actuators: List[HotcbActuator] = [] + + for name, init_value in loss_weights.items(): + bounds = key_bounds.get(name, global_bounds) + _dict_ref = loss_weights + _name = name + + def _apply_loss(value: Any, env: dict, _d=_dict_ref, _k=_name) -> ApplyResult: + try: + _d[_k] = float(value) + return ApplyResult(success=True, detail={"key": _k, "value": float(value)}) + except Exception as exc: + return ApplyResult(success=False, error=str(exc)) + + actuators.append(HotcbActuator( + param_key=name, + type=ActuatorType.FLOAT, + apply_fn=_apply_loss, + metrics_dict_name=name, + label=name, + group="loss", + min_value=bounds[0], + max_value=bounds[1], + current_value=init_value, + )) + + return actuators + + +def mutable_state(actuators: List[HotcbActuator]) -> MutableState: + """User-facing constructor for MutableState.""" + return MutableState(actuators) diff --git a/src/hotcb/actuators/actuator.py b/src/hotcb/actuators/actuator.py new file mode 100644 index 0000000..ac0ec7c --- /dev/null +++ b/src/hotcb/actuators/actuator.py @@ -0,0 +1,137 @@ +"""Unified actuator types for hotcb. + +HotcbActuator is a single controllable parameter — every tunable scalar, +toggle, or choice becomes one instance. ActuatorType drives validation and +UI control generation; ActuatorState tracks the lifecycle from registration +through mutation to verification. +""" + +from __future__ import annotations + +from dataclasses import dataclass, field +from enum import Enum +from typing import Any, Callable, List, Optional + +from .base import ApplyResult, ValidationResult + + +class ActuatorType(Enum): + BOOL = "bool" + FLOAT = "float" + INT = "int" + CHOICE = "choice" + LOG_FLOAT = "log_float" # float on log scale (lr, wd) + TUPLE = "tuple" # e.g. betas + + +class ActuatorState(Enum): + INIT = "init" # registered but not yet observed + UNTOUCHED = "untouched" # observed initial value, no mutations applied + UNVERIFIED = "unverified" # mutation applied, not yet confirmed via metrics + VERIFIED = "verified" # mutation confirmed via metrics_dict_name + DISABLED = "disabled" # user-disabled or auto-disabled on error + + +@dataclass +class Mutation: + step: int + old_value: Any + new_value: Any + verified: bool = False + + +# Sentinel for initial value — distinguishes "never set" from None +_INIT_SENTINEL = object() + + +@dataclass +class HotcbActuator: + """Single controllable parameter.""" + + param_key: str # unique key, e.g. "lr", "recon_w" + type: ActuatorType # drives UI control type + apply_fn: Callable[[Any, dict], ApplyResult] # (value, env) -> result + metrics_dict_name: str = "" # metric name for verification + label: str = "" # display label + group: str = "" # UI grouping hint + + # Bounds (FLOAT, LOG_FLOAT, INT) + min_value: Optional[float] = None + max_value: Optional[float] = None + step_size: Optional[float] = None + log_base: float = 10.0 # for LOG_FLOAT + + # CHOICE type + choices: Optional[list] = None + + # Mutable runtime state + current_value: Any = field(default_factory=lambda: _INIT_SENTINEL) + state: ActuatorState = field(default=ActuatorState.INIT) + last_changed_step: int = -1 + mutations: List[Mutation] = field(default_factory=list) + + # ------------------------------------------------------------------ + # Validation + # ------------------------------------------------------------------ + + def validate(self, value: Any) -> ValidationResult: + """Type-check and bounds-check a proposed value.""" + errors: List[str] = [] + + if self.type == ActuatorType.BOOL: + if not isinstance(value, bool): + errors.append(f"expected bool, got {type(value).__name__}") + + elif self.type in (ActuatorType.FLOAT, ActuatorType.LOG_FLOAT): + if not isinstance(value, (int, float)) or isinstance(value, bool): + errors.append(f"expected numeric, got {type(value).__name__}") + else: + if self.min_value is not None and value < self.min_value: + errors.append(f"{value} below min {self.min_value}") + elif self.max_value is not None and value > self.max_value: + errors.append(f"{value} above max {self.max_value}") + if self.type == ActuatorType.LOG_FLOAT and value <= 0: + errors.append(f"log_float must be positive, got {value}") + + elif self.type == ActuatorType.INT: + if not isinstance(value, int) or isinstance(value, bool): + errors.append(f"expected int, got {type(value).__name__}") + else: + if self.min_value is not None and value < self.min_value: + errors.append(f"{value} below min {self.min_value}") + elif self.max_value is not None and value > self.max_value: + errors.append(f"{value} above max {self.max_value}") + + elif self.type == ActuatorType.CHOICE: + if self.choices is not None and value not in self.choices: + errors.append(f"{value!r} not in choices {self.choices}") + + elif self.type == ActuatorType.TUPLE: + if not isinstance(value, (tuple, list)): + errors.append(f"expected tuple/list, got {type(value).__name__}") + + return ValidationResult(valid=len(errors) == 0, errors=errors) + + # ------------------------------------------------------------------ + # Snapshot / describe + # ------------------------------------------------------------------ + + def snapshot(self) -> dict: + """Return state for rollback.""" + return {"value": self.current_value, "state": self.state.value} + + def describe_space(self) -> dict: + """Return schema for tune search + UI generation.""" + return { + "param_key": self.param_key, + "type": self.type.value, + "label": self.label or self.param_key, + "group": self.group, + "min": self.min_value, + "max": self.max_value, + "step": self.step_size, + "log_base": self.log_base if self.type == ActuatorType.LOG_FLOAT else None, + "choices": self.choices, + "current": None if self.current_value is _INIT_SENTINEL else self.current_value, + "state": self.state.value, + } diff --git a/src/hotcb/actuators/mutable_state.py b/src/hotcb/actuators/mutable_state.py deleted file mode 100644 index a29ab28..0000000 --- a/src/hotcb/actuators/mutable_state.py +++ /dev/null @@ -1,141 +0,0 @@ -from __future__ import annotations - -import copy -from typing import Any, Dict, List, Optional - -from .base import ApplyResult, ValidationResult - - -class MutableStateActuator: - """ - Actuator for live mutable-state mutations. - - Supports: set, mult, delta on named scalar keys within mutable_state["weights"]. - """ - - name: str = "loss" - - def __init__( - self, - global_bounds: tuple[float, float] = (0.0, 100.0), - key_bounds: Optional[Dict[str, tuple[float, float]]] = None, - ) -> None: - self.global_bounds = global_bounds - self.key_bounds: Dict[str, tuple[float, float]] = key_bounds or {} - - def _resolve_mutable_state(self, env: dict) -> Optional[dict]: - mutable_state = env.get("mutable_state") - if mutable_state is not None: - return mutable_state - resolver = env.get("resolve_mutable_state") - if callable(resolver): - try: - return resolver() - except Exception: - return None - return None - - def _get_bounds(self, key: str) -> tuple[float, float]: - return self.key_bounds.get(key, self.global_bounds) - - def snapshot(self, env: dict) -> dict: - mutable_state = self._resolve_mutable_state(env) - if mutable_state is None: - return {} - weights = mutable_state.get("weights", {}) - return {"weights": copy.deepcopy(weights)} - - def validate(self, patch: dict, env: dict) -> ValidationResult: - errors: List[str] = [] - op = patch.get("op") - key = patch.get("key") - value = patch.get("value") - - valid_ops = {"set", "mult", "delta"} - if op not in valid_ops: - errors.append(f"unknown op: {op}") - return ValidationResult(valid=False, errors=errors) - - if key is None: - errors.append("missing key") - if value is None: - errors.append("missing value") - if not isinstance(value, (int, float)): - errors.append(f"value must be numeric, got {type(value).__name__}") - - if errors: - return ValidationResult(valid=False, errors=errors) - - mutable_state = self._resolve_mutable_state(env) - if mutable_state is not None: - weights = mutable_state.get("weights", {}) - bounds = self._get_bounds(key) - if op == "set": - if not (bounds[0] <= value <= bounds[1]): - errors.append(f"set value {value} out of bounds {bounds} for key {key}") - elif op == "mult": - if value <= 0: - errors.append(f"mult value must be positive, got {value}") - current = weights.get(key, 1.0) - result = current * value - if not (bounds[0] <= result <= bounds[1]): - errors.append(f"mult would produce {result}, out of bounds {bounds} for key {key}") - elif op == "delta": - current = weights.get(key, 1.0) - result = current + value - if not (bounds[0] <= result <= bounds[1]): - errors.append(f"delta would produce {result}, out of bounds {bounds} for key {key}") - - return ValidationResult(valid=len(errors) == 0, errors=errors) - - def apply(self, patch: dict, env: dict) -> ApplyResult: - mutable_state = self._resolve_mutable_state(env) - if mutable_state is None: - return ApplyResult(success=False, error="missing_mutable_state") - - op = patch.get("op") - key = patch.get("key") - value = patch.get("value") - weights = mutable_state.setdefault("weights", {}) - bounds = self._get_bounds(key) - - try: - current = weights.get(key, 1.0) - if op == "set": - new_val = float(value) - elif op == "mult": - new_val = current * float(value) - elif op == "delta": - new_val = current + float(value) - else: - return ApplyResult(success=False, error=f"unknown op: {op}") - - new_val = max(bounds[0], min(bounds[1], new_val)) - weights[key] = new_val - return ApplyResult(success=True, detail={"key": key, "old": current, "new": new_val}) - except Exception as e: - return ApplyResult(success=False, error=str(e)) - - def restore(self, snapshot: dict, env: dict) -> ApplyResult: - mutable_state = self._resolve_mutable_state(env) - if mutable_state is None: - return ApplyResult(success=False, error="missing_mutable_state") - - saved_weights = snapshot.get("weights", {}) - try: - mutable_state["weights"] = copy.deepcopy(saved_weights) - return ApplyResult(success=True) - except Exception as e: - return ApplyResult(success=False, error=str(e)) - - def describe_space(self) -> dict: - return { - "actuator": self.name, - "mutations": { - "set": {"type": "float", "description": "Set weight to absolute value"}, - "mult": {"type": "float", "description": "Multiply weight by value"}, - "delta": {"type": "float", "description": "Add value to weight"}, - }, - "global_bounds": list(self.global_bounds), - "key_bounds": {k: list(v) for k, v in self.key_bounds.items()}, - } diff --git a/src/hotcb/actuators/optimizer.py b/src/hotcb/actuators/optimizer.py deleted file mode 100644 index abfa4ab..0000000 --- a/src/hotcb/actuators/optimizer.py +++ /dev/null @@ -1,194 +0,0 @@ -from __future__ import annotations - -from typing import Any, Dict, List, Optional - -from .base import ApplyResult, ValidationResult - - -class OptimizerActuator: - """ - Actuator for live optimizer parameter mutations. - - Supports: lr_mult, lr_set, wd_mult, wd_set, betas_set. - - Multi-optimizer support - ----------------------- - ``snapshot`` and ``restore`` capture/restore all optimizers in - ``env["optimizers"]``. ``apply`` targets a specific optimizer via - ``patch["opt_idx"]`` (default 0). - """ - - name: str = "opt" - - def __init__( - self, - lr_bounds: tuple[float, float] = (1e-7, 1.0), - wd_bounds: tuple[float, float] = (0.0, 1.0), - ) -> None: - self.lr_bounds = lr_bounds - self.wd_bounds = wd_bounds - - def _resolve_optimizer(self, env: dict, opt_idx: int = 0): - optimizers = env.get("optimizers") - if isinstance(optimizers, (list, tuple)) and 0 <= opt_idx < len(optimizers): - return optimizers[opt_idx] - if opt_idx == 0: - opt = env.get("optimizer") - if opt is not None: - return opt - resolver = env.get("resolve_optimizer") - if callable(resolver): - try: - return resolver() - except Exception: - return None - return None - - def _resolve_all_optimizers(self, env: dict) -> list: - optimizers = env.get("optimizers") - if isinstance(optimizers, (list, tuple)) and optimizers: - return list(optimizers) - opt = env.get("optimizer") - if opt is not None: - return [opt] - return [] - - def snapshot(self, env: dict) -> dict: - """Snapshot all optimizers for rollback.""" - all_opts = self._resolve_all_optimizers(env) - if not all_opts: - return {} - all_groups = [] - for opt in all_opts: - groups = [] - for g in opt.param_groups: - snap = {"lr": g.get("lr")} - if "weight_decay" in g: - snap["weight_decay"] = g["weight_decay"] - if "betas" in g: - snap["betas"] = list(g["betas"]) - groups.append(snap) - all_groups.append(groups) - return {"all_groups": all_groups, "groups": all_groups[0] if all_groups else []} - - def validate(self, patch: dict, env: dict) -> ValidationResult: - errors: List[str] = [] - op = patch.get("op") - value = patch.get("value") - - valid_ops = {"lr_mult", "lr_set", "wd_mult", "wd_set", "betas_set"} - if op not in valid_ops: - errors.append(f"unknown op: {op}") - return ValidationResult(valid=False, errors=errors) - - if value is None: - errors.append("missing value") - return ValidationResult(valid=False, errors=errors) - - # Validate opt_idx if specified - opt_idx = patch.get("opt_idx", 0) - all_opts = self._resolve_all_optimizers(env) - if all_opts and opt_idx >= len(all_opts): - errors.append( - f"opt_idx={opt_idx} out of range " - f"(only {len(all_opts)} optimizer(s) available)" - ) - - if op == "lr_mult": - if not isinstance(value, (int, float)) or value <= 0: - errors.append(f"lr_mult value must be positive number, got {value}") - elif op == "lr_set": - if not isinstance(value, (int, float)) or value <= 0: - errors.append(f"lr_set value must be positive number, got {value}") - elif not (self.lr_bounds[0] <= value <= self.lr_bounds[1]): - errors.append(f"lr_set value {value} out of bounds {self.lr_bounds}") - elif op == "wd_mult": - if not isinstance(value, (int, float)) or value <= 0: - errors.append(f"wd_mult value must be positive number, got {value}") - elif op == "wd_set": - if not isinstance(value, (int, float)) or value < 0: - errors.append(f"wd_set value must be non-negative number, got {value}") - elif not (self.wd_bounds[0] <= value <= self.wd_bounds[1]): - errors.append(f"wd_set value {value} out of bounds {self.wd_bounds}") - elif op == "betas_set": - if not isinstance(value, (list, tuple)) or len(value) != 2: - errors.append(f"betas_set expects [beta1, beta2], got {value}") - else: - for i, b in enumerate(value): - if not isinstance(b, (int, float)) or not (0.0 <= b < 1.0): - errors.append(f"beta{i+1} must be in [0, 1), got {b}") - - return ValidationResult(valid=len(errors) == 0, errors=errors) - - def apply(self, patch: dict, env: dict) -> ApplyResult: - opt_idx = int(patch.get("opt_idx", 0)) - opt = self._resolve_optimizer(env, opt_idx) - if opt is None: - return ApplyResult(success=False, error=f"missing_optimizer (opt_idx={opt_idx})") - - op = patch.get("op") - value = patch.get("value") - - try: - for g in opt.param_groups: - if op == "lr_mult": - new_lr = g["lr"] * float(value) - new_lr = max(self.lr_bounds[0], min(self.lr_bounds[1], new_lr)) - g["lr"] = new_lr - elif op == "lr_set": - g["lr"] = float(value) - elif op == "wd_mult": - wd = g.get("weight_decay", 0.0) - new_wd = wd * float(value) - new_wd = max(self.wd_bounds[0], min(self.wd_bounds[1], new_wd)) - g["weight_decay"] = new_wd - elif op == "wd_set": - g["weight_decay"] = float(value) - elif op == "betas_set": - g["betas"] = tuple(float(b) for b in value) - return ApplyResult(success=True, detail=patch) - except Exception as e: - return ApplyResult(success=False, error=str(e)) - - def restore(self, snapshot: dict, env: dict) -> ApplyResult: - all_groups = snapshot.get("all_groups") - if all_groups is None: - # Backward compat: old snapshots have "groups" for optimizer 0 - groups = snapshot.get("groups", []) - all_groups = [groups] if groups else [] - - all_opts = self._resolve_all_optimizers(env) - if not all_opts: - return ApplyResult(success=False, error="missing_optimizer") - - try: - for opt_i, groups_snap in enumerate(all_groups): - if opt_i >= len(all_opts): - break - opt = all_opts[opt_i] - for i, snap in enumerate(groups_snap): - if i >= len(opt.param_groups): - break - g = opt.param_groups[i] - if "lr" in snap: - g["lr"] = snap["lr"] - if "weight_decay" in snap: - g["weight_decay"] = snap["weight_decay"] - if "betas" in snap: - g["betas"] = tuple(snap["betas"]) - return ApplyResult(success=True) - except Exception as e: - return ApplyResult(success=False, error=str(e)) - - def describe_space(self) -> dict: - return { - "actuator": self.name, - "mutations": { - "lr_mult": {"type": "float", "description": "Multiplicative LR change"}, - "lr_set": {"type": "float", "bounds": list(self.lr_bounds)}, - "wd_mult": {"type": "float", "description": "Multiplicative weight decay change"}, - "wd_set": {"type": "float", "bounds": list(self.wd_bounds)}, - "betas_set": {"type": "list[float]", "length": 2, "element_bounds": [0.0, 1.0]}, - }, - "supports_opt_idx": True, - } diff --git a/src/hotcb/actuators/state.py b/src/hotcb/actuators/state.py new file mode 100644 index 0000000..2cbdaf1 --- /dev/null +++ b/src/hotcb/actuators/state.py @@ -0,0 +1,179 @@ +"""MutableState — container of HotcbActuator instances. + +This is the user-facing runtime container. The kernel holds one +``MutableState`` and routes all param-mutation ops through it. +""" + +from __future__ import annotations + +from typing import Any, Dict, List, Optional + +from .actuator import ActuatorState, HotcbActuator, Mutation, _INIT_SENTINEL +from .base import ApplyResult + + +class MutableState: + """Container of :class:`HotcbActuator` instances.""" + + def __init__(self, actuators: List[HotcbActuator]) -> None: + self._actuators: Dict[str, HotcbActuator] = {a.param_key: a for a in actuators} + + # ------------------------------------------------------------------ + # Lookup helpers + # ------------------------------------------------------------------ + + def get(self, key: str) -> Optional[HotcbActuator]: + return self._actuators.get(key) + + def keys(self) -> List[str]: + return list(self._actuators.keys()) + + def __len__(self) -> int: + return len(self._actuators) + + def __contains__(self, key: str) -> bool: + return key in self._actuators + + # ------------------------------------------------------------------ + # Core mutation path + # ------------------------------------------------------------------ + + def apply(self, key: str, value: Any, env: dict, step: int) -> ApplyResult: + """Validate -> apply_fn -> record mutation -> transition state.""" + act = self._actuators.get(key) + if act is None: + return ApplyResult(success=False, error=f"unknown_param:{key}") + + if act.state == ActuatorState.DISABLED: + return ApplyResult(success=False, error=f"actuator_disabled:{key}") + + vr = act.validate(value) + if not vr.valid: + return ApplyResult(success=False, error="; ".join(vr.errors)) + + old = act.current_value + + try: + result = act.apply_fn(value, env) + except Exception as exc: + return ApplyResult(success=False, error=f"apply_fn_exception: {exc}") + + if result.success: + act.current_value = value + act.mutations.append(Mutation(step=step, old_value=old, new_value=value)) + act.last_changed_step = step + act.state = ActuatorState.UNVERIFIED + + return result + + # ------------------------------------------------------------------ + # Lifecycle + # ------------------------------------------------------------------ + + def initialize(self, env: dict) -> None: + """First-step initialization. + + For each actuator in INIT state, attempt to read its current value + from the environment and transition to UNTOUCHED. + """ + for act in self._actuators.values(): + if act.state != ActuatorState.INIT: + continue + # Best-effort: try to read via apply_fn's target + # (the apply_fn closure usually captures the live object) + # We don't call apply_fn here — just mark as ready. + act.state = ActuatorState.UNTOUCHED + + def verify(self, key: str, metrics: dict) -> bool: + """Check if ``metrics[act.metrics_dict_name]`` matches ``current_value``. + + Transitions UNVERIFIED -> VERIFIED if the metric matches. + Returns True on successful verification. + """ + act = self._actuators.get(key) + if act is None: + return False + if act.state != ActuatorState.UNVERIFIED: + return False + if not act.metrics_dict_name: + return False + + metric_val = metrics.get(act.metrics_dict_name) + if metric_val is None: + return False + + # For floats, use approximate comparison + if isinstance(act.current_value, float) and isinstance(metric_val, (int, float)): + if abs(act.current_value - metric_val) < 1e-9: + act.state = ActuatorState.VERIFIED + # Mark the latest mutation as verified + if act.mutations: + act.mutations[-1].verified = True + return True + elif act.current_value == metric_val: + act.state = ActuatorState.VERIFIED + if act.mutations: + act.mutations[-1].verified = True + return True + + return False + + def disable(self, key: str) -> None: + """Set actuator to DISABLED.""" + act = self._actuators.get(key) + if act is not None: + act.state = ActuatorState.DISABLED + + def enable(self, key: str) -> None: + """Re-enable: DISABLED -> UNTOUCHED.""" + act = self._actuators.get(key) + if act is not None and act.state == ActuatorState.DISABLED: + act.state = ActuatorState.UNTOUCHED + + # ------------------------------------------------------------------ + # Snapshot / restore + # ------------------------------------------------------------------ + + def snapshot_all(self) -> Dict[str, dict]: + """Snapshot every actuator.""" + return {key: act.snapshot() for key, act in self._actuators.items()} + + def restore_all(self, snapshot: dict, env: dict) -> Dict[str, ApplyResult]: + """Restore all actuators from snapshot.""" + results: Dict[str, ApplyResult] = {} + for key, snap in snapshot.items(): + act = self._actuators.get(key) + if act is None: + results[key] = ApplyResult(success=False, error=f"unknown_param:{key}") + continue + value = snap.get("value") + if value is _INIT_SENTINEL: + # Nothing to restore — was never set + results[key] = ApplyResult(success=True, detail={"skipped": "init_sentinel"}) + continue + try: + result = act.apply_fn(value, env) + if result.success: + act.current_value = value + saved_state = snap.get("state") + if saved_state: + try: + act.state = ActuatorState(saved_state) + except ValueError: + pass + results[key] = result + except Exception as exc: + results[key] = ApplyResult(success=False, error=f"restore_exception: {exc}") + return results + + # ------------------------------------------------------------------ + # Introspection + # ------------------------------------------------------------------ + + def describe_all(self) -> List[dict]: + """Return describe_space() for all non-DISABLED actuators.""" + return [ + act.describe_space() + for act in self._actuators.values() + if act.state != ActuatorState.DISABLED + ] diff --git a/src/hotcb/adapters/hf.py b/src/hotcb/adapters/hf.py index 715fbbf..ce99123 100644 --- a/src/hotcb/adapters/hf.py +++ b/src/hotcb/adapters/hf.py @@ -6,6 +6,7 @@ from hotcb.kernel import HotKernel from hotcb.capabilities import TrainingCapabilities, validate_mutable_state +from hotcb.actuators import optimizer_actuators, mutable_state as make_mutable_state class HotCBHFCallback(TrainerCallback): @@ -48,6 +49,15 @@ def on_train_begin(self, args: TrainingArguments, state: TrainerState, control: self._capabilities = self._detect_capabilities(args, kwargs) if self.kernel.run_dir: self._capabilities.save(self.kernel.run_dir) + # Auto-create mutable_state from resolved optimizer if kernel doesn't have one + if self.kernel._mutable_state is None: + optimizers = self._resolve_all_optimizers() + if optimizers: + try: + acts = optimizer_actuators(optimizers[0]) + self.kernel._mutable_state = make_mutable_state(acts) + except Exception: + pass # defensive — don't block training env = self._env(args, state, control, phase="train_begin", **kwargs) self.kernel.apply(env, events=["train_begin"]) return control diff --git a/src/hotcb/adapters/lightning.py b/src/hotcb/adapters/lightning.py index f72945c..beaaeff 100644 --- a/src/hotcb/adapters/lightning.py +++ b/src/hotcb/adapters/lightning.py @@ -6,6 +6,7 @@ from hotcb.kernel import HotKernel from hotcb.capabilities import TrainingCapabilities, validate_mutable_state +from hotcb.actuators import optimizer_actuators, mutable_state as make_mutable_state class HotCBLightning(pl.Callback): @@ -50,9 +51,65 @@ def on_fit_start(self, trainer: pl.Trainer, pl_module: pl.LightningModule) -> No self._capabilities = self._detect_capabilities(trainer, pl_module) if self.kernel.run_dir: self._capabilities.save(self.kernel.run_dir) + # Wire MutableState to kernel if not already set + self._wire_mutable_state(trainer, pl_module) env = self._env(trainer, pl_module, phase="fit_start") self.kernel.apply(env, events=["fit_start"]) + def _wire_mutable_state(self, trainer: pl.Trainer, pl_module: pl.LightningModule) -> None: + """Discover or create MutableState and wire it to the kernel.""" + from hotcb.actuators.state import MutableState + from hotcb.actuators import loss_actuators + + # 1. If kernel already has a MutableState, nothing to do + if self.kernel._mutable_state is not None: + return + + # 2. Check if pl_module.mutable_state is already a MutableState object + ms_attr = getattr(pl_module, "mutable_state", None) + if isinstance(ms_attr, MutableState): + # Merge optimizer actuators into it if optimizers are available + try: + optimizers = trainer.optimizers or [] + if optimizers: + from hotcb.actuators.state import MutableState as MS + opt_acts = optimizer_actuators(optimizers[0]) + # Combine: existing loss/custom actuators + auto-discovered optimizer actuators + all_acts = list(ms_attr._actuators.values()) + opt_acts + self.kernel._mutable_state = make_mutable_state(all_acts) + else: + self.kernel._mutable_state = ms_attr + except Exception: + self.kernel._mutable_state = ms_attr + return + + # 3. Check if explicit _mutable_state passed to adapter is a MutableState + if isinstance(self._mutable_state, MutableState): + self.kernel._mutable_state = self._mutable_state + return + + # 4. Old dict format: auto-wrap with loss_actuators + optimizer_actuators + all_acts = [] + try: + optimizers = trainer.optimizers or [] + if optimizers: + all_acts.extend(optimizer_actuators(optimizers[0])) + except Exception: + pass + + # Auto-wrap old mutable_state dict as loss actuators + ls = self._resolve_mutable_state_dict(pl_module) + if ls is not None: + weights = ls.get("weights", {}) + if weights: + try: + all_acts.extend(loss_actuators(weights)) + except Exception: + pass + + if all_acts: + self.kernel._mutable_state = make_mutable_state(all_acts) + def on_train_batch_end( self, trainer: pl.Trainer, @@ -133,11 +190,17 @@ def _detect_capabilities( # Mutable state ls_detected = False ls_keys: list[str] = [] - ls = self._resolve_mutable_state(pl_module) - if ls is not None: + from hotcb.actuators.state import MutableState + ms_attr = getattr(pl_module, "mutable_state", None) + if isinstance(ms_attr, MutableState): ls_detected = True - weights = ls.get("weights", {}) - ls_keys = list(weights.keys()) + ls_keys = ms_attr.keys() + else: + ls = self._resolve_mutable_state_dict(pl_module) + if ls is not None: + ls_detected = True + weights = ls.get("weights", {}) + ls_keys = list(weights.keys()) # Grad clip clip_val = None @@ -331,23 +394,35 @@ def _metric(name: str, default: Any = None) -> Any: # -- helpers ----------------------------------------------------------- def _resolve_mutable_state(self, pl_module: pl.LightningModule) -> Optional[Dict[str, Any]]: - """Resolve mutable_state: explicit > pl_module attribute.""" - if self._mutable_state is not None: + """Resolve mutable_state for env dict. Handles both new MutableState and old dicts.""" + from hotcb.actuators.state import MutableState + # New MutableState objects are wired to kernel directly, not put in env as dict + ms_attr = getattr(pl_module, "mutable_state", None) + if isinstance(ms_attr, MutableState): + return None # handled by kernel._mutable_state + # Fall through to old dict path + return self._resolve_mutable_state_dict(pl_module) + + def _resolve_mutable_state_dict(self, pl_module: pl.LightningModule) -> Optional[Dict[str, Any]]: + """Resolve old-style mutable_state dict: explicit > pl_module attribute.""" + if self._mutable_state is not None and isinstance(self._mutable_state, dict): valid, normalized = validate_mutable_state(self._mutable_state) if valid: return normalized if normalized is not self._mutable_state else self._mutable_state if hasattr(pl_module, "mutable_state"): obj = pl_module.mutable_state - valid, _ = validate_mutable_state(obj) - if valid: - return obj # return original ref so mutations are visible + if isinstance(obj, dict): + valid, _ = validate_mutable_state(obj) + if valid: + return obj - # Fallback: check loss_state (legacy name used by some integrations) + # Fallback: check loss_state (legacy name) if hasattr(pl_module, "loss_state"): obj = pl_module.loss_state - valid, _ = validate_mutable_state(obj) - if valid: - return obj + if isinstance(obj, dict): + valid, _ = validate_mutable_state(obj) + if valid: + return obj return None diff --git a/src/hotcb/demo.py b/src/hotcb/demo.py index 185b3d8..a61b2d1 100644 --- a/src/hotcb/demo.py +++ b/src/hotcb/demo.py @@ -22,8 +22,8 @@ class _OptProxy: """Minimal optimizer-like object for synthetic demos. - Provides ``param_groups`` so HotOptController can mutate lr/wd - exactly as it would with a real ``torch.optim.Optimizer``. + Provides ``param_groups`` so optimizer actuators can mutate lr/wd + exactly as they would with a real ``torch.optim.Optimizer``. """ def __init__(self, **kwargs): @@ -45,16 +45,16 @@ def _demo_training( """ from hotcb.kernel import HotKernel from hotcb.metrics import MetricsCollector - from hotcb.actuators import OptimizerActuator - - # --- Wire up kernel + metrics --- - mc = MetricsCollector(os.path.join(run_dir, "hotcb.metrics.jsonl")) - kernel = HotKernel(run_dir=run_dir, debounce_steps=1, metrics_collector=mc) - kernel.register_actuator("opt", OptimizerActuator()) + from hotcb.actuators import optimizer_actuators, mutable_state # --- Optimizer proxy (kernel mutates param_groups in-place) --- opt = _OptProxy(lr=1e-3, weight_decay=1e-4) + # --- Wire up kernel + metrics --- + mc = MetricsCollector(os.path.join(run_dir, "hotcb.metrics.jsonl")) + ms = mutable_state(optimizer_actuators(opt)) + kernel = HotKernel(run_dir=run_dir, debounce_steps=1, metrics_collector=mc, mutable_state=ms) + # --- Simulated training state --- loss = 2.5 + random.uniform(-0.1, 0.1) val_loss = 2.8 + random.uniform(-0.1, 0.1) diff --git a/src/hotcb/finetune_demo.py b/src/hotcb/finetune_demo.py index eda027c..98dac20 100644 --- a/src/hotcb/finetune_demo.py +++ b/src/hotcb/finetune_demo.py @@ -24,7 +24,7 @@ from hotcb.kernel import HotKernel from hotcb.metrics import MetricsCollector -from hotcb.actuators import OptimizerActuator, MutableStateActuator +from hotcb.actuators import optimizer_actuators, loss_actuators, mutable_state as make_mutable_state class _OptProxy: @@ -65,18 +65,13 @@ def _finetune_training( # --- Optimizer proxy (kernel mutates param_groups via opt module) --- opt = _OptProxy(lr=5e-4, weight_decay=5e-4) - # --- Mutable state for loss weight (kernel mutates via loss module) --- - mutable_state: dict = { - "weights": {"main": 1.0}, - "terms": {}, - "ramps": {}, - } + # --- Loss weights dict (kernel mutates via MutableState) --- + loss_weights: dict = {"main": 1.0} # --- Wire HotKernel + MetricsCollector + actuators --- mc = MetricsCollector(os.path.join(run_dir, "hotcb.metrics.jsonl")) - kernel = HotKernel(run_dir=run_dir, debounce_steps=1, metrics_collector=mc) - kernel.register_actuator("opt", OptimizerActuator()) - kernel.register_actuator("loss", MutableStateActuator()) + ms = make_mutable_state(optimizer_actuators(opt) + loss_actuators(loss_weights)) + kernel = HotKernel(run_dir=run_dir, debounce_steps=1, metrics_collector=mc, mutable_state=ms) # --- Recipe: scheduled commands written to commands.jsonl at trigger steps --- recipe_schedule: dict = { @@ -130,7 +125,7 @@ def _finetune_training( # --- Read current optimizer state (kernel may have mutated it) --- lr = opt.param_groups[0]["lr"] wd = opt.param_groups[0].get("weight_decay", 5e-4) - loss_weight = mutable_state["weights"].get("main", 1.0) + loss_weight = loss_weights.get("main", 1.0) # --- Simulate training dynamics --- @@ -232,7 +227,6 @@ def _finetune_training( "step": step, "epoch": step // 50, "optimizer": opt, - "mutable_state": mutable_state, "metrics": { "train_loss": round(scaled_train_loss, 6), "val_loss": round(scaled_val_loss, 6), @@ -278,7 +272,6 @@ def _finetune_training( "step": max_steps, "epoch": max_steps // 50, "optimizer": opt, - "mutable_state": mutable_state, } kernel.close(final_env) diff --git a/src/hotcb/golden_demo.py b/src/hotcb/golden_demo.py index 346db86..f7196c1 100644 --- a/src/hotcb/golden_demo.py +++ b/src/hotcb/golden_demo.py @@ -52,7 +52,7 @@ def _golden_training( """ from hotcb.kernel import HotKernel from hotcb.metrics import MetricsCollector - from hotcb.actuators import OptimizerActuator, MutableStateActuator + from hotcb.actuators import optimizer_actuators, loss_actuators, mutable_state # --- File paths --- commands_path = os.path.join(run_dir, "hotcb.commands.jsonl") @@ -89,17 +89,12 @@ def _golden_training( opt = _OptProxy(lr=1e-3, weight_decay=1e-4) # --- Mutable state for multi-task loss weights --- - mutable_state = { - "weights": {"weight_a": 0.7, "weight_b": 0.3}, - "terms": {}, - "ramps": {}, - } + loss_weights = {"weight_a": 0.7, "weight_b": 0.3} # --- Wire HotKernel + MetricsCollector + actuators --- mc = MetricsCollector(os.path.join(run_dir, "hotcb.metrics.jsonl")) - kernel = HotKernel(run_dir=run_dir, debounce_steps=1, metrics_collector=mc) - kernel.register_actuator("opt", OptimizerActuator()) - kernel.register_actuator("loss", MutableStateActuator()) + ms = mutable_state(optimizer_actuators(opt) + loss_actuators(loss_weights)) + kernel = HotKernel(run_dir=run_dir, debounce_steps=1, metrics_collector=mc, mutable_state=ms) # --- Training state --- loss_a = 2.3 + random.uniform(-0.05, 0.05) # CE loss @@ -125,8 +120,8 @@ def _golden_training( # --- Read current state from kernel-managed objects --- lr = opt.param_groups[0]["lr"] wd = opt.param_groups[0]["weight_decay"] - weight_a = mutable_state["weights"]["weight_a"] - weight_b = mutable_state["weights"]["weight_b"] + weight_a = loss_weights["weight_a"] + weight_b = loss_weights["weight_b"] # --- Simulate training dynamics --- # Warmup phase (steps 1-50) @@ -169,7 +164,6 @@ def _golden_training( "step": step, "epoch": step // 50, "optimizer": opt, - "mutable_state": mutable_state, "metrics": { "train_loss": round(total_loss, 6), "val_loss": round(weight_a * val_loss_a + weight_b * val_loss_b, 6), diff --git a/src/hotcb/kernel.py b/src/hotcb/kernel.py index cfccd8c..ca11b64 100644 --- a/src/hotcb/kernel.py +++ b/src/hotcb/kernel.py @@ -3,16 +3,18 @@ import os import time import traceback as tb_mod -from typing import Dict, List, Optional, Tuple +from typing import Any, Dict, List, Optional, Tuple from .freeze import FreezeState from .ledger import append_ledger from .ops import HotOp, command_to_hotop from .recipe import RecipePlayer from .util import FileCursor, read_new_jsonl, safe_mtime -from .modules import CallbackModule, HotOptController, HotLossController, HotTuneController +from .modules.cb.module import CallbackModule +from .modules.tune import HotTuneController from .modules.result import ModuleResult from .actuators.base import BaseActuator +from .actuators.state import MutableState from . import config as hotcb_config @@ -35,6 +37,7 @@ def __init__( log_path: Optional[str] = None, tune_recipe_path: Optional[str] = None, metrics_collector: Optional[object] = None, + mutable_state: Optional[MutableState] = None, ) -> None: self.run_dir = run_dir self.debounce_steps = max(1, int(debounce_steps)) @@ -51,6 +54,7 @@ def __init__( self.sources_dir = os.path.join(run_dir, "hotcb.sources") self.log_path = log_path or os.path.join(run_dir, "hotcb.log") self._metrics_collector = metrics_collector + self._mutable_state = mutable_state self._freeze_state = FreezeState.load(self.freeze_path) self._recipe_player = RecipePlayer( @@ -65,8 +69,6 @@ def __init__( self.modules: Dict[str, object] = { "cb": CallbackModule(auto_disable_on_error=auto_disable_on_error, log_path=self.log_path, source_capture_dir=self.sources_dir), - "opt": HotOptController(auto_disable_on_error=auto_disable_on_error), - "loss": HotLossController(auto_disable_on_error=auto_disable_on_error), "tune": HotTuneController( auto_disable_on_error=auto_disable_on_error, run_dir=run_dir, @@ -91,15 +93,6 @@ def register_actuator(self, name: str, actuator: BaseActuator) -> None: tune = self.modules.get("tune") if tune is not None and hasattr(tune, "register_actuator"): tune.register_actuator(name, actuator) - # Wire actuator validation into the corresponding module - if name == "opt": - opt_mod = self.modules.get("opt") - if opt_mod is not None and hasattr(opt_mod, "set_actuator"): - opt_mod.set_actuator(actuator) - elif name == "loss": - loss_mod = self.modules.get("loss") - if loss_mod is not None and hasattr(loss_mod, "set_actuator"): - loss_mod.set_actuator(actuator) def get_actuator(self, name: str) -> Optional[BaseActuator]: return self._actuators.get(name) @@ -247,11 +240,11 @@ def close(self, env: Optional[Dict[str, object]] = None) -> None: ) def _apply_single(self, op: HotOp, env: dict, event: str, step: int) -> None: - # freeze enforcement - if op.source == "external" and self._freeze_state.mode == "prod" and op.module in {"cb", "opt", "loss", "tune"}: + # freeze enforcement — all non-core modules are frozen + if op.source == "external" and self._freeze_state.mode == "prod" and op.module != "core": self._write_ledger(op, event, step, decision="ignored_freeze", payload=op.to_dict(), env=env) return - if op.source == "external" and self._freeze_state.mode in {"replay", "replay_adjusted"} and op.module in {"cb", "opt", "loss", "tune"}: + if op.source == "external" and self._freeze_state.mode in {"replay", "replay_adjusted"} and op.module != "core": self._write_ledger(op, event, step, decision="ignored_replay", payload=op.to_dict(), env=env) return @@ -260,25 +253,120 @@ def _apply_single(self, op: HotOp, env: dict, event: str, step: int) -> None: self._write_ledger(op, event, step, decision=decision, error=error, payload=payload, env=env) return + # cb and tune have dedicated module controllers mod = self.modules.get(op.module) - if mod is None: - self._write_ledger(op, event, step, decision="failed", error=f"unknown_module:{op.module}", payload=op.to_dict(), env=env) + if mod is not None: + result: Optional[ModuleResult] = None + try: + if hasattr(mod, "apply_op"): + result = mod.apply_op(op, env) + except Exception as e: # pragma: no cover - defensive + self._write_ledger(op, event, step, decision="failed", error=str(e), payload=op.to_dict(), env=env, traceback_str=tb_mod.format_exc()) + return + + if result is None: + self._write_ledger(op, event, step, decision="failed", error="no_result", payload=op.to_dict(), env=env) + return + + payload = result.payload if result.payload is not None else op.to_dict() + self._write_ledger(op, event, step, decision=result.decision, error=result.error, payload=payload, notes=result.notes, env=env, traceback_str=result.traceback) return - result: Optional[ModuleResult] = None - try: - if hasattr(mod, "apply_op"): - result = mod.apply_op(op, env) - except Exception as e: # pragma: no cover - defensive - self._write_ledger(op, event, step, decision="failed", error=str(e), payload=op.to_dict(), env=env, traceback_str=tb_mod.format_exc()) + # DEFAULT STREAM: opt, loss, or any custom module -> route through MutableState + self._apply_default_stream(op, env, event, step) + + # ------------------------------------------------------------------ + # Default stream: route through MutableState + # ------------------------------------------------------------------ + + def _apply_default_stream(self, op: HotOp, env: dict, event: str, step: int) -> None: + """Route opt/loss/custom ops through MutableState.""" + if self._mutable_state is None: + self._write_ledger( + op, event, step, decision="failed", + error="no_mutable_state", payload=op.to_dict(), env=env, + ) + return + + # Handle enable/disable + if op.op in ("enable", "disable"): + key = self._resolve_param_key(op) + if key: + if op.op == "enable": + self._mutable_state.enable(key) + else: + self._mutable_state.disable(key) + self._write_ledger( + op, event, step, decision="applied", + payload=op.to_dict(), env=env, + ) + else: + self._write_ledger( + op, event, step, decision="failed", + error="missing_param_key", payload=op.to_dict(), env=env, + ) + return + + if op.op == "set_params": + applied_any = False + errors: List[str] = [] + applied_params: Dict[str, Any] = {} + + for key, value in self._extract_param_pairs(op): + result = self._mutable_state.apply(key, value, env, step) + if result.success: + applied_any = True + applied_params[key] = value + else: + errors.append(f"{key}: {result.error}") + + if applied_any: + self._write_ledger( + op, event, step, decision="applied", + payload=applied_params, env=env, + notes="; ".join(errors) if errors else None, + ) + elif errors: + self._write_ledger( + op, event, step, decision="failed", + error="; ".join(errors), payload=op.to_dict(), env=env, + ) + else: + self._write_ledger( + op, event, step, decision="failed", + error="no_params", payload=op.to_dict(), env=env, + ) return - if result is None: - self._write_ledger(op, event, step, decision="failed", error="no_result", payload=op.to_dict(), env=env) + self._write_ledger( + op, event, step, decision="ignored", + notes=f"unknown_op:{op.op}", payload=op.to_dict(), env=env, + ) + + def _resolve_param_key(self, op: HotOp) -> Optional[str]: + """Extract param key from op for enable/disable.""" + params = op.params or {} + return params.get("key") or op.id + + def _extract_param_pairs(self, op: HotOp): + """Yield (key, value) pairs from a set_params op. + + Supports both new format: {"key": "lr", "value": 1e-3} + and direct params: {"lr": 1e-3, "weight_decay": 1e-4} + """ + params = op.params or {} + + # New format: explicit key+value + if "key" in params and "value" in params: + yield params["key"], params["value"] return - payload = result.payload if result.payload is not None else op.to_dict() - self._write_ledger(op, event, step, decision=result.decision, error=result.error, payload=payload, notes=result.notes, env=env, traceback_str=result.traceback) + # Direct params format: each key-value pair is a param to set + # Skip non-param keys like "opt_idx", "group", "groups", "id" + skip_keys = {"opt_idx", "group", "groups", "id"} + for k, v in params.items(): + if k not in skip_keys and v is not None: + yield k, v def _apply_core_op(self, op: HotOp) -> Tuple[str, Optional[str], Optional[dict]]: if op.op == "freeze": diff --git a/src/hotcb/modules/__init__.py b/src/hotcb/modules/__init__.py index 0d911a1..920db9d 100644 --- a/src/hotcb/modules/__init__.py +++ b/src/hotcb/modules/__init__.py @@ -1,4 +1,2 @@ from .cb.module import CallbackModule # noqa: F401 -from .opt import HotOptController # noqa: F401 -from .loss import HotLossController # noqa: F401 from .tune import HotTuneController # noqa: F401 diff --git a/src/hotcb/modules/loss.py b/src/hotcb/modules/loss.py deleted file mode 100644 index 6740c91..0000000 --- a/src/hotcb/modules/loss.py +++ /dev/null @@ -1,137 +0,0 @@ -from __future__ import annotations - -import traceback as tb_mod -from dataclasses import dataclass, field -from typing import Dict, Optional - -from ..ops import HotOp -from .result import ModuleResult - - -@dataclass -class LossHandle: - id: str - enabled: bool = True - last_params: Dict[str, float] = field(default_factory=dict) - last_error: Optional[str] = None - - -class HotLossController: - """ - Live loss-state mutations (weights/toggles/ramps). - """ - - def __init__(self, auto_disable_on_error: bool = True) -> None: - self.handles: Dict[str, LossHandle] = {} - self.auto_disable_on_error = auto_disable_on_error - self._actuator = None - - def set_actuator(self, actuator) -> None: - """Register a MutableStateActuator for pre-apply validation.""" - self._actuator = actuator - - def _resolve_mutable_state(self, env: dict): - if "mutable_state" in env: - return env.get("mutable_state") - resolver = env.get("resolve_mutable_state") - if callable(resolver): - try: - return resolver() - except Exception: - return None - return None - - def apply_op(self, op: HotOp, env: dict) -> ModuleResult: - hid = op.id or "main" - handle = self.handles.get(hid) - if handle is None: - handle = LossHandle(id=hid) - self.handles[hid] = handle - - if op.op == "enable": - handle.enabled = True - return ModuleResult(decision="applied") - if op.op == "disable": - handle.enabled = False - return ModuleResult(decision="applied") - - if op.op == "set_params": - if not handle.enabled: - return ModuleResult(decision="skipped_noop", notes="handle_disabled") - params = op.params or {} - handle.last_params.update(params) - mutable_state = self._resolve_mutable_state(env) - if mutable_state is None: - return ModuleResult(decision="failed", error="missing_mutable_state") - - # Pre-validate via actuator if registered - if self._actuator is not None: - try: - for key, value in self._actuator_weight_patches(params): - vresult = self._actuator.validate( - {"op": "set", "key": key, "value": value}, env, - ) - if not vresult.valid: - return ModuleResult( - decision="failed", - error=f"validation: {'; '.join(vresult.errors)}", - notes="actuator_validation_failed", - ) - except Exception: - pass # validation is best-effort - - try: - self._apply_params(mutable_state, params) - return ModuleResult(decision="applied", payload=params) - except Exception as e: - handle.last_error = str(e) - if self.auto_disable_on_error: - handle.enabled = False - return ModuleResult(decision="failed", error=str(e), traceback=tb_mod.format_exc()) - - return ModuleResult(decision="ignored", notes=f"unknown_op:{op.op}") - - @staticmethod - def _actuator_weight_patches(params: dict): - """Yield (key, value) pairs for loss weight actuator validation.""" - for k, v in params.items(): - if k.endswith("_w"): - yield k[:-2], v - elif k.startswith("terms.") or k == "terms": - continue # terms are toggles, not validated by actuator - elif k.startswith("ramps.") or k == "ramps": - continue # ramps are configs, not validated by actuator - elif isinstance(v, (int, float)): - yield k, v - - def _apply_params(self, mutable_state: dict, params: dict) -> None: - weights = mutable_state.setdefault("weights", {}) - terms = mutable_state.setdefault("terms", {}) - ramps = mutable_state.setdefault("ramps", {}) - - for k, v in params.items(): - if k.endswith("_w"): - weights[k[:-2]] = v - continue - if k.startswith("terms."): - terms[k.split(".", 1)[1]] = bool(v) - continue - if k == "terms" and isinstance(v, dict): - for tk, tv in v.items(): - terms[tk] = bool(tv) - continue - if k.startswith("ramps.") and isinstance(v, dict): - ramps[k.split(".", 1)[1]] = v - continue - if k == "ramps" and isinstance(v, dict): - for rk, rv in v.items(): - ramps[rk] = rv - continue - # Fallback to weights bucket - weights[k] = v - - def status(self) -> Dict[str, dict]: - return { - hid: {"enabled": h.enabled, "last_params": dict(h.last_params), "last_error": h.last_error} - for hid, h in self.handles.items() - } diff --git a/src/hotcb/modules/opt.py b/src/hotcb/modules/opt.py deleted file mode 100644 index 5663ec3..0000000 --- a/src/hotcb/modules/opt.py +++ /dev/null @@ -1,242 +0,0 @@ -from __future__ import annotations - -import traceback as tb_mod -from dataclasses import dataclass, field -from typing import Dict, Optional - -from ..ops import HotOp -from .result import ModuleResult - - -@dataclass -class OptHandle: - id: str - enabled: bool = True - last_params: Dict[str, float] = field(default_factory=dict) - last_error: Optional[str] = None - - -class HotOptController: - """ - Live optimizer control (lr, weight decay, scheduler nudges). - - Multi-optimizer support - ----------------------- - Commands can target a specific optimizer via ``params.opt_idx`` - (0-based index into ``env["optimizers"]``). Defaults to 0. - - Scheduler coordination - ---------------------- - When a scheduler is present in ``env["scheduler"]`` or - ``env["schedulers"]``, setting ``lr`` also updates the scheduler's - ``base_lrs`` so the scheduler scales from the new value instead of - fighting with it. - - Grad clip - --------- - ``clip_norm`` is applied to ``trainer.gradient_clip_val`` (Lightning) - or ``args.max_grad_norm`` (HF) when available. If neither is - present, it's stored as ``hotcb_clip_norm`` in the param group as - advisory and the result notes ``clip_norm_advisory_only``. - - Actuator validation - ------------------- - When an ``OptimizerActuator`` is registered via ``set_actuator()``, - mutations are pre-validated against the actuator's bounds before - applying. Validation failures are returned as ``failed`` results - without mutating state. - """ - - def __init__(self, auto_disable_on_error: bool = True) -> None: - self.handles: Dict[str, OptHandle] = {} - self.auto_disable_on_error = auto_disable_on_error - self._actuator = None - - def set_actuator(self, actuator) -> None: - """Register an OptimizerActuator for pre-apply validation.""" - self._actuator = actuator - - def _resolve_optimizer(self, env: dict, opt_idx: int = 0): - """Resolve a specific optimizer by index. - - Falls back to env["optimizer"] (the default) if the optimizers - list is not available or the index is out of range. - """ - optimizers = env.get("optimizers") - if isinstance(optimizers, (list, tuple)) and 0 <= opt_idx < len(optimizers): - return optimizers[opt_idx] - # Fallback: single optimizer - if opt_idx == 0: - opt = env.get("optimizer") - if opt is not None: - return opt - resolver = env.get("resolve_optimizer") - if callable(resolver): - try: - return resolver() - except Exception: - return None - return None - - def apply_op(self, op: HotOp, env: dict) -> ModuleResult: - hid = op.id or "main" - handle = self.handles.get(hid) - if handle is None: - handle = OptHandle(id=hid) - self.handles[hid] = handle - - if op.op == "enable": - handle.enabled = True - return ModuleResult(decision="applied") - - if op.op == "disable": - handle.enabled = False - return ModuleResult(decision="applied") - - if op.op == "set_params": - if not handle.enabled: - return ModuleResult(decision="skipped_noop", notes="handle_disabled") - - params = dict(op.params or {}) - # Extract opt_idx (don't pass it to the optimizer) - opt_idx = int(params.pop("opt_idx", 0)) - handle.last_params.update(params) - - opt = self._resolve_optimizer(env, opt_idx) - if opt is None: - num_opts = len(env.get("optimizers", [])) - error = f"missing_optimizer (opt_idx={opt_idx}" - if num_opts: - error += f", {num_opts} optimizer(s) available" - error += ")" - return ModuleResult(decision="failed", error=error) - - # Pre-validate via actuator if registered - if self._actuator is not None: - try: - for act_op, act_val in self._actuator_patches(params): - vresult = self._actuator.validate( - {"op": act_op, "value": act_val, "opt_idx": opt_idx}, env, - ) - if not vresult.valid: - return ModuleResult( - decision="failed", - error=f"validation: {'; '.join(vresult.errors)}", - notes="actuator_validation_failed", - ) - except Exception: - pass # validation is best-effort, don't block if actuator errors - - try: - notes = self._apply_params(opt, params, env, opt_idx) - return ModuleResult(decision="applied", payload=params, notes=notes) - except Exception as e: - handle.last_error = str(e) - if self.auto_disable_on_error: - handle.enabled = False - return ModuleResult(decision="failed", error=str(e), traceback=tb_mod.format_exc()) - - return ModuleResult(decision="ignored", notes=f"unknown_op:{op.op}") - - @staticmethod - def _actuator_patches(params: dict): - """Yield (actuator_op, value) pairs for actuator validation.""" - if "lr" in params and params["lr"] is not None: - yield "lr_set", float(params["lr"]) - if "weight_decay" in params and params["weight_decay"] is not None: - yield "wd_set", float(params["weight_decay"]) - if "betas" in params and params["betas"] is not None: - yield "betas_set", params["betas"] - - def _apply_params(self, optimizer, params: dict, env: dict, opt_idx: int = 0) -> Optional[str]: - """Mutate optimizer param groups. Returns optional notes string.""" - notes_parts: list[str] = [] - groups = optimizer.param_groups - - if "group" in params and params["group"] is not None: - try: - idx = int(params["group"]) - groups = [optimizer.param_groups[idx]] - except Exception: - raise ValueError(f"invalid group index {params['group']}") - - if "groups" in params and isinstance(params["groups"], dict): - # explicit mapping group_idx -> params - for k, v in params["groups"].items(): - idx = int(k) - self._apply_params_to_group(optimizer.param_groups[idx], v) - return None - - for g in groups: - self._apply_params_to_group(g, params) - - # -- scheduler coordination -- - if "lr" in params and params["lr"] is not None: - sched = self._resolve_scheduler(env, opt_idx) - if sched is not None and hasattr(sched, "base_lrs"): - new_lr = float(params["lr"]) - try: - for i in range(len(sched.base_lrs)): - sched.base_lrs[i] = new_lr - notes_parts.append("scheduler_base_lrs_updated") - except Exception: - notes_parts.append("scheduler_base_lrs_update_failed") - - # -- grad clip wiring -- - if "clip_norm" in params and params["clip_norm"] is not None: - clip_applied = self._apply_clip_norm(float(params["clip_norm"]), env) - if not clip_applied: - notes_parts.append("clip_norm_advisory_only") - - return "; ".join(notes_parts) if notes_parts else None - - def _apply_params_to_group(self, group: dict, params: dict) -> None: - if "lr" in params and params["lr"] is not None: - group["lr"] = float(params["lr"]) - if "weight_decay" in params and params["weight_decay"] is not None: - group["weight_decay"] = float(params["weight_decay"]) - if "betas" in params and params["betas"] is not None: - group["betas"] = tuple(float(b) for b in params["betas"]) - if "eps" in params and params["eps"] is not None: - group["eps"] = float(params["eps"]) - if "scheduler_scale" in params and params["scheduler_scale"] is not None: - group["lr"] = float(group.get("lr", 0.0)) * float(params["scheduler_scale"]) - if "scheduler_drop" in params and params["scheduler_drop"] is not None: - group["lr"] = float(group.get("lr", 0.0)) * float(params["scheduler_drop"]) - if "clip_norm" in params and params["clip_norm"] is not None: - group["hotcb_clip_norm"] = float(params["clip_norm"]) - - def _resolve_scheduler(self, env: dict, opt_idx: int = 0): - """Resolve the scheduler for a given optimizer index.""" - schedulers = env.get("schedulers") - if isinstance(schedulers, (list, tuple)) and 0 <= opt_idx < len(schedulers): - return schedulers[opt_idx] - if opt_idx == 0: - return env.get("scheduler") - return None - - def _apply_clip_norm(self, clip_val: float, env: dict) -> bool: - """Try to wire clip_norm into the framework. Returns True if wired.""" - # Lightning: trainer.gradient_clip_val - trainer = env.get("trainer") - if trainer is not None and hasattr(trainer, "gradient_clip_val"): - try: - trainer.gradient_clip_val = clip_val - return True - except Exception: - pass - # HF: args.max_grad_norm - args = env.get("args") - if args is not None and hasattr(args, "max_grad_norm"): - try: - args.max_grad_norm = clip_val - return True - except Exception: - pass - return False - - def status(self) -> Dict[str, dict]: - return { - hid: {"enabled": h.enabled, "last_params": dict(h.last_params), "last_error": h.last_error} - for hid, h in self.handles.items() - } diff --git a/src/hotcb/server/ai_engine.py b/src/hotcb/server/ai_engine.py index a6010b8..266d660 100644 --- a/src/hotcb/server/ai_engine.py +++ b/src/hotcb/server/ai_engine.py @@ -147,9 +147,10 @@ class LLMAutopilotEngine: cadence control, cost tracking, and action history. """ - def __init__(self, run_dir: str, config: Optional[AIConfig] = None): + def __init__(self, run_dir: str, config: Optional[AIConfig] = None, autopilot_config: Any = None): self._run_dir = run_dir self.config = config or AIConfig() + self._autopilot_config = autopilot_config # AutopilotConfig or None self.state = AIState(max_runs=self.config.max_runs) self._decisions: List[AIDecision] = [] self._total_cost: float = 0.0 @@ -158,6 +159,17 @@ def __init__(self, run_dir: str, config: Optional[AIConfig] = None): self._enabled: bool = True self._last_step_with_metrics: int = 0 + # Resolve cadence params from config (AutopilotConfig if available) + self._min_interval = 10 + self._max_wait = 200 + if self._autopilot_config is not None: + self._min_interval = getattr(self._autopilot_config, "ai_min_interval", 10) + self._max_wait = getattr(self._autopilot_config, "ai_max_wait", 200) + ai_cadence = getattr(self._autopilot_config, "ai_default_cadence", None) + if ai_cadence is not None and self.config.cadence == 50: + # Only override if user hasn't explicitly set cadence in AIConfig + self.config.cadence = ai_cadence + # Load persisted state if exists self.load_state() @@ -221,8 +233,8 @@ def should_invoke( if force: return True - # Minimum cooldown: 10 steps between invocations - if step - self._last_invoked_step < 10: + # Minimum cooldown between invocations (from config) + if step - self._last_invoked_step < self._min_interval: return False # On-alert: any alert fires @@ -323,7 +335,7 @@ async def invoke( # Process next_check — cap all values to prevent exponential sleep nc = parsed["next_check"] nc_mode = nc.get("mode", "periodic") - max_wait = max(self.config.cadence * 4, 200) # never wait more than 4x cadence or 200 steps + max_wait = max(self.config.cadence * 4, self._max_wait) # never wait more than 4x cadence or configured max if nc_mode == "at_step": requested_step = nc.get("step", step + self.config.cadence) # Cap: don't let AI schedule more than max_wait steps ahead @@ -340,7 +352,7 @@ async def invoke( interval = nc.get("interval", self.config.cadence) # Cap periodic interval interval = min(interval, max_wait) - interval = max(interval, 10) # minimum 10 steps + interval = max(interval, self._min_interval) # minimum from config self.state.cadence_override = interval self.state.next_check_step = None diff --git a/src/hotcb/server/api.py b/src/hotcb/server/api.py index b3c8479..5636262 100644 --- a/src/hotcb/server/api.py +++ b/src/hotcb/server/api.py @@ -64,7 +64,7 @@ class ValidateRequest(BaseModel): # --------------------------------------------------------------------------- def _cmd_path(request: Request) -> str: - run_dir: str = request.app.state.run_dir + run_dir: str = request.app.state.config.run_dir return os.path.join(run_dir, "hotcb.commands.jsonl") @@ -93,7 +93,7 @@ async def loss_set(body: LossSetRequest, request: Request): @router.get("/loss/params") async def loss_params(request: Request): """Return current loss weight values from the latest metrics or applied ledger.""" - run_dir: str = request.app.state.run_dir + run_dir: str = request.app.state.config.run_dir # Strategy 1: read from latest metrics (most up-to-date) metrics_path = os.path.join(run_dir, "hotcb.metrics.jsonl") @@ -162,7 +162,7 @@ async def tune_mode(body: TuneModeRequest, request: Request): @router.get("/cb/list") async def cb_list(request: Request): """Return list of registered callbacks.""" - run_dir: str = request.app.state.run_dir + run_dir: str = request.app.state.config.run_dir applied_path = os.path.join(run_dir, "hotcb.applied.jsonl") # Start with server-side registry @@ -266,7 +266,7 @@ async def cb_unload(cb_id: str, request: Request): @router.post("/freeze") async def freeze(body: FreezeRequest, request: Request): - run_dir: str = request.app.state.run_dir + run_dir: str = request.app.state.config.run_dir freeze_path = os.path.join(run_dir, "hotcb.freeze.json") cfg = { "mode": body.mode, @@ -291,7 +291,7 @@ async def schedule(body: ScheduleRequest, request: Request): } if body.params: cmd["params"] = body.params - run_dir: str = request.app.state.run_dir + run_dir: str = request.app.state.config.run_dir recipe_path = os.path.join(run_dir, "hotcb.recipe.jsonl") append_jsonl(recipe_path, cmd) # Ensure recipe editor picks up the new entry on next fetch @@ -411,7 +411,7 @@ async def chat(body: ChatRequest, request: Request): @router.post("/applied/save-as-recipe") async def save_applied_as_recipe(request: Request): """Convert applied mutation history into a recipe file.""" - run_dir: str = request.app.state.run_dir + run_dir: str = request.app.state.config.run_dir applied_path = os.path.join(run_dir, "hotcb.applied.jsonl") recipe_path = os.path.join(run_dir, "hotcb.recipe.jsonl") diff --git a/src/hotcb/server/app.py b/src/hotcb/server/app.py index 7e2310f..f658e1e 100644 --- a/src/hotcb/server/app.py +++ b/src/hotcb/server/app.py @@ -95,6 +95,7 @@ def create_app( poll_interval: float = 0.5, multi_dirs: Optional[List[str]] = None, demo_mode: bool = False, + config_yaml: Optional[str] = None, ) -> Any: """ Build the FastAPI application wired to *run_dir*. @@ -107,6 +108,8 @@ def create_app( How often (seconds) to poll JSONL files for changes. multi_dirs : list[str] | None Additional run directories for multi-run comparison. + config_yaml : str | None + Path to a YAML config file for DashboardConfig overrides. """ _check_deps() @@ -114,6 +117,7 @@ def create_app( from fastapi.middleware.cors import CORSMiddleware from fastapi.staticfiles import StaticFiles from fastapi.responses import FileResponse + from .config import DashboardConfig from .tailer import JsonlTailer from .api import router as api_router from .recipe_editor import router as recipe_router, RecipeEditor @@ -130,22 +134,34 @@ def create_app( from .launcher import TrainingLauncher, create_router as launcher_router_factory from .ai_engine import LLMAutopilotEngine, AIConfig - manager = ConnectionManager() - tailer = JsonlTailer(poll_interval=poll_interval) - projection_engine = ProjectionEngine() - notification_engine = NotificationEngine() - manifold_engine = ManifoldEngine() - # run_dir is immutable — set once at startup, never changed. # Keep the original CLI path for discovery; resolve for monitoring. cli_run_dir = run_dir run_dir = _resolve_active_run_dir(run_dir) - autopilot_engine = AutopilotEngine.with_default_guidelines(run_dir=run_dir, mode="off") - training_launcher = TrainingLauncher(run_dir=run_dir) + # Build centralized config early — needed for tailer poll_interval + dashboard_config = DashboardConfig.load( + run_dir, + yaml_path=config_yaml, + poll_interval=poll_interval, + ) + + manager = ConnectionManager() + tailer = JsonlTailer(poll_interval=dashboard_config.server.poll_interval) + projection_engine = ProjectionEngine() + notification_engine = NotificationEngine() + manifold_engine = ManifoldEngine() + + autopilot_engine = AutopilotEngine.with_default_guidelines( + run_dir=run_dir, mode="off", config=dashboard_config.autopilot, + ) + training_launcher = TrainingLauncher(run_dir=cli_run_dir) # Initialize AI autopilot engine - ai_engine = LLMAutopilotEngine(run_dir=run_dir, config=AIConfig()) + ai_engine = LLMAutopilotEngine( + run_dir=run_dir, config=AIConfig(), + autopilot_config=dashboard_config.autopilot, + ) autopilot_engine.set_ai_engine(ai_engine) _tailer_task: Optional[asyncio.Task] = None @@ -240,7 +256,6 @@ async def _autopilot_feed(ch: str, records: list) -> None: ) # Store references for use by route modules - app.state.run_dir = run_dir app.state.demo_mode = demo_mode app.state.all_dirs = all_dirs app.state.manager = manager @@ -252,6 +267,9 @@ async def _autopilot_feed(ch: str, records: list) -> None: app.state.ai_engine = ai_engine app.state.cb_registry = {} + app.state.config = dashboard_config + app.state.mutable_state = None # populated externally when training starts + # Initialize recipe editor with default recipe path default_recipe = os.path.join(run_dir, "hotcb.recipe.jsonl") if os.path.exists(default_recipe): @@ -272,7 +290,7 @@ async def _autopilot_feed(ch: str, records: list) -> None: @app.get("/api/features/snapshots") async def get_feature_snapshots(last_n: int = 50): """Return recent feature capture snapshots.""" - feat_path = os.path.join(run_dir, "hotcb.features.jsonl") + feat_path = os.path.join(app.state.config.run_dir, "hotcb.features.jsonl") records = _read_tail(feat_path, last_n) return {"snapshots": records} @@ -303,7 +321,11 @@ async def websocket_endpoint(ws: WebSocket): manager.connect(ws, channels) try: # Send initial burst of recent data - await _send_initial_data(ws, run_dir, channels) + await _send_initial_data( + ws, app.state.config.run_dir, channels, + metrics_limit=app.state.config.server.history_limit_metrics, + applied_limit=app.state.config.server.ws_initial_burst, + ) # Keep alive — client sends pings, we relay new data via broadcast while True: # Wait for client messages (ping/subscribe changes) @@ -324,34 +346,53 @@ async def websocket_endpoint(ws: WebSocket): manager.disconnect(ws) # --- REST endpoints --- + @app.get("/api/config") + async def get_config(): + """Return the full dashboard configuration. + + Controls are populated live from MutableState when available, + falling back to reconstructed controls from the applied ledger. + """ + from .config import controls_from_mutable_state, controls_from_applied_ledger + + d = app.state.config.to_dict() + ms = getattr(app.state, "mutable_state", None) + if ms is not None: + d["controls"] = controls_from_mutable_state(ms) + elif not d.get("controls"): + d["controls"] = controls_from_applied_ledger(app.state.config.run_dir) + return d + @app.get("/api/status") async def get_status(): - return _build_status(run_dir) + return _build_status(app.state.config.run_dir) @app.get("/api/metrics/names") async def get_metric_names(): """Return discovered metric names from the metrics JSONL.""" - return {"names": _discover_metric_names(run_dir)} + return {"names": _discover_metric_names(app.state.config.run_dir)} @app.get("/api/metrics/history") - async def get_metrics_history(last_n: int = 500): + async def get_metrics_history(last_n: Optional[int] = None): """Return recent metric records.""" + limit = last_n if last_n is not None else app.state.config.server.history_limit_metrics return {"records": _read_tail( - os.path.join(run_dir, "hotcb.metrics.jsonl"), last_n + os.path.join(app.state.config.run_dir, "hotcb.metrics.jsonl"), limit )} @app.get("/api/applied/history") - async def get_applied_history(last_n: int = 200): + async def get_applied_history(last_n: Optional[int] = None): """Return recent applied ledger entries.""" + limit = last_n if last_n is not None else app.state.config.server.history_limit_applied return {"records": _read_tail( - os.path.join(run_dir, "hotcb.applied.jsonl"), last_n + os.path.join(app.state.config.run_dir, "hotcb.applied.jsonl"), limit )} @app.get("/api/health") async def health(): return { "status": "ok", - "run_dir": run_dir, + "run_dir": app.state.config.run_dir, "connections": manager.connection_count, "tailer_running": tailer.is_running, } @@ -365,9 +406,11 @@ async def discover_runs(): parent_metrics = os.path.join(parent, "hotcb.metrics.jsonl") if os.path.exists(parent_metrics): discovered.append(_build_run_info(parent)) - # Scan subdirs + # Scan subdirs (skip backups and hidden dirs) try: for name in sorted(os.listdir(parent)): + if name.startswith("hotcb_bkp") or name.startswith(".") or name == "__pycache__": + continue subpath = os.path.join(parent, name) if os.path.isdir(subpath) and os.path.exists( os.path.join(subpath, "hotcb.metrics.jsonl") @@ -377,11 +420,54 @@ async def discover_runs(): pass return {"runs": discovered} + class _ExternalDirRequest(_PydanticBase): + dir: str + + @app.post("/api/runs/load-external") + async def load_external_runs(request_body: _ExternalDirRequest): + """Load runs from an external directory for comparison.""" + from fastapi.responses import JSONResponse + dir_path = request_body.dir + if not dir_path or not os.path.isdir(dir_path): + return JSONResponse( + status_code=400, + content={"detail": f"Invalid directory: {dir_path!r}"}, + ) + discovered = [] + # Check if dir itself is a run + if os.path.exists(os.path.join(dir_path, "hotcb.metrics.jsonl")): + discovered.append(_build_run_info(dir_path)) + # Scan subdirs + try: + for name in sorted(os.listdir(dir_path)): + if name.startswith(".") or name.startswith("hotcb_bkp") or name == "__pycache__": + continue + subpath = os.path.join(dir_path, name) + if os.path.isdir(subpath) and os.path.exists( + os.path.join(subpath, "hotcb.metrics.jsonl") + ): + discovered.append(_build_run_info(subpath)) + except OSError: + pass + return {"runs": discovered, "source_dir": dir_path} + + @app.get("/api/runs/external/metrics") + async def external_run_metrics(dir: str, last_n: int = 50000): + """Read metrics from an external run directory.""" + metrics_path = os.path.join(dir, "hotcb.metrics.jsonl") + return {"records": _read_tail(metrics_path, last_n)} + + @app.get("/api/runs/external/applied") + async def external_run_applied(dir: str, last_n: int = 200): + """Read applied ledger from an external run directory.""" + applied_path = os.path.join(dir, "hotcb.applied.jsonl") + return {"records": _read_tail(applied_path, last_n)} + # --- UI mode endpoints --- _VALID_UI_MODES = {"engineer", "education", "vibe_coder"} def _ui_mode_path() -> str: - return os.path.join(run_dir, "hotcb.ui.json") + return os.path.join(app.state.config.run_dir, "hotcb.ui.json") def _read_ui_mode() -> str: path = _ui_mode_path() @@ -421,7 +507,7 @@ async def set_ui_mode(body: UIModeRequest): async def get_capabilities(): """Return training capabilities detected by the adapter.""" from ..capabilities import TrainingCapabilities - caps = TrainingCapabilities.load(run_dir) + caps = TrainingCapabilities.load(app.state.config.run_dir) if caps is None: return {"detected": False} return {"detected": True, **caps.to_dict()} @@ -433,10 +519,11 @@ async def get_control_state(): Reads latest metrics for slider values, active config, autopilot mode, and freeze state so the frontend can restore its controls. """ + rd = app.state.config.run_dir state: dict = {} # Latest metric values (for sliders) - metrics_path = os.path.join(run_dir, "hotcb.metrics.jsonl") + metrics_path = os.path.join(rd, "hotcb.metrics.jsonl") last_metrics = _read_tail(metrics_path, 1) if last_metrics: state["latest_metrics"] = last_metrics[0].get("metrics", {}) @@ -446,7 +533,7 @@ async def get_control_state(): state["latest_step"] = 0 # Active training config - run_json = os.path.join(run_dir, "hotcb.run.json") + run_json = os.path.join(rd, "hotcb.run.json") if os.path.exists(run_json): try: with open(run_json, "r") as f: @@ -460,7 +547,7 @@ async def get_control_state(): state["autopilot_mode"] = autopilot_engine.mode # Freeze state - state["freeze"] = _build_status(run_dir).get("freeze", {"mode": "off"}) + state["freeze"] = _build_status(rd).get("freeze", {"mode": "off"}) # Training status state["training_running"] = training_launcher.running @@ -468,7 +555,7 @@ async def get_control_state(): # Last applied opt/loss params — use cached scan to avoid re-reading # the entire file on every poll cycle - applied_path = os.path.join(run_dir, "hotcb.applied.jsonl") + applied_path = os.path.join(rd, "hotcb.applied.jsonl") last_opt_params, last_loss_params, modules_seen = _get_applied_summary(applied_path) state["last_opt_params"] = last_opt_params state["last_loss_params"] = last_loss_params @@ -478,17 +565,32 @@ async def get_control_state(): if not loss_active: try: from ..capabilities import TrainingCapabilities - caps = TrainingCapabilities.load(run_dir) + caps = TrainingCapabilities.load(rd) if caps and getattr(caps, 'mutable_state_detected', False): loss_active = True except Exception: pass + # Also detect loss from MutableState actuators + ms = getattr(app.state, "mutable_state", None) + if not loss_active and ms is not None: + try: + for desc in ms.describe_all(): + if desc.get("group") == "loss": + loss_active = True + break + except Exception: + pass state["modules_active"] = { "opt": True, "loss": loss_active, "cb": "cb" in modules_seen, } + # Live controls from MutableState, or fallback to applied ledger + from .config import controls_from_mutable_state, controls_from_applied_ledger + live_controls = controls_from_mutable_state(ms) + state["controls"] = live_controls if live_controls else controls_from_applied_ledger(rd) + # External training detection is_launcher = training_launcher.running or bool( training_launcher._active_config_id @@ -703,6 +805,7 @@ def _resolve_active_run_dir(run_dir: str) -> str: If run_dir contains hotcb.metrics.jsonl directly, it's a single run dir. Otherwise, scan for subdirs with metrics and return the latest. + Skips backup dirs (hotcb_bkp_*) and hidden dirs (.*). """ metrics_direct = os.path.join(run_dir, "hotcb.metrics.jsonl") if os.path.exists(metrics_direct): @@ -710,6 +813,9 @@ def _resolve_active_run_dir(run_dir: str) -> str: subdirs = [] try: for name in os.listdir(run_dir): + # Skip backup dirs, hidden dirs, and __pycache__ + if name.startswith("hotcb_bkp") or name.startswith(".") or name == "__pycache__": + continue subpath = os.path.join(run_dir, name) if os.path.isdir(subpath) and os.path.exists( os.path.join(subpath, "hotcb.metrics.jsonl") @@ -773,7 +879,14 @@ def _build_run_info(run_path: str) -> dict: } -async def _send_initial_data(ws: Any, run_dir: str, channels: Set[str]) -> None: +async def _send_initial_data( + ws: Any, + run_dir: str, + channels: Set[str], + *, + metrics_limit: int = 500, + applied_limit: int = 200, +) -> None: """Send a burst of recent data when a client first connects.""" from ..util import sanitize_floats channel_files = { @@ -786,7 +899,8 @@ async def _send_initial_data(ws: Any, run_dir: str, channels: Set[str]) -> None: filename = channel_files.get(ch) if not filename: continue - records = _read_tail(os.path.join(run_dir, filename), 200) + limit = metrics_limit if ch == "metrics" else applied_limit + records = _read_tail(os.path.join(run_dir, filename), limit) if records: try: await ws.send_json({"channel": ch, "data": sanitize_floats(records), "initial": True}) diff --git a/src/hotcb/server/autopilot.py b/src/hotcb/server/autopilot.py index a80f2cc..b59b624 100644 --- a/src/hotcb/server/autopilot.py +++ b/src/hotcb/server/autopilot.py @@ -173,11 +173,12 @@ class AutopilotEngine: - ``"ai_auto"`` — LLM proposes and applies (with safety guards) """ - def __init__(self, run_dir: str, mode: str = "off") -> None: + def __init__(self, run_dir: str, mode: str = "off", config: Any = None) -> None: if mode not in _VALID_MODES: raise ValueError(f"Invalid mode: {mode!r}") self._run_dir = run_dir self._mode = mode + self._config = config # AutopilotConfig or None (uses hardcoded defaults) self._rules: dict[str, AutopilotRule] = {} self._history: list[AutopilotAction] = [] # Per-metric history for condition evaluation @@ -189,9 +190,9 @@ def __init__(self, run_dir: str, mode: str = "off") -> None: self._ai_engine: Any = None @classmethod - def with_default_guidelines(cls, run_dir: str, mode: str = "off") -> "AutopilotEngine": + def with_default_guidelines(cls, run_dir: str, mode: str = "off", config: Any = None) -> "AutopilotEngine": """Create engine pre-loaded with community default guidelines.""" - engine = cls(run_dir=run_dir, mode=mode) + engine = cls(run_dir=run_dir, mode=mode, config=config) from .guidelines import DEFAULT_GUIDELINES_PATH if os.path.exists(DEFAULT_GUIDELINES_PATH): engine.load_guidelines(DEFAULT_GUIDELINES_PATH) @@ -359,10 +360,18 @@ def _check_condition( elif rule.condition == "divergence": history = self._metric_history.get(rule.metric_name, []) - return _eval_divergence(history, rule.params) + # Merge config defaults into rule params (rule params take precedence) + params = dict(rule.params) + if "threshold" not in params and self._config is not None: + params["threshold"] = self._config.divergence_threshold + return _eval_divergence(history, params) elif rule.condition == "overfitting": - return _eval_overfitting(metrics, rule.params) + # Merge config defaults into rule params (rule params take precedence) + params = dict(rule.params) + if "ratio_threshold" not in params and self._config is not None: + params["ratio_threshold"] = self._config.ratio_threshold + return _eval_overfitting(metrics, params) elif rule.condition == "custom": expr = rule.params.get("expression", "") diff --git a/src/hotcb/server/config.py b/src/hotcb/server/config.py new file mode 100644 index 0000000..1af1add --- /dev/null +++ b/src/hotcb/server/config.py @@ -0,0 +1,401 @@ +""" +hotcb.server.config — Centralized dashboard configuration. + +Resolution order: defaults -> YAML -> env vars -> CLI overrides. +Env vars use the HOTCB_ prefix (e.g. HOTCB_PORT, HOTCB_POLL_INTERVAL). +CLI overrides have the highest priority. +""" +from __future__ import annotations + +import logging +import os +from dataclasses import asdict, dataclass, field, fields +from typing import Any, Dict, List, Optional + +log = logging.getLogger("hotcb.server.config") + +# --------------------------------------------------------------------------- +# Frozen sub-config dataclasses +# --------------------------------------------------------------------------- + + +@dataclass(frozen=True) +class ServerConfig: + host: str = "0.0.0.0" + port: int = 8421 + poll_interval: float = 0.5 + history_limit_metrics: int = 500 + history_limit_applied: int = 200 + ws_initial_burst: int = 200 + ws_max_retries: int = 20 + ws_retry_base: float = 3.0 + ws_retry_cap: float = 30.0 + + +@dataclass(frozen=True) +class ChartConfig: + max_render_points: int = 2000 + line_tension: float = 0.15 + forecast_dash: tuple = (6, 3) + mutation_dash: tuple = (3, 4) + annotation_stagger_rows: int = 10 + annotation_min_distance: int = 70 + + +@dataclass(frozen=True) +class AutopilotConfig: + divergence_threshold: float = 2.0 + ratio_threshold: float = 0.5 + ai_min_interval: int = 10 + ai_max_wait: int = 200 + ai_default_cadence: int = 50 + + +@dataclass(frozen=True) +class UIConfig: + state_save_interval: int = 5000 + alert_poll_interval: int = 15000 + manifold_refresh_interval: int = 10000 + recipe_refresh_interval: int = 5000 + forecast_poll_interval: int = 5000 + forecast_step_cadence: int = 10 + forecast_batch_size: int = 8 + staged_change_threshold: float = 0.005 + health_ema_alpha: float = 0.1 + + +# --------------------------------------------------------------------------- +# Env var mapping: HOTCB_ -> (section, field, type_cast) +# --------------------------------------------------------------------------- + +_ENV_MAP: Dict[str, tuple] = { + "HOTCB_HOST": ("server", "host", str), + "HOTCB_PORT": ("server", "port", int), + "HOTCB_POLL_INTERVAL": ("server", "poll_interval", float), + "HOTCB_HISTORY_LIMIT_METRICS": ("server", "history_limit_metrics", int), + "HOTCB_HISTORY_LIMIT_APPLIED": ("server", "history_limit_applied", int), + "HOTCB_WS_INITIAL_BURST": ("server", "ws_initial_burst", int), + "HOTCB_WS_MAX_RETRIES": ("server", "ws_max_retries", int), + "HOTCB_WS_RETRY_BASE": ("server", "ws_retry_base", float), + "HOTCB_WS_RETRY_CAP": ("server", "ws_retry_cap", float), + "HOTCB_MAX_RENDER_POINTS": ("chart", "max_render_points", int), + "HOTCB_LINE_TENSION": ("chart", "line_tension", float), + "HOTCB_ANNOTATION_STAGGER_ROWS": ("chart", "annotation_stagger_rows", int), + "HOTCB_ANNOTATION_MIN_DISTANCE": ("chart", "annotation_min_distance", int), + "HOTCB_DIVERGENCE_THRESHOLD": ("autopilot", "divergence_threshold", float), + "HOTCB_RATIO_THRESHOLD": ("autopilot", "ratio_threshold", float), + "HOTCB_AI_MIN_INTERVAL": ("autopilot", "ai_min_interval", int), + "HOTCB_AI_MAX_WAIT": ("autopilot", "ai_max_wait", int), + "HOTCB_AI_DEFAULT_CADENCE": ("autopilot", "ai_default_cadence", int), + "HOTCB_STATE_SAVE_INTERVAL": ("ui", "state_save_interval", int), + "HOTCB_ALERT_POLL_INTERVAL": ("ui", "alert_poll_interval", int), + "HOTCB_MANIFOLD_REFRESH_INTERVAL": ("ui", "manifold_refresh_interval", int), + "HOTCB_RECIPE_REFRESH_INTERVAL": ("ui", "recipe_refresh_interval", int), + "HOTCB_FORECAST_POLL_INTERVAL": ("ui", "forecast_poll_interval", int), + "HOTCB_FORECAST_STEP_CADENCE": ("ui", "forecast_step_cadence", int), + "HOTCB_FORECAST_BATCH_SIZE": ("ui", "forecast_batch_size", int), + "HOTCB_STAGED_CHANGE_THRESHOLD": ("ui", "staged_change_threshold", float), + "HOTCB_HEALTH_EMA_ALPHA": ("ui", "health_ema_alpha", float), +} + +# CLI override key -> (section, field) +_CLI_MAP: Dict[str, tuple] = { + "host": ("server", "host"), + "port": ("server", "port"), + "poll_interval": ("server", "poll_interval"), + "history_limit_metrics": ("server", "history_limit_metrics"), + "history_limit_applied": ("server", "history_limit_applied"), + "ws_initial_burst": ("server", "ws_initial_burst"), + "ws_max_retries": ("server", "ws_max_retries"), + "ws_retry_base": ("server", "ws_retry_base"), + "ws_retry_cap": ("server", "ws_retry_cap"), + "max_render_points": ("chart", "max_render_points"), + "line_tension": ("chart", "line_tension"), + "forecast_dash": ("chart", "forecast_dash"), + "mutation_dash": ("chart", "mutation_dash"), + "annotation_stagger_rows": ("chart", "annotation_stagger_rows"), + "annotation_min_distance": ("chart", "annotation_min_distance"), + "divergence_threshold": ("autopilot", "divergence_threshold"), + "ratio_threshold": ("autopilot", "ratio_threshold"), + "ai_min_interval": ("autopilot", "ai_min_interval"), + "ai_max_wait": ("autopilot", "ai_max_wait"), + "ai_default_cadence": ("autopilot", "ai_default_cadence"), + "state_save_interval": ("ui", "state_save_interval"), + "alert_poll_interval": ("ui", "alert_poll_interval"), + "manifold_refresh_interval": ("ui", "manifold_refresh_interval"), + "recipe_refresh_interval": ("ui", "recipe_refresh_interval"), + "forecast_poll_interval": ("ui", "forecast_poll_interval"), + "forecast_step_cadence": ("ui", "forecast_step_cadence"), + "forecast_batch_size": ("ui", "forecast_batch_size"), + "staged_change_threshold": ("ui", "staged_change_threshold"), + "health_ema_alpha": ("ui", "health_ema_alpha"), +} + +# Section name -> frozen dataclass type +_SECTION_CLASSES: Dict[str, type] = { + "server": ServerConfig, + "chart": ChartConfig, + "autopilot": AutopilotConfig, + "ui": UIConfig, +} + + +# --------------------------------------------------------------------------- +# DashboardConfig — mutable aggregate +# --------------------------------------------------------------------------- + + +@dataclass +class DashboardConfig: + """Centralized dashboard configuration. + + Aggregates frozen sub-configs for server, chart, autopilot, and UI settings. + The ``controls`` list is populated from ``MutableState.describe_all()`` when + actuators are available (Phase 4); defaults to empty for Phase 1. + """ + + server: ServerConfig = field(default_factory=ServerConfig) + chart: ChartConfig = field(default_factory=ChartConfig) + autopilot: AutopilotConfig = field(default_factory=AutopilotConfig) + ui: UIConfig = field(default_factory=UIConfig) + run_dir: str = "" + controls: List[dict] = field(default_factory=list) + + @classmethod + def load( + cls, + run_dir: str, + yaml_path: Optional[str] = None, + **cli_overrides: Any, + ) -> "DashboardConfig": + """Load config with resolution: defaults -> YAML -> env vars -> CLI. + + Parameters + ---------- + run_dir : str + Run directory path (set once, immutable after startup). + yaml_path : str | None + Path to a YAML config file. Missing file is silently ignored. + **cli_overrides + Keyword arguments that override any setting. Keys are flat field + names (e.g. ``port=9000``, ``poll_interval=1.0``). + """ + # Start with per-section override dicts (empty = all defaults) + overrides: Dict[str, Dict[str, Any]] = { + "server": {}, + "chart": {}, + "autopilot": {}, + "ui": {}, + } + + # --- Layer 1: YAML --- + if yaml_path: + yaml_data = _load_yaml(yaml_path) + for section, values in yaml_data.items(): + if section in overrides and isinstance(values, dict): + overrides[section].update(values) + + # --- Layer 2: Env vars --- + for env_key, (section, field_name, cast_fn) in _ENV_MAP.items(): + raw = os.environ.get(env_key) + if raw is not None: + try: + overrides[section][field_name] = cast_fn(raw) + except (ValueError, TypeError) as exc: + log.warning( + "Ignoring invalid env var %s=%r: %s", env_key, raw, exc + ) + + # --- Layer 3: CLI overrides (highest priority) --- + for key, value in cli_overrides.items(): + if key in _CLI_MAP: + section, field_name = _CLI_MAP[key] + overrides[section][field_name] = value + + # --- Build frozen sub-configs --- + server = ServerConfig(**overrides["server"]) if overrides["server"] else ServerConfig() + chart = ChartConfig(**overrides["chart"]) if overrides["chart"] else ChartConfig() + autopilot = AutopilotConfig(**overrides["autopilot"]) if overrides["autopilot"] else AutopilotConfig() + ui = UIConfig(**overrides["ui"]) if overrides["ui"] else UIConfig() + + return cls( + server=server, + chart=chart, + autopilot=autopilot, + ui=ui, + run_dir=run_dir, + controls=[], + ) + + def to_dict(self) -> dict: + """Serialize to a JSON-compatible dict. + + Tuples (e.g. ``forecast_dash``, ``mutation_dash``) are converted to + lists so that ``json.dumps()`` works without a custom encoder. + """ + def _section_dict(obj: Any) -> dict: + d = asdict(obj) + # Convert any tuple values to lists for JSON serialization + for k, v in d.items(): + if isinstance(v, tuple): + d[k] = list(v) + return d + + return { + "server": _section_dict(self.server), + "chart": _section_dict(self.chart), + "autopilot": _section_dict(self.autopilot), + "ui": _section_dict(self.ui), + "run_dir": self.run_dir, + "controls": list(self.controls), + } + + +# --------------------------------------------------------------------------- +# Controls from MutableState +# --------------------------------------------------------------------------- + + +def controls_from_mutable_state(ms: Any) -> list: + """Build controls list from MutableState.describe_all() or empty if None.""" + if ms is None: + return [] + try: + return ms.describe_all() + except Exception: + return [] + + +def controls_from_applied_ledger(run_dir: str) -> list: + """Reconstruct control specs from applied JSONL when MutableState is unavailable. + + Used in serve mode (no live training) to populate slider controls from + historical data. Scans the applied ledger for ``set_params`` operations + and infers actuator-like specs. + """ + import json + import os + + applied_path = os.path.join(run_dir, "hotcb.applied.jsonl") + if not os.path.exists(applied_path): + return [] + + # Gather all param values seen, grouped by module + param_values: dict = {} # param_key -> {module, values: [float]} + try: + with open(applied_path, "r", encoding="utf-8") as f: + for line in f: + line = line.strip() + if not line: + continue + try: + rec = json.loads(line) + except json.JSONDecodeError: + continue + if rec.get("decision") != "applied": + continue + module = rec.get("module", "opt") + params = rec.get("params") or rec.get("payload") + if not params or not isinstance(params, dict): + continue + for k, v in params.items(): + if not isinstance(v, (int, float)): + continue + if k not in param_values: + param_values[k] = {"module": module, "values": []} + param_values[k]["values"].append(v) + except Exception: + return [] + + # Also scan last metrics for current values + metrics_path = os.path.join(run_dir, "hotcb.metrics.jsonl") + latest_metrics: dict = {} + if os.path.exists(metrics_path): + try: + with open(metrics_path, "rb") as f: + # Read last 2KB for efficiency + f.seek(max(0, os.path.getsize(metrics_path) - 2048)) + tail = f.read().decode("utf-8", errors="replace") + for line in tail.strip().splitlines(): + line = line.strip() + if not line: + continue + try: + rec = json.loads(line) + latest_metrics = rec.get("metrics", {}) + except json.JSONDecodeError: + pass + except Exception: + pass + + controls = [] + for key, info in param_values.items(): + values = info["values"] + module = info["module"] + last_val = values[-1] + all_vals = values + + # Check for current value in latest metrics + current = latest_metrics.get(key, last_val) + + # Determine type from value characteristics + is_log = (key in ("lr", "learning_rate", "weight_decay", "wd") + or (min(all_vals) > 0 and max(all_vals) / max(min(all_vals), 1e-15) > 100)) + + if is_log and all(v > 0 for v in all_vals): + min_val = min(all_vals) * 0.1 + max_val = max(all_vals) * 10 + controls.append({ + "param_key": key, + "type": "log_float", + "label": key, + "group": "optimizer" if module == "opt" else module, + "min": min_val, + "max": max_val, + "step": 0.01, + "log_base": 10, + "choices": None, + "current": current, + "state": "untouched", + }) + else: + min_val = min(0, min(all_vals) * 0.5) if all_vals else 0 + max_val = max(1, max(all_vals) * 2) if all_vals else 1 + controls.append({ + "param_key": key, + "type": "float", + "label": key, + "group": "loss" if module == "loss" else ("optimizer" if module == "opt" else module), + "min": min_val, + "max": max_val, + "step": 0.01, + "log_base": None, + "choices": None, + "current": current, + "state": "untouched", + }) + + return controls + + +# --------------------------------------------------------------------------- +# YAML loader — optional pyyaml dependency +# --------------------------------------------------------------------------- + + +def _load_yaml(path: str) -> dict: + """Load a YAML file, returning {} on missing file or import error.""" + if not os.path.exists(path): + return {} + try: + import yaml + except ImportError: + log.warning("pyyaml not installed — ignoring config file %s", path) + return {} + try: + with open(path, "r", encoding="utf-8") as f: + data = yaml.safe_load(f) + return data if isinstance(data, dict) else {} + except Exception as exc: + log.warning("Failed to load config YAML %s: %s", path, exc) + return {} diff --git a/src/hotcb/server/launcher.py b/src/hotcb/server/launcher.py index ed4aa72..bda6b9b 100644 --- a/src/hotcb/server/launcher.py +++ b/src/hotcb/server/launcher.py @@ -150,7 +150,6 @@ def __init__(self, run_dir: str) -> None: self._thread: Optional[threading.Thread] = None self._stop_event = threading.Event() self._started_at: Optional[str] = None - self._active_run_dir: Optional[str] = None self._active_config_id: Optional[str] = None self._config: dict = {} self._configs: Dict[str, TrainingConfig] = {} @@ -197,10 +196,9 @@ def start( import random as _rng effective_seed = seed if seed is not None else _rng.randint(0, 2**31 - 1) - # Write flat to run_dir — no subdirs, no rewiring. - # Truncate existing JSONL files for a clean start. - target_dir = run_dir or self._run_dir - self._active_run_dir = target_dir + # Write directly to run_dir (immutable). Explicit run_dir override + # is accepted for programmatic use but the normal path uses self._run_dir. + target_dir = run_dir if run_dir else self._run_dir self._active_config_id = config_id self._config = { "config_id": config_id, @@ -212,14 +210,15 @@ def start( self._stop_event.clear() os.makedirs(target_dir, exist_ok=True) + # Truncate existing JSONL files for a clean start (replaces subdir creation) for fname in _JSONL_FILES: path = os.path.join(target_dir, fname) - open(path, "w").close() # truncate for clean start + open(path, "w").close() # truncate + # Reset freeze state for new run freeze_path = os.path.join(target_dir, "hotcb.freeze.json") - if not os.path.exists(freeze_path): - with open(freeze_path, "w") as f: - json.dump({"mode": "off"}, f) + with open(freeze_path, "w") as f: + json.dump({"mode": "off"}, f) # Write run metadata import time as _time @@ -330,7 +329,7 @@ def reset(self) -> dict: if self._thread is not None and not self._thread.is_alive(): self._thread = None - rd = self._active_run_dir or self._run_dir + rd = self._run_dir cleared = [] for fname in _JSONL_FILES: path = os.path.join(rd, fname) @@ -344,7 +343,7 @@ def reset(self) -> dict: def status(self) -> dict: return { "running": self.running, - "run_dir": self._active_run_dir if self.running else None, + "run_dir": self._run_dir if self.running else None, "started_at": self._started_at if self.running else None, "config": self._config if self.running else {}, } @@ -386,8 +385,9 @@ async def start_training(body: StartRequest, request: Request): ) if "error" in result: return JSONResponse(status_code=409, content=result) - # run_dir is immutable — launcher writes flat to it, tailer already watches it. # Clear stale engine state from previous runs. + # run_dir is immutable — no rewire needed; JSONL files were truncated + # by launcher.start() so the tailer will pick up new data naturally. projection = getattr(request.app.state, 'projection_engine', None) if projection: projection._steps.clear() @@ -443,44 +443,37 @@ async def register_config(body: RegisterRequest): @router.get("/runs/history") async def list_runs(): - """List completed training runs from the runs history.""" - run_dir = _launcher._run_dir - parent_dir = os.path.dirname(run_dir.rstrip("/")) - history_path = os.path.join(parent_dir, "hotcb.runs.jsonl") if parent_dir else None - + """List training runs — current run_dir and any sibling subdirs.""" + rd = _launcher._run_dir runs = [] - # Check for history file - if history_path and os.path.exists(history_path): - with open(history_path) as f: - for line in f: - line = line.strip() - if line: - try: - runs.append(json.loads(line)) - except Exception: - pass - - # Also check for run.json in the current run_dir - run_json = os.path.join(run_dir, "hotcb.run.json") - if os.path.exists(run_json): + # Include current run_dir if it has run metadata + rj = os.path.join(rd, "hotcb.run.json") + if os.path.exists(rj): try: - with open(run_json) as f: - current = json.load(f) - # Check if it's already in history - if not any(r.get("run_id") == current.get("run_id") for r in runs): - runs.append(current) + with open(rj) as f: + runs.append(json.load(f)) except Exception: pass - + # Scan subdirs for run.json files (historical runs) + try: + for name in sorted(os.listdir(rd)): + if name.startswith(".") or name == "__pycache__": + continue + subpath = os.path.join(rd, name) + sub_rj = os.path.join(subpath, "hotcb.run.json") + if os.path.isdir(subpath) and os.path.exists(sub_rj): + try: + with open(sub_rj) as f: + runs.append(json.load(f)) + except Exception: + pass + except OSError: + pass return {"runs": runs} def _find_run_dir(run_id: str) -> Optional[str]: """Find a run directory by run_id (subdir name or run.json match).""" rd = _launcher._run_dir - # Check as subdir of run_dir - subpath = os.path.join(rd, run_id) - if os.path.isdir(subpath): - return subpath # Check current dir's run.json rj = os.path.join(rd, "hotcb.run.json") if os.path.exists(rj): @@ -491,10 +484,10 @@ def _find_run_dir(run_id: str) -> Optional[str]: return rd except Exception: pass - # Check active run dir - if _launcher._active_run_dir: - if os.path.basename(_launcher._active_run_dir.rstrip("/")) == run_id: - return _launcher._active_run_dir + # Check as subdir of run_dir + subpath = os.path.join(rd, run_id) + if os.path.isdir(subpath): + return subpath return None @router.get("/runs/{run_id}/metrics") diff --git a/src/hotcb/server/static/css/dashboard.css b/src/hotcb/server/static/css/dashboard.css index a98862a..b415a9c 100644 --- a/src/hotcb/server/static/css/dashboard.css +++ b/src/hotcb/server/static/css/dashboard.css @@ -342,6 +342,49 @@ input[type="range"]::-webkit-slider-thumb { } body.mode-education .knob-explain { display: block; } +/* Dynamic control elements (Phase 4) */ +.knob-group-header { + font-size: 11px; + text-transform: uppercase; + letter-spacing: 0.5px; + color: var(--text-muted); + margin: 8px 0 4px; + padding-bottom: 2px; + border-bottom: 1px solid var(--border); +} +.knob-state { + font-size: 10px; + padding: 1px 4px; + border-radius: 3px; + margin-left: 4px; +} +.knob-state-unverified { background: rgba(255, 193, 7, 0.12); color: var(--yellow, #ffd233); } +.knob-state-disabled { background: rgba(220, 53, 69, 0.12); color: var(--red, #ff4d5e); opacity: 0.6; } +.knob-state-init { background: rgba(108, 117, 125, 0.12); color: var(--text-muted); } +.knob-toggle { width: auto; } +.knob-select { + flex: 1; background: var(--bg-card); color: var(--text-primary); + border: 1px solid var(--border); border-radius: 4px; padding: 2px 4px; + font-size: 10px; font-family: var(--font-mono); +} +.knob-slider { + -webkit-appearance: none; width: 100%; height: 3px; + background: var(--border); border-radius: 2px; outline: none; +} +.knob-slider::-webkit-slider-thumb { + -webkit-appearance: none; width: 12px; height: 12px; + border-radius: 50%; background: var(--accent); cursor: pointer; + box-shadow: 0 0 8px rgba(0,212,170,0.4); +} +.knob-val { + width: 78px; background: var(--bg-input); + border: 1px solid var(--border); border-radius: 3px; + color: var(--text-primary); font-family: var(--font-mono); + font-size: 10px; padding: 2px 5px; text-align: right; +} +.knob-val:focus { outline: none; border-color: var(--accent); } +.knob-val:focus-visible { outline: 2px solid var(--accent); outline-offset: 1px; } + /* ================================================================== */ /* Buttons */ /* ================================================================== */ @@ -720,7 +763,7 @@ body.metric-focus-mode .metric-card { max-width: 100%; } #trainPanel { max-height: 240px; overflow-y: auto; } #chatMessages { max-height: 150px; } #healthMetrics { max-height: 160px; overflow-y: auto; } -#notifList { max-height: 160px; overflow-y: auto; } +#alertList { max-height: none; overflow: visible; } /* Right-col cards: expand to content, scroll the column */ .right-col > .card { @@ -845,3 +888,31 @@ body.compare-zoom-mode .tab-content[data-tab="compare"] { flex: 1; } .run-summary-panel .summary-actions { display: flex; gap: 8px; justify-content: flex-end; } + +/* ================================================================== */ +/* Compare active mode — hide right-col panes, expand chart area */ +/* ================================================================== */ +.compare-active-mode .right-col > .card { display: none; } +.compare-active-mode .right-col > .chat-panel { display: none; } +.compare-active-mode .right-col { display: none; } +.compare-active-mode .bottom-panel { display: none; } +.compare-active-mode .left-col { flex: 1; max-width: 100%; border-right: none; } +.compare-active-mode #metricCards { display: none; } +.compare-active-mode .main { grid-template-columns: 1fr; } + +/* Compact status bar shown in compare mode header */ +.compare-active-mode header { + display: flex; align-items: center; justify-content: space-between; +} +.compare-active-mode .header-right { + display: flex; align-items: center; gap: 8px; +} + +/* Compare status bar — inline autopilot + training status */ +.compare-status-bar { + display: none; + align-items: center; gap: 12px; + font-size: 10px; font-family: var(--font-mono); + color: var(--text-secondary); padding: 0 8px; +} +.compare-active-mode .compare-status-bar { display: flex; } diff --git a/src/hotcb/server/static/index.html b/src/hotcb/server/static/index.html index ed27e0b..fe0cd20 100644 --- a/src/hotcb/server/static/index.html +++ b/src/hotcb/server/static/index.html @@ -28,6 +28,14 @@ --

+ +
+ Training: -- + | + Autopilot: off + | + Step: -- +
+
+ + +
+
@@ -357,55 +376,7 @@

Add Autopilot Rule

- - -
- lr - - -
-
Learning Rate controls how big each step is. Too high = unstable training. Too low = slow progress.
- -
- wd - - -
-
Weight Decay prevents memorization. Higher = more regularization, less overfitting risk.
- -
- loss_w - - -
-
Loss Weight controls how much this component matters relative to others.
- - - - - - - - +
@@ -519,7 +490,7 @@

Add Autopilot Rule

Alerts -
+
No alerts
diff --git a/src/hotcb/server/static/js/charts.js b/src/hotcb/server/static/js/charts.js index 5ecc234..41b9b66 100644 --- a/src/hotcb/server/static/js/charts.js +++ b/src/hotcb/server/static/js/charts.js @@ -12,8 +12,11 @@ var _highlightedMutationStep = null; // Step range control: 'all' | 'last200' | 'last500' | {min, max} var _chartStepRange = 'all'; +// Y-axis normalization: when enabled, each metric is normalized to [0,1] +var _chartNormalize = false; + // Max points to render per dataset (avoids sluggish charts on very long runs) -var _maxRenderPoints = 2000; +var _maxRenderPoints = (S.config && S.config.chart) ? S.config.chart.max_render_points : 2000; /** * LTTB (Largest-Triangle-Three-Buckets) downsampling. @@ -373,10 +376,47 @@ function createMetricsChart() { borderColor: getComputedStyle(document.documentElement).getPropertyValue('--border-bright').trim() || '#2a4060', borderWidth:1, titleFont:{family:'JetBrains Mono',size:11}, bodyFont:{family:'JetBrains Mono',size:11}, usePointStyle: true, boxWidth: 8, boxHeight: 8, - intersect: false, mode: 'nearest', axis: 'x', position: 'rightOfCursor' } + intersect: false, mode: 'nearest', axis: 'x', position: 'rightOfCursor', + itemSort: function(a, b, data) { + // Sort tooltip items by Y-pixel distance to cursor (TensorBoard-style) + var chart = a.chart || (data && data.chart); + var cursorY = 0; + if (chart && chart._lastEvent) cursorY = chart._lastEvent.y; + var ay = a.element ? a.element.y : 0; + var by = b.element ? b.element.y : 0; + return Math.abs(ay - cursorY) - Math.abs(by - cursorY); + }, + callbacks: { + label: function(ctx) { + var ds = ctx.dataset; + var label = ds.label || ''; + // Skip internal datasets (confidence bands) + if (label.startsWith('_')) return null; + var rawY = ctx.parsed.y; + // When normalized, show both normalized and raw values + if (_chartNormalize) { + var metricName = label.replace(/ forecast$/, '').replace(/ post-change$/, ''); + var rawPts = S.metricsData[metricName]; + if (rawPts && rawPts.length > 0) { + // Find raw value at nearest step + var step = ctx.parsed.x; + var rawVal = null; + for (var i = 0; i < rawPts.length; i++) { + if (rawPts[i].step >= step) { rawVal = rawPts[i].value; break; } + rawVal = rawPts[i].value; + } + if (rawVal !== null) { + return label + ': ' + fmtNum(rawVal) + ' (norm: ' + rawY.toFixed(3) + ')'; + } + } + } + return label + ': ' + fmtNum(rawY); + } + } + } }, interaction: { mode: 'nearest', axis: 'x', intersect: false }, - elements: { point: {radius:0, hoverRadius:5, hitRadius:10}, line: {borderWidth:1.5, tension:0.15} } + elements: { point: {radius:0, hoverRadius:5, hitRadius:10}, line: {borderWidth:1.5, tension: (S.config && S.config.chart) ? S.config.chart.line_tension : 0.15} } } }); } @@ -399,19 +439,37 @@ function updateChart() { var pts = S.metricsData[name] || []; var color = getColor(name); + // Compute per-metric min/max for normalization + var metricMin = Infinity, metricMax = -Infinity; + if (_chartNormalize && pts.length > 0) { + pts.forEach(function(p) { + if (p.value < metricMin) metricMin = p.value; + if (p.value > metricMax) metricMax = p.value; + }); + if (metricMax === metricMin) { metricMin -= 0.5; metricMax += 0.5; } + } + var _normFn = (_chartNormalize && metricMax !== metricMin) + ? function(v) { return (v - metricMin) / (metricMax - metricMin); } + : function(v) { return v; }; + // Live data line (LTTB-downsampled for rendering performance) - var chartPts = pts.map(function(p) { return {x: p.step, y: p.value}; }); + var chartPts = pts.map(function(p) { return {x: p.step, y: _normFn(p.value)}; }); chartPts = _lttbDownsample(chartPts, _maxRenderPoints); + var _cfgTension = (S.config && S.config.chart) ? S.config.chart.line_tension : 0.15; + var _cfgForecastDash = (S.config && S.config.chart) ? S.config.chart.forecast_dash : [6, 3]; + var _cfgMutationDash = (S.config && S.config.chart) ? S.config.chart.mutation_dash : [3, 4]; + datasets.push({ label: name, data: chartPts, borderColor: color, backgroundColor: 'transparent', - tension: 0.15, + tension: _cfgTension, }); var lastStep = pts.length ? pts[pts.length - 1].step : 0; var lastVal = pts.length ? pts[pts.length - 1].value : null; + var lastValNorm = lastVal !== null ? _normFn(lastVal) : null; var cache = _forecastCache[name]; var showOverlays = S.focusMetric === name || (S.pinnedMetrics && S.pinnedMetrics.has(name)); @@ -421,38 +479,38 @@ function updateChart() { && lastStep > 0 && lastVal !== null && cache.forecast.steps && cache.forecast.steps[0] <= lastStep + 50) { var fc = cache.forecast; - var fcPts = [{x: lastStep, y: lastVal}]; // Connect to last actual point - fc.values.forEach(function(v, i) { fcPts.push({x: fc.steps[i], y: v}); }); + var fcPts = [{x: lastStep, y: lastValNorm}]; // Connect to last actual point + fc.values.forEach(function(v, i) { fcPts.push({x: fc.steps[i], y: _normFn(v)}); }); datasets.push({ label: name + ' forecast', data: fcPts, borderColor: color, - borderDash: [6, 3], + borderDash: _cfgForecastDash, backgroundColor: 'transparent', - tension: 0.15, + tension: _cfgTension, borderWidth: 1.2, pointRadius: 0, }); // Confidence band if (fc.lower && fc.upper) { - var loPts = [{x: lastStep, y: lastVal}]; - var hiPts = [{x: lastStep, y: lastVal}]; - fc.lower.forEach(function(v, i) { loPts.push({x: fc.steps[i], y: v}); }); - fc.upper.forEach(function(v, i) { hiPts.push({x: fc.steps[i], y: v}); }); + var loPts = [{x: lastStep, y: lastValNorm}]; + var hiPts = [{x: lastStep, y: lastValNorm}]; + fc.lower.forEach(function(v, i) { loPts.push({x: fc.steps[i], y: _normFn(v)}); }); + fc.upper.forEach(function(v, i) { hiPts.push({x: fc.steps[i], y: _normFn(v)}); }); datasets.push({ label: '_' + name + '_lo', data: loPts, borderColor: 'transparent', backgroundColor: hexToRgba(color, 0.06), fill: '+1', - pointRadius: 0, tension: 0.15, + pointRadius: 0, tension: _cfgTension, }); datasets.push({ label: '_' + name + '_hi', data: hiPts, borderColor: 'transparent', backgroundColor: 'transparent', - pointRadius: 0, tension: 0.15, + pointRadius: 0, tension: _cfgTension, }); } } @@ -463,15 +521,15 @@ function updateChart() { var mu = cache.mutation; var inDataRange = pts.length > 0 && mu.fromStep >= pts[0].step && mu.fromStep <= pts[pts.length - 1].step; if (inDataRange) { - var muPts = [{x: mu.fromStep, y: mu.fromVal}]; - mu.values.forEach(function(v, i) { muPts.push({x: mu.steps[i], y: v}); }); + var muPts = [{x: mu.fromStep, y: _normFn(mu.fromVal)}]; + mu.values.forEach(function(v, i) { muPts.push({x: mu.steps[i], y: _normFn(v)}); }); datasets.push({ label: name + ' post-change', data: muPts, borderColor: 'rgba(51,204,221,0.7)', - borderDash: [3, 4], + borderDash: _cfgMutationDash, backgroundColor: 'transparent', - tension: 0.15, + tension: _cfgTension, borderWidth: 1.2, pointRadius: 0, }); @@ -484,6 +542,14 @@ function updateChart() { // Apply step range to x-axis _applyChartStepRange(); + // Update Y-axis title for normalization mode + var yOpts = S.chartInstance.options.scales.y; + if (_chartNormalize) { + yOpts.title = {display: true, text: 'Normalized [0,1]', color: '#7a8fa3', font: {size: 10}}; + } else { + yOpts.title = {display: false}; + } + S.chartInstance.update('none'); // Also update any pinned metric cards @@ -605,6 +671,9 @@ var _commonMetricPatterns = [ 'precision', 'recall', 'auc', 'val_auc', 'bleu' ]; +// Metrics shown by default on chart — losses and key metric only +var _defaultOnPatterns = ['loss', 'val_loss', 'train_loss']; + function _isCommonMetric(name) { var lower = name.toLowerCase(); for (var i = 0; i < _commonMetricPatterns.length; i++) { @@ -645,7 +714,16 @@ function updateMetricToggles() { S.metricNames.forEach(function(name) { currentCount++; if (!(name in _metricToggleState)) { - _metricToggleState[name] = true; // default checked + // Default: only show losses and key metric; others off + var lower = name.toLowerCase(); + var isDefault = false; + for (var di = 0; di < _defaultOnPatterns.length; di++) { + if (lower === _defaultOnPatterns[di] || lower.indexOf(_defaultOnPatterns[di]) !== -1) { isDefault = true; break; } + } + // Also check AI key metric + var aiKeyMetricEl = document.getElementById('aiKeyMetric'); + if (aiKeyMetricEl && aiKeyMetricEl.value === name) isDefault = true; + _metricToggleState[name] = isDefault; } }); @@ -952,6 +1030,10 @@ function updateSingleMetricCard(name) { var color = getColor(name); var pts = S.metricsData[name] || []; + var _cfgTension = (S.config && S.config.chart) ? S.config.chart.line_tension : 0.15; + var _cfgForecastDash = (S.config && S.config.chart) ? S.config.chart.forecast_dash : [6, 3]; + var _cfgMutationDash = (S.config && S.config.chart) ? S.config.chart.mutation_dash : [3, 4]; + var chartPts = pts.map(function(p) { return {x: p.step, y: p.value}; }); chartPts = _lttbDownsample(chartPts, 500); // mini cards need fewer points datasets.push({ @@ -959,7 +1041,7 @@ function updateSingleMetricCard(name) { data: chartPts, borderColor: color, backgroundColor: 'transparent', - tension: 0.15, + tension: _cfgTension, }); var lastStep = pts.length ? pts[pts.length - 1].step : 0; @@ -974,8 +1056,8 @@ function updateSingleMetricCard(name) { datasets.push({ label: 'forecast', data: fcPts, - borderColor: color, borderDash: [6, 3], - backgroundColor: 'transparent', tension: 0.15, borderWidth: 1.2, pointRadius: 0, + borderColor: color, borderDash: _cfgForecastDash, + backgroundColor: 'transparent', tension: _cfgTension, borderWidth: 1.2, pointRadius: 0, }); } @@ -987,8 +1069,8 @@ function updateSingleMetricCard(name) { datasets.push({ label: 'post-change', data: muPts, - borderColor: 'rgba(51,204,221,0.7)', borderDash: [3, 4], - backgroundColor: 'transparent', tension: 0.15, borderWidth: 1.2, pointRadius: 0, + borderColor: 'rgba(51,204,221,0.7)', borderDash: _cfgMutationDash, + backgroundColor: 'transparent', tension: _cfgTension, borderWidth: 1.2, pointRadius: 0, }); } @@ -1041,7 +1123,7 @@ async function fetchAllForecasts() { _forecastInFlight = false; return; } - var batchSize = 4; + var batchSize = (S.config && S.config.ui) ? S.config.ui.forecast_batch_size : 8; for (var i = 0; i < names.length; i += batchSize) { var batch = names.slice(i, i + batchSize); await Promise.all(batch.map(fetchForecastForMetric)); @@ -1064,13 +1146,14 @@ async function fetchForecastForMetric(name) { function startForecastPolling() { if (_forecastTimer) clearInterval(_forecastTimer); - // Poll every 10s as a baseline — new metrics also trigger refresh via onNewMetricsForForecast + var _forecastPollMs = (S.config && S.config.ui) ? S.config.ui.forecast_poll_interval : 5000; + // Poll at configured interval — new metrics also trigger refresh via onNewMetricsForForecast _forecastTimer = setInterval(function() { // Only fetch if we have pinned/focused metrics to avoid wasted work if ((S.pinnedMetrics && S.pinnedMetrics.size > 0) || S.focusMetric) { fetchAllForecasts(); } - }, 10000); + }, _forecastPollMs); // Delay initial fetch to let the dashboard settle setTimeout(function() { if ((S.pinnedMetrics && S.pinnedMetrics.size > 0) || S.focusMetric) { @@ -1081,8 +1164,9 @@ function startForecastPolling() { // Called from websocket when new metrics arrive — trigger forecast refresh function onNewMetricsForForecast(maxStep) { - // Only trigger every 20 steps, and only if there are pinned/focused metrics - if (maxStep - _lastForecastStep >= 20) { + // Only trigger every N steps (from config), and only if there are pinned/focused metrics + var _forecastCadence = (S.config && S.config.ui) ? S.config.ui.forecast_step_cadence : 10; + if (maxStep - _lastForecastStep >= _forecastCadence) { _lastForecastStep = maxStep; if ((S.pinnedMetrics && S.pinnedMetrics.size > 0) || S.focusMetric) { fetchAllForecasts(); diff --git a/src/hotcb/server/static/js/controls.js b/src/hotcb/server/static/js/controls.js index a34ecbe..d5cf95b 100644 --- a/src/hotcb/server/static/js/controls.js +++ b/src/hotcb/server/static/js/controls.js @@ -1,5 +1,8 @@ /** * hotcb dashboard — knobs, freeze, autopilot + * + * Controls are generated dynamically from /api/config controls field + * (populated by MutableState.describe_all() on the server). */ function lrFromSlider(v) { return Math.pow(10, parseFloat(v)); } @@ -13,38 +16,230 @@ var _healthEma = null; // EMA-smoothed health score // Track last-applied slider values for staged-change highlighting var _appliedKnobs = {}; +/* ================================================================ */ +/* Dynamic control generation from actuator metadata */ +/* ================================================================ */ + +function buildControls(controlSpecs) { + var panel = document.getElementById('knobPanel'); + if (!panel) return; + if (!controlSpecs || !controlSpecs.length) { + panel.innerHTML = '
No controls available
'; + return; + } + panel.innerHTML = ''; + + // Group by group field + var groups = {}; + var groupOrder = []; + controlSpecs.forEach(function(spec) { + var g = spec.group || 'other'; + if (!groups[g]) { + groups[g] = []; + groupOrder.push(g); + } + groups[g].push(spec); + }); + + // Render each group + groupOrder.forEach(function(groupName) { + var header = document.createElement('div'); + header.className = 'knob-group-header'; + header.textContent = groupName.charAt(0).toUpperCase() + groupName.slice(1); + panel.appendChild(header); + + groups[groupName].forEach(function(spec) { + panel.appendChild(buildKnobRow(spec)); + }); + }); + + // Wire up input event listeners for staged-change highlighting + _wireKnobInputListeners(); +} + +function buildKnobRow(spec) { + // spec = {param_key, type, label, group, min, max, step, log_base, choices, current, state} + var row = document.createElement('div'); + row.className = 'knob-row'; + row.dataset.param = spec.param_key; + + var label = document.createElement('span'); + label.className = 'knob-label'; + label.textContent = spec.label || spec.param_key; + row.appendChild(label); + + if (spec.type === 'bool') { + // Toggle switch + var toggle = document.createElement('input'); + toggle.type = 'checkbox'; + toggle.className = 'knob-toggle'; + toggle.checked = !!spec.current; + toggle.dataset.param = spec.param_key; + row.appendChild(toggle); + } else if (spec.type === 'choice') { + // Dropdown + var select = document.createElement('select'); + select.className = 'knob-select'; + select.dataset.param = spec.param_key; + (spec.choices || []).forEach(function(c) { + var opt = document.createElement('option'); + opt.value = c; + opt.textContent = c; + if (c === spec.current) opt.selected = true; + select.appendChild(opt); + }); + row.appendChild(select); + } else if (spec.type === 'log_float') { + // Log-scale slider + var logMin = Math.log10(spec.min || 1e-7); + var logMax = Math.log10(spec.max || 1.0); + var logCurrent = (spec.current && spec.current > 0) ? Math.log10(spec.current) : logMin; + + var slider = document.createElement('input'); + slider.type = 'range'; + slider.className = 'knob-slider'; + slider.min = logMin; + slider.max = logMax; + slider.step = spec.step || 0.01; + slider.value = logCurrent; + slider.dataset.param = spec.param_key; + slider.dataset.logScale = 'true'; + row.appendChild(slider); + + var valInput = document.createElement('input'); + valInput.type = 'text'; + valInput.className = 'knob-val'; + valInput.value = spec.current != null ? Number(spec.current).toExponential(2) : ''; + valInput.dataset.param = spec.param_key; + row.appendChild(valInput); + } else { + // Linear slider (float, int) + var slider = document.createElement('input'); + slider.type = 'range'; + slider.className = 'knob-slider'; + slider.min = spec.min != null ? spec.min : 0; + slider.max = spec.max != null ? spec.max : 1; + slider.step = spec.step || 0.01; + slider.value = spec.current != null ? spec.current : 0; + slider.dataset.param = spec.param_key; + row.appendChild(slider); + + var valInput = document.createElement('input'); + valInput.type = 'text'; + valInput.className = 'knob-val'; + valInput.value = spec.current != null ? spec.current : ''; + valInput.dataset.param = spec.param_key; + row.appendChild(valInput); + } + + // State indicator + if (spec.state && spec.state !== 'untouched' && spec.state !== 'verified') { + var stateEl = document.createElement('span'); + stateEl.className = 'knob-state knob-state-' + spec.state; + stateEl.textContent = spec.state; + row.appendChild(stateEl); + } + + return row; +} + +function _wireKnobInputListeners() { + var panel = document.getElementById('knobPanel'); + if (!panel) return; + + // Sliders: sync display value on input + panel.querySelectorAll('.knob-slider').forEach(function(slider) { + slider.addEventListener('input', function(e) { + var param = e.target.dataset.param; + var valEl = panel.querySelector('.knob-val[data-param="' + param + '"]'); + if (!valEl) return; + if (e.target.dataset.logScale === 'true') { + valEl.value = Math.pow(10, parseFloat(e.target.value)).toExponential(2); + } else { + valEl.value = parseFloat(e.target.value).toFixed(2); + } + _markStagedChanges(); + }); + }); + + // Toggles and selects: mark staged changes on change + panel.querySelectorAll('.knob-toggle, .knob-select').forEach(function(el) { + el.addEventListener('change', function() { _markStagedChanges(); }); + }); +} + +/** + * Read current value from a dynamic control row. + */ +function _readKnobValue(row) { + var slider = row.querySelector('.knob-slider'); + var toggle = row.querySelector('.knob-toggle'); + var select = row.querySelector('.knob-select'); + + if (toggle) return toggle.checked; + if (select) return select.value; + if (slider) { + if (slider.dataset.logScale === 'true') { + return Math.pow(10, parseFloat(slider.value)); + } + return parseFloat(slider.value); + } + return undefined; +} + +/** + * Build the module -> param_key mapping for apply commands. + * Groups determine which API endpoint to use: + * "optimizer" -> POST /api/opt/set + * "loss" -> POST /api/loss/set + * Other groups -> POST /api/opt/set (generic param set) + */ +function _getControlSpec(paramKey) { + var specs = (S.config && S.config.controls) || []; + for (var i = 0; i < specs.length; i++) { + if (specs[i].param_key === paramKey) return specs[i]; + } + return null; +} + function _markStagedChanges() { - var knobs = { - lr: {slider: 'knobLr', transform: function(v) { return Math.pow(10, parseFloat(v)); }}, - wd: {slider: 'knobWd', transform: function(v) { return Math.pow(10, parseFloat(v)); }}, - loss_w: {slider: 'knobLossW', transform: function(v) { return parseFloat(v); }}, - weight_a: {slider: 'knobWeightA', transform: function(v) { return parseFloat(v); }}, - weight_b: {slider: 'knobWeightB', transform: function(v) { return parseFloat(v); }}, - }; - Object.keys(knobs).forEach(function(key) { - var cfg = knobs[key]; - var el = document.getElementById(cfg.slider); - if (!el) return; - var row = el.closest('.knob-row'); - if (!row) return; - var current = cfg.transform(el.value); - var applied = _appliedKnobs[key]; - if (applied !== undefined && Math.abs(current - applied) / Math.max(Math.abs(applied), 1e-12) > 0.005) { - row.classList.add('staged'); - } else { + var panel = document.getElementById('knobPanel'); + if (!panel) return; + var threshold = (S.config && S.config.ui && S.config.ui.staged_change_threshold) || 0.005; + panel.querySelectorAll('.knob-row[data-param]').forEach(function(row) { + var param = row.dataset.param; + var current = _readKnobValue(row); + var applied = _appliedKnobs[param]; + + if (applied === undefined || current === undefined) { row.classList.remove('staged'); + return; + } + if (typeof current === 'boolean') { + if (current !== applied) row.classList.add('staged'); + else row.classList.remove('staged'); + } else if (typeof current === 'string') { + if (current !== applied) row.classList.add('staged'); + else row.classList.remove('staged'); + } else { + var denom = Math.max(Math.abs(applied), 1e-12); + if (Math.abs(current - applied) / denom > threshold) { + row.classList.add('staged'); + } else { + row.classList.remove('staged'); + } } }); } function _snapshotAppliedKnobs() { - _appliedKnobs.lr = lrFromSlider($('#knobLr').value); - _appliedKnobs.wd = Math.pow(10, parseFloat($('#knobWd').value)); - _appliedKnobs.loss_w = parseFloat($('#knobLossW').value); - _appliedKnobs.weight_a = parseFloat($('#knobWeightA').value); - _appliedKnobs.weight_b = parseFloat($('#knobWeightB').value); - var bbEl = $('#knobBackbone'); - if (bbEl) _appliedKnobs.backbone_frozen = bbEl.value === '1'; + var panel = document.getElementById('knobPanel'); + if (!panel) return; + panel.querySelectorAll('.knob-row[data-param]').forEach(function(row) { + var param = row.dataset.param; + var val = _readKnobValue(row); + if (val !== undefined) _appliedKnobs[param] = val; + }); // Clear all staged highlights document.querySelectorAll('.knob-row.staged').forEach(function(el) { el.classList.remove('staged'); }); } @@ -108,100 +303,69 @@ function _clearTrainingState() { } function _updateConfigControls(configId) { - var multitaskEls = document.querySelectorAll('.multitask-only'); - var finetuneEls = document.querySelectorAll('.finetune-only'); - var singleLossEls = document.querySelectorAll('.single-loss-only'); - - var isMultitask = configId === 'multitask'; - var isFinetune = configId === 'finetune'; - - multitaskEls.forEach(function(el) { el.style.display = isMultitask ? '' : 'none'; }); - finetuneEls.forEach(function(el) { el.style.display = isFinetune ? '' : 'none'; }); - singleLossEls.forEach(function(el) { el.style.display = isMultitask ? 'none' : ''; }); + // No-op: controls are now generated dynamically from actuator metadata. + // Kept as a stub because initControls and launcher still reference it. } function initControls() { - // Knob sliders - $('#knobLr').addEventListener('input', function(e) { - var v = lrFromSlider(e.target.value); - $('#knobLrVal').value = v.toExponential(2); - _markStagedChanges(); - }); - $('#knobWd').addEventListener('input', function(e) { - var v = Math.pow(10, parseFloat(e.target.value)); - $('#knobWdVal').value = v.toExponential(2); - _markStagedChanges(); - }); - $('#knobLossW').addEventListener('input', function(e) { - $('#knobLossWVal').value = parseFloat(e.target.value).toFixed(2); - _markStagedChanges(); - }); - $('#knobWeightA').addEventListener('input', function(e) { - $('#knobWeightAVal').value = parseFloat(e.target.value).toFixed(2); - _markStagedChanges(); - }); - $('#knobWeightB').addEventListener('input', function(e) { - $('#knobWeightBVal').value = parseFloat(e.target.value).toFixed(2); - _markStagedChanges(); - }); + // Dynamic controls — build from config if available + if (S.config && S.config.controls && S.config.controls.length) { + buildControls(S.config.controls); + } - // Apply — diff-only: only send params that actually changed + // Apply — dynamic: collect all changed params from knobPanel $('#btnApply').addEventListener('click', function() { var btn = $('#btnApply'); btn.textContent = 'Queued...'; btn.disabled = true; debounceApply(async function() { var anyChanged = false; - // Threshold: relative difference > 0.5% avoids floating-point noise + var threshold = (S.config && S.config.ui && S.config.ui.staged_change_threshold) || 0.005; + function _isDiff(current, baseline) { if (baseline === undefined) return true; + if (typeof current === 'boolean') return current !== baseline; + if (typeof current === 'string') return current !== baseline; var denom = Math.max(Math.abs(baseline), 1e-12); - return Math.abs(current - baseline) / denom > 0.005; + return Math.abs(current - baseline) / denom > threshold; } - // OPT params — only include changed values - var lr = lrFromSlider($('#knobLr').value); - var wd = Math.pow(10, parseFloat($('#knobWd').value)); - var changedOpt = {}; - if (_isDiff(lr, _appliedKnobs.lr)) changedOpt.lr = lr; - if (_isDiff(wd, _appliedKnobs.wd)) changedOpt.weight_decay = wd; - if (Object.keys(changedOpt).length > 0) { - var optIdxSel = document.getElementById('knobOptIdx'); - if (optIdxSel && optIdxSel.parentElement.style.display !== 'none') { - var idx = parseInt(optIdxSel.value); - if (idx > 0) changedOpt.opt_idx = idx; - } - await api('POST', '/api/opt/set', {params: changedOpt}); - anyChanged = true; - } - - // LOSS params — only include changed values - var configId = $('#trainConfig').value; - if (configId === 'multitask') { - var wa = parseFloat($('#knobWeightA').value); - var wb = parseFloat($('#knobWeightB').value); - var changedLoss = {}; - if (_isDiff(wa, _appliedKnobs.weight_a)) changedLoss.weight_a = wa; - if (_isDiff(wb, _appliedKnobs.weight_b)) changedLoss.weight_b = wb; - if (Object.keys(changedLoss).length > 0) { - await api('POST', '/api/loss/set', {params: changedLoss}); - anyChanged = true; - } - } else { - var lw = parseFloat($('#knobLossW').value); - if (_isDiff(lw, _appliedKnobs.loss_w)) { - await api('POST', '/api/loss/set', {params: {weight: lw}}); - anyChanged = true; - } + // Collect changed params grouped by module + var changedByGroup = {}; // group -> {param_key: value} + var panel = document.getElementById('knobPanel'); + if (panel) { + panel.querySelectorAll('.knob-row[data-param]').forEach(function(row) { + var param = row.dataset.param; + var current = _readKnobValue(row); + if (current === undefined) return; + if (!_isDiff(current, _appliedKnobs[param])) return; + + var spec = _getControlSpec(param); + var group = (spec && spec.group) || 'optimizer'; + if (!changedByGroup[group]) changedByGroup[group] = {}; + changedByGroup[group][param] = current; + }); } - // CB params — only send if backbone toggle changed - if (configId === 'finetune') { - var frozen = $('#knobBackbone').value === '1'; - if (_appliedKnobs.backbone_frozen === undefined || frozen !== _appliedKnobs.backbone_frozen) { - await api('POST', '/api/cb/set_params', {params: {backbone_frozen: frozen}}); - anyChanged = true; + // Send commands per group + var groups = Object.keys(changedByGroup); + for (var gi = 0; gi < groups.length; gi++) { + var group = groups[gi]; + var params = changedByGroup[group]; + if (group === 'optimizer') { + await api('POST', '/api/opt/set', {params: params}); + } else if (group === 'loss') { + await api('POST', '/api/loss/set', {params: params}); + } else { + // Generic: send each param individually as opt set + var pkeys = Object.keys(params); + for (var pi = 0; pi < pkeys.length; pi++) { + var p = {}; + p[pkeys[pi]] = params[pkeys[pi]]; + await api('POST', '/api/opt/set', {params: p}); + } } + anyChanged = true; } if (!anyChanged) { @@ -447,82 +611,50 @@ async function loadCapabilities() { var caps = await api('GET', '/api/capabilities'); if (!caps || !caps.detected) return; S.capabilities = caps; - - // Multi-optimizer: show optimizer selector - var numOpts = caps.num_optimizers || 1; - if (numOpts > 1) { - var multiOptEls = document.querySelectorAll('.multi-opt-only'); - multiOptEls.forEach(function(el) { el.style.display = ''; }); - var sel = document.getElementById('knobOptIdx'); - if (sel) { - sel.innerHTML = ''; - var names = caps.optimizer_names || []; - for (var i = 0; i < numOpts; i++) { - var opt = document.createElement('option'); - opt.value = i; - var label = names[i] ? names[i] : ('optimizer ' + i); - var pg = (caps.num_param_groups || [])[i]; - if (pg) label += ' (' + pg + ' groups)'; - opt.textContent = label; - sel.appendChild(opt); - } - } - } - - // Loss state: show/hide loss controls based on detected keys - if (caps.mutable_state_detected && caps.mutable_state_keys && caps.mutable_state_keys.length > 0) { - // Show loss controls — they might be hidden if no demo config selected - var lossRows = document.querySelectorAll('[data-param="loss_w"]'); - lossRows.forEach(function(el) { el.style.display = ''; }); - } - - // Grad clip info - if (caps.grad_clip_value !== null && caps.grad_clip_value !== undefined) { - var clipInfo = caps.grad_clip_wired ? 'wired' : 'advisory'; - } + // Capabilities are now informational only — controls are generated from config. } catch(e) { /* ignore */ } } function syncSlidersFromApplied(params) { if (!params || typeof params !== 'object') return; - // Update applied knobs baseline so staged highlights reset + var panel = document.getElementById('knobPanel'); + if (!panel) return; + Object.keys(params).forEach(function(k) { - if (typeof params[k] === 'number') _appliedKnobs[k] = params[k]; - }); + var value = params[k]; + if (typeof value !== 'number' && typeof value !== 'boolean' && typeof value !== 'string') return; - // lr - if ('lr' in params && typeof params.lr === 'number' && params.lr > 0) { - var lrSlider = $('#knobLr'); - var lrDisplay = $('#knobLrVal'); - if (lrSlider && lrDisplay) { - lrSlider.value = Math.log10(params.lr); - lrDisplay.value = params.lr.toExponential(2); - } - } + // Update baseline + _appliedKnobs[k] = value; - // weight_decay / wd - var wd = ('weight_decay' in params) ? params.weight_decay : ('wd' in params ? params.wd : null); - if (wd !== null && typeof wd === 'number' && wd > 0) { - var wdSlider = $('#knobWd'); - var wdDisplay = $('#knobWdVal'); - if (wdSlider && wdDisplay) { - wdSlider.value = Math.log10(wd); - wdDisplay.value = wd.toExponential(2); - } - } + // Also check aliases: weight_decay -> weight_decay param key + var paramKey = k; + + // Find the matching dynamic control row + var row = panel.querySelector('.knob-row[data-param="' + paramKey + '"]'); + if (!row) return; - // weight / loss_w / weight_a (linear 0-1) - var lw = ('weight' in params) ? params.weight : - ('loss_w' in params) ? params.loss_w : - ('weight_a' in params) ? params.weight_a : null; - if (lw !== null && typeof lw === 'number') { - var lwSlider = $('#knobLossW'); - var lwDisplay = $('#knobLossWVal'); - if (lwSlider && lwDisplay) { - lwSlider.value = lw; - lwDisplay.value = parseFloat(lw).toFixed(2); + var slider = row.querySelector('.knob-slider'); + var valEl = row.querySelector('.knob-val'); + var toggle = row.querySelector('.knob-toggle'); + var select = row.querySelector('.knob-select'); + + if (toggle && typeof value === 'boolean') { + toggle.checked = value; + } else if (select && typeof value === 'string') { + select.value = value; + } else if (slider && typeof value === 'number') { + if (slider.dataset.logScale === 'true' && value > 0) { + slider.value = Math.log10(value); + if (valEl) valEl.value = value.toExponential(2); + } else { + slider.value = value; + if (valEl) valEl.value = parseFloat(value).toFixed(2); + } } - } + }); + + _markStagedChanges(); } async function hydrateControlsFromServer() { @@ -530,6 +662,13 @@ async function hydrateControlsFromServer() { var state = await api('GET', '/api/state/controls'); if (!state) return; + // Build dynamic controls from server-provided controls list + if (state.controls && state.controls.length) { + buildControls(state.controls); + // Update S.config.controls so Apply handler can look up specs + if (S.config) S.config.controls = state.controls; + } + // Demo mode gate: hide entire Training card when not in demo mode if (state.demo_mode === false) { var trainPanel = document.getElementById('trainPanel'); @@ -543,18 +682,7 @@ async function hydrateControlsFromServer() { if (state.last_opt_params) syncSlidersFromApplied(state.last_opt_params); if (state.last_loss_params) syncSlidersFromApplied(state.last_loss_params); - // Adaptive controls: hide modules not active for this training - var mods = state.modules_active || {opt: true, loss: false, cb: false}; - if (!mods.loss) { - document.querySelectorAll('.single-loss-only, .multitask-only').forEach(function(el) { - el.style.display = 'none'; - }); - } - if (!mods.cb) { - document.querySelectorAll('.finetune-only').forEach(function(el) { - el.style.display = 'none'; - }); - } + // Module activity detection — controls are now dynamic, no CSS class hiding needed // External training: hide demo config dropdown, show attached label if (state.is_external) { diff --git a/src/hotcb/server/static/js/init.js b/src/hotcb/server/static/js/init.js index 4a55fa7..fdc8633 100644 --- a/src/hotcb/server/static/js/init.js +++ b/src/hotcb/server/static/js/init.js @@ -11,6 +11,16 @@ function dismissChartWaiting() { } async function initialLoad() { + // Fetch centralized config before other init + var cfg = await api('GET', '/api/config'); + if (cfg) { + S.config = cfg; + // Build dynamic controls from config + if (cfg.controls && cfg.controls.length) { + buildControls(cfg.controls); + } + } + // Status var status = await api('GET', '/api/status'); if (status) { @@ -18,8 +28,8 @@ async function initialLoad() { if (status.run_dir) S.runs = [status.run_dir]; } - // Metric history - var hist = await api('GET', '/api/metrics/history?last_n=2000'); + // Metric history — load full run for external projects (LTTB handles rendering) + var hist = await api('GET', '/api/metrics/history?last_n=50000'); if (hist && hist.records && hist.records.length > 0) { dismissChartWaiting(); hist.records.forEach(function(rec) { @@ -72,34 +82,26 @@ async function initialLoad() { // Restore controls from server state (overrides stale localStorage) var ctrlState = await api('GET', '/api/state/controls'); if (ctrlState) { - // Sync sliders from latest metrics - var m = ctrlState.latest_metrics || {}; - if (m.lr && m.lr > 0) { - var lrSlider = document.getElementById('knobLr'); - var lrDisplay = document.getElementById('knobLrVal'); - if (lrSlider && lrDisplay) { - lrSlider.value = Math.log10(m.lr); - lrDisplay.value = m.lr.toExponential(2); - } + // Build/rebuild controls from live MutableState data + if (ctrlState.controls && ctrlState.controls.length) { + buildControls(ctrlState.controls); + if (S.config) S.config.controls = ctrlState.controls; } - if (m.weight_decay && m.weight_decay > 0) { - var wdSlider = document.getElementById('knobWd'); - var wdDisplay = document.getElementById('knobWdVal'); - if (wdSlider && wdDisplay) { - wdSlider.value = Math.log10(m.weight_decay); - wdDisplay.value = m.weight_decay.toExponential(2); - } + + // Sync sliders from latest metrics using dynamic sync + var m = ctrlState.latest_metrics || {}; + if (Object.keys(m).length > 0) { + syncSlidersFromApplied(m); } // Sync from last applied opt params as fallback var op = ctrlState.last_opt_params || {}; - if (!m.lr && op.lr && op.lr > 0) { - var lrSlider = document.getElementById('knobLr'); - var lrDisplay = document.getElementById('knobLrVal'); - if (lrSlider && lrDisplay) { - lrSlider.value = Math.log10(op.lr); - lrDisplay.value = op.lr.toExponential(2); - } + if (Object.keys(op).length > 0) { + syncSlidersFromApplied(op); + } + if (ctrlState.last_loss_params && Object.keys(ctrlState.last_loss_params).length > 0) { + syncSlidersFromApplied(ctrlState.last_loss_params); } + // Sync training config var rc = ctrlState.run_config || {}; if (rc.config_id) { @@ -128,12 +130,13 @@ async function initialLoad() { } } - // Load training capabilities and adapt controls + // Load training capabilities (informational) loadCapabilities(); // Periodic updates startForecastPolling(); - S._alertInterval = setInterval(fetchAlerts, 15000); + var _alertPollMs = (S.config && S.config.ui) ? S.config.ui.alert_poll_interval : 15000; + S._alertInterval = setInterval(fetchAlerts, _alertPollMs); // Show tour for first-time users (with delay to let UI settle) if (shouldShowTour()) { @@ -177,6 +180,15 @@ async function initialLoad() { initCompare(); createMetricsChart(); initStepRangeControls(); + // Normalize toggle + var normBtn = document.getElementById('btnNormalize'); + if (normBtn) { + normBtn.addEventListener('click', function() { + _chartNormalize = !_chartNormalize; + normBtn.classList.toggle('btn-accent', _chartNormalize); + updateChart(); + }); + } initialLoad(); connectWS(); @@ -198,19 +210,11 @@ async function initialLoad() { if (savedState.pinnedMetrics && savedState.pinnedMetrics.length) { S._pendingPinnedMetrics = savedState.pinnedMetrics; } - if (savedState.knobs) { - if (savedState.knobs.lr) { - var lr = document.getElementById('knobLr'); - if (lr) { lr.value = savedState.knobs.lr; lr.dispatchEvent(new Event('input')); } - } - if (savedState.knobs.wd) { - var wd = document.getElementById('knobWd'); - if (wd) { wd.value = savedState.knobs.wd; wd.dispatchEvent(new Event('input')); } - } - } + // Knob state is now handled by dynamic controls from server } // Persist UI state periodically and before page unload - S._saveStateInterval = setInterval(saveUIState, 5000); + var _stateSaveMs = (S.config && S.config.ui) ? S.config.ui.state_save_interval : 5000; + S._saveStateInterval = setInterval(saveUIState, _stateSaveMs); window.addEventListener('beforeunload', saveUIState); })(); diff --git a/src/hotcb/server/static/js/panels.js b/src/hotcb/server/static/js/panels.js index 43ddb41..33927d4 100644 --- a/src/hotcb/server/static/js/panels.js +++ b/src/hotcb/server/static/js/panels.js @@ -9,6 +9,7 @@ var _manifoldRefreshInterval = null; function _startManifoldAutoRefresh() { if (_manifoldRefreshInterval) return; + var _manifoldMs = (S.config && S.config.ui) ? S.config.ui.manifold_refresh_interval : 10000; _manifoldRefreshInterval = setInterval(function() { var activeSubtab = document.querySelector('[data-subtab].active'); if (activeSubtab && activeSubtab.dataset.subtab === 'feature-space') { @@ -16,7 +17,7 @@ function _startManifoldAutoRefresh() { } else { fetchManifold(); } - }, 10000); + }, _manifoldMs); } function _stopManifoldAutoRefresh() { @@ -36,6 +37,9 @@ function initTabs() { area.querySelectorAll('.tab-content[data-tab]').forEach(function(x) { x.classList.remove('active'); }); var target = area.querySelector('.tab-content[data-tab="' + t.dataset.tab + '"]'); if (target) target.classList.add('active'); + // Compare mode: hide right-col panes, show compact status bar + document.body.classList.toggle('compare-active-mode', t.dataset.tab === 'compare'); + if (t.dataset.tab === 'compare') fetchCompareRuns(); if (t.dataset.tab === 'manifold') { fetchManifold(); _startManifoldAutoRefresh(); @@ -175,7 +179,8 @@ async function fetchRecipe() { function _startRecipeAutoRefresh() { if (_recipeAutoRefresh) return; - _recipeAutoRefresh = setInterval(fetchRecipe, 5000); + var _recipeMs = (S.config && S.config.ui) ? S.config.ui.recipe_refresh_interval : 5000; + _recipeAutoRefresh = setInterval(fetchRecipe, _recipeMs); } function _stopRecipeAutoRefresh() { if (_recipeAutoRefresh) { clearInterval(_recipeAutoRefresh); _recipeAutoRefresh = null; } @@ -685,7 +690,8 @@ async function fetchAutopilotRules() { function _startRulesAutoRefresh() { if (_rulesAutoRefresh) return; - _rulesAutoRefresh = setInterval(fetchAutopilotRules, 5000); + var _rulesMs = (S.config && S.config.ui) ? S.config.ui.recipe_refresh_interval : 5000; + _rulesAutoRefresh = setInterval(fetchAutopilotRules, _rulesMs); } function _stopRulesAutoRefresh() { if (_rulesAutoRefresh) { clearInterval(_rulesAutoRefresh); _rulesAutoRefresh = null; } @@ -900,7 +906,12 @@ function initAutopilotRulesEditor() { /* Compare Runs */ /* ================================================================ */ var _compareChart = null; -var _compareRunColorPalette = ['#00d4aa', '#3d9eff', '#ff9833', '#ff4d5e', '#9966ff', '#33dd77', '#ff66aa', '#66ddff', '#aadd33', '#dd66ff']; +var _compareRunColorPalette = [ + '#00d4aa', '#3d9eff', '#ff9833', '#ff4d5e', '#9966ff', + '#33dd77', '#ff66aa', '#66ddff', '#aadd33', '#dd66ff', + '#ff8800', '#00aaff', '#cc44cc', '#44cc88', '#ffcc00', + '#ee5577', '#77ccee', '#bbaa33', '#aa55ee', '#55bbaa', +]; var _compareRunColorMap = {}; // runId -> color (stable mapping) var _selectedCompareRuns = new Set(); var _compareAllData = {}; // runId -> records[] @@ -908,6 +919,9 @@ var _compareMetricNames = new Set(); var _compareEnabledMetrics = {}; // name -> bool var _compareZoomed = false; var _compareRunMeta = {}; // runId -> run metadata +var _compareNormalize = false; +// External directories loaded for comparison +var _compareExternalRuns = []; // [{run_id, dir, label, ...}] function _getCompareRunColor(runId) { if (!_compareRunColorMap[runId]) { @@ -918,8 +932,10 @@ function _getCompareRunColor(runId) { return _compareRunColorPalette[i]; } } - // All colors used, cycle - _compareRunColorMap[runId] = _compareRunColorPalette[Object.keys(_compareRunColorMap).length % _compareRunColorPalette.length]; + // Generate a unique color via HSL when palette exhausted + var idx = Object.keys(_compareRunColorMap).length; + var hue = (idx * 137.508) % 360; // golden angle for distinct hues + _compareRunColorMap[runId] = 'hsl(' + Math.round(hue) + ',70%,55%)'; } return _compareRunColorMap[runId]; } @@ -936,26 +952,89 @@ function initCompare() { if (_compareChart) _compareChart.resize(); _updateCompareOverlayInfo(); }); + + // Normalize toggle for compare chart + var normBtn = document.getElementById('btnNormalizeCompare'); + if (normBtn) { + normBtn.addEventListener('click', function() { + _compareNormalize = !_compareNormalize; + normBtn.classList.toggle('btn-accent', _compareNormalize); + _rebuildCompareChart(); + }); + } + + // External dir loader + var loadDirBtn = document.getElementById('btnCompareLoadDir'); + var loadDirForm = document.getElementById('compareLoadDirForm'); + if (loadDirBtn && loadDirForm) { + loadDirBtn.addEventListener('click', function() { + loadDirForm.style.display = loadDirForm.style.display === 'none' ? 'block' : 'none'; + }); + var cancelBtn = document.getElementById('btnCompareLoadDirCancel'); + if (cancelBtn) cancelBtn.addEventListener('click', function() { + loadDirForm.style.display = 'none'; + }); + var submitBtn = document.getElementById('btnCompareLoadDirSubmit'); + if (submitBtn) submitBtn.addEventListener('click', _loadExternalDir); + } } -async function fetchCompareRuns() { - var data = await api('GET', '/api/runs/discover'); - if (!data || !data.runs) return; +async function _loadExternalDir() { + var dirInput = document.getElementById('compareExternalDir'); + if (!dirInput || !dirInput.value.trim()) return; + var dirPath = dirInput.value.trim(); - // Store run metadata + var data = await api('POST', '/api/runs/load-external', {dir: dirPath}); + if (!data || !data.runs || data.runs.length === 0) { + alert('No runs found in: ' + dirPath); + return; + } + + // Store as external runs and add to run list data.runs.forEach(function(run) { - if (run.run_id) _compareRunMeta[run.run_id] = run; + run._external = true; + run._source_dir = dirPath; + _compareExternalRuns.push(run); + _compareRunMeta[run.run_id] = run; }); + // Hide form, refresh the run list display + document.getElementById('compareLoadDirForm').style.display = 'none'; + dirInput.value = ''; + _refreshCompareRunList(); +} + +function _refreshCompareRunList() { var list = $('#compareRunList'); list.innerHTML = ''; - if (data.runs.length === 0) { - list.innerHTML = '
No runs found. Start training or point at a directory with run subdirs.
'; + // Combine discovered + external runs + var allRuns = []; + // Add external runs + _compareExternalRuns.forEach(function(run) { allRuns.push(run); }); + + // Also trigger normal discover to add local runs + api('GET', '/api/runs/discover').then(function(data) { + if (data && data.runs) { + data.runs.forEach(function(run) { + _compareRunMeta[run.run_id] = run; + allRuns.push(run); + }); + } + _renderCompareRunList(allRuns); + }); +} + +function _renderCompareRunList(runs) { + var list = $('#compareRunList'); + list.innerHTML = ''; + + if (runs.length === 0) { + list.innerHTML = '
No runs found.
'; return; } - data.runs.forEach(function(run, idx) { + runs.forEach(function(run) { var div = document.createElement('div'); var color = _getCompareRunColor(run.run_id); var isSelected = _selectedCompareRuns.has(run.run_id); @@ -966,10 +1045,11 @@ async function fetchCompareRuns() { var dot = ''; var configLabel = run.label || run.run_id || '?'; var stepInfo = run.step_count ? run.step_count + ' steps' : '--'; + var sourceTag = run._external ? 'EXT' : ''; div.innerHTML = dot + '
' + - '
' + configLabel + '
' + + '
' + configLabel + sourceTag + '
' + '
' + run.run_id + ' · ' + stepInfo + '
' + '
'; @@ -990,6 +1070,22 @@ async function fetchCompareRuns() { }); } +async function fetchCompareRuns() { + var data = await api('GET', '/api/runs/discover'); + var allRuns = []; + if (data && data.runs) { + data.runs.forEach(function(run) { + if (run.run_id) _compareRunMeta[run.run_id] = run; + allRuns.push(run); + }); + } + // Merge external runs + _compareExternalRuns.forEach(function(run) { + allRuns.push(run); + }); + _renderCompareRunList(allRuns); +} + function _updateCompareMetricToggles() { var container = $('#compareMetricToggles'); if (!container) return; @@ -1120,16 +1216,39 @@ function _rebuildCompareChart() { // Color by metric name (consistent across runs), dash pattern by run/experiment var runDashPatterns = [[], [6, 3], [3, 3], [8, 3, 2, 3], [4, 2], [10, 3]]; + // Pre-compute per-metric min/max for normalization (across all runs) + var _cmpMetricRange = {}; + if (_compareNormalize) { + enabledMetrics.forEach(function(metricName) { + var mn = Infinity, mx = -Infinity; + runIds.forEach(function(runId) { + var records = _compareAllData[runId] || []; + records.forEach(function(rec) { + var v = (rec.metrics || {})[metricName]; + if (typeof v === 'number') { + if (v < mn) mn = v; + if (v > mx) mx = v; + } + }); + }); + if (mx === mn) { mn -= 0.5; mx += 0.5; } + _cmpMetricRange[metricName] = {min: mn, max: mx}; + }); + } + runIds.forEach(function(runId, runIdx) { var records = _compareAllData[runId] || []; var dashPattern = runDashPatterns[runIdx % runDashPatterns.length]; enabledMetrics.forEach(function(metricName, metricIdx) { var points = []; + var range = _cmpMetricRange[metricName]; records.forEach(function(rec) { var metrics = rec.metrics || {}; if (metricName in metrics) { - points.push({x: rec.step, y: metrics[metricName]}); + var v = metrics[metricName]; + var y = (_compareNormalize && range) ? (v - range.min) / (range.max - range.min) : v; + points.push({x: rec.step, y: y, _rawY: v}); } }); if (points.length === 0) return; @@ -1166,7 +1285,7 @@ function _rebuildCompareChart() { animation: false, scales: { x: {type: 'linear', title: {display: true, text: 'Step', color: '#7a8fa3', font:{size:11}}, ticks: {color:'#7a8fa3'}, grid: {color: 'rgba(30,46,68,0.5)'}}, - y: {title: {display: false}, ticks: {color:'#7a8fa3'}, grid: {color: 'rgba(30,46,68,0.3)'}}, + y: {title: {display: _compareNormalize, text: 'Normalized [0,1]', color: '#7a8fa3', font:{size:10}}, ticks: {color:'#7a8fa3'}, grid: {color: 'rgba(30,46,68,0.3)'}}, }, plugins: { legend: { @@ -1187,6 +1306,14 @@ function _rebuildCompareChart() { backgroundColor:'#121c2b', borderColor:'#2a4060', borderWidth:1, titleFont:{family:'JetBrains Mono',size:11}, bodyFont:{family:'JetBrains Mono',size:10}, usePointStyle: true, boxWidth: 8, boxHeight: 8, + intersect: false, mode: 'nearest', axis: 'x', + itemSort: function(a, b) { + var chart = a.chart; + var cursorY = (chart && chart._lastEvent) ? chart._lastEvent.y : 0; + var ay = a.element ? a.element.y : 0; + var by = b.element ? b.element.y : 0; + return Math.abs(ay - cursorY) - Math.abs(by - cursorY); + }, callbacks: { label: function(ctx) { var raw = ctx.raw; @@ -1208,9 +1335,12 @@ function _rebuildCompareChart() { if (raw._metric) parts.push('on: ' + raw._metric); return parts; } - // Regular line tooltip — show run color swatch info + // Regular line tooltip — show raw value when normalized var ds = ctx.dataset; var val = typeof ctx.parsed.y === 'number' ? ctx.parsed.y.toPrecision(5) : ctx.parsed.y; + if (_compareNormalize && raw && raw._rawY !== undefined) { + return ds.label + ': ' + (typeof fmtNum === 'function' ? fmtNum(raw._rawY) : raw._rawY.toPrecision(5)) + ' (norm: ' + parseFloat(val).toFixed(3) + ')'; + } return ds.label + ': ' + val; } } @@ -1360,19 +1490,27 @@ async function updateCompareChart() { for (var i = 0; i < runIds.length; i++) { (function(runId) { - // Fetch metrics - var p1 = api('GET', '/api/train/runs/' + runId + '/metrics').then(function(data) { + var meta = _compareRunMeta[runId] || {}; + var isExternal = !!meta._external; + var runDir = meta.dir || ''; + + // Fetch metrics — use external API for external runs + var metricsUrl = isExternal + ? '/api/runs/external/metrics?dir=' + encodeURIComponent(runDir) + '&last_n=50000' + : '/api/train/runs/' + runId + '/metrics'; + var p1 = api('GET', metricsUrl).then(function(data) { if (data && data.records) { _compareAllData[runId] = data.records; - // Discover metric names + // Discover metric names — default only losses/key metric ON data.records.forEach(function(rec) { var metrics = rec.metrics || {}; Object.keys(metrics).forEach(function(name) { if (typeof metrics[name] === 'number') { _compareMetricNames.add(name); if (!(name in _compareEnabledMetrics)) { - // Default: enable all discovered metrics - _compareEnabledMetrics[name] = true; + var lower = name.toLowerCase(); + var isLoss = lower.indexOf('loss') !== -1; + _compareEnabledMetrics[name] = isLoss; } } }); @@ -1380,7 +1518,10 @@ async function updateCompareChart() { } }); // Fetch applied data for mutation markers - var p2 = api('GET', '/api/train/runs/' + runId + '/applied').then(function(data) { + var appliedUrl = isExternal + ? '/api/runs/external/applied?dir=' + encodeURIComponent(runDir) + '&last_n=200' + : '/api/train/runs/' + runId + '/applied'; + var p2 = api('GET', appliedUrl).then(function(data) { if (data && data.records) { _compareAllData['_applied_' + runId] = data.records; } diff --git a/src/hotcb/server/static/js/state.js b/src/hotcb/server/static/js/state.js index da6645d..89f93c2 100644 --- a/src/hotcb/server/static/js/state.js +++ b/src/hotcb/server/static/js/state.js @@ -5,6 +5,7 @@ const COLORS = ['#00d4aa','#3d9eff','#ff9833','#ff4d5e','#9966ff','#33dd77','#ffd233','#33ccdd','#ff66aa','#aabb44']; const S = { + config: null, // populated from /api/config at startup ws: null, metricsData: {}, // {metricName: [{step, value}]} appliedData: [], @@ -54,11 +55,19 @@ function saveUIState() { state.pinnedMetrics = Array.from(S.pinnedMetrics || []); } // Don't persist focusMetric — it should reset with the session - // Knobs - var lr = document.getElementById('knobLr'); - var wd = document.getElementById('knobWd'); - if (lr) state.knobs.lr = lr.value; - if (wd) state.knobs.wd = wd.value; + // Knobs — save all dynamic control values + var panel = document.getElementById('knobPanel'); + if (panel) { + panel.querySelectorAll('.knob-row[data-param]').forEach(function(row) { + var param = row.dataset.param; + var slider = row.querySelector('.knob-slider'); + var toggle = row.querySelector('.knob-toggle'); + var select = row.querySelector('.knob-select'); + if (toggle) state.knobs[param] = toggle.checked; + else if (select) state.knobs[param] = select.value; + else if (slider) state.knobs[param] = slider.value; + }); + } // Metric visibility if (S.metricNames) { S.metricNames.forEach(function(name) { diff --git a/src/hotcb/server/static/js/websocket.js b/src/hotcb/server/static/js/websocket.js index 58a0ab6..982a45f 100644 --- a/src/hotcb/server/static/js/websocket.js +++ b/src/hotcb/server/static/js/websocket.js @@ -3,7 +3,7 @@ */ var _wsRetryCount = 0; -var _wsMaxRetries = 20; +var _wsMaxRetries = (S.config && S.config.server) ? S.config.server.ws_max_retries : 20; var _slidersInitialized = false; var _lastSeenMaxStep = 0; // track for run-reset detection @@ -23,7 +23,9 @@ function connectWS() { $('#wsStatus').className = 'status-dot error'; $('#wsLabel').textContent = 'disconnected'; if (_wsRetryCount < _wsMaxRetries) { - var delay = Math.min(3000 * Math.pow(1.5, _wsRetryCount), 30000); + var _wsRetryBaseMs = ((S.config && S.config.server) ? S.config.server.ws_retry_base : 3) * 1000; + var _wsRetryCapMs = ((S.config && S.config.server) ? S.config.server.ws_retry_cap : 30) * 1000; + var delay = Math.min(_wsRetryBaseMs * Math.pow(1.5, _wsRetryCount), _wsRetryCapMs); _wsRetryCount++; setTimeout(connectWS, delay); } @@ -104,6 +106,9 @@ function connectWS() { _lastSeenMaxStep = maxStep; var stepEl = document.getElementById('stepValue'); if (stepEl) stepEl.textContent = maxStep; + // Update compare status bar step counter + var cmpStepEl = document.getElementById('cmpStepStatus'); + if (cmpStepEl) cmpStepEl.textContent = 'Step: ' + maxStep; // Trigger forecast refresh on new data if (typeof onNewMetricsForForecast === 'function') onNewMetricsForForecast(maxStep); } diff --git a/src/hotcb/server/tailer.py b/src/hotcb/server/tailer.py index 43d4493..69d7882 100644 --- a/src/hotcb/server/tailer.py +++ b/src/hotcb/server/tailer.py @@ -119,7 +119,11 @@ async def poll_once(self) -> Dict[str, List[dict]]: async def _poll_target(self, target: TailTarget) -> List[dict]: """Read new records from one target and dispatch to subscribers.""" try: - records, new_cursor = read_new_jsonl(target.cursor) + # Run blocking file I/O in a thread to avoid blocking the event loop + loop = asyncio.get_running_loop() + records, new_cursor = await loop.run_in_executor( + None, read_new_jsonl, target.cursor + ) target.cursor = new_cursor except Exception as e: log.warning("Tailer error on %s: %s", target.name, e) diff --git a/src/hotcb/tests/test_actuator_unified.py b/src/hotcb/tests/test_actuator_unified.py new file mode 100644 index 0000000..1ab8882 --- /dev/null +++ b/src/hotcb/tests/test_actuator_unified.py @@ -0,0 +1,786 @@ +"""Comprehensive tests for the unified actuator types (Phase 2). + +Tests cover: ActuatorType validation, state machine transitions, mutation +tracking, apply_fn behaviour, snapshot/restore, describe_space, and the +convenience constructors (optimizer_actuators, loss_actuators, mutable_state). +""" + +from __future__ import annotations + +import pytest + +from hotcb.actuators import ( + ApplyResult, + ValidationResult, + mutable_state, + optimizer_actuators, + loss_actuators, +) +from hotcb.actuators.actuator import ( + ActuatorState, + ActuatorType, + HotcbActuator, + Mutation, + _INIT_SENTINEL, +) +from hotcb.actuators.state import MutableState + + +# --------------------------------------------------------------------------- +# Helpers +# --------------------------------------------------------------------------- + +class MockOptimizer: + def __init__(self, lr=1e-3, weight_decay=1e-4, betas=(0.9, 0.999)): + self.param_groups = [{"lr": lr, "weight_decay": weight_decay, "betas": betas}] + + +class MockScheduler: + def __init__(self, base_lrs): + self.base_lrs = list(base_lrs) + + +def _noop_apply(value, env): + return ApplyResult(success=True, detail={"applied": value}) + + +def _failing_apply(value, env): + return ApplyResult(success=False, error="intentional_failure") + + +def _raising_apply(value, env): + raise RuntimeError("boom") + + +def _make_float_actuator(key="x", min_v=0.0, max_v=1.0, current=0.5, apply_fn=None): + return HotcbActuator( + param_key=key, + type=ActuatorType.FLOAT, + apply_fn=apply_fn or _noop_apply, + min_value=min_v, + max_value=max_v, + current_value=current, + ) + + +# =================================================================== +# ActuatorType & validation +# =================================================================== + +class TestActuatorValidation: + + def test_float_actuator_validate_in_bounds(self): + act = HotcbActuator( + param_key="x", type=ActuatorType.FLOAT, apply_fn=_noop_apply, + min_value=0.0, max_value=1.0, + ) + vr = act.validate(0.5) + assert vr.valid + assert vr.errors == [] + + def test_float_actuator_validate_out_of_bounds(self): + act = HotcbActuator( + param_key="x", type=ActuatorType.FLOAT, apply_fn=_noop_apply, + min_value=0.0, max_value=1.0, + ) + vr = act.validate(1.5) + assert not vr.valid + assert any("above max" in e for e in vr.errors) + + vr_low = act.validate(-0.1) + assert not vr_low.valid + assert any("below min" in e for e in vr_low.errors) + + def test_log_float_actuator_validate(self): + act = HotcbActuator( + param_key="lr", type=ActuatorType.LOG_FLOAT, apply_fn=_noop_apply, + min_value=1e-7, max_value=1.0, + ) + vr = act.validate(1e-4) + assert vr.valid + + vr_neg = act.validate(-1.0) + assert not vr_neg.valid + assert any("log_float must be positive" in e for e in vr_neg.errors) + + def test_bool_actuator_validate(self): + act = HotcbActuator( + param_key="flag", type=ActuatorType.BOOL, apply_fn=_noop_apply, + ) + assert act.validate(True).valid + assert act.validate(False).valid + + vr = act.validate("yes") + assert not vr.valid + assert any("expected bool" in e for e in vr.errors) + + def test_int_actuator_validate(self): + act = HotcbActuator( + param_key="n", type=ActuatorType.INT, apply_fn=_noop_apply, + min_value=0, max_value=100, + ) + assert act.validate(50).valid + + vr_float = act.validate(50.5) + assert not vr_float.valid + assert any("expected int" in e for e in vr_float.errors) + + vr_bool = act.validate(True) + assert not vr_bool.valid + assert any("expected int" in e for e in vr_bool.errors) + + vr_oob = act.validate(101) + assert not vr_oob.valid + assert any("above max" in e for e in vr_oob.errors) + + def test_choice_actuator_validate(self): + act = HotcbActuator( + param_key="opt", type=ActuatorType.CHOICE, apply_fn=_noop_apply, + choices=["adam", "sgd", "adamw"], + ) + assert act.validate("adam").valid + + vr = act.validate("rmsprop") + assert not vr.valid + assert any("not in choices" in e for e in vr.errors) + + def test_tuple_actuator_validate(self): + act = HotcbActuator( + param_key="betas", type=ActuatorType.TUPLE, apply_fn=_noop_apply, + ) + assert act.validate((0.9, 0.999)).valid + assert act.validate([0.9, 0.999]).valid + + vr = act.validate("not a tuple") + assert not vr.valid + assert any("expected tuple/list" in e for e in vr.errors) + + +# =================================================================== +# State machine +# =================================================================== + +class TestStateMachine: + + def test_initial_state_is_init(self): + act = HotcbActuator( + param_key="x", type=ActuatorType.FLOAT, apply_fn=_noop_apply, + ) + assert act.state == ActuatorState.INIT + assert act.current_value is _INIT_SENTINEL + + def test_initialize_transitions_to_untouched(self): + opt = MockOptimizer(lr=1e-3) + acts = optimizer_actuators(opt) + ms = MutableState(acts) + + lr_act = ms.get("lr") + assert lr_act is not None + assert lr_act.state == ActuatorState.INIT # set by constructor, but current_value populated + + ms.initialize(env={}) + assert lr_act.state == ActuatorState.UNTOUCHED + + def test_apply_transitions_to_unverified(self): + act = _make_float_actuator(current=0.5) + ms = MutableState([act]) + ms.initialize(env={}) + assert act.state == ActuatorState.UNTOUCHED + + result = ms.apply("x", 0.7, {}, step=10) + assert result.success + assert act.state == ActuatorState.UNVERIFIED + + def test_verify_transitions_to_verified(self): + act = _make_float_actuator(key="x", current=0.5) + act.metrics_dict_name = "x" + ms = MutableState([act]) + ms.initialize(env={}) + ms.apply("x", 0.7, {}, step=10) + assert act.state == ActuatorState.UNVERIFIED + + verified = ms.verify("x", {"x": 0.7}) + assert verified + assert act.state == ActuatorState.VERIFIED + + def test_apply_after_verified_goes_back_to_unverified(self): + act = _make_float_actuator(key="x", current=0.5) + act.metrics_dict_name = "x" + ms = MutableState([act]) + ms.initialize(env={}) + ms.apply("x", 0.7, {}, step=10) + ms.verify("x", {"x": 0.7}) + assert act.state == ActuatorState.VERIFIED + + result = ms.apply("x", 0.3, {}, step=20) + assert result.success + assert act.state == ActuatorState.UNVERIFIED + + def test_disabled_actuator_rejects_apply(self): + act = _make_float_actuator(current=0.5) + ms = MutableState([act]) + ms.initialize(env={}) + ms.disable("x") + assert act.state == ActuatorState.DISABLED + + result = ms.apply("x", 0.7, {}, step=10) + assert not result.success + assert "actuator_disabled" in result.error + + def test_disable_actuator(self): + act = _make_float_actuator(current=0.5) + ms = MutableState([act]) + ms.initialize(env={}) + assert act.state == ActuatorState.UNTOUCHED + + ms.disable("x") + assert act.state == ActuatorState.DISABLED + + def test_enable_after_disable(self): + act = _make_float_actuator(current=0.5) + ms = MutableState([act]) + ms.initialize(env={}) + ms.disable("x") + assert act.state == ActuatorState.DISABLED + + ms.enable("x") + assert act.state == ActuatorState.UNTOUCHED + + +# =================================================================== +# Mutation tracking +# =================================================================== + +class TestMutationTracking: + + def test_mutation_recorded_on_apply(self): + act = _make_float_actuator(current=0.5) + ms = MutableState([act]) + ms.initialize(env={}) + + result = ms.apply("x", 0.7, {}, step=10) + assert result.success + assert len(act.mutations) == 1 + m = act.mutations[0] + assert m.step == 10 + assert m.old_value == 0.5 + assert m.new_value == 0.7 + assert m.verified is False + + def test_multiple_mutations_accumulated(self): + act = _make_float_actuator(current=0.5) + ms = MutableState([act]) + ms.initialize(env={}) + + ms.apply("x", 0.6, {}, step=10) + ms.apply("x", 0.7, {}, step=20) + ms.apply("x", 0.8, {}, step=30) + + assert len(act.mutations) == 3 + assert [m.new_value for m in act.mutations] == [0.6, 0.7, 0.8] + + def test_last_changed_step_updated(self): + act = _make_float_actuator(current=0.5) + ms = MutableState([act]) + ms.initialize(env={}) + + ms.apply("x", 0.7, {}, step=50) + assert act.last_changed_step == 50 + + +# =================================================================== +# apply_fn behaviour +# =================================================================== + +class TestApplyFn: + + def test_apply_fn_receives_value_and_env(self): + received = {} + + def capture_apply(value, env): + received["value"] = value + received["env"] = env + return ApplyResult(success=True) + + act = HotcbActuator( + param_key="x", type=ActuatorType.FLOAT, apply_fn=capture_apply, + min_value=0.0, max_value=1.0, current_value=0.5, + ) + ms = MutableState([act]) + ms.initialize(env={}) + + test_env = {"key": "val"} + ms.apply("x", 0.8, test_env, step=1) + + assert received["value"] == 0.8 + assert received["env"] is test_env + + def test_apply_fn_failure_does_not_mutate_state(self): + act = HotcbActuator( + param_key="x", type=ActuatorType.FLOAT, apply_fn=_failing_apply, + min_value=0.0, max_value=1.0, current_value=0.5, + ) + ms = MutableState([act]) + ms.initialize(env={}) + + result = ms.apply("x", 0.7, {}, step=10) + assert not result.success + # State should not change + assert act.current_value == 0.5 + assert len(act.mutations) == 0 + assert act.state == ActuatorState.UNTOUCHED + + def test_apply_fn_exception_caught(self): + act = HotcbActuator( + param_key="x", type=ActuatorType.FLOAT, apply_fn=_raising_apply, + min_value=0.0, max_value=1.0, current_value=0.5, + ) + ms = MutableState([act]) + ms.initialize(env={}) + + result = ms.apply("x", 0.7, {}, step=10) + assert not result.success + assert "apply_fn_exception" in result.error + assert "boom" in result.error + # State not corrupted + assert act.current_value == 0.5 + assert len(act.mutations) == 0 + assert act.state == ActuatorState.UNTOUCHED + + +# =================================================================== +# Snapshot / restore +# =================================================================== + +class TestSnapshotRestore: + + def test_snapshot_all(self): + a1 = _make_float_actuator(key="lr", current=1e-3) + a2 = _make_float_actuator(key="wd", current=1e-4) + ms = MutableState([a1, a2]) + ms.initialize(env={}) + + snap = ms.snapshot_all() + assert "lr" in snap + assert "wd" in snap + assert snap["lr"]["value"] == 1e-3 + assert snap["lr"]["state"] == "untouched" + assert snap["wd"]["value"] == 1e-4 + + def test_restore_from_snapshot(self): + # Track the "live" value so we can verify restore actually calls apply_fn + live = {"lr": 1e-3, "wd": 1e-4} + + def make_apply(key): + def _apply(value, env): + live[key] = value + return ApplyResult(success=True) + return _apply + + a1 = HotcbActuator( + param_key="lr", type=ActuatorType.FLOAT, apply_fn=make_apply("lr"), + min_value=0.0, max_value=1.0, current_value=1e-3, + ) + a2 = HotcbActuator( + param_key="wd", type=ActuatorType.FLOAT, apply_fn=make_apply("wd"), + min_value=0.0, max_value=1.0, current_value=1e-4, + ) + ms = MutableState([a1, a2]) + ms.initialize(env={}) + + # Snapshot + snap = ms.snapshot_all() + + # Apply mutations + ms.apply("lr", 5e-4, {}, step=10) + ms.apply("wd", 5e-5, {}, step=10) + assert live["lr"] == 5e-4 + assert live["wd"] == 5e-5 + + # Restore + results = ms.restore_all(snap, {}) + assert results["lr"].success + assert results["wd"].success + assert live["lr"] == 1e-3 + assert live["wd"] == 1e-4 + assert a1.current_value == 1e-3 + assert a2.current_value == 1e-4 + + +# =================================================================== +# describe_space +# =================================================================== + +class TestDescribeSpace: + + def test_describe_space_includes_all_fields(self): + act = HotcbActuator( + param_key="lr", + type=ActuatorType.LOG_FLOAT, + apply_fn=_noop_apply, + label="Learning Rate", + group="optimizer", + min_value=1e-7, + max_value=1.0, + step_size=0.01, + log_base=10.0, + current_value=1e-3, + ) + d = act.describe_space() + + assert d["param_key"] == "lr" + assert d["type"] == "log_float" + assert d["label"] == "Learning Rate" + assert d["group"] == "optimizer" + assert d["min"] == 1e-7 + assert d["max"] == 1.0 + assert d["step"] == 0.01 + assert d["log_base"] == 10.0 + assert d["choices"] is None + assert d["current"] == 1e-3 + assert d["state"] == "init" + + def test_describe_space_current_none_for_init_sentinel(self): + act = HotcbActuator( + param_key="x", type=ActuatorType.FLOAT, apply_fn=_noop_apply, + ) + d = act.describe_space() + assert d["current"] is None + + def test_describe_space_log_base_only_for_log_float(self): + act_float = HotcbActuator( + param_key="x", type=ActuatorType.FLOAT, apply_fn=_noop_apply, + ) + assert act_float.describe_space()["log_base"] is None + + act_log = HotcbActuator( + param_key="y", type=ActuatorType.LOG_FLOAT, apply_fn=_noop_apply, + log_base=2.0, + ) + assert act_log.describe_space()["log_base"] == 2.0 + + def test_describe_all(self): + a1 = _make_float_actuator(key="a") + a2 = _make_float_actuator(key="b") + a3 = _make_float_actuator(key="c") + ms = MutableState([a1, a2, a3]) + + descs = ms.describe_all() + assert len(descs) == 3 + keys = [d["param_key"] for d in descs] + assert keys == ["a", "b", "c"] + + def test_describe_all_excludes_disabled(self): + a1 = _make_float_actuator(key="a") + a2 = _make_float_actuator(key="b") + ms = MutableState([a1, a2]) + ms.disable("b") + + descs = ms.describe_all() + assert len(descs) == 1 + assert descs[0]["param_key"] == "a" + + +# =================================================================== +# Convenience constructors — optimizer_actuators +# =================================================================== + +class TestOptimizerActuators: + + def test_optimizer_actuators_from_torch_optimizer(self): + opt = MockOptimizer(lr=1e-3, weight_decay=1e-4, betas=(0.9, 0.999)) + acts = optimizer_actuators(opt) + + assert len(acts) == 3 + keys = {a.param_key for a in acts} + assert keys == {"lr", "weight_decay", "betas"} + + lr_act = next(a for a in acts if a.param_key == "lr") + assert lr_act.type == ActuatorType.LOG_FLOAT + assert lr_act.current_value == 1e-3 + assert lr_act.group == "optimizer" + + wd_act = next(a for a in acts if a.param_key == "weight_decay") + assert wd_act.type == ActuatorType.LOG_FLOAT + assert wd_act.current_value == 1e-4 + + betas_act = next(a for a in acts if a.param_key == "betas") + assert betas_act.type == ActuatorType.TUPLE + assert betas_act.current_value == (0.9, 0.999) + + def test_optimizer_actuators_bounds(self): + opt = MockOptimizer() + acts = optimizer_actuators(opt, lr_bounds=(1e-6, 0.1), wd_bounds=(0.0, 0.5)) + + lr_act = next(a for a in acts if a.param_key == "lr") + assert lr_act.min_value == 1e-6 + assert lr_act.max_value == 0.1 + + wd_act = next(a for a in acts if a.param_key == "weight_decay") + assert wd_act.min_value == 0.0 + assert wd_act.max_value == 0.5 + + def test_optimizer_actuators_apply_fn_sets_param_groups(self): + opt = MockOptimizer(lr=1e-3) + # Add a second param group + opt.param_groups.append({"lr": 1e-3, "weight_decay": 1e-4, "betas": (0.9, 0.999)}) + acts = optimizer_actuators(opt) + + lr_act = next(a for a in acts if a.param_key == "lr") + result = lr_act.apply_fn(5e-4, {"optimizer": opt}) + assert result.success + + # All param groups updated + for g in opt.param_groups: + assert g["lr"] == 5e-4 + + def test_optimizer_actuators_apply_fn_coordinates_scheduler(self): + opt = MockOptimizer(lr=1e-3) + sched = MockScheduler(base_lrs=[1e-3]) + acts = optimizer_actuators(opt) + + lr_act = next(a for a in acts if a.param_key == "lr") + result = lr_act.apply_fn(5e-4, {"optimizer": opt, "scheduler": sched}) + assert result.success + + assert opt.param_groups[0]["lr"] == 5e-4 + assert sched.base_lrs == [5e-4] + + def test_optimizer_actuators_wd_apply_fn(self): + opt = MockOptimizer(weight_decay=1e-4) + opt.param_groups.append({"lr": 1e-3, "weight_decay": 1e-4, "betas": (0.9, 0.999)}) + acts = optimizer_actuators(opt) + + wd_act = next(a for a in acts if a.param_key == "weight_decay") + result = wd_act.apply_fn(5e-5, {}) + assert result.success + for g in opt.param_groups: + assert g["weight_decay"] == 5e-5 + + def test_optimizer_actuators_betas_apply_fn(self): + opt = MockOptimizer(betas=(0.9, 0.999)) + acts = optimizer_actuators(opt) + + betas_act = next(a for a in acts if a.param_key == "betas") + result = betas_act.apply_fn([0.85, 0.99], {}) + assert result.success + assert opt.param_groups[0]["betas"] == (0.85, 0.99) + + def test_optimizer_without_betas(self): + """Optimizer without betas (e.g. SGD) produces only lr + wd actuators.""" + opt = MockOptimizer() + del opt.param_groups[0]["betas"] + acts = optimizer_actuators(opt) + keys = {a.param_key for a in acts} + assert "betas" not in keys + assert "lr" in keys + assert "weight_decay" in keys + + +# =================================================================== +# Convenience constructors — loss_actuators +# =================================================================== + +class TestLossActuators: + + def test_loss_actuators_from_dict(self): + weights = {"recon": 1.0, "kl": 0.5, "perceptual": 0.3} + acts = loss_actuators(weights) + + assert len(acts) == 3 + keys = {a.param_key for a in acts} + assert keys == {"recon", "kl", "perceptual"} + + for a in acts: + assert a.type == ActuatorType.FLOAT + assert a.group == "loss" + + recon_act = next(a for a in acts if a.param_key == "recon") + assert recon_act.current_value == 1.0 + + def test_loss_actuators_apply_fn_mutates_dict(self): + weights = {"recon": 1.0, "kl": 0.5} + acts = loss_actuators(weights) + + recon_act = next(a for a in acts if a.param_key == "recon") + result = recon_act.apply_fn(2.0, {}) + assert result.success + assert weights["recon"] == 2.0 # original dict mutated + + def test_loss_actuators_bounds(self): + weights = {"recon": 1.0, "kl": 0.5} + acts = loss_actuators(weights, global_bounds=(0.0, 10.0)) + + for a in acts: + assert a.min_value == 0.0 + assert a.max_value == 10.0 + + def test_loss_actuators_key_bounds(self): + weights = {"recon": 1.0, "kl": 0.5} + acts = loss_actuators(weights, key_bounds={"kl": (0.0, 2.0)}) + + kl_act = next(a for a in acts if a.param_key == "kl") + recon_act = next(a for a in acts if a.param_key == "recon") + + assert kl_act.min_value == 0.0 + assert kl_act.max_value == 2.0 + # recon uses global_bounds default + assert recon_act.min_value == 0.0 + assert recon_act.max_value == 100.0 + + +# =================================================================== +# Convenience constructors — mutable_state +# =================================================================== + +class TestMutableStateConstructor: + + def test_mutable_state_constructor(self): + a1 = _make_float_actuator(key="lr") + a2 = _make_float_actuator(key="wd") + a3 = _make_float_actuator(key="recon_w") + + ms = mutable_state([a1, a2, a3]) + assert isinstance(ms, MutableState) + assert ms.keys() == ["lr", "wd", "recon_w"] + assert len(ms) == 3 + assert "lr" in ms + assert "missing" not in ms + + +# =================================================================== +# MutableState container basics +# =================================================================== + +class TestMutableStateContainer: + + def test_get_returns_actuator(self): + act = _make_float_actuator(key="x") + ms = MutableState([act]) + assert ms.get("x") is act + + def test_get_returns_none_for_missing(self): + ms = MutableState([]) + assert ms.get("missing") is None + + def test_apply_unknown_key(self): + ms = MutableState([]) + result = ms.apply("missing", 1.0, {}, step=0) + assert not result.success + assert "unknown_param" in result.error + + def test_verify_nonexistent_key(self): + ms = MutableState([]) + assert not ms.verify("missing", {}) + + def test_verify_no_metrics_dict_name(self): + act = _make_float_actuator(key="x", current=0.5) + ms = MutableState([act]) + ms.initialize(env={}) + ms.apply("x", 0.7, {}, step=10) + # No metrics_dict_name set + assert not ms.verify("x", {"x": 0.7}) + + def test_verify_wrong_state(self): + act = _make_float_actuator(key="x", current=0.5) + act.metrics_dict_name = "x" + ms = MutableState([act]) + ms.initialize(env={}) + # In UNTOUCHED, not UNVERIFIED + assert not ms.verify("x", {"x": 0.5}) + + def test_disable_nonexistent_key(self): + ms = MutableState([]) + # Should not raise + ms.disable("missing") + + def test_enable_nonexistent_key(self): + ms = MutableState([]) + # Should not raise + ms.enable("missing") + + def test_enable_non_disabled_is_noop(self): + act = _make_float_actuator(key="x") + ms = MutableState([act]) + ms.initialize(env={}) + assert act.state == ActuatorState.UNTOUCHED + ms.enable("x") # Should be noop since not disabled + assert act.state == ActuatorState.UNTOUCHED + + +# =================================================================== +# Integration: full end-to-end flow +# =================================================================== + +class TestIntegration: + + def test_full_optimizer_flow(self): + """Full lifecycle: create, initialize, apply, verify, snapshot, restore.""" + opt = MockOptimizer(lr=1e-3, weight_decay=1e-4, betas=(0.9, 0.999)) + sched = MockScheduler(base_lrs=[1e-3]) + acts = optimizer_actuators(opt) + ms = MutableState(acts) + + # Initialize + ms.initialize(env={}) + for a in acts: + assert a.state == ActuatorState.UNTOUCHED + + # Snapshot + snap = ms.snapshot_all() + + # Apply lr change + env = {"optimizer": opt, "scheduler": sched} + result = ms.apply("lr", 5e-4, env, step=10) + assert result.success + assert opt.param_groups[0]["lr"] == 5e-4 + assert sched.base_lrs == [5e-4] + + lr_act = ms.get("lr") + assert lr_act.state == ActuatorState.UNVERIFIED + assert lr_act.current_value == 5e-4 + + # Verify + ms.verify("lr", {"lr": 5e-4}) + assert lr_act.state == ActuatorState.VERIFIED + + # Restore snapshot + results = ms.restore_all(snap, env) + assert all(r.success for r in results.values()) + assert opt.param_groups[0]["lr"] == 1e-3 + + def test_full_loss_flow(self): + """Full lifecycle for loss actuators.""" + weights = {"recon": 1.0, "kl": 0.5} + acts = loss_actuators(weights) + ms = MutableState(acts) + + ms.initialize(env={}) + + # Apply + result = ms.apply("recon", 2.0, {}, step=5) + assert result.success + assert weights["recon"] == 2.0 + + # Describe + descs = ms.describe_all() + assert len(descs) == 2 + recon_desc = next(d for d in descs if d["param_key"] == "recon") + assert recon_desc["current"] == 2.0 + assert recon_desc["state"] == "unverified" + + def test_mixed_actuators(self): + """Optimizer + loss actuators in one MutableState.""" + opt = MockOptimizer(lr=1e-3, weight_decay=1e-4, betas=(0.9, 0.999)) + weights = {"recon": 1.0, "kl": 0.5} + + all_acts = optimizer_actuators(opt) + loss_actuators(weights) + ms = MutableState(all_acts) + ms.initialize(env={}) + + assert len(ms) == 5 # lr, wd, betas, recon, kl + assert ms.keys() == ["lr", "weight_decay", "betas", "recon", "kl"] + + descs = ms.describe_all() + groups = {d["group"] for d in descs} + assert groups == {"optimizer", "loss"} diff --git a/src/hotcb/tests/test_dashboard_config.py b/src/hotcb/tests/test_dashboard_config.py new file mode 100644 index 0000000..d8d57f1 --- /dev/null +++ b/src/hotcb/tests/test_dashboard_config.py @@ -0,0 +1,705 @@ +"""Tests for hotcb.server.config — DashboardConfig dataclasses + loader.""" +from __future__ import annotations + +import json +import os +import tempfile + +import pytest + +from hotcb.server.config import ( + AutopilotConfig, + ChartConfig, + DashboardConfig, + ServerConfig, + UIConfig, +) + +# Skip all endpoint tests if fastapi not installed +fastapi = pytest.importorskip("fastapi") +httpx = pytest.importorskip("httpx") + + +@pytest.fixture +def tmp_dir(): + with tempfile.TemporaryDirectory() as d: + yield d + + +class TestConfigDefaults: + """test_config_defaults — all sub-configs have documented defaults.""" + + def test_server_defaults(self): + s = ServerConfig() + assert s.host == "0.0.0.0" + assert s.port == 8421 + assert s.poll_interval == 0.5 + assert s.history_limit_metrics == 500 + assert s.history_limit_applied == 200 + assert s.ws_initial_burst == 200 + assert s.ws_max_retries == 20 + assert s.ws_retry_base == 3.0 + assert s.ws_retry_cap == 30.0 + + def test_chart_defaults(self): + c = ChartConfig() + assert c.max_render_points == 2000 + assert c.line_tension == 0.15 + assert c.forecast_dash == (6, 3) + assert c.mutation_dash == (3, 4) + assert c.annotation_stagger_rows == 10 + assert c.annotation_min_distance == 70 + + def test_autopilot_defaults(self): + a = AutopilotConfig() + assert a.divergence_threshold == 2.0 + assert a.ratio_threshold == 0.5 + assert a.ai_min_interval == 10 + assert a.ai_max_wait == 200 + assert a.ai_default_cadence == 50 + + def test_ui_defaults(self): + u = UIConfig() + assert u.state_save_interval == 5000 + assert u.alert_poll_interval == 15000 + assert u.manifold_refresh_interval == 10000 + assert u.recipe_refresh_interval == 5000 + assert u.forecast_poll_interval == 5000 + assert u.forecast_step_cadence == 10 + assert u.forecast_batch_size == 8 + assert u.staged_change_threshold == 0.005 + assert u.health_ema_alpha == 0.1 + + def test_dashboard_config_all_defaults(self): + cfg = DashboardConfig() + assert isinstance(cfg.server, ServerConfig) + assert isinstance(cfg.chart, ChartConfig) + assert isinstance(cfg.autopilot, AutopilotConfig) + assert isinstance(cfg.ui, UIConfig) + assert cfg.run_dir == "" + assert cfg.controls == [] + + +class TestConfigFromYaml: + """test_config_from_yaml — YAML overrides applied, others preserved.""" + + def test_config_from_yaml(self, tmp_dir): + yaml_path = os.path.join(tmp_dir, "dashboard.yaml") + with open(yaml_path, "w") as f: + f.write("server:\n port: 9000\nchart:\n line_tension: 0.3\n") + + cfg = DashboardConfig.load(tmp_dir, yaml_path=yaml_path) + # Overrides applied + assert cfg.server.port == 9000 + assert cfg.chart.line_tension == 0.3 + # Other defaults preserved + assert cfg.server.host == "0.0.0.0" + assert cfg.server.poll_interval == 0.5 + assert cfg.chart.max_render_points == 2000 + assert cfg.autopilot.divergence_threshold == 2.0 + + def test_config_from_yaml_missing_file(self, tmp_dir): + """Nonexistent YAML -> all defaults, no error.""" + cfg = DashboardConfig.load( + tmp_dir, yaml_path=os.path.join(tmp_dir, "nonexistent.yaml") + ) + assert cfg.server.port == 8421 + assert cfg.chart.line_tension == 0.15 + assert cfg.run_dir == tmp_dir + + +class TestConfigFromEnv: + """test_config_from_env — HOTCB_PORT=9000 etc. override defaults.""" + + def test_config_from_env(self, tmp_dir, monkeypatch): + monkeypatch.setenv("HOTCB_PORT", "9000") + monkeypatch.setenv("HOTCB_POLL_INTERVAL", "1.0") + cfg = DashboardConfig.load(tmp_dir) + assert cfg.server.port == 9000 + assert cfg.server.poll_interval == 1.0 + + def test_config_env_overrides_yaml(self, tmp_dir, monkeypatch): + """Env beats YAML.""" + yaml_path = os.path.join(tmp_dir, "dashboard.yaml") + with open(yaml_path, "w") as f: + f.write("server:\n port: 9000\n") + + monkeypatch.setenv("HOTCB_PORT", "8000") + cfg = DashboardConfig.load(tmp_dir, yaml_path=yaml_path) + assert cfg.server.port == 8000 + + +class TestConfigCliOverrides: + """test_config_cli_overrides_all — CLI overrides beat both.""" + + def test_config_cli_overrides_all(self, tmp_dir, monkeypatch): + yaml_path = os.path.join(tmp_dir, "dashboard.yaml") + with open(yaml_path, "w") as f: + f.write("server:\n port: 9000\n") + + monkeypatch.setenv("HOTCB_PORT", "8000") + cfg = DashboardConfig.load(tmp_dir, yaml_path=yaml_path, port=7000) + assert cfg.server.port == 7000 + + +class TestConfigToDict: + """test_config_to_dict_roundtrip — to_dict() is JSON serializable, has all sections.""" + + def test_config_to_dict_roundtrip(self): + cfg = DashboardConfig() + d = cfg.to_dict() + # Must be JSON-serializable + serialized = json.dumps(d) + roundtripped = json.loads(serialized) + # All sections present + assert "server" in roundtripped + assert "chart" in roundtripped + assert "autopilot" in roundtripped + assert "ui" in roundtripped + assert "run_dir" in roundtripped + assert "controls" in roundtripped + + def test_config_run_dir_in_dict(self): + cfg = DashboardConfig(run_dir="/tmp/x") + d = cfg.to_dict() + assert d["run_dir"] == "/tmp/x" + + def test_chart_tuples_serialize_as_arrays(self): + """forecast_dash and mutation_dash are tuples in Python, arrays in JSON.""" + cfg = DashboardConfig() + d = cfg.to_dict() + # In the dict they should be lists (JSON arrays) + assert isinstance(d["chart"]["forecast_dash"], list) + assert isinstance(d["chart"]["mutation_dash"], list) + assert d["chart"]["forecast_dash"] == [6, 3] + assert d["chart"]["mutation_dash"] == [3, 4] + + +class TestConfigEndpoint: + """test_config_endpoint_returns_full — GET /api/config returns all sections.""" + + @pytest.fixture + def tmp_run_dir(self): + with tempfile.TemporaryDirectory() as d: + # Create metrics file so _resolve_active_run_dir returns this dir + with open(os.path.join(d, "hotcb.metrics.jsonl"), "w") as f: + pass + yield d + + @pytest.fixture + def client(self, tmp_run_dir): + from starlette.testclient import TestClient + from hotcb.server.app import create_app + + app = create_app(tmp_run_dir, poll_interval=60) + return TestClient(app) + + @pytest.fixture + def client_with_yaml(self, tmp_run_dir): + from starlette.testclient import TestClient + from hotcb.server.app import create_app + + yaml_path = os.path.join(tmp_run_dir, "hotcb.dashboard.yaml") + with open(yaml_path, "w") as f: + f.write("server:\n port: 9999\n") + + app = create_app(tmp_run_dir, poll_interval=60, config_yaml=yaml_path) + return TestClient(app) + + def test_config_endpoint_returns_full(self, client): + r = client.get("/api/config") + assert r.status_code == 200 + data = r.json() + assert "server" in data + assert "chart" in data + assert "autopilot" in data + assert "ui" in data + assert "run_dir" in data + assert "controls" in data + + def test_config_endpoint_reflects_overrides(self, client_with_yaml): + r = client_with_yaml.get("/api/config") + assert r.status_code == 200 + data = r.json() + assert data["server"]["port"] == 9999 + + +# ==================================================================== +# Phase 4: Dynamic Controls from Actuators +# ==================================================================== + + +class TestControlsFromMutableState: + """Phase 4 — /api/config controls populated from MutableState.""" + + @pytest.fixture + def tmp_run_dir(self): + with tempfile.TemporaryDirectory() as d: + with open(os.path.join(d, "hotcb.metrics.jsonl"), "w") as f: + pass + yield d + + @pytest.fixture + def _make_mutable_state(self): + """Helper to create a MutableState with common actuators.""" + from hotcb.actuators import ( + ActuatorType, + ApplyResult, + HotcbActuator, + MutableState, + ) + + def _factory(specs=None): + if specs is None: + specs = [ + dict( + param_key="lr", + type=ActuatorType.LOG_FLOAT, + apply_fn=lambda v, e: ApplyResult(success=True), + label="Learning Rate", + group="optimizer", + min_value=1e-7, + max_value=1.0, + current_value=1e-3, + ), + dict( + param_key="weight_decay", + type=ActuatorType.LOG_FLOAT, + apply_fn=lambda v, e: ApplyResult(success=True), + label="Weight Decay", + group="optimizer", + min_value=0.0, + max_value=1.0, + current_value=1e-4, + ), + dict( + param_key="recon_w", + type=ActuatorType.FLOAT, + apply_fn=lambda v, e: ApplyResult(success=True), + label="Reconstruction Weight", + group="loss", + min_value=0.0, + max_value=100.0, + current_value=1.0, + ), + ] + actuators = [HotcbActuator(**s) for s in specs] + return MutableState(actuators) + + return _factory + + @pytest.fixture + def client_with_ms(self, tmp_run_dir, _make_mutable_state): + from starlette.testclient import TestClient + from hotcb.server.app import create_app + + ms = _make_mutable_state() + app = create_app(tmp_run_dir, poll_interval=60) + app.state.mutable_state = ms + return TestClient(app) + + @pytest.fixture + def client_no_ms(self, tmp_run_dir): + from starlette.testclient import TestClient + from hotcb.server.app import create_app + + app = create_app(tmp_run_dir, poll_interval=60) + return TestClient(app) + + def test_config_controls_from_mutable_state(self, client_with_ms): + """Controls populated from MutableState.describe_all().""" + r = client_with_ms.get("/api/config") + assert r.status_code == 200 + data = r.json() + controls = data["controls"] + assert len(controls) == 3 + keys = {c["param_key"] for c in controls} + assert keys == {"lr", "weight_decay", "recon_w"} + # Each entry has required fields + for c in controls: + assert "param_key" in c + assert "type" in c + assert "label" in c + assert "group" in c + assert "current" in c + + def test_config_controls_empty_when_no_mutable_state(self, client_no_ms): + """No MutableState -> controls is [].""" + r = client_no_ms.get("/api/config") + assert r.status_code == 200 + data = r.json() + assert data["controls"] == [] + + def test_config_controls_types_match_actuators( + self, tmp_run_dir, _make_mutable_state + ): + """Control types match actuator types.""" + from starlette.testclient import TestClient + from hotcb.server.app import create_app + from hotcb.actuators import ActuatorType, ApplyResult, HotcbActuator, MutableState + + ms = _make_mutable_state( + [ + dict( + param_key="lr", + type=ActuatorType.LOG_FLOAT, + apply_fn=lambda v, e: ApplyResult(success=True), + group="optimizer", + min_value=1e-7, + max_value=1.0, + current_value=1e-3, + ), + dict( + param_key="recon_w", + type=ActuatorType.FLOAT, + apply_fn=lambda v, e: ApplyResult(success=True), + group="loss", + min_value=0.0, + max_value=10.0, + current_value=1.0, + ), + dict( + param_key="use_augment", + type=ActuatorType.BOOL, + apply_fn=lambda v, e: ApplyResult(success=True), + group="custom", + current_value=True, + ), + ] + ) + + app = create_app(tmp_run_dir, poll_interval=60) + app.state.mutable_state = ms + client = TestClient(app) + + r = client.get("/api/config") + controls = r.json()["controls"] + type_map = {c["param_key"]: c["type"] for c in controls} + assert type_map["lr"] == "log_float" + assert type_map["recon_w"] == "float" + assert type_map["use_augment"] == "bool" + + def test_config_controls_groups_present(self, client_with_ms): + """Controls have correct group field.""" + r = client_with_ms.get("/api/config") + controls = r.json()["controls"] + group_map = {c["param_key"]: c["group"] for c in controls} + assert group_map["lr"] == "optimizer" + assert group_map["weight_decay"] == "optimizer" + assert group_map["recon_w"] == "loss" + + def test_control_state_endpoint_uses_mutable_state(self, client_with_ms): + """GET /api/state/controls returns live values from MutableState.""" + r = client_with_ms.get("/api/state/controls") + assert r.status_code == 200 + data = r.json() + assert "controls" in data + controls = data["controls"] + assert len(controls) == 3 + # Verify current values are present + val_map = {c["param_key"]: c["current"] for c in controls} + assert val_map["lr"] == pytest.approx(1e-3) + assert val_map["recon_w"] == pytest.approx(1.0) + + def test_control_state_endpoint_empty_when_no_ms(self, client_no_ms): + """GET /api/state/controls returns empty controls when no MutableState.""" + r = client_no_ms.get("/api/state/controls") + assert r.status_code == 200 + data = r.json() + assert data["controls"] == [] + + +class TestControlsFromMutableStateFunction: + """Unit tests for controls_from_mutable_state().""" + + def test_none_returns_empty(self): + from hotcb.server.config import controls_from_mutable_state + assert controls_from_mutable_state(None) == [] + + def test_with_mutable_state(self): + from hotcb.server.config import controls_from_mutable_state + from hotcb.actuators import ( + ActuatorType, + ApplyResult, + HotcbActuator, + MutableState, + ) + + ms = MutableState([ + HotcbActuator( + param_key="lr", + type=ActuatorType.LOG_FLOAT, + apply_fn=lambda v, e: ApplyResult(success=True), + group="optimizer", + min_value=1e-7, + max_value=1.0, + current_value=0.001, + ), + ]) + result = controls_from_mutable_state(ms) + assert len(result) == 1 + assert result[0]["param_key"] == "lr" + assert result[0]["type"] == "log_float" + assert result[0]["current"] == pytest.approx(0.001) + + +# ==================================================================== +# Phase 6: Magic Number Extraction +# ==================================================================== + + +class TestTailerUsesConfigPollInterval: + """Phase 6 — tailer created with config.server.poll_interval.""" + + @pytest.fixture + def tmp_run_dir(self): + with tempfile.TemporaryDirectory() as d: + with open(os.path.join(d, "hotcb.metrics.jsonl"), "w") as f: + pass + yield d + + def test_tailer_uses_config_poll_interval(self, tmp_run_dir): + """Tailer created with config's poll_interval, not hardcoded default.""" + from hotcb.server.app import create_app + + app = create_app(tmp_run_dir, poll_interval=2.5) + tailer = app.state.tailer + assert tailer._poll_interval == 2.5 + + def test_tailer_uses_default_poll_interval(self, tmp_run_dir): + """When no poll_interval override, tailer uses default 0.5.""" + from hotcb.server.app import create_app + + app = create_app(tmp_run_dir) + tailer = app.state.tailer + assert tailer._poll_interval == 0.5 + + +class TestHistoryLimitsFromConfig: + """Phase 6 — metrics/applied history endpoints respect config limits.""" + + @pytest.fixture + def tmp_run_dir(self): + with tempfile.TemporaryDirectory() as d: + with open(os.path.join(d, "hotcb.metrics.jsonl"), "w") as f: + pass + yield d + + @pytest.fixture + def populated_run_dir(self): + """Run dir with 50 metrics records and 50 applied records.""" + with tempfile.TemporaryDirectory() as d: + metrics_path = os.path.join(d, "hotcb.metrics.jsonl") + with open(metrics_path, "w") as f: + for i in range(50): + f.write(json.dumps({"step": i, "metrics": {"loss": 1.0 - i * 0.01}}) + "\n") + applied_path = os.path.join(d, "hotcb.applied.jsonl") + with open(applied_path, "w") as f: + for i in range(50): + f.write(json.dumps({"step": i, "module": "opt", "decision": "applied", "params": {"lr": 0.001}}) + "\n") + yield d + + def test_metrics_history_uses_config_limit(self, populated_run_dir): + """GET /api/metrics/history with no last_n uses config limit.""" + from starlette.testclient import TestClient + from hotcb.server.app import create_app + + yaml_path = os.path.join(populated_run_dir, "cfg.yaml") + with open(yaml_path, "w") as f: + f.write("server:\n history_limit_metrics: 10\n") + + app = create_app(populated_run_dir, poll_interval=60, config_yaml=yaml_path) + client = TestClient(app) + r = client.get("/api/metrics/history") + assert r.status_code == 200 + records = r.json()["records"] + assert len(records) == 10 + + def test_metrics_history_explicit_last_n_overrides_config(self, populated_run_dir): + """GET /api/metrics/history?last_n=5 overrides config limit.""" + from starlette.testclient import TestClient + from hotcb.server.app import create_app + + yaml_path = os.path.join(populated_run_dir, "cfg.yaml") + with open(yaml_path, "w") as f: + f.write("server:\n history_limit_metrics: 10\n") + + app = create_app(populated_run_dir, poll_interval=60, config_yaml=yaml_path) + client = TestClient(app) + r = client.get("/api/metrics/history?last_n=5") + assert r.status_code == 200 + records = r.json()["records"] + assert len(records) == 5 + + def test_applied_history_uses_config_limit(self, populated_run_dir): + """GET /api/applied/history with no last_n uses config limit.""" + from starlette.testclient import TestClient + from hotcb.server.app import create_app + + yaml_path = os.path.join(populated_run_dir, "cfg.yaml") + with open(yaml_path, "w") as f: + f.write("server:\n history_limit_applied: 7\n") + + app = create_app(populated_run_dir, poll_interval=60, config_yaml=yaml_path) + client = TestClient(app) + r = client.get("/api/applied/history") + assert r.status_code == 200 + records = r.json()["records"] + assert len(records) == 7 + + +class TestAutopilotThresholdsFromConfig: + """Phase 6 — autopilot engine uses config thresholds as defaults.""" + + def test_divergence_uses_config_threshold(self): + """Divergence rule uses config threshold when rule doesn't specify one.""" + from hotcb.server.autopilot import AutopilotEngine, AutopilotRule + + config = AutopilotConfig(divergence_threshold=5.0) + engine = AutopilotEngine(run_dir="/tmp/test", mode="suggest", config=config) + engine.add_rule(AutopilotRule( + rule_id="div1", + condition="divergence", + metric_name="val_loss", + params={"window": 3}, # no threshold specified — should use config's 5.0 + action={"module": "opt", "op": "set_params", "params": {"lr": 0.0001}}, + confidence="high", + )) + + # Feed metric history that diverges by 4.0 (below config threshold of 5.0) + for i in range(3): + engine.evaluate(i, {"val_loss": 1.0}) + actions = engine.evaluate(3, {"val_loss": 5.0}) + # 5.0 - 1.0 = 4.0, which is < 5.0 threshold, so no divergence + assert len(actions) == 0 + + def test_divergence_rule_threshold_overrides_config(self): + """Rule-specified threshold takes precedence over config.""" + from hotcb.server.autopilot import AutopilotEngine, AutopilotRule + + config = AutopilotConfig(divergence_threshold=100.0) # very high config threshold + engine = AutopilotEngine(run_dir="/tmp/test", mode="suggest", config=config) + engine.add_rule(AutopilotRule( + rule_id="div2", + condition="divergence", + metric_name="val_loss", + params={"window": 3, "threshold": 1.0}, # rule specifies threshold=1.0 + action={"module": "opt", "op": "set_params", "params": {"lr": 0.0001}}, + confidence="high", + )) + + for i in range(3): + engine.evaluate(i, {"val_loss": 1.0}) + actions = engine.evaluate(3, {"val_loss": 5.0}) + # 5.0 - 1.0 = 4.0, which is > rule threshold 1.0, so divergence detected + assert len(actions) == 1 + assert actions[0].condition_met.startswith("Metric diverged") + + def test_overfitting_uses_config_ratio_threshold(self): + """Overfitting rule uses config ratio_threshold when rule doesn't specify one.""" + from hotcb.server.autopilot import AutopilotEngine, AutopilotRule + + config = AutopilotConfig(ratio_threshold=0.01) # very low threshold + engine = AutopilotEngine(run_dir="/tmp/test", mode="suggest", config=config) + engine.add_rule(AutopilotRule( + rule_id="over1", + condition="overfitting", + metric_name="", + params={"train_metric": "train_loss", "val_metric": "val_loss"}, + action={"module": "opt", "op": "set_params", "params": {"lr": 0.0001}}, + confidence="high", + )) + + # train/val ratio = 0.1/1.0 = 0.1, which is > 0.01 threshold (no overfitting) + actions = engine.evaluate(0, {"train_loss": 0.1, "val_loss": 1.0}) + assert len(actions) == 0 + + def test_autopilot_no_config_uses_hardcoded_defaults(self): + """Without config, autopilot uses hardcoded defaults (2.0, 0.5).""" + from hotcb.server.autopilot import AutopilotEngine, AutopilotRule + + engine = AutopilotEngine(run_dir="/tmp/test", mode="suggest") # no config + engine.add_rule(AutopilotRule( + rule_id="div_default", + condition="divergence", + metric_name="val_loss", + params={"window": 3}, + action={"module": "opt", "op": "set_params", "params": {"lr": 0.0001}}, + confidence="high", + )) + + # Feed metric history that diverges by 3.0 (above default 2.0) + for i in range(3): + engine.evaluate(i, {"val_loss": 1.0}) + actions = engine.evaluate(3, {"val_loss": 4.0}) + # 4.0 - 1.0 = 3.0, > default threshold 2.0 + assert len(actions) == 1 + + +class TestAICadenceFromConfig: + """Phase 6 — AI engine uses config cadence params.""" + + def test_ai_engine_uses_config_min_interval(self): + """AI engine min_interval from AutopilotConfig.""" + from hotcb.server.ai_engine import LLMAutopilotEngine, AIConfig + + ap_config = AutopilotConfig(ai_min_interval=25) + engine = LLMAutopilotEngine( + run_dir="/tmp/test", + config=AIConfig(api_key="test-key"), + autopilot_config=ap_config, + ) + assert engine._min_interval == 25 + + def test_ai_engine_uses_config_max_wait(self): + """AI engine max_wait from AutopilotConfig.""" + from hotcb.server.ai_engine import LLMAutopilotEngine, AIConfig + + ap_config = AutopilotConfig(ai_max_wait=500) + engine = LLMAutopilotEngine( + run_dir="/tmp/test", + config=AIConfig(api_key="test-key"), + autopilot_config=ap_config, + ) + assert engine._max_wait == 500 + + def test_ai_engine_uses_config_default_cadence(self): + """AI engine cadence from AutopilotConfig when AIConfig has default.""" + from hotcb.server.ai_engine import LLMAutopilotEngine, AIConfig + + ap_config = AutopilotConfig(ai_default_cadence=100) + engine = LLMAutopilotEngine( + run_dir="/tmp/test", + config=AIConfig(api_key="test-key"), + autopilot_config=ap_config, + ) + assert engine.config.cadence == 100 + + def test_ai_engine_min_interval_governs_should_invoke(self): + """should_invoke respects config min_interval.""" + from hotcb.server.ai_engine import LLMAutopilotEngine, AIConfig + + ap_config = AutopilotConfig(ai_min_interval=30) + engine = LLMAutopilotEngine( + run_dir="/tmp/test", + config=AIConfig(api_key="test-key"), + autopilot_config=ap_config, + ) + engine._last_invoked_step = 0 + + # Step 15 is within min_interval=30, should not invoke + assert engine.should_invoke(15, []) is False + # Step 31 is past min_interval=30, periodic cadence check applies + assert engine.should_invoke(31, [{"alert": "test"}]) is True + + def test_ai_engine_defaults_without_autopilot_config(self): + """AI engine uses hardcoded defaults when no autopilot_config.""" + from hotcb.server.ai_engine import LLMAutopilotEngine, AIConfig + + engine = LLMAutopilotEngine( + run_dir="/tmp/test", + config=AIConfig(), + ) + assert engine._min_interval == 10 + assert engine._max_wait == 200 + assert engine.config.cadence == 50 diff --git a/src/hotcb/tests/test_freeze_modes.py b/src/hotcb/tests/test_freeze_modes.py index 290804e..de832fa 100644 --- a/src/hotcb/tests/test_freeze_modes.py +++ b/src/hotcb/tests/test_freeze_modes.py @@ -7,6 +7,7 @@ import pytest +from hotcb.actuators import optimizer_actuators, mutable_state from hotcb.kernel import HotKernel @@ -120,9 +121,9 @@ def test_replay_applies_recipe_ignores_external( ) write_freeze(mode="replay", recipe_path=recipe_path) - kernel = HotKernel(run_dir=run_dir, debounce_steps=1) - opt = _make_optimizer(lr=1e-4) + ms = mutable_state(optimizer_actuators(opt)) + kernel = HotKernel(run_dir=run_dir, debounce_steps=1, mutable_state=ms) # Append an external conflicting opt command write_commands({"module": "opt", "op": "set_params", "id": "main", "params": {"lr": 9e-4}}) @@ -180,8 +181,9 @@ def test_adjusted_lr(self, run_dir, make_env, write_recipe, write_freeze, read_l write_freeze(mode="replay_adjusted", recipe_path=recipe_path, adjust_path=adjust_path) - kernel = HotKernel(run_dir=run_dir, debounce_steps=1) opt = _make_optimizer(lr=1e-4) + ms = mutable_state(optimizer_actuators(opt)) + kernel = HotKernel(run_dir=run_dir, debounce_steps=1, mutable_state=ms) for step in range(1, 6): env = make_env(step=step, optimizer=opt) @@ -211,8 +213,9 @@ def test_unfreeze_restores_normal_operation( """ write_freeze(mode="prod") - kernel = HotKernel(run_dir=run_dir, debounce_steps=1) opt = _make_optimizer(lr=1e-4) + ms = mutable_state(optimizer_actuators(opt)) + kernel = HotKernel(run_dir=run_dir, debounce_steps=1, mutable_state=ms) # Step 1: external opt command -- should be ignored write_commands({"module": "opt", "op": "set_params", "id": "main", "params": {"lr": 5e-4}}) diff --git a/src/hotcb/tests/test_hotloss.py b/src/hotcb/tests/test_hotloss.py index 79aa61b..a395114 100644 --- a/src/hotcb/tests/test_hotloss.py +++ b/src/hotcb/tests/test_hotloss.py @@ -1,154 +1,351 @@ -"""Unit tests for HotLossController (spec §19.7).""" +"""Tests for loss weight mutations via kernel default stream + MutableState.""" from __future__ import annotations +import os + import pytest -from hotcb.modules.loss import HotLossController +from hotcb.actuators import loss_actuators, mutable_state, ApplyResult +from hotcb.actuators.actuator import ActuatorState, ActuatorType, HotcbActuator +from hotcb.actuators.state import MutableState +from hotcb.kernel import HotKernel from hotcb.ops import HotOp -def _make_mutable_state(): - return {"weights": {}, "terms": {}, "ramps": {}} +def _kernel_with_loss(run_dir, loss_weights, extra_actuators=None, **bounds): + """Build a kernel with MutableState containing loss actuators.""" + acts = loss_actuators(loss_weights, **bounds) + if extra_actuators: + acts += extra_actuators + ms = mutable_state(acts) + return HotKernel(run_dir=run_dir, debounce_steps=1, mutable_state=ms), loss_weights def _op(op="set_params", params=None, id="main"): return HotOp(module="loss", op=op, id=id, params=params) +# ------------------------------------------------------------------ # +# 1. Weight mutation via direct key +# ------------------------------------------------------------------ # class TestWeightsMutation: - def test_distill_w_suffix(self): - ctrl = HotLossController() - ls = _make_mutable_state() - result = ctrl.apply_op(_op(params={"distill_w": 0.2, "depth_w": 1.5}), {"mutable_state": ls}) - assert result.decision == "applied" - assert ls["weights"]["distill"] == 0.2 - assert ls["weights"]["depth"] == 1.5 - - def test_fallback_to_weights_bucket(self): - ctrl = HotLossController() - ls = _make_mutable_state() - result = ctrl.apply_op(_op(params={"custom_metric": 0.5}), {"mutable_state": ls}) - assert result.decision == "applied" - assert ls["weights"]["custom_metric"] == 0.5 - - -class TestTermsToggle: - def test_terms_dot_prefix(self): - ctrl = HotLossController() - ls = _make_mutable_state() - result = ctrl.apply_op(_op(params={"terms.aux_depth": False, "terms.aux_heatmap": True}), {"mutable_state": ls}) - assert result.decision == "applied" - assert ls["terms"]["aux_depth"] is False - assert ls["terms"]["aux_heatmap"] is True - - def test_terms_as_dict(self): - ctrl = HotLossController() - ls = _make_mutable_state() - result = ctrl.apply_op(_op(params={"terms": {"aux_depth": False, "aux_heatmap": True}}), {"mutable_state": ls}) - assert result.decision == "applied" - assert ls["terms"]["aux_depth"] is False - assert ls["terms"]["aux_heatmap"] is True - - -class TestRamps: - def test_ramps_dot_prefix(self): - ctrl = HotLossController() - ls = _make_mutable_state() - ramp_cfg = {"type": "linear", "warmup_frac": 0.2, "end": 2.0} - result = ctrl.apply_op(_op(params={"ramps.depth": ramp_cfg}), {"mutable_state": ls}) - assert result.decision == "applied" - assert ls["ramps"]["depth"] == ramp_cfg - - def test_ramps_as_dict(self): - ctrl = HotLossController() - ls = _make_mutable_state() - ramp_cfg = {"type": "linear", "end": 2.0} - result = ctrl.apply_op(_op(params={"ramps": {"depth": ramp_cfg}}), {"mutable_state": ls}) - assert result.decision == "applied" - assert ls["ramps"]["depth"] == ramp_cfg + def test_set_weight_by_key(self, run_dir, make_env, read_ledger): + weights = {"distill": 1.0, "depth": 1.0} + kernel, weights = _kernel_with_loss(run_dir, weights) + env = make_env(step=1) + + kernel._apply_single( + _op(params={"key": "distill", "value": 0.2}), env, "train_step", 1, + ) + + assert weights["distill"] == pytest.approx(0.2) + ledger = read_ledger() + assert ledger[0]["decision"] == "applied" + + def test_set_weight_direct_format(self, run_dir, make_env, read_ledger): + weights = {"distill": 1.0, "depth": 1.0} + kernel, weights = _kernel_with_loss(run_dir, weights) + env = make_env(step=1) + + kernel._apply_single( + _op(params={"distill": 0.2, "depth": 1.5}), env, "train_step", 1, + ) + + assert weights["distill"] == pytest.approx(0.2) + assert weights["depth"] == pytest.approx(1.5) + ledger = read_ledger() + assert ledger[0]["decision"] == "applied" + + +# ------------------------------------------------------------------ # +# 2. Bounds enforcement +# ------------------------------------------------------------------ # +class TestBounds: + def test_out_of_bounds_rejected(self, run_dir, make_env, read_ledger): + weights = {"distill": 1.0} + kernel, weights = _kernel_with_loss(run_dir, weights, global_bounds=(0.0, 10.0)) + env = make_env(step=1) + + kernel._apply_single( + _op(params={"key": "distill", "value": 50.0}), env, "train_step", 1, + ) + + assert weights["distill"] == pytest.approx(1.0) # unchanged + ledger = read_ledger() + assert ledger[0]["decision"] == "failed" + assert "above max" in ledger[0]["error"] + + +# ------------------------------------------------------------------ # +# 3. Missing MutableState +# ------------------------------------------------------------------ # +class TestMissingMutableState: + def test_no_mutable_state_fails(self, run_dir, make_env, read_ledger): + kernel = HotKernel(run_dir=run_dir, debounce_steps=1) # no mutable_state + env = make_env(step=1) + kernel._apply_single( + _op(params={"key": "distill", "value": 0.2}), env, "train_step", 1, + ) -class TestMissingMutableState: - def test_no_mutable_state_in_env(self): - ctrl = HotLossController() - result = ctrl.apply_op(_op(params={"distill_w": 0.2}), {}) - assert result.decision == "failed" - assert result.error == "missing_mutable_state" + ledger = read_ledger() + assert ledger[0]["decision"] == "failed" + assert "no_mutable_state" in ledger[0]["error"] - def test_resolve_mutable_state_callable(self): - ctrl = HotLossController() - ls = _make_mutable_state() - env = {"resolve_mutable_state": lambda: ls} - result = ctrl.apply_op(_op(params={"distill_w": 0.3}), env) - assert result.decision == "applied" - assert ls["weights"]["distill"] == 0.3 +# ------------------------------------------------------------------ # +# 4. Unknown param key +# ------------------------------------------------------------------ # +class TestUnknownKey: + def test_unknown_key_fails(self, run_dir, make_env, read_ledger): + weights = {"distill": 1.0} + kernel, _ = _kernel_with_loss(run_dir, weights) + env = make_env(step=1) -class TestEnableDisable: - def test_disabled_handle_skips(self): - ctrl = HotLossController() - ls = _make_mutable_state() - env = {"mutable_state": ls} - ctrl.apply_op(HotOp(module="loss", op="disable", id="main"), env) - result = ctrl.apply_op(_op(params={"distill_w": 0.2}), env) - assert result.decision == "skipped_noop" - assert result.notes == "handle_disabled" - assert ls["weights"] == {} - - def test_re_enable_then_apply(self): - ctrl = HotLossController() - ls = _make_mutable_state() - env = {"mutable_state": ls} - ctrl.apply_op(HotOp(module="loss", op="disable", id="main"), env) - ctrl.apply_op(HotOp(module="loss", op="enable", id="main"), env) - result = ctrl.apply_op(_op(params={"distill_w": 0.2}), env) - assert result.decision == "applied" - assert ls["weights"]["distill"] == 0.2 - - -class TestAutoDisableOnError: - def test_error_disables_handle(self): - ctrl = HotLossController(auto_disable_on_error=True) - - class BrokenDict(dict): - def setdefault(self, key, default=None): - raise RuntimeError("broken") - - env = {"mutable_state": BrokenDict()} - result = ctrl.apply_op(_op(params={"distill_w": 0.2}), env) - assert result.decision == "failed" - assert "broken" in result.error - # handle should be disabled - assert ctrl.handles["main"].enabled is False - - def test_no_auto_disable_when_off(self): - ctrl = HotLossController(auto_disable_on_error=False) - - class BrokenDict(dict): - def setdefault(self, key, default=None): - raise RuntimeError("broken") - - env = {"mutable_state": BrokenDict()} - result = ctrl.apply_op(_op(params={"distill_w": 0.2}), env) - assert result.decision == "failed" - assert ctrl.handles["main"].enabled is True - - -class TestStatus: - def test_status_structure(self): - ctrl = HotLossController() - ls = _make_mutable_state() - ctrl.apply_op(_op(params={"distill_w": 0.2}), {"mutable_state": ls}) - status = ctrl.status() - assert "main" in status - assert status["main"]["enabled"] is True - assert "distill_w" in status["main"]["last_params"] - assert status["main"]["last_error"] is None + kernel._apply_single( + _op(params={"key": "nonexistent", "value": 0.5}), env, "train_step", 1, + ) + + ledger = read_ledger() + assert ledger[0]["decision"] == "failed" + assert "unknown_param" in ledger[0]["error"] +# ------------------------------------------------------------------ # +# 5. Enable / disable +# ------------------------------------------------------------------ # +class TestEnableDisable: + def test_disabled_rejects_set(self, run_dir, make_env, read_ledger): + weights = {"distill": 1.0} + kernel, weights = _kernel_with_loss(run_dir, weights) + env = make_env(step=1) + + kernel._apply_single( + HotOp(module="loss", op="disable", params={"key": "distill"}), + env, "train_step", 1, + ) + kernel._apply_single( + _op(params={"key": "distill", "value": 0.2}), env, "train_step", 2, + ) + + assert weights["distill"] == pytest.approx(1.0) # unchanged + ledger = read_ledger() + set_entries = [e for e in ledger if e["op"] == "set_params"] + assert set_entries[0]["decision"] == "failed" + assert "disabled" in set_entries[0]["error"] + + def test_re_enable_then_apply(self, run_dir, make_env, read_ledger): + weights = {"distill": 1.0} + kernel, weights = _kernel_with_loss(run_dir, weights) + env = make_env(step=1) + + kernel._apply_single( + HotOp(module="loss", op="disable", params={"key": "distill"}), + env, "train_step", 1, + ) + kernel._apply_single( + HotOp(module="loss", op="enable", params={"key": "distill"}), + env, "train_step", 2, + ) + kernel._apply_single( + _op(params={"key": "distill", "value": 0.3}), env, "train_step", 3, + ) + + assert weights["distill"] == pytest.approx(0.3) + + +# ------------------------------------------------------------------ # +# 6. Ledger format +# ------------------------------------------------------------------ # +class TestLedgerFormat: + def test_module_preserved_in_ledger(self, run_dir, make_env, read_ledger): + weights = {"distill": 1.0} + kernel, _ = _kernel_with_loss(run_dir, weights) + env = make_env(step=1) + + kernel._apply_single( + _op(params={"key": "distill", "value": 0.5}), env, "train_step", 1, + ) + + ledger = read_ledger() + assert ledger[0]["module"] == "loss" + assert ledger[0]["decision"] == "applied" + + +# ------------------------------------------------------------------ # +# 7. Multiple weights in single op +# ------------------------------------------------------------------ # +class TestMultipleWeights: + def test_set_multiple_weights(self, run_dir, make_env, read_ledger): + weights = {"distill": 1.0, "depth": 1.0, "kl": 0.5} + kernel, weights = _kernel_with_loss(run_dir, weights) + env = make_env(step=1) + + kernel._apply_single( + _op(params={"distill": 0.2, "depth": 1.5, "kl": 0.8}), + env, "train_step", 1, + ) + + assert weights["distill"] == pytest.approx(0.2) + assert weights["depth"] == pytest.approx(1.5) + assert weights["kl"] == pytest.approx(0.8) + ledger = read_ledger() + assert ledger[0]["decision"] == "applied" + + +# ------------------------------------------------------------------ # +# 8. Apply error +# ------------------------------------------------------------------ # +class TestApplyError: + def test_apply_fn_failure_recorded(self, run_dir, make_env, read_ledger): + def _bad_apply(value, env): + raise RuntimeError("broken") + + bad_act = HotcbActuator( + param_key="bad_weight", + type=ActuatorType.FLOAT, + apply_fn=_bad_apply, + group="loss", + min_value=0.0, + max_value=100.0, + current_value=1.0, + ) + ms = mutable_state([bad_act]) + kernel = HotKernel(run_dir=run_dir, debounce_steps=1, mutable_state=ms) + env = make_env(step=1) + + kernel._apply_single( + HotOp(module="loss", op="set_params", params={"key": "bad_weight", "value": 2.0}), + env, "train_step", 1, + ) + + ledger = read_ledger() + assert ledger[0]["decision"] == "failed" + assert "broken" in ledger[0]["error"] + + +# ------------------------------------------------------------------ # +# 9. Unknown op +# ------------------------------------------------------------------ # class TestUnknownOp: - def test_unknown_op_ignored(self): - ctrl = HotLossController() - result = ctrl.apply_op(HotOp(module="loss", op="reset", id="main"), {"mutable_state": {}}) - assert result.decision == "ignored" - assert "unknown_op" in (result.notes or "") + def test_unknown_op_ignored(self, run_dir, make_env, read_ledger): + weights = {"distill": 1.0} + kernel, _ = _kernel_with_loss(run_dir, weights) + env = make_env(step=1) + + kernel._apply_single( + HotOp(module="loss", op="reset", id="main"), env, "train_step", 1, + ) + + ledger = read_ledger() + assert ledger[0]["decision"] == "ignored" + assert "unknown_op" in (ledger[0].get("notes") or "") + + +# ------------------------------------------------------------------ # +# 10. Custom module routes through default stream +# ------------------------------------------------------------------ # +class TestCustomModule: + def test_custom_module_routes_to_mutable_state(self, run_dir, make_env, read_ledger): + """Any unknown module name routes through MutableState if it has the key.""" + custom_act = HotcbActuator( + param_key="dropout", + type=ActuatorType.FLOAT, + apply_fn=lambda v, e: ApplyResult(success=True), + group="custom", + min_value=0.0, + max_value=1.0, + current_value=0.5, + ) + ms = mutable_state([custom_act]) + kernel = HotKernel(run_dir=run_dir, debounce_steps=1, mutable_state=ms) + env = make_env(step=1) + + kernel._apply_single( + HotOp(module="custom", op="set_params", params={"key": "dropout", "value": 0.3}), + env, "train_step", 1, + ) + + ledger = read_ledger() + assert ledger[0]["decision"] == "applied" + assert ledger[0]["module"] == "custom" + + +# ------------------------------------------------------------------ # +# 11. No params produces error +# ------------------------------------------------------------------ # +class TestNoParams: + def test_empty_params_fails(self, run_dir, make_env, read_ledger): + weights = {"distill": 1.0} + kernel, _ = _kernel_with_loss(run_dir, weights) + env = make_env(step=1) + + kernel._apply_single( + _op(params={}), env, "train_step", 1, + ) + + ledger = read_ledger() + assert ledger[0]["decision"] == "failed" + assert "no_params" in ledger[0]["error"] + + +# ------------------------------------------------------------------ # +# 12. Partial success with errors +# ------------------------------------------------------------------ # +class TestPartialSuccess: + def test_mixed_known_and_unknown_keys(self, run_dir, make_env, read_ledger): + weights = {"distill": 1.0} + kernel, weights = _kernel_with_loss(run_dir, weights) + env = make_env(step=1) + + kernel._apply_single( + _op(params={"distill": 0.5, "nonexistent": 2.0}), + env, "train_step", 1, + ) + + # Should succeed for known key, note error for unknown + assert weights["distill"] == pytest.approx(0.5) + ledger = read_ledger() + assert ledger[0]["decision"] == "applied" + assert "unknown_param" in (ledger[0].get("notes") or "") + + +# ------------------------------------------------------------------ # +# 13. Freeze enforcement for default stream +# ------------------------------------------------------------------ # +class TestFreezeEnforcement: + def test_freeze_blocks_default_stream(self, run_dir, make_env, write_freeze, read_ledger): + weights = {"distill": 1.0} + write_freeze(mode="prod") + kernel, weights = _kernel_with_loss(run_dir, weights) + env = make_env(step=1) + + kernel._apply_single( + _op(params={"key": "distill", "value": 0.2}), + env, "train_step", 1, + ) + + assert weights["distill"] == pytest.approx(1.0) # unchanged + ledger = read_ledger() + assert ledger[0]["decision"] == "ignored_freeze" + + +# ------------------------------------------------------------------ # +# 14. Mutation tracking +# ------------------------------------------------------------------ # +class TestMutationTracking: + def test_mutation_recorded_in_actuator(self, run_dir, make_env): + weights = {"distill": 1.0} + kernel, weights = _kernel_with_loss(run_dir, weights) + env = make_env(step=1) + + kernel._apply_single( + _op(params={"key": "distill", "value": 0.5}), env, "train_step", 10, + ) + + act = kernel._mutable_state.get("distill") + assert act is not None + assert len(act.mutations) == 1 + assert act.mutations[0].step == 10 + assert act.mutations[0].new_value == pytest.approx(0.5) + assert act.state == ActuatorState.UNVERIFIED diff --git a/src/hotcb/tests/test_hotopt.py b/src/hotcb/tests/test_hotopt.py index e229b34..a16eb2d 100644 --- a/src/hotcb/tests/test_hotopt.py +++ b/src/hotcb/tests/test_hotopt.py @@ -1,10 +1,15 @@ -"""Tests for HotOptController — spec section 19.6.""" +"""Tests for optimizer param mutations via kernel default stream + MutableState.""" from __future__ import annotations +import os + import pytest -from hotcb.modules.opt import HotOptController, OptHandle +from hotcb.actuators import optimizer_actuators, mutable_state, ApplyResult +from hotcb.actuators.actuator import ActuatorState, ActuatorType, HotcbActuator +from hotcb.actuators.state import MutableState +from hotcb.kernel import HotKernel from hotcb.ops import HotOp @@ -17,6 +22,15 @@ def _make_param_groups(n=2, lr=1e-3, weight_decay=0.01): return [{"lr": lr, "weight_decay": weight_decay, "params": []} for _ in range(n)] +def _kernel_with_opt(run_dir, opt, extra_actuators=None): + """Build a kernel with MutableState containing optimizer actuators.""" + acts = optimizer_actuators(opt) + if extra_actuators: + acts += extra_actuators + ms = mutable_state(acts) + return HotKernel(run_dir=run_dir, debounce_steps=1, mutable_state=ms) + + def _op(params=None, op="set_params", id="main"): return HotOp(module="opt", op=op, id=id, params=params) @@ -25,214 +39,265 @@ def _op(params=None, op="set_params", id="main"): # 1. Global lr update # ------------------------------------------------------------------ # class TestGlobalLrUpdate: - def test_both_groups_updated(self): - ctrl = HotOptController(auto_disable_on_error=True) + def test_both_groups_updated(self, run_dir, make_env): groups = _make_param_groups(2) - env = {"optimizer": MockOptimizer(groups)} + opt = MockOptimizer(groups) + kernel = _kernel_with_opt(run_dir, opt) + env = make_env(step=1, optimizer=opt) - result = ctrl.apply_op(_op(params={"lr": 1e-4}), env) + kernel._apply_single(_op(params={"lr": 1e-4}), env, "train_step", 1) - assert result.decision == "applied" assert groups[0]["lr"] == pytest.approx(1e-4) assert groups[1]["lr"] == pytest.approx(1e-4) # ------------------------------------------------------------------ # -# 2. Group-specific lr -# ------------------------------------------------------------------ # -class TestGroupSpecificLr: - def test_only_target_group_changed(self): - ctrl = HotOptController(auto_disable_on_error=True) - groups = _make_param_groups(2, lr=1e-3) - env = {"optimizer": MockOptimizer(groups)} - - result = ctrl.apply_op(_op(params={"group": 1, "lr": 5e-5}), env) - - assert result.decision == "applied" - assert groups[0]["lr"] == pytest.approx(1e-3) # unchanged - assert groups[1]["lr"] == pytest.approx(5e-5) - - -# ------------------------------------------------------------------ # -# 3. Weight decay update +# 2. Weight decay update # ------------------------------------------------------------------ # class TestWeightDecayUpdate: - def test_all_groups_updated(self): - ctrl = HotOptController(auto_disable_on_error=True) + def test_all_groups_updated(self, run_dir, make_env): groups = _make_param_groups(2, weight_decay=0.01) - env = {"optimizer": MockOptimizer(groups)} + opt = MockOptimizer(groups) + kernel = _kernel_with_opt(run_dir, opt) + env = make_env(step=1, optimizer=opt) - result = ctrl.apply_op(_op(params={"weight_decay": 0.05}), env) + kernel._apply_single(_op(params={"weight_decay": 0.05}), env, "train_step", 1) - assert result.decision == "applied" assert groups[0]["weight_decay"] == pytest.approx(0.05) assert groups[1]["weight_decay"] == pytest.approx(0.05) # ------------------------------------------------------------------ # -# 4. scheduler_scale +# 3. Scheduler coordination # ------------------------------------------------------------------ # -class TestSchedulerScale: - def test_lr_halved(self): - ctrl = HotOptController(auto_disable_on_error=True) - groups = _make_param_groups(2, lr=1e-3) - env = {"optimizer": MockOptimizer(groups)} +class TestSchedulerCoordination: + def test_scheduler_base_lrs_updated(self, run_dir, make_env): + groups = _make_param_groups(1, lr=1e-3) + opt = MockOptimizer(groups) + + class FakeScheduler: + def __init__(self): + self.base_lrs = [1e-3] - result = ctrl.apply_op(_op(params={"scheduler_scale": 0.5}), env) + sched = FakeScheduler() + kernel = _kernel_with_opt(run_dir, opt) + env = make_env(step=1, optimizer=opt, scheduler=sched) - assert result.decision == "applied" - assert groups[0]["lr"] == pytest.approx(1e-3 * 0.5) - assert groups[1]["lr"] == pytest.approx(1e-3 * 0.5) + kernel._apply_single(_op(params={"lr": 5e-4}), env, "train_step", 1) + + assert groups[0]["lr"] == pytest.approx(5e-4) + assert sched.base_lrs[0] == pytest.approx(5e-4) # ------------------------------------------------------------------ # -# 5. scheduler_drop +# 4. Missing optimizer (no MutableState) # ------------------------------------------------------------------ # -class TestSchedulerDrop: - def test_lr_multiplied(self): - ctrl = HotOptController(auto_disable_on_error=True) - groups = _make_param_groups(2, lr=1e-3) - env = {"optimizer": MockOptimizer(groups)} +class TestMissingMutableState: + def test_failed_with_no_mutable_state(self, run_dir, make_env, read_ledger): + kernel = HotKernel(run_dir=run_dir, debounce_steps=1) # no mutable_state + env = make_env(step=1) - result = ctrl.apply_op(_op(params={"scheduler_drop": 0.1}), env) + kernel._apply_single(_op(params={"lr": 1e-4}), env, "train_step", 1) - assert result.decision == "applied" - assert groups[0]["lr"] == pytest.approx(1e-3 * 0.1) - assert groups[1]["lr"] == pytest.approx(1e-3 * 0.1) + ledger = read_ledger() + assert len(ledger) == 1 + assert ledger[0]["decision"] == "failed" + assert "no_mutable_state" in ledger[0]["error"] # ------------------------------------------------------------------ # -# 6. clip_norm +# 5. Unknown param key # ------------------------------------------------------------------ # -class TestClipNorm: - def test_stored_in_group(self): - ctrl = HotOptController(auto_disable_on_error=True) - groups = _make_param_groups(2) - env = {"optimizer": MockOptimizer(groups)} +class TestUnknownParamKey: + def test_unknown_param_fails(self, run_dir, make_env, read_ledger): + groups = _make_param_groups(1, lr=1e-3) + opt = MockOptimizer(groups) + kernel = _kernel_with_opt(run_dir, opt) + env = make_env(step=1, optimizer=opt) - result = ctrl.apply_op(_op(params={"clip_norm": 2.0}), env) + kernel._apply_single( + _op(params={"key": "nonexistent", "value": 1.0}), + env, "train_step", 1, + ) - assert result.decision == "applied" - assert groups[0]["hotcb_clip_norm"] == pytest.approx(2.0) - assert groups[1]["hotcb_clip_norm"] == pytest.approx(2.0) + ledger = read_ledger() + assert len(ledger) == 1 + assert ledger[0]["decision"] == "failed" + assert "unknown_param" in ledger[0]["error"] # ------------------------------------------------------------------ # -# 7. Per-group mapping +# 6. Enable / disable via default stream # ------------------------------------------------------------------ # -class TestPerGroupMapping: - def test_each_group_gets_specific_lr(self): - ctrl = HotOptController(auto_disable_on_error=True) - groups = _make_param_groups(2, lr=1e-3) - env = {"optimizer": MockOptimizer(groups)} +class TestEnableDisable: + def test_disabled_actuator_rejects_set_params(self, run_dir, make_env, read_ledger): + groups = _make_param_groups(1, lr=1e-3) + opt = MockOptimizer(groups) + kernel = _kernel_with_opt(run_dir, opt) + env = make_env(step=1, optimizer=opt) + + # Disable the lr actuator + kernel._apply_single( + HotOp(module="opt", op="disable", params={"key": "lr"}), + env, "train_step", 1, + ) + + # set_params should fail + kernel._apply_single(_op(params={"lr": 1e-4}), env, "train_step", 2) + assert groups[0]["lr"] == pytest.approx(1e-3) # unchanged + + ledger = read_ledger() + set_entries = [e for e in ledger if e["op"] == "set_params"] + assert len(set_entries) == 1 + assert set_entries[0]["decision"] == "failed" + assert "disabled" in set_entries[0]["error"] + + def test_re_enable_then_apply(self, run_dir, make_env, read_ledger): + groups = _make_param_groups(1, lr=1e-3) + opt = MockOptimizer(groups) + kernel = _kernel_with_opt(run_dir, opt) + env = make_env(step=1, optimizer=opt) - result = ctrl.apply_op( - _op(params={"groups": {"0": {"lr": 1e-3}, "1": {"lr": 2e-3}}}), env + # Disable then re-enable + kernel._apply_single( + HotOp(module="opt", op="disable", params={"key": "lr"}), + env, "train_step", 1, + ) + kernel._apply_single( + HotOp(module="opt", op="enable", params={"key": "lr"}), + env, "train_step", 2, ) - assert result.decision == "applied" - assert groups[0]["lr"] == pytest.approx(1e-3) - assert groups[1]["lr"] == pytest.approx(2e-3) + # Now it should apply + kernel._apply_single(_op(params={"lr": 1e-4}), env, "train_step", 3) + assert groups[0]["lr"] == pytest.approx(1e-4) # ------------------------------------------------------------------ # -# 8. Missing optimizer +# 7. Ledger records preserve module field # ------------------------------------------------------------------ # -class TestMissingOptimizer: - def test_failed_with_error(self): - ctrl = HotOptController(auto_disable_on_error=True) - env = {} # no optimizer, no resolve_optimizer +class TestLedgerFormat: + def test_ledger_preserves_module_field(self, run_dir, make_env, read_ledger): + groups = _make_param_groups(1, lr=1e-3) + opt = MockOptimizer(groups) + kernel = _kernel_with_opt(run_dir, opt) + env = make_env(step=1, optimizer=opt) - result = ctrl.apply_op(_op(params={"lr": 1e-4}), env) + kernel._apply_single(_op(params={"lr": 5e-4}), env, "train_step", 1) - assert result.decision == "failed" - assert "missing_optimizer" in result.error + ledger = read_ledger() + assert len(ledger) == 1 + assert ledger[0]["module"] == "opt" + assert ledger[0]["decision"] == "applied" # ------------------------------------------------------------------ # -# 9. resolve_optimizer callable +# 8. New format: explicit key+value # ------------------------------------------------------------------ # -class TestResolveOptimizer: - def test_resolver_returns_optimizer(self): - ctrl = HotOptController(auto_disable_on_error=True) - groups = _make_param_groups(2, lr=1e-3) +class TestNewKeyValueFormat: + def test_explicit_key_value(self, run_dir, make_env, read_ledger): + groups = _make_param_groups(1, lr=1e-3) opt = MockOptimizer(groups) - env = {"resolve_optimizer": lambda: opt} + kernel = _kernel_with_opt(run_dir, opt) + env = make_env(step=1, optimizer=opt) - result = ctrl.apply_op(_op(params={"lr": 1e-4}), env) + kernel._apply_single( + HotOp(module="opt", op="set_params", params={"key": "lr", "value": 5e-4}), + env, "train_step", 1, + ) - assert result.decision == "applied" - assert groups[0]["lr"] == pytest.approx(1e-4) - assert groups[1]["lr"] == pytest.approx(1e-4) + assert groups[0]["lr"] == pytest.approx(5e-4) + ledger = read_ledger() + assert ledger[0]["decision"] == "applied" # ------------------------------------------------------------------ # -# 10. Enable / disable +# 9. Validation error # ------------------------------------------------------------------ # -class TestEnableDisable: - def test_disabled_handle_skips(self): - ctrl = HotOptController(auto_disable_on_error=True) - groups = _make_param_groups(2, lr=1e-3) - env = {"optimizer": MockOptimizer(groups)} - - # Disable the handle - ctrl.apply_op(_op(op="disable", id="main"), env) - - # set_params should be skipped - result = ctrl.apply_op(_op(params={"lr": 1e-4}), env) - assert result.decision == "skipped_noop" - assert result.notes == "handle_disabled" - assert groups[0]["lr"] == pytest.approx(1e-3) # unchanged +class TestValidationError: + def test_out_of_bounds_rejected(self, run_dir, make_env, read_ledger): + groups = _make_param_groups(1, lr=1e-3) + opt = MockOptimizer(groups) + kernel = _kernel_with_opt(run_dir, opt) + env = make_env(step=1, optimizer=opt) - # Re-enable - ctrl.apply_op(_op(op="enable", id="main"), env) + # lr actuator has max_value=1.0 by default + kernel._apply_single( + _op(params={"key": "lr", "value": 5.0}), + env, "train_step", 1, + ) - # Now it should apply - result = ctrl.apply_op(_op(params={"lr": 1e-4}), env) - assert result.decision == "applied" - assert groups[0]["lr"] == pytest.approx(1e-4) + assert groups[0]["lr"] == pytest.approx(1e-3) # unchanged + ledger = read_ledger() + assert ledger[0]["decision"] == "failed" + assert "above max" in ledger[0]["error"] # ------------------------------------------------------------------ # -# 11. Auto-disable on error +# 10. Betas set # ------------------------------------------------------------------ # -class TestAutoDisableOnError: - def test_handle_disabled_after_error(self): - ctrl = HotOptController(auto_disable_on_error=True) +class TestBetasSet: + def test_betas_via_mutable_state(self, run_dir, make_env, read_ledger): + groups = [{"lr": 1e-3, "weight_decay": 0.01, "betas": (0.9, 0.999)}] + opt = MockOptimizer(groups) + kernel = _kernel_with_opt(run_dir, opt) + env = make_env(step=1, optimizer=opt) - class BrokenOptimizer: - @property - def param_groups(self): - raise RuntimeError("gpu exploded") + kernel._apply_single( + _op(params={"key": "betas", "value": (0.8, 0.99)}), + env, "train_step", 1, + ) - env = {"optimizer": BrokenOptimizer()} + assert groups[0]["betas"] == pytest.approx((0.8, 0.99)) + ledger = read_ledger() + assert ledger[0]["decision"] == "applied" - result = ctrl.apply_op(_op(params={"lr": 1e-4}), env) - assert result.decision == "failed" - handle = ctrl.handles["main"] - assert handle.enabled is False - assert handle.last_error == "gpu exploded" +# ------------------------------------------------------------------ # +# 11. Multiple params in single op +# ------------------------------------------------------------------ # +class TestMultipleParams: + def test_lr_and_wd_set_together(self, run_dir, make_env, read_ledger): + groups = _make_param_groups(1, lr=1e-3, weight_decay=0.01) + opt = MockOptimizer(groups) + kernel = _kernel_with_opt(run_dir, opt) + env = make_env(step=1, optimizer=opt) + + kernel._apply_single( + _op(params={"lr": 5e-4, "weight_decay": 0.05}), + env, "train_step", 1, + ) + + assert groups[0]["lr"] == pytest.approx(5e-4) + assert groups[0]["weight_decay"] == pytest.approx(0.05) # ------------------------------------------------------------------ # -# 12. Status +# 12. Apply error produces error in ledger # ------------------------------------------------------------------ # -class TestStatus: - def test_status_structure(self): - ctrl = HotOptController(auto_disable_on_error=True) - groups = _make_param_groups(2) - env = {"optimizer": MockOptimizer(groups)} - - ctrl.apply_op(_op(params={"lr": 1e-4}), env) +class TestApplyError: + def test_apply_fn_failure_recorded(self, run_dir, make_env, read_ledger): + def _bad_apply(value, env): + raise RuntimeError("gpu exploded") + + bad_act = HotcbActuator( + param_key="bad_param", + type=ActuatorType.FLOAT, + apply_fn=_bad_apply, + min_value=0.0, + max_value=10.0, + current_value=1.0, + ) + ms = mutable_state([bad_act]) + kernel = HotKernel(run_dir=run_dir, debounce_steps=1, mutable_state=ms) + env = make_env(step=1) - status = ctrl.status() + kernel._apply_single( + HotOp(module="opt", op="set_params", params={"key": "bad_param", "value": 2.0}), + env, "train_step", 1, + ) - assert "main" in status - entry = status["main"] - assert "enabled" in entry - assert "last_params" in entry - assert "last_error" in entry - assert entry["enabled"] is True - assert entry["last_params"]["lr"] == pytest.approx(1e-4) - assert entry["last_error"] is None + ledger = read_ledger() + assert len(ledger) == 1 + assert ledger[0]["decision"] == "failed" + assert "gpu exploded" in ledger[0]["error"] diff --git a/src/hotcb/tests/test_hottune.py b/src/hotcb/tests/test_hottune.py index 42aac7b..c06a8f9 100644 --- a/src/hotcb/tests/test_hottune.py +++ b/src/hotcb/tests/test_hottune.py @@ -10,9 +10,7 @@ import pytest -from hotcb.actuators.base import ApplyResult, ValidationResult -from hotcb.actuators.optimizer import OptimizerActuator -from hotcb.actuators.mutable_state import MutableStateActuator +from hotcb.actuators.base import ApplyResult, ValidationResult, BaseActuator from hotcb.modules.tune.schemas import ( AcceptanceConfig, ActuatorConfig, @@ -43,6 +41,225 @@ def __init__(self, lr=0.001, wd=0.01, betas=(0.9, 0.999)): self.param_groups = [{"lr": lr, "weight_decay": wd, "betas": betas}] +class MockOptActuator: + """Mock optimizer actuator for tune tests (implements BaseActuator protocol).""" + name = "opt" + + def __init__(self, lr_bounds=(1e-7, 1.0), wd_bounds=(0.0, 1.0)): + self.lr_bounds = lr_bounds + self.wd_bounds = wd_bounds + + def _resolve_optimizer(self, env, opt_idx=0): + opt = env.get("optimizer") + return opt + + def snapshot(self, env): + opt = self._resolve_optimizer(env) + if opt is None: + return {} + g = opt.param_groups[0] + groups = [{"lr": g.get("lr")}] + if "weight_decay" in g: + groups[0]["weight_decay"] = g["weight_decay"] + if "betas" in g: + groups[0]["betas"] = list(g["betas"]) + return {"groups": groups, "all_groups": [groups]} + + def validate(self, patch, env): + op = patch.get("op") + value = patch.get("value") + valid_ops = {"lr_mult", "lr_set", "wd_mult", "wd_set", "betas_set"} + errors = [] + if op not in valid_ops: + errors.append(f"unknown op: {op}") + return ValidationResult(valid=False, errors=errors) + if value is None: + errors.append("missing value") + return ValidationResult(valid=False, errors=errors) + if op == "lr_mult" and (not isinstance(value, (int, float)) or value <= 0): + errors.append(f"lr_mult value must be positive, got {value}") + elif op == "lr_set": + if not isinstance(value, (int, float)) or value <= 0: + errors.append(f"lr_set value must be positive, got {value}") + elif not (self.lr_bounds[0] <= value <= self.lr_bounds[1]): + errors.append(f"lr_set value {value} out of bounds {self.lr_bounds}") + elif op == "wd_mult" and (not isinstance(value, (int, float)) or value <= 0): + errors.append(f"wd_mult value must be positive, got {value}") + elif op == "wd_set": + if not isinstance(value, (int, float)) or value < 0: + errors.append(f"wd_set value must be non-negative, got {value}") + elif not (self.wd_bounds[0] <= value <= self.wd_bounds[1]): + errors.append(f"wd_set value {value} out of bounds {self.wd_bounds}") + elif op == "betas_set": + if not isinstance(value, (list, tuple)) or len(value) != 2: + errors.append(f"betas_set expects [beta1, beta2], got {value}") + else: + for i, b in enumerate(value): + if not isinstance(b, (int, float)) or not (0.0 <= b < 1.0): + errors.append(f"beta{i+1} must be in [0, 1), got {b}") + return ValidationResult(valid=len(errors) == 0, errors=errors) + + def apply(self, patch, env): + opt = self._resolve_optimizer(env) + if opt is None: + return ApplyResult(success=False, error="missing_optimizer") + op = patch.get("op") + value = patch.get("value") + try: + for g in opt.param_groups: + if op == "lr_mult": + new_lr = g["lr"] * float(value) + new_lr = max(self.lr_bounds[0], min(self.lr_bounds[1], new_lr)) + g["lr"] = new_lr + elif op == "lr_set": + g["lr"] = float(value) + elif op == "wd_mult": + wd = g.get("weight_decay", 0.0) + new_wd = wd * float(value) + new_wd = max(self.wd_bounds[0], min(self.wd_bounds[1], new_wd)) + g["weight_decay"] = new_wd + elif op == "wd_set": + g["weight_decay"] = float(value) + elif op == "betas_set": + g["betas"] = tuple(float(b) for b in value) + return ApplyResult(success=True, detail=patch) + except Exception as e: + return ApplyResult(success=False, error=str(e)) + + def restore(self, snapshot, env): + groups = snapshot.get("groups", []) + opt = self._resolve_optimizer(env) + if opt is None: + return ApplyResult(success=False, error="missing_optimizer") + try: + for i, snap in enumerate(groups): + if i >= len(opt.param_groups): + break + g = opt.param_groups[i] + if "lr" in snap: + g["lr"] = snap["lr"] + if "weight_decay" in snap: + g["weight_decay"] = snap["weight_decay"] + if "betas" in snap: + g["betas"] = tuple(snap["betas"]) + return ApplyResult(success=True) + except Exception as e: + return ApplyResult(success=False, error=str(e)) + + def describe_space(self): + return { + "actuator": self.name, + "mutations": { + "lr_mult": {"type": "float"}, + "lr_set": {"type": "float", "bounds": list(self.lr_bounds)}, + "wd_mult": {"type": "float"}, + "wd_set": {"type": "float", "bounds": list(self.wd_bounds)}, + "betas_set": {"type": "list[float]", "length": 2}, + }, + } + + +class MockLossActuator: + """Mock loss actuator for tune tests (implements BaseActuator protocol).""" + name = "loss" + + def __init__(self, global_bounds=(0.0, 100.0), key_bounds=None): + self.global_bounds = global_bounds + self.key_bounds = key_bounds or {} + + def _resolve_mutable_state(self, env): + return env.get("mutable_state") + + def _get_bounds(self, key): + return self.key_bounds.get(key, self.global_bounds) + + def snapshot(self, env): + import copy + ms = self._resolve_mutable_state(env) + if ms is None: + return {} + weights = ms.get("weights", {}) + return {"weights": copy.deepcopy(weights)} + + def validate(self, patch, env): + errors = [] + op = patch.get("op") + key = patch.get("key") + value = patch.get("value") + valid_ops = {"set", "mult", "delta"} + if op not in valid_ops: + errors.append(f"unknown op: {op}") + return ValidationResult(valid=False, errors=errors) + if key is None: + errors.append("missing key") + if value is None: + errors.append("missing value") + if not isinstance(value, (int, float)): + errors.append(f"value must be numeric, got {type(value).__name__}") + if errors: + return ValidationResult(valid=False, errors=errors) + ms = self._resolve_mutable_state(env) + if ms is not None: + weights = ms.get("weights", {}) + bounds = self._get_bounds(key) + if op == "set" and not (bounds[0] <= value <= bounds[1]): + errors.append(f"set value {value} out of bounds {bounds} for key {key}") + elif op == "mult": + if value <= 0: + errors.append(f"mult value must be positive, got {value}") + current = weights.get(key, 1.0) + result = current * value + if not (bounds[0] <= result <= bounds[1]): + errors.append(f"mult would produce {result}, out of bounds {bounds}") + return ValidationResult(valid=len(errors) == 0, errors=errors) + + def apply(self, patch, env): + import copy + ms = self._resolve_mutable_state(env) + if ms is None: + return ApplyResult(success=False, error="missing_mutable_state") + op = patch.get("op") + key = patch.get("key") + value = patch.get("value") + weights = ms.setdefault("weights", {}) + bounds = self._get_bounds(key) + try: + current = weights.get(key, 1.0) + if op == "set": + new_val = float(value) + elif op == "mult": + new_val = current * float(value) + elif op == "delta": + new_val = current + float(value) + else: + return ApplyResult(success=False, error=f"unknown op: {op}") + new_val = max(bounds[0], min(bounds[1], new_val)) + weights[key] = new_val + return ApplyResult(success=True, detail={"key": key, "old": current, "new": new_val}) + except Exception as e: + return ApplyResult(success=False, error=str(e)) + + def restore(self, snapshot, env): + import copy + ms = self._resolve_mutable_state(env) + if ms is None: + return ApplyResult(success=False, error="missing_mutable_state") + saved = snapshot.get("weights", {}) + ms["weights"] = copy.deepcopy(saved) + return ApplyResult(success=True) + + def describe_space(self): + return { + "actuator": self.name, + "mutations": { + "set": {"type": "float"}, + "mult": {"type": "float"}, + "delta": {"type": "float"}, + }, + "global_bounds": list(self.global_bounds), + } + + def make_env( step=100, epoch=1, @@ -99,11 +316,11 @@ def simple_recipe(**overrides) -> TuneRecipe: # ========== Actuator tests ========== -class TestOptimizerActuator: +class TestMockOptActuator: def test_snapshot_and_restore(self): opt = FakeOptimizer(lr=0.001, wd=0.01, betas=(0.9, 0.999)) env = {"optimizer": opt} - act = OptimizerActuator() + act = MockOptActuator() snap = act.snapshot(env) assert snap["groups"][0]["lr"] == 0.001 @@ -119,14 +336,14 @@ def test_snapshot_and_restore(self): assert opt.param_groups[0]["lr"] == 0.001 def test_validate_lr_mult(self): - act = OptimizerActuator() + act = MockOptActuator() env = {"optimizer": FakeOptimizer()} assert act.validate({"op": "lr_mult", "value": 0.9}, env).valid assert not act.validate({"op": "lr_mult", "value": -1}, env).valid assert not act.validate({"op": "unknown", "value": 1}, env).valid def test_validate_betas_set(self): - act = OptimizerActuator() + act = MockOptActuator() env = {"optimizer": FakeOptimizer()} assert act.validate({"op": "betas_set", "value": [0.9, 0.98]}, env).valid assert not act.validate({"op": "betas_set", "value": [1.5, 0.98]}, env).valid @@ -135,7 +352,7 @@ def test_validate_betas_set(self): def test_apply_lr_mult(self): opt = FakeOptimizer(lr=0.001) env = {"optimizer": opt} - act = OptimizerActuator() + act = MockOptActuator() result = act.apply({"op": "lr_mult", "value": 0.5}, env) assert result.success assert opt.param_groups[0]["lr"] == pytest.approx(0.0005) @@ -143,7 +360,7 @@ def test_apply_lr_mult(self): def test_apply_lr_set(self): opt = FakeOptimizer(lr=0.001) env = {"optimizer": opt} - act = OptimizerActuator() + act = MockOptActuator() result = act.apply({"op": "lr_set", "value": 0.01}, env) assert result.success assert opt.param_groups[0]["lr"] == 0.01 @@ -151,7 +368,7 @@ def test_apply_lr_set(self): def test_apply_wd_mult(self): opt = FakeOptimizer(wd=0.01) env = {"optimizer": opt} - act = OptimizerActuator() + act = MockOptActuator() result = act.apply({"op": "wd_mult", "value": 2.0}, env) assert result.success assert opt.param_groups[0]["weight_decay"] == pytest.approx(0.02) @@ -159,36 +376,36 @@ def test_apply_wd_mult(self): def test_apply_betas_set(self): opt = FakeOptimizer() env = {"optimizer": opt} - act = OptimizerActuator() + act = MockOptActuator() result = act.apply({"op": "betas_set", "value": [0.85, 0.95]}, env) assert result.success assert opt.param_groups[0]["betas"] == (0.85, 0.95) def test_apply_missing_optimizer(self): - act = OptimizerActuator() + act = MockOptActuator() result = act.apply({"op": "lr_mult", "value": 0.9}, {}) assert not result.success assert "missing_optimizer" in result.error def test_describe_space(self): - act = OptimizerActuator() + act = MockOptActuator() space = act.describe_space() assert "lr_mult" in space["mutations"] def test_lr_bounds_clamping(self): opt = FakeOptimizer(lr=0.5) env = {"optimizer": opt} - act = OptimizerActuator(lr_bounds=(1e-7, 1.0)) + act = MockOptActuator(lr_bounds=(1e-7, 1.0)) result = act.apply({"op": "lr_mult", "value": 10.0}, env) assert result.success assert opt.param_groups[0]["lr"] == 1.0 # clamped -class TestMutableStateActuator: +class TestMockLossActuator: def test_snapshot_and_restore(self): ls = {"weights": {"main": 1.0, "aux": 0.5}} env = {"mutable_state": ls} - act = MutableStateActuator() + act = MockLossActuator() snap = act.snapshot(env) assert snap["weights"]["main"] == 1.0 @@ -199,14 +416,14 @@ def test_snapshot_and_restore(self): assert ls["weights"]["main"] == 1.0 def test_validate_set(self): - act = MutableStateActuator(global_bounds=(0.0, 10.0)) + act = MockLossActuator(global_bounds=(0.0, 10.0)) ls = {"weights": {"main": 1.0}} env = {"mutable_state": ls} assert act.validate({"op": "set", "key": "main", "value": 5.0}, env).valid assert not act.validate({"op": "set", "key": "main", "value": 11.0}, env).valid def test_validate_mult_bounds(self): - act = MutableStateActuator(global_bounds=(0.0, 10.0)) + act = MockLossActuator(global_bounds=(0.0, 10.0)) ls = {"weights": {"main": 5.0}} env = {"mutable_state": ls} assert not act.validate({"op": "mult", "key": "main", "value": 3.0}, env).valid # 15 > 10 @@ -214,7 +431,7 @@ def test_validate_mult_bounds(self): def test_apply_set(self): ls = {"weights": {"main": 1.0}} env = {"mutable_state": ls} - act = MutableStateActuator() + act = MockLossActuator() result = act.apply({"op": "set", "key": "main", "value": 2.0}, env) assert result.success assert ls["weights"]["main"] == 2.0 @@ -222,7 +439,7 @@ def test_apply_set(self): def test_apply_mult(self): ls = {"weights": {"main": 1.0}} env = {"mutable_state": ls} - act = MutableStateActuator() + act = MockLossActuator() result = act.apply({"op": "mult", "key": "main", "value": 1.5}, env) assert result.success assert ls["weights"]["main"] == pytest.approx(1.5) @@ -230,18 +447,18 @@ def test_apply_mult(self): def test_apply_delta(self): ls = {"weights": {"main": 1.0}} env = {"mutable_state": ls} - act = MutableStateActuator() + act = MockLossActuator() result = act.apply({"op": "delta", "key": "main", "value": 0.3}, env) assert result.success assert ls["weights"]["main"] == pytest.approx(1.3) def test_apply_missing_mutable_state(self): - act = MutableStateActuator() + act = MockLossActuator() result = act.apply({"op": "set", "key": "main", "value": 1.0}, {}) assert not result.success def test_key_bounds(self): - act = MutableStateActuator(key_bounds={"main": (0.5, 1.5)}) + act = MockLossActuator(key_bounds={"main": (0.5, 1.5)}) ls = {"weights": {"main": 1.0}} env = {"mutable_state": ls} assert not act.validate({"op": "set", "key": "main", "value": 2.0}, env).valid @@ -523,7 +740,7 @@ def test_on_event_observe_mode_no_mutations(self): ctrl = HotTuneController(recipe=simple_recipe()) ctrl.state.mode = "observe" opt = FakeOptimizer() - ctrl.register_actuator("opt", OptimizerActuator()) + ctrl.register_actuator("opt", MockOptActuator()) env = make_env(optimizer=opt) ctrl.on_event("val_epoch_end", env) assert ctrl.state.mutation_counter == 0 @@ -537,9 +754,9 @@ def test_on_event_active_proposes(self, tmp_path): ) ctrl.state.mode = "active" opt = FakeOptimizer(lr=0.001) - ctrl.register_actuator("opt", OptimizerActuator()) + ctrl.register_actuator("opt", MockOptActuator()) ls = {"weights": {"main_w": 1.0}} - ctrl.register_actuator("loss", MutableStateActuator()) + ctrl.register_actuator("loss", MockLossActuator()) def metric_fn(name, default=None): return {"val/loss": 0.5}.get(name, default) @@ -557,8 +774,8 @@ def test_full_accept_cycle(self, tmp_path): ctrl.state.mode = "active" opt = FakeOptimizer(lr=0.001) ls = {"weights": {"main_w": 1.0}} - ctrl.register_actuator("opt", OptimizerActuator()) - ctrl.register_actuator("loss", MutableStateActuator()) + ctrl.register_actuator("opt", MockOptActuator()) + ctrl.register_actuator("loss", MockLossActuator()) # First val_epoch_end: proposes and applies mutation metrics_val = [0.5] @@ -589,8 +806,8 @@ def test_full_reject_and_rollback_cycle(self, tmp_path): ctrl.state.mode = "active" opt = FakeOptimizer(lr=0.001) ls = {"weights": {"main_w": 1.0}} - ctrl.register_actuator("opt", OptimizerActuator()) - ctrl.register_actuator("loss", MutableStateActuator()) + ctrl.register_actuator("opt", MockOptActuator()) + ctrl.register_actuator("loss", MockLossActuator()) original_lr = opt.param_groups[0]["lr"] @@ -620,7 +837,7 @@ def test_safety_block_on_nan(self, tmp_path): run_dir=str(tmp_path), ) ctrl.state.mode = "active" - ctrl.register_actuator("opt", OptimizerActuator()) + ctrl.register_actuator("opt", MockOptActuator()) env = make_env(optimizer=FakeOptimizer(), loss=float("nan")) ctrl.on_event("val_epoch_end", env) assert ctrl.state.mutation_counter == 0 @@ -632,7 +849,7 @@ def test_reject_streak_blocks_mutations(self, tmp_path): ) ctrl.state.mode = "active" ctrl.state.reject_streak = 10 # way over limit - ctrl.register_actuator("opt", OptimizerActuator()) + ctrl.register_actuator("opt", MockOptActuator()) env = make_env(optimizer=FakeOptimizer()) ctrl.on_event("val_epoch_end", env) # No mutation should be proposed due to reject streak @@ -659,7 +876,7 @@ def test_kernel_has_tune_module(self, tmp_path): def test_kernel_actuator_registry(self, tmp_path): k = HotKernel(run_dir=str(tmp_path)) - act = OptimizerActuator() + act = MockOptActuator() k.register_actuator("opt", act) assert k.get_actuator("opt") is act # Also registered in tune module @@ -772,8 +989,8 @@ def test_suggest_does_not_apply_mutation(self, tmp_path): ctrl.state.mode = "suggest" opt = FakeOptimizer(lr=0.001) ls = {"weights": {"main_w": 1.0}} - ctrl.register_actuator("opt", OptimizerActuator()) - ctrl.register_actuator("loss", MutableStateActuator()) + ctrl.register_actuator("opt", MockOptActuator()) + ctrl.register_actuator("loss", MockLossActuator()) original_lr = opt.param_groups[0]["lr"] original_w = ls["weights"]["main_w"] @@ -833,7 +1050,7 @@ def test_replay_applies_mutations_in_order(self, tmp_path): ) ctrl.state.mode = "replay" opt = FakeOptimizer(lr=0.001) - ctrl.register_actuator("opt", OptimizerActuator()) + ctrl.register_actuator("opt", MockOptActuator()) env = make_env(step=100, optimizer=opt) ctrl.on_event("val_epoch_end", env) @@ -865,7 +1082,7 @@ def test_replay_exhausted(self, tmp_path): ) ctrl.state.mode = "replay" opt = FakeOptimizer(lr=0.001) - ctrl.register_actuator("opt", OptimizerActuator()) + ctrl.register_actuator("opt", MockOptActuator()) # First event applies ctrl.on_event("val_epoch_end", make_env(step=100, optimizer=opt)) @@ -939,8 +1156,8 @@ def _run_simulation(self, tmp_path, loss_surface, num_epochs=10): ctrl.state.mode = "active" opt = FakeOptimizer(lr=0.001) ls = {"weights": {"main_w": 1.0}} - ctrl.register_actuator("opt", OptimizerActuator()) - ctrl.register_actuator("loss", MutableStateActuator()) + ctrl.register_actuator("opt", MockOptActuator()) + ctrl.register_actuator("loss", MockLossActuator()) for epoch in range(num_epochs): step = epoch * 100 @@ -994,8 +1211,8 @@ def test_instability_blocks(self, tmp_path): ) ctrl.state.mode = "active" opt = FakeOptimizer(lr=0.001) - ctrl.register_actuator("opt", OptimizerActuator()) - ctrl.register_actuator("loss", MutableStateActuator()) + ctrl.register_actuator("opt", MockOptActuator()) + ctrl.register_actuator("loss", MockLossActuator()) env = make_env(step=100, optimizer=opt, loss=float("nan")) ctrl.on_event("val_epoch_end", env) @@ -1015,8 +1232,8 @@ def test_delayed_reward(self, tmp_path): ctrl.state.mode = "active" opt = FakeOptimizer(lr=0.001) ls = {"weights": {"main_w": 1.0}} - ctrl.register_actuator("opt", OptimizerActuator()) - ctrl.register_actuator("loss", MutableStateActuator()) + ctrl.register_actuator("opt", MockOptActuator()) + ctrl.register_actuator("loss", MockLossActuator()) for i, loss_val in enumerate(losses): def metric_fn(name, default=None, _v=loss_val): @@ -1069,8 +1286,8 @@ def test_rollback_failure_logged(self, tmp_path): ctrl.state.mode = "active" opt = FakeOptimizer(lr=0.001) ls = {"weights": {"main_w": 1.0}} - ctrl.register_actuator("opt", OptimizerActuator()) - ctrl.register_actuator("loss", MutableStateActuator()) + ctrl.register_actuator("opt", MockOptActuator()) + ctrl.register_actuator("loss", MockLossActuator()) metrics_val = [0.5] @@ -1098,8 +1315,8 @@ def test_missing_metric_fn(self, tmp_path): ctrl.state.mode = "active" opt = FakeOptimizer(lr=0.001) ls = {"weights": {"main_w": 1.0}} - ctrl.register_actuator("opt", OptimizerActuator()) - ctrl.register_actuator("loss", MutableStateActuator()) + ctrl.register_actuator("opt", MockOptActuator()) + ctrl.register_actuator("loss", MockLossActuator()) env = make_env(step=100, optimizer=opt, mutable_state=ls) # No metric_fn in env @@ -1156,21 +1373,21 @@ def test_empty_actuator_registry_observe_only(self, tmp_path): assert ctrl.state.mutation_counter == 0 def test_validate_missing_value(self): - act = OptimizerActuator() + act = MockOptActuator() env = {"optimizer": FakeOptimizer()} result = act.validate({"op": "lr_mult"}, env) assert not result.valid assert any("missing value" in e for e in result.errors) def test_loss_actuator_validate_missing_key(self): - act = MutableStateActuator() + act = MockLossActuator() env = {"mutable_state": {"weights": {}}} result = act.validate({"op": "set", "value": 1.0}, env) assert not result.valid assert any("missing key" in e for e in result.errors) def test_loss_actuator_validate_non_numeric(self): - act = MutableStateActuator() + act = MockLossActuator() env = {"mutable_state": {"weights": {}}} result = act.validate({"op": "set", "key": "x", "value": "bad"}, env) assert not result.valid diff --git a/src/hotcb/tests/test_integration_lightning.py b/src/hotcb/tests/test_integration_lightning.py index c6f8fd8..7ebbd1d 100644 --- a/src/hotcb/tests/test_integration_lightning.py +++ b/src/hotcb/tests/test_integration_lightning.py @@ -12,6 +12,7 @@ from hotcb.kernel import HotKernel from hotcb.adapters.lightning import HotCBLightning +from hotcb.actuators import loss_actuators, mutable_state as make_mutable_state class TinyModel(pl.LightningModule): @@ -165,11 +166,12 @@ def test_mutable_state_changed(self, tmp_path): run_dir = str(tmp_path / "run_loss") os.makedirs(run_dir, exist_ok=True) - _write_commands(run_dir, {"module": "loss", "op": "set_params", "id": "main", "params": {"distill_w": 0.5}}) + _write_commands(run_dir, {"module": "loss", "op": "set_params", "id": "main", "params": {"key": "distill", "value": 0.5}}) - mutable_state = {"weights": {}, "terms": {}, "ramps": {}} - kernel = HotKernel(run_dir=run_dir, debounce_steps=1) - adapter = HotCBLightning(kernel=kernel, mutable_state=mutable_state) + loss_weights = {"distill": 1.0} + ms = make_mutable_state(loss_actuators(loss_weights)) + kernel = HotKernel(run_dir=run_dir, debounce_steps=1, mutable_state=ms) + adapter = HotCBLightning(kernel=kernel) model = TinyModel() trainer = pl.Trainer( @@ -179,7 +181,7 @@ def test_mutable_state_changed(self, tmp_path): ) trainer.fit(model) - assert mutable_state["weights"]["distill"] == 0.5 + assert loss_weights["distill"] == pytest.approx(0.5) ledger = _read_ledger(run_dir) loss_applied = [e for e in ledger if e.get("module") == "loss" and e.get("decision") == "applied"] diff --git a/src/hotcb/tests/test_kernel_core.py b/src/hotcb/tests/test_kernel_core.py index 5356ef5..b441929 100644 --- a/src/hotcb/tests/test_kernel_core.py +++ b/src/hotcb/tests/test_kernel_core.py @@ -9,6 +9,7 @@ import pytest from hotcb.kernel import HotKernel +from hotcb.actuators import optimizer_actuators, loss_actuators, mutable_state # --------------------------------------------------------------------------- @@ -159,10 +160,11 @@ def test_time_gate_allows_after_interval(self, run_dir, make_env, write_commands class TestRouting: def test_route_to_opt(self, run_dir, make_env, write_commands, read_ledger): - """Ops with module='opt' reach the opt controller.""" + """Ops with module='opt' route through default stream (MutableState).""" optimizer = _mock_optimizer(lr=0.01) write_commands({"module": "opt", "op": "set_params", "params": {"lr": 0.002}}) - kernel = HotKernel(run_dir, debounce_steps=1) + ms = mutable_state(optimizer_actuators(optimizer)) + kernel = HotKernel(run_dir, debounce_steps=1, mutable_state=ms) env = make_env(step=1, optimizer=optimizer) kernel.apply(env, ["step"]) @@ -174,18 +176,19 @@ def test_route_to_opt(self, run_dir, make_env, write_commands, read_ledger): assert optimizer.param_groups[0]["lr"] == pytest.approx(0.002) def test_route_to_loss(self, run_dir, make_env, write_commands, read_ledger): - """Ops with module='loss' reach the loss controller.""" - mutable_state = {"weights": {}, "terms": {}, "ramps": {}} - write_commands({"module": "loss", "op": "set_params", "params": {"kl_w": 0.5}}) - kernel = HotKernel(run_dir, debounce_steps=1) - env = make_env(step=1, mutable_state=mutable_state) + """Ops with module='loss' route through default stream (MutableState).""" + loss_weights = {"kl": 1.0} + write_commands({"module": "loss", "op": "set_params", "params": {"key": "kl", "value": 0.5}}) + ms = mutable_state(loss_actuators(loss_weights)) + kernel = HotKernel(run_dir, debounce_steps=1, mutable_state=ms) + env = make_env(step=1) kernel.apply(env, ["step"]) ledger = read_ledger() assert len(ledger) == 1 assert ledger[0]["decision"] == "applied" assert ledger[0]["module"] == "loss" - assert mutable_state["weights"]["kl"] == 0.5 + assert loss_weights["kl"] == pytest.approx(0.5) def test_route_to_core(self, run_dir, make_env, write_commands, read_ledger): """Ops with module='core' are handled by the kernel itself.""" @@ -211,17 +214,17 @@ def test_route_to_cb(self, run_dir, make_env, write_commands, read_ledger): assert len(ledger) == 1 assert ledger[0]["module"] == "cb" - def test_opt_missing_optimizer_fails(self, run_dir, make_env, write_commands, read_ledger): - """set_params on opt without an optimizer produces failed.""" + def test_opt_without_mutable_state_fails(self, run_dir, make_env, write_commands, read_ledger): + """set_params on opt without a MutableState produces failed.""" write_commands({"module": "opt", "op": "set_params", "params": {"lr": 0.1}}) kernel = HotKernel(run_dir, debounce_steps=1) - env = make_env(step=1) # no optimizer + env = make_env(step=1) # no mutable_state kernel.apply(env, ["step"]) ledger = read_ledger() assert len(ledger) == 1 assert ledger[0]["decision"] == "failed" - assert "missing_optimizer" in (ledger[0].get("error") or "") + assert "no_mutable_state" in (ledger[0].get("error") or "") # --------------------------------------------------------------------------- @@ -265,9 +268,11 @@ def test_seq_monotonically_increasing(self, run_dir, make_env, write_commands, r def test_required_fields_populated(self, run_dir, make_env, write_commands, read_ledger): """step, event, source, decision fields are present in every ledger record.""" - write_commands({"module": "opt", "op": "enable", "id": "a"}) - kernel = HotKernel(run_dir, debounce_steps=1) - env = make_env(step=42, optimizer=_mock_optimizer()) + optimizer = _mock_optimizer() + ms = mutable_state(optimizer_actuators(optimizer)) + write_commands({"module": "opt", "op": "set_params", "params": {"lr": 0.005}}) + kernel = HotKernel(run_dir, debounce_steps=1, mutable_state=ms) + env = make_env(step=42, optimizer=optimizer) kernel.apply(env, ["on_batch_end"]) ledger = read_ledger() @@ -282,8 +287,8 @@ def test_required_fields_populated(self, run_dir, make_env, write_commands, read def test_failure_includes_error_text(self, run_dir, make_env, write_commands, read_ledger): """Failed ops have error text in the ledger.""" write_commands({"module": "opt", "op": "set_params", "params": {"lr": 0.1}}) - kernel = HotKernel(run_dir, debounce_steps=1) - env = make_env(step=1) # no optimizer -> failure + kernel = HotKernel(run_dir, debounce_steps=1) # no mutable_state -> failure + env = make_env(step=1) kernel.apply(env, ["step"]) ledger = read_ledger() @@ -298,9 +303,9 @@ def test_failure_includes_error_text(self, run_dir, make_env, write_commands, re # --------------------------------------------------------------------------- class TestUnknownModule: - def test_unknown_module_fails(self, run_dir, make_env, write_commands, read_ledger): - """Op with an unknown module is recorded as failed with error text.""" - write_commands({"module": "xyz", "op": "enable", "id": "thing"}) + def test_unknown_module_without_mutable_state_fails(self, run_dir, make_env, write_commands, read_ledger): + """Op with an unknown module and no MutableState is recorded as failed.""" + write_commands({"module": "xyz", "op": "set_params", "params": {"key": "thing", "value": 1}}) kernel = HotKernel(run_dir, debounce_steps=1) env = make_env(step=1) kernel.apply(env, ["step"]) @@ -308,8 +313,7 @@ def test_unknown_module_fails(self, run_dir, make_env, write_commands, read_ledg ledger = read_ledger() assert len(ledger) == 1 assert ledger[0]["decision"] == "failed" - assert "unknown_module" in ledger[0]["error"] - assert "xyz" in ledger[0]["error"] + assert "no_mutable_state" in ledger[0]["error"] def test_unknown_module_still_produces_ledger_record(self, run_dir, make_env, write_commands, read_ledger): """Unknown modules still get a ledger entry with correct fields.""" diff --git a/src/hotcb/tests/test_new_features.py b/src/hotcb/tests/test_new_features.py index d08172c..d9670f0 100644 --- a/src/hotcb/tests/test_new_features.py +++ b/src/hotcb/tests/test_new_features.py @@ -18,8 +18,8 @@ from hotcb.kernel import HotKernel from hotcb.modules.cb import CallbackModule, _capture_source -from hotcb.modules.opt import HotOptController -from hotcb.modules.loss import HotLossController +from hotcb.actuators import optimizer_actuators, loss_actuators, mutable_state, ApplyResult +from hotcb.actuators.actuator import ActuatorType, HotcbActuator from hotcb.ops import HotOp from hotcb.cli import ( cmd_status, @@ -169,93 +169,124 @@ def test_external_source_capture_still_works( # =========================================================================== class TestTracebackInModuleResult: - """When set_params fails with an exception, ModuleResult should carry traceback.""" - - def test_opt_set_params_failure_has_traceback(self): - """HotOptController.set_params failure produces a result with traceback.""" - ctrl = HotOptController() - # Passing group index that doesn't exist on a single-group optimizer - optimizer = _mock_optimizer(lr=0.01) - env = {"optimizer": optimizer} - op = HotOp(module="opt", op="set_params", params={"group": "99", "lr": 0.001}) - result = ctrl.apply_op(op, env) - assert result.decision == "failed" - assert result.error is not None - assert result.traceback is not None - assert "Traceback" in result.traceback - - def test_loss_set_params_failure_has_traceback(self): - """HotLossController.set_params failure produces a result with traceback.""" - ctrl = HotLossController() - # Give a mutable_state where _apply_params will raise due to non-dict value - # We force an error by patching the mutable_state to raise on setdefault - class BadMutableState(dict): - def setdefault(self, key, default=None): - raise TypeError("intentional error for test") - - env = {"mutable_state": BadMutableState()} - op = HotOp(module="loss", op="set_params", params={"kl_w": 0.5}) - result = ctrl.apply_op(op, env) - assert result.decision == "failed" + """When set_params fails with an exception, error info is recorded.""" + + def test_opt_apply_fn_failure_has_error(self): + """Optimizer actuator apply_fn failure produces error in ApplyResult.""" + def _bad_apply(value, env): + raise RuntimeError("gpu exploded") + + bad_act = HotcbActuator( + param_key="bad_lr", + type=ActuatorType.FLOAT, + apply_fn=_bad_apply, + min_value=0.0, + max_value=1.0, + current_value=0.01, + ) + from hotcb.actuators.state import MutableState + ms = MutableState([bad_act]) + result = ms.apply("bad_lr", 0.001, {}, step=1) + assert not result.success assert result.error is not None - assert result.traceback is not None - assert "Traceback" in result.traceback + assert "gpu exploded" in result.error + + def test_loss_apply_fn_failure_has_error(self): + """Loss actuator apply_fn failure produces error in ApplyResult.""" + def _bad_apply(value, env): + raise TypeError("intentional error for test") + + bad_act = HotcbActuator( + param_key="bad_weight", + type=ActuatorType.FLOAT, + apply_fn=_bad_apply, + min_value=0.0, + max_value=100.0, + current_value=1.0, + ) + from hotcb.actuators.state import MutableState + ms = MutableState([bad_act]) + result = ms.apply("bad_weight", 0.5, {}, step=1) + assert not result.success + assert "intentional error" in result.error - def test_kernel_ledger_has_traceback_on_opt_failure( + def test_kernel_ledger_has_error_on_opt_failure( self, run_dir, make_env, write_commands, read_ledger, ): - """When opt set_params fails through the kernel, ledger entry has traceback.""" + """When opt set_params fails through the kernel, ledger entry has error.""" + def _bad_apply(value, env): + raise RuntimeError("gpu exploded") + + bad_act = HotcbActuator( + param_key="lr", + type=ActuatorType.FLOAT, + apply_fn=_bad_apply, + min_value=0.0, + max_value=1.0, + current_value=0.01, + ) + ms = mutable_state([bad_act]) + write_commands({ "module": "opt", "op": "set_params", - "params": {"group": "99", "lr": 0.001}, + "params": {"key": "lr", "value": 0.001}, }) - kernel = HotKernel(run_dir=run_dir, debounce_steps=1) - optimizer = _mock_optimizer(lr=0.01) - env = make_env(step=1, optimizer=optimizer) + kernel = HotKernel(run_dir=run_dir, debounce_steps=1, mutable_state=ms) + env = make_env(step=1) kernel.apply(env, ["train_step_end"]) ledger = read_ledger() assert len(ledger) == 1 assert ledger[0]["decision"] == "failed" - assert ledger[0]["traceback"] is not None - assert "Traceback" in ledger[0]["traceback"] + assert ledger[0]["error"] is not None + assert "gpu exploded" in ledger[0]["error"] - def test_kernel_ledger_has_traceback_on_loss_failure( + def test_kernel_ledger_has_error_on_loss_failure( self, run_dir, make_env, write_commands, read_ledger, ): - """When loss set_params fails through the kernel, ledger entry has traceback.""" - - class BadMutableState(dict): - def setdefault(self, key, default=None): - raise TypeError("intentional error for test") + """When loss set_params fails through the kernel, ledger entry has error.""" + def _bad_apply(value, env): + raise TypeError("intentional error for test") + + bad_act = HotcbActuator( + param_key="kl", + type=ActuatorType.FLOAT, + apply_fn=_bad_apply, + min_value=0.0, + max_value=100.0, + current_value=1.0, + ) + ms = mutable_state([bad_act]) write_commands({ "module": "loss", "op": "set_params", - "params": {"kl_w": 0.5}, + "params": {"key": "kl", "value": 0.5}, }) - kernel = HotKernel(run_dir=run_dir, debounce_steps=1) - env = make_env(step=1, mutable_state=BadMutableState()) + kernel = HotKernel(run_dir=run_dir, debounce_steps=1, mutable_state=ms) + env = make_env(step=1) kernel.apply(env, ["train_step_end"]) ledger = read_ledger() assert len(ledger) == 1 assert ledger[0]["decision"] == "failed" - assert ledger[0]["traceback"] is not None - assert "Traceback" in ledger[0]["traceback"] + assert ledger[0]["error"] is not None + assert "intentional error" in ledger[0]["error"] def test_successful_op_has_no_traceback( self, run_dir, make_env, write_commands, read_ledger, ): """Successful ops should have traceback=None in the ledger.""" + optimizer = _mock_optimizer(lr=0.01) + ms = mutable_state(optimizer_actuators(optimizer)) + write_commands({ "module": "opt", "op": "set_params", "params": {"lr": 0.001}, }) - kernel = HotKernel(run_dir=run_dir, debounce_steps=1) - optimizer = _mock_optimizer(lr=0.01) + kernel = HotKernel(run_dir=run_dir, debounce_steps=1, mutable_state=ms) env = make_env(step=1, optimizer=optimizer) kernel.apply(env, ["train_step_end"]) diff --git a/src/hotcb/tests/test_server_app.py b/src/hotcb/tests/test_server_app.py index 0911bfa..6fa3ffe 100644 --- a/src/hotcb/tests/test_server_app.py +++ b/src/hotcb/tests/test_server_app.py @@ -184,3 +184,200 @@ def test_applied_history(self, client): records = r.json()["records"] assert len(records) == 1 assert records[0]["module"] == "opt" + + +# --------------------------------------------------------------------------- +# Phase 5: Immutable run_dir tests +# --------------------------------------------------------------------------- + + +class TestImmutableRunDir: + """Phase 5: run_dir is set once at create_app() and never changes.""" + + def test_no_app_state_run_dir_attribute(self, populated_dir): + """app.state should not have a mutable run_dir; use config.run_dir.""" + app = create_app(populated_dir, poll_interval=60) + # app.state.run_dir should NOT be set (removed in Phase 5) + assert not hasattr(app.state, "run_dir"), ( + "app.state.run_dir should not exist; use app.state.config.run_dir" + ) + + def test_config_run_dir_is_set(self, populated_dir): + """app.state.config.run_dir should be set to the resolved run_dir.""" + app = create_app(populated_dir, poll_interval=60) + assert hasattr(app.state, "config") + assert app.state.config.run_dir == populated_dir + + def test_endpoints_use_config_run_dir(self, populated_dir): + """All endpoints should read from config.run_dir.""" + from starlette.testclient import TestClient + app = create_app(populated_dir, poll_interval=60) + client = TestClient(app) + + # /api/health returns the config run_dir + r = client.get("/api/health") + assert r.status_code == 200 + assert r.json()["run_dir"] == populated_dir + + # /api/status returns data from config run_dir + r = client.get("/api/status") + assert r.status_code == 200 + assert r.json()["run_dir"] == populated_dir + + # /api/metrics/history returns data from config run_dir + r = client.get("/api/metrics/history?last_n=3") + assert r.status_code == 200 + assert len(r.json()["records"]) == 3 + + def test_config_endpoint_returns_run_dir(self, populated_dir): + """GET /api/config should include the immutable run_dir.""" + from starlette.testclient import TestClient + app = create_app(populated_dir, poll_interval=60) + client = TestClient(app) + + r = client.get("/api/config") + assert r.status_code == 200 + data = r.json() + assert data["run_dir"] == populated_dir + + def test_discover_runs_reads_only(self, populated_dir): + """/api/runs/discover should scan read-only, never mutate run_dir.""" + from starlette.testclient import TestClient + app = create_app(populated_dir, poll_interval=60) + client = TestClient(app) + + r = client.get("/api/runs/discover") + assert r.status_code == 200 + runs = r.json()["runs"] + # populated_dir has metrics, so it should be discovered + assert len(runs) >= 1 + # config.run_dir unchanged after discover + assert app.state.config.run_dir == populated_dir + + +class TestTailerNoRewire: + """Phase 5: JsonlTailer no longer has a rewire method.""" + + def test_tailer_no_rewire_method(self): + """JsonlTailer should not have a rewire() method.""" + from hotcb.server.tailer import JsonlTailer + tailer = JsonlTailer() + assert not hasattr(tailer, "rewire"), ( + "JsonlTailer.rewire() should be removed in Phase 5" + ) + + def test_tailer_still_has_diagnostics(self): + """get_cursor_offsets should still be available for diagnostics.""" + from hotcb.server.tailer import JsonlTailer + tailer = JsonlTailer() + path = "/tmp/nonexistent.jsonl" + tailer.watch("test", path) + offsets = tailer.get_cursor_offsets() + assert "test" in offsets + assert offsets["test"] == 0 + + +class TestLauncherImmutableRunDir: + """Phase 5: Launcher writes directly to run_dir, no subdirs.""" + + def test_launcher_writes_to_run_dir_directly(self): + """Launcher.start() should write JSONL files to run_dir, not subdirs.""" + import threading + + with tempfile.TemporaryDirectory() as tmpdir: + from hotcb.server.launcher import TrainingLauncher, TrainingConfig + + # Register a minimal training config + def _noop_train(run_dir, max_steps, step_delay, stop_event): + # Write one metric record and exit + with open(os.path.join(run_dir, "hotcb.metrics.jsonl"), "a") as f: + f.write(json.dumps({"step": 0, "metrics": {"loss": 0.5}}) + "\n") + + launcher = TrainingLauncher(tmpdir) + launcher.register_config(TrainingConfig( + config_id="test", + name="Test", + description="test", + train_fn=_noop_train, + defaults={"max_steps": 1, "step_delay": 0.0}, + )) + + result = launcher.start(config_id="test", max_steps=1, step_delay=0.0) + assert result.get("started") is True + assert result["run_dir"] == tmpdir # writes to run_dir directly + + # Wait for training to finish + import time + for _ in range(50): + if not launcher.running: + break + time.sleep(0.1) + + # JSONL files should be in tmpdir, not in subdirs + assert os.path.exists(os.path.join(tmpdir, "hotcb.metrics.jsonl")) + assert os.path.exists(os.path.join(tmpdir, "hotcb.run.json")) + + # No subdirs should have been created + entries = os.listdir(tmpdir) + subdirs = [e for e in entries if os.path.isdir(os.path.join(tmpdir, e))] + assert subdirs == [], f"No subdirs expected, found: {subdirs}" + + def test_launcher_truncates_on_restart(self): + """Starting training again should truncate JSONL files.""" + with tempfile.TemporaryDirectory() as tmpdir: + from hotcb.server.launcher import TrainingLauncher, TrainingConfig + + step_counter = [0] + + def _counting_train(run_dir, max_steps, step_delay, stop_event): + step_counter[0] += 1 + with open(os.path.join(run_dir, "hotcb.metrics.jsonl"), "a") as f: + f.write(json.dumps({ + "step": 0, "metrics": {"loss": 0.5, "run": step_counter[0]} + }) + "\n") + + launcher = TrainingLauncher(tmpdir) + launcher.register_config(TrainingConfig( + config_id="test", + name="Test", + description="test", + train_fn=_counting_train, + defaults={"max_steps": 1, "step_delay": 0.0}, + )) + + # First run: write some data + metrics_path = os.path.join(tmpdir, "hotcb.metrics.jsonl") + with open(metrics_path, "w") as f: + f.write(json.dumps({"step": 99, "metrics": {"old": True}}) + "\n") + + # Start should truncate existing data + result = launcher.start(config_id="test", max_steps=1, step_delay=0.0) + assert result.get("started") is True + + import time + for _ in range(50): + if not launcher.running: + break + time.sleep(0.1) + + # Read the metrics file — old data (step 99) should be gone + records = [] + with open(metrics_path) as f: + for line in f: + line = line.strip() + if line: + records.append(json.loads(line)) + + # Should only have the new record, not the old step=99 + assert all(r["step"] != 99 for r in records), ( + "Old data should be truncated on restart" + ) + + def test_launcher_no_active_run_dir(self): + """TrainingLauncher should not have _active_run_dir attribute.""" + with tempfile.TemporaryDirectory() as tmpdir: + from hotcb.server.launcher import TrainingLauncher + launcher = TrainingLauncher(tmpdir) + assert not hasattr(launcher, "_active_run_dir"), ( + "_active_run_dir removed in Phase 5; launcher uses _run_dir only" + ) diff --git a/src/hotcb/util.py b/src/hotcb/util.py index 5d103b3..6585268 100644 --- a/src/hotcb/util.py +++ b/src/hotcb/util.py @@ -11,10 +11,17 @@ class FileCursor: """ Tracks incremental read state for an append-only file (JSONL). + + ``last_size`` stores the file size at the time of the last read, + enabling proper truncation detection: if the file shrinks, the + cursor resets and the ``truncated`` flag is set so callers can + distinguish "new file" from "appended data". """ path: str offset: int = 0 + last_size: int = 0 + truncated: bool = False def ensure_dir(path: str) -> None: @@ -35,15 +42,31 @@ def safe_mtime(path: str) -> float: def read_new_jsonl(cursor: FileCursor, max_lines: int = 10_000) -> Tuple[List[dict], FileCursor]: """ Read newly appended JSONL records starting from cursor.offset. + + Handles file truncation safely: if the file shrinks (e.g. ``open(f, 'w')`` + clears it), the cursor resets to byte 0 and reads the new content. The + returned cursor has ``truncated=True`` so callers can distinguish a fresh + file from an append to an existing one. + + When the file is *overwritten* (truncated then written with fewer bytes + than before), the cursor detects the shrink via ``last_size`` and resets + to 0 — reading only the new content, not stale leftovers. """ if not os.path.exists(cursor.path): return [], cursor - # Detect file truncation (reset) file_size = os.path.getsize(cursor.path) effective_offset = cursor.offset - if file_size < effective_offset: - effective_offset = 0 # file was truncated, start from beginning + was_truncated = False + + # Detect truncation: file shrank since our last read + if file_size < cursor.last_size: + effective_offset = 0 + was_truncated = True + # Also catch: cursor past EOF (file overwritten with shorter content) + elif file_size < effective_offset: + effective_offset = 0 + was_truncated = True out: List[dict] = [] with open(cursor.path, "r", encoding="utf-8") as f: @@ -60,7 +83,12 @@ def read_new_jsonl(cursor: FileCursor, max_lines: int = 10_000) -> Tuple[List[di except json.JSONDecodeError: continue new_offset = f.tell() - return out, FileCursor(path=cursor.path, offset=new_offset) + return out, FileCursor( + path=cursor.path, + offset=new_offset, + last_size=file_size, + truncated=was_truncated, + ) def append_jsonl(path: str, obj: dict) -> None: From 61bb2f449e1345c648cbd6cdf4267e2943baaea6 Mon Sep 17 00:00:00 2001 From: sidphbot Date: Sun, 15 Mar 2026 13:20:45 +0100 Subject: [PATCH 10/11] refactor --- .coverage | Bin 778240 -> 778240 bytes src/hotcb/adapters/lightning.py | 2 +- src/hotcb/kernel.py | 28 ++++ src/hotcb/server/app.py | 26 +++- src/hotcb/server/config.py | 173 ++++++++++++++++++++++ src/hotcb/server/static/css/dashboard.css | 5 +- src/hotcb/server/static/js/charts.js | 92 +++++++++--- src/hotcb/server/static/js/controls.js | 46 +++++- src/hotcb/server/static/js/init.js | 3 +- src/hotcb/server/static/js/panels.js | 12 +- src/hotcb/server/static/js/websocket.js | 43 ++++-- src/hotcb/tests/test_dashboard_config.py | 19 ++- 12 files changed, 392 insertions(+), 57 deletions(-) diff --git a/.coverage b/.coverage index a15f817036113add3e78dfcd10a738225b5b8715..4f963941e42e38f73538f8dd4167927b26488b30 100644 GIT binary patch literal 778240 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

l0i5#Jc2?7;Y{}k>KKGG%_Asd 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%0D}Nq;h?$Z~&y~?jaEniN!R}FHV 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

  • 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%0D!NyEv9k|CH_tu&l`C=p76q~YX4@eo=)YNg@i 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
    aDE80O*Fau4i@S7->flgdC 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 diff --git a/src/hotcb/adapters/lightning.py b/src/hotcb/adapters/lightning.py index beaaeff..cce3920 100644 --- a/src/hotcb/adapters/lightning.py +++ b/src/hotcb/adapters/lightning.py @@ -239,7 +239,7 @@ def _log(s: str) -> None: env: Dict[str, Any] = { "framework": "lightning", "phase": phase, - "step": int(getattr(trainer, "global_step", 0)), + "step": int(getattr(pl_module, "_opt_step_count", 0) or getattr(trainer, "global_step", 0)), "epoch": int(getattr(trainer, "current_epoch", 0)), "model": pl_module, "trainer": trainer, diff --git a/src/hotcb/kernel.py b/src/hotcb/kernel.py index ca11b64..6ac9823 100644 --- a/src/hotcb/kernel.py +++ b/src/hotcb/kernel.py @@ -1,5 +1,6 @@ from __future__ import annotations +import json import os import time import traceback as tb_mod @@ -66,6 +67,7 @@ def __init__( self._cmd_cursor = FileCursor(path=self.commands_path, offset=0) self._actuators: Dict[str, BaseActuator] = {} + self._actuators_written = False # track if we've written the actuator description file self.modules: Dict[str, object] = { "cb": CallbackModule(auto_disable_on_error=auto_disable_on_error, log_path=self.log_path, source_capture_dir=self.sources_dir), @@ -100,6 +102,24 @@ def get_actuator(self, name: str) -> Optional[BaseActuator]: def list_actuators(self) -> Dict[str, BaseActuator]: return dict(self._actuators) + def _write_actuator_descriptions(self) -> None: + """Write actuator descriptions to hotcb.actuators.json for server consumption. + + This bridges the MutableState from the training process to the dashboard + server via filesystem IPC. Called once after first apply() and whenever + actuators change. + """ + if self._mutable_state is None: + return + try: + descs = self._mutable_state.describe_all() + path = os.path.join(self.run_dir, "hotcb.actuators.json") + with open(path, "w", encoding="utf-8") as f: + json.dump({"controls": descs}, f) + self._actuators_written = True + except Exception: + pass # never crash training + def _should_poll(self) -> bool: if self.poll_interval_sec > 0.0: now = time.time() @@ -145,6 +165,12 @@ def apply(self, env: Dict[str, object], events: List[str]) -> None: events = events or [] default_event = events[0] if events else "unknown" + # Write actuator descriptions on first step so the dashboard can discover controls + if not self._actuators_written and self._mutable_state is not None: + if self._step_counter == 1: + self._mutable_state.initialize(env) + self._write_actuator_descriptions() + pending: List[Tuple[HotOp, str]] = [] if self._should_poll(): self._reload_freeze() @@ -326,6 +352,8 @@ def _apply_default_stream(self, op: HotOp, env: dict, event: str, step: int) -> payload=applied_params, env=env, notes="; ".join(errors) if errors else None, ) + # Update actuator file so dashboard sees new current values + self._write_actuator_descriptions() elif errors: self._write_ledger( op, event, step, decision="failed", diff --git a/src/hotcb/server/app.py b/src/hotcb/server/app.py index f658e1e..588efe2 100644 --- a/src/hotcb/server/app.py +++ b/src/hotcb/server/app.py @@ -353,14 +353,22 @@ async def get_config(): Controls are populated live from MutableState when available, falling back to reconstructed controls from the applied ledger. """ - from .config import controls_from_mutable_state, controls_from_applied_ledger + from .config import controls_from_mutable_state, controls_from_actuator_file, controls_from_applied_ledger, controls_from_capabilities, default_optimizer_controls d = app.state.config.to_dict() ms = getattr(app.state, "mutable_state", None) if ms is not None: d["controls"] = controls_from_mutable_state(ms) elif not d.get("controls"): - d["controls"] = controls_from_applied_ledger(app.state.config.run_dir) + rd = app.state.config.run_dir + ctrls = controls_from_actuator_file(rd) + if not ctrls: + ctrls = controls_from_applied_ledger(rd) + if not ctrls: + ctrls = controls_from_capabilities(rd) + if not ctrls: + ctrls = default_optimizer_controls() + d["controls"] = ctrls return d @app.get("/api/status") @@ -586,10 +594,18 @@ async def get_control_state(): "cb": "cb" in modules_seen, } - # Live controls from MutableState, or fallback to applied ledger - from .config import controls_from_mutable_state, controls_from_applied_ledger + # Live controls from MutableState, actuator file, applied ledger, or capabilities + from .config import controls_from_mutable_state, controls_from_actuator_file, controls_from_applied_ledger, controls_from_capabilities, default_optimizer_controls live_controls = controls_from_mutable_state(ms) - state["controls"] = live_controls if live_controls else controls_from_applied_ledger(rd) + if not live_controls: + live_controls = controls_from_actuator_file(rd) + if not live_controls: + live_controls = controls_from_applied_ledger(rd) + if not live_controls: + live_controls = controls_from_capabilities(rd) + if not live_controls: + live_controls = default_optimizer_controls() + state["controls"] = live_controls # External training detection is_launcher = training_launcher.running or bool( diff --git a/src/hotcb/server/config.py b/src/hotcb/server/config.py index 1af1add..855d203 100644 --- a/src/hotcb/server/config.py +++ b/src/hotcb/server/config.py @@ -266,6 +266,27 @@ def controls_from_mutable_state(ms: Any) -> list: return [] +def controls_from_actuator_file(run_dir: str) -> list: + """Read actuator descriptions from hotcb.actuators.json. + + The kernel writes this file on startup and after mutations so the + dashboard server can discover controls without a live MutableState + reference (filesystem IPC). + """ + import json + import os + + path = os.path.join(run_dir, "hotcb.actuators.json") + if not os.path.exists(path): + return [] + try: + with open(path, "r", encoding="utf-8") as f: + data = json.load(f) + return data.get("controls", []) + except Exception: + return [] + + def controls_from_applied_ledger(run_dir: str) -> list: """Reconstruct control specs from applied JSONL when MutableState is unavailable. @@ -378,6 +399,158 @@ def controls_from_applied_ledger(run_dir: str) -> list: return controls +def controls_from_capabilities(run_dir: str) -> list: + """Generate controls from hotcb.capabilities.json mutable_state_keys. + + Used when an external training (Lightning/HF) registered mutable state + but didn't write hotcb.actuators.json (e.g., older kernel or adapter). + Infers control types from key names (lambda/weight → float, ramp/lr → log_float). + Also reads latest metrics for current values. + """ + import json + + caps_path = os.path.join(run_dir, "hotcb.capabilities.json") + if not os.path.exists(caps_path): + return [] + try: + with open(caps_path, "r", encoding="utf-8") as f: + caps = json.load(f) + except Exception: + return [] + + keys = caps.get("mutable_state_keys", []) + if not keys: + return [] + + # Read latest metrics for current values + latest_metrics: dict = {} + metrics_path = os.path.join(run_dir, "hotcb.metrics.jsonl") + if os.path.exists(metrics_path): + try: + with open(metrics_path, "rb") as f: + f.seek(max(0, os.path.getsize(metrics_path) - 4096)) + tail = f.read().decode("utf-8", errors="replace") + for line in tail.strip().splitlines(): + line = line.strip() + if not line: + continue + try: + rec = json.loads(line) + latest_metrics.update(rec.get("metrics", {})) + except json.JSONDecodeError: + pass + except Exception: + pass + + # Detect optimizer names for lr controls + opt_names = caps.get("optimizer_names", []) + + controls = [] + + # Add lr controls per optimizer + for i, opt_name in enumerate(opt_names): + key = "lr" if i == 0 else f"lr_{i}" + current = latest_metrics.get(key, latest_metrics.get("lr", 1e-3)) + controls.append({ + "param_key": key, + "type": "log_float", + "label": f"lr ({opt_name})" if len(opt_names) > 1 else "lr", + "group": "optimizer", + "min": 1e-7, + "max": 1.0, + "step": 0.01, + "log_base": 10, + "choices": None, + "current": current, + "state": "untouched", + }) + + # Add mutable state keys + for key in keys: + current = latest_metrics.get(key, 1.0) + # Infer type from name + is_log = key.startswith("lr") or key == "weight_decay" or key == "wd" + is_ramp = key.startswith("ramp_") or key.endswith("_end") or key.endswith("_start") + + if is_log: + controls.append({ + "param_key": key, + "type": "log_float", + "label": key, + "group": "optimizer", + "min": 1e-7, + "max": 1.0, + "step": 0.01, + "log_base": 10, + "choices": None, + "current": current, + "state": "untouched", + }) + elif is_ramp: + controls.append({ + "param_key": key, + "type": "float", + "label": key, + "group": "scheduler", + "min": 0, + "max": max(5000, current * 2) if isinstance(current, (int, float)) else 5000, + "step": 1, + "log_base": None, + "choices": None, + "current": current, + "state": "untouched", + }) + else: + # lambda_*, aug_*, or other float params + controls.append({ + "param_key": key, + "type": "float", + "label": key, + "group": "loss" if key.startswith("lambda") else "training", + "min": 0.0, + "max": max(10.0, current * 3) if isinstance(current, (int, float)) else 10.0, + "step": 0.01, + "log_base": None, + "choices": None, + "current": current, + "state": "untouched", + }) + + return controls + + +def default_optimizer_controls() -> list: + """Return default optimizer controls as a last-resort fallback.""" + return [ + { + "param_key": "lr", + "type": "log_float", + "label": "lr", + "group": "optimizer", + "min": 1e-7, + "max": 1.0, + "step": 0.01, + "log_base": 10, + "choices": None, + "current": 1e-3, + "state": "untouched", + }, + { + "param_key": "weight_decay", + "type": "log_float", + "label": "weight_decay", + "group": "optimizer", + "min": 1e-7, + "max": 1.0, + "step": 0.01, + "log_base": 10, + "choices": None, + "current": 1e-4, + "state": "untouched", + }, + ] + + # --------------------------------------------------------------------------- # YAML loader — optional pyyaml dependency # --------------------------------------------------------------------------- diff --git a/src/hotcb/server/static/css/dashboard.css b/src/hotcb/server/static/css/dashboard.css index b415a9c..8a0b5c0 100644 --- a/src/hotcb/server/static/css/dashboard.css +++ b/src/hotcb/server/static/css/dashboard.css @@ -262,8 +262,11 @@ select.header-select:focus-visible { outline: 2px solid var(--accent); outline-o .metric-dropdown-name { flex: 1; overflow: hidden; text-overflow: ellipsis; white-space: nowrap; } .metric-pin-icon { font-size: 10px; flex-shrink: 0; margin-left: 2px; - opacity: 0.8; cursor: pointer; + opacity: 0.25; cursor: pointer; transition: opacity 0.15s; } +.metric-pin-icon.pinned { opacity: 0.9; } +.metric-dropdown-item:hover .metric-pin-icon { opacity: 0.6; } +.metric-dropdown-item:hover .metric-pin-icon.pinned { opacity: 1; } .metric-dropdown-note { padding: 4px 10px; font-size: 9px; color: var(--text-muted); font-style: italic; font-family: var(--font-mono); diff --git a/src/hotcb/server/static/js/charts.js b/src/hotcb/server/static/js/charts.js index 41b9b66..34804ca 100644 --- a/src/hotcb/server/static/js/charts.js +++ b/src/hotcb/server/static/js/charts.js @@ -13,7 +13,9 @@ var _highlightedMutationStep = null; var _chartStepRange = 'all'; // Y-axis normalization: when enabled, each metric is normalized to [0,1] +// Auto-detected on first data: true if metrics have divergent scales var _chartNormalize = false; +var _chartNormalizeAuto = true; // auto-detection active until user manually toggles // Max points to render per dataset (avoids sluggish charts on very long runs) var _maxRenderPoints = (S.config && S.config.chart) ? S.config.chart.max_render_points : 2000; @@ -375,11 +377,16 @@ function createMetricsChart() { tooltip: { backgroundColor: getComputedStyle(document.documentElement).getPropertyValue('--bg-card').trim() || '#121c2b', borderColor: getComputedStyle(document.documentElement).getPropertyValue('--border-bright').trim() || '#2a4060', borderWidth:1, titleFont:{family:'JetBrains Mono',size:11}, bodyFont:{family:'JetBrains Mono',size:11}, - usePointStyle: true, boxWidth: 8, boxHeight: 8, - intersect: false, mode: 'nearest', axis: 'x', position: 'rightOfCursor', - itemSort: function(a, b, data) { + usePointStyle: false, boxWidth: 12, boxHeight: 2, + intersect: false, mode: 'index', axis: 'x', position: 'rightOfCursor', + filter: function(item) { + // Hide internal datasets (confidence bands, etc.) + var label = item.dataset.label || ''; + return !label.startsWith('_'); + }, + itemSort: function(a, b) { // Sort tooltip items by Y-pixel distance to cursor (TensorBoard-style) - var chart = a.chart || (data && data.chart); + var chart = a.chart; var cursorY = 0; if (chart && chart._lastEvent) cursorY = chart._lastEvent.y; var ay = a.element ? a.element.y : 0; @@ -390,15 +397,16 @@ function createMetricsChart() { label: function(ctx) { var ds = ctx.dataset; var label = ds.label || ''; - // Skip internal datasets (confidence bands) if (label.startsWith('_')) return null; var rawY = ctx.parsed.y; + // Color swatch via dataset borderColor + var color = ds.borderColor || '#fff'; + var prefix = ''; // When normalized, show both normalized and raw values if (_chartNormalize) { var metricName = label.replace(/ forecast$/, '').replace(/ post-change$/, ''); var rawPts = S.metricsData[metricName]; if (rawPts && rawPts.length > 0) { - // Find raw value at nearest step var step = ctx.parsed.x; var rawVal = null; for (var i = 0; i < rawPts.length; i++) { @@ -406,16 +414,16 @@ function createMetricsChart() { rawVal = rawPts[i].value; } if (rawVal !== null) { - return label + ': ' + fmtNum(rawVal) + ' (norm: ' + rawY.toFixed(3) + ')'; + return ' ' + label + ': ' + fmtNum(rawVal); } } } - return label + ': ' + fmtNum(rawY); + return ' ' + label + ': ' + fmtNum(rawY); } } } }, - interaction: { mode: 'nearest', axis: 'x', intersect: false }, + interaction: { mode: 'index', axis: 'x', intersect: false }, elements: { point: {radius:0, hoverRadius:5, hitRadius:10}, line: {borderWidth:1.5, tension: (S.config && S.config.chart) ? S.config.chart.line_tension : 0.15} } } }); @@ -423,6 +431,44 @@ function createMetricsChart() { function updateChart() { if (!S.chartInstance) return; + + // Auto-detect normalization need: if enabled metrics span > 100x range, auto-enable + if (_chartNormalizeAuto) { + var globalMin = Infinity, globalMax = -Infinity; + var metricRanges = []; + S.metricNames.forEach(function(name) { + if (!_metricToggleState[name]) return; + var pts = S.metricsData[name] || []; + if (pts.length < 2) return; + var mn = Infinity, mx = -Infinity; + for (var i = Math.max(0, pts.length - 100); i < pts.length; i++) { + if (pts[i].value < mn) mn = pts[i].value; + if (pts[i].value > mx) mx = pts[i].value; + } + metricRanges.push({min: mn, max: mx}); + if (mn < globalMin) globalMin = mn; + if (mx > globalMax) globalMax = mx; + }); + if (metricRanges.length >= 2) { + // Check if the max range across metrics is > 100x the min range + var spans = metricRanges.map(function(r) { return Math.abs(r.max - r.min) || 1e-10; }); + var maxSpan = Math.max.apply(null, spans); + var minSpan = Math.min.apply(null, spans); + var needsNorm = (maxSpan / minSpan > 50) || (Math.abs(globalMax - globalMin) > 0 && ( + metricRanges.some(function(r) { + var mid = (r.max + r.min) / 2; + var halfRange = (globalMax - globalMin) / 2; + return halfRange > 0 && Math.abs(r.max - r.min) / halfRange < 0.01; + }) + )); + if (needsNorm !== _chartNormalize) { + _chartNormalize = needsNorm; + var normBtn = document.getElementById('btnNormalize'); + if (normBtn) normBtn.classList.toggle('btn-accent', _chartNormalize); + } + } + } + var datasets = []; var enabled = new Set(); S.metricNames.forEach(function(name) { @@ -452,8 +498,10 @@ function updateChart() { ? function(v) { return (v - metricMin) / (metricMax - metricMin); } : function(v) { return v; }; - // Live data line (LTTB-downsampled for rendering performance) + // Live data line — sort by step to prevent backward line connectors + // (validation records can appear between training steps with lower step numbers) var chartPts = pts.map(function(p) { return {x: p.step, y: _normFn(p.value)}; }); + chartPts.sort(function(a, b) { return a.x - b.x; }); chartPts = _lttbDownsample(chartPts, _maxRenderPoints); var _cfgTension = (S.config && S.config.chart) ? S.config.chart.line_tension : 0.15; var _cfgForecastDash = (S.config && S.config.chart) ? S.config.chart.forecast_dash : [6, 3]; @@ -890,19 +938,17 @@ function _renderMetricDropdown(container) { row.appendChild(dot); row.appendChild(label); - // Pin indicator — visible icon when metric is pinned - if (isPinned) { - var pinIcon = document.createElement('span'); - pinIcon.className = 'metric-pin-icon'; - pinIcon.textContent = '\u{1F4CC}'; - pinIcon.title = 'Pinned \u2014 double-click dot to unpin'; - pinIcon.addEventListener('click', function(e) { - e.stopPropagation(); - toggleMetricCard(name); - _renderMetricDropdown(container); - }); - row.appendChild(pinIcon); - } + // Pin button — always visible, toggles pinned state + var pinIcon = document.createElement('span'); + pinIcon.className = 'metric-pin-icon' + (isPinned ? ' pinned' : ''); + pinIcon.textContent = '\u{1F4CC}'; + pinIcon.title = isPinned ? 'Unpin metric' : 'Pin metric (opens mini card)'; + pinIcon.addEventListener('click', function(e) { + e.stopPropagation(); + toggleMetricCard(name); + _renderMetricDropdown(container); + }); + row.appendChild(pinIcon); list.appendChild(row); }); diff --git a/src/hotcb/server/static/js/controls.js b/src/hotcb/server/static/js/controls.js index d5cf95b..324b27b 100644 --- a/src/hotcb/server/static/js/controls.js +++ b/src/hotcb/server/static/js/controls.js @@ -395,9 +395,25 @@ function initControls() { $('#btnScheduleSubmit').addEventListener('click', async function() { var step = parseInt($('#schedStep').value); if (!step || step <= 0) return; - var lr = lrFromSlider($('#knobLr').value); - var wd = Math.pow(10, parseFloat($('#knobWd').value)); - await api('POST', '/api/schedule', {at_step: step, module: 'opt', op: 'set_params', params: {lr: lr, weight_decay: wd}}); + // Collect current values from all dynamic controls + var panel = document.getElementById('knobPanel'); + var params = {}; + if (panel) { + panel.querySelectorAll('.knob-row[data-param]').forEach(function(row) { + var param = row.dataset.param; + var val = _readKnobValue(row); + if (val !== undefined) params[param] = val; + }); + } + if (Object.keys(params).length === 0) { + alert('No control values to schedule. Adjust controls first.'); + return; + } + // Determine module from first param's group + var firstKey = Object.keys(params)[0]; + var spec = _getControlSpec(firstKey); + var module = (spec && spec.group === 'loss') ? 'loss' : 'opt'; + await api('POST', '/api/schedule', {at_step: step, module: module, op: 'set_params', params: params}); closeModal('modalSchedule'); }); @@ -600,6 +616,30 @@ function initControls() { // Hydrate controls from server state (works for both launcher and external training) hydrateControlsFromServer().then(function() { _snapshotAppliedKnobs(); }); + + // Poll for controls periodically — actuator file may appear after training starts. + // Keep polling until we get MORE controls than the defaults (lr + weight_decay = 2). + var _controlsPollCount = 0; + var _controlsPollMax = 30; // stop after ~90 seconds + setInterval(function() { + _controlsPollCount++; + if (_controlsPollCount > _controlsPollMax) return; + var currentCount = (S.config && S.config.controls) ? S.config.controls.length : 0; + api('GET', '/api/state/controls').then(function(state) { + if (!state || !state.controls || !state.controls.length) return; + // Only rebuild if we got MORE controls or controls changed + if (state.controls.length <= currentCount && currentCount > 2) return; + if (state.controls.length > currentCount || currentCount <= 2) { + buildControls(state.controls); + if (S.config) S.config.controls = state.controls; + if (state.last_opt_params) syncSlidersFromApplied(state.last_opt_params); + if (state.last_loss_params) syncSlidersFromApplied(state.last_loss_params); + _snapshotAppliedKnobs(); + // Stop polling once we have real controls (more than defaults) + if (state.controls.length > 2) _controlsPollCount = _controlsPollMax + 1; + } + }); + }, 3000); } /* ================================================================ */ diff --git a/src/hotcb/server/static/js/init.js b/src/hotcb/server/static/js/init.js index fdc8633..659a349 100644 --- a/src/hotcb/server/static/js/init.js +++ b/src/hotcb/server/static/js/init.js @@ -180,10 +180,11 @@ async function initialLoad() { initCompare(); createMetricsChart(); initStepRangeControls(); - // Normalize toggle + // Normalize toggle — manual click disables auto-detection var normBtn = document.getElementById('btnNormalize'); if (normBtn) { normBtn.addEventListener('click', function() { + _chartNormalizeAuto = false; // user took control _chartNormalize = !_chartNormalize; normBtn.classList.toggle('btn-accent', _chartNormalize); updateChart(); diff --git a/src/hotcb/server/static/js/panels.js b/src/hotcb/server/static/js/panels.js index 33927d4..8b12f64 100644 --- a/src/hotcb/server/static/js/panels.js +++ b/src/hotcb/server/static/js/panels.js @@ -1305,8 +1305,12 @@ function _rebuildCompareChart() { tooltip: { backgroundColor:'#121c2b', borderColor:'#2a4060', borderWidth:1, titleFont:{family:'JetBrains Mono',size:11}, bodyFont:{family:'JetBrains Mono',size:10}, - usePointStyle: true, boxWidth: 8, boxHeight: 8, - intersect: false, mode: 'nearest', axis: 'x', + usePointStyle: false, boxWidth: 12, boxHeight: 2, + intersect: false, mode: 'index', axis: 'x', + filter: function(item) { + var label = item.dataset.label || ''; + return label.indexOf('mutations') === -1; + }, itemSort: function(a, b) { var chart = a.chart; var cursorY = (chart && chart._lastEvent) ? chart._lastEvent.y : 0; @@ -1339,9 +1343,9 @@ function _rebuildCompareChart() { var ds = ctx.dataset; var val = typeof ctx.parsed.y === 'number' ? ctx.parsed.y.toPrecision(5) : ctx.parsed.y; if (_compareNormalize && raw && raw._rawY !== undefined) { - return ds.label + ': ' + (typeof fmtNum === 'function' ? fmtNum(raw._rawY) : raw._rawY.toPrecision(5)) + ' (norm: ' + parseFloat(val).toFixed(3) + ')'; + return ' ' + ds.label + ': ' + fmtNum(raw._rawY); } - return ds.label + ': ' + val; + return ' ' + ds.label + ': ' + val; } } }, diff --git a/src/hotcb/server/static/js/websocket.js b/src/hotcb/server/static/js/websocket.js index 982a45f..0858456 100644 --- a/src/hotcb/server/static/js/websocket.js +++ b/src/hotcb/server/static/js/websocket.js @@ -45,6 +45,32 @@ function connectWS() { if (ch === 'metrics') { if (typeof dismissChartWaiting === 'function') dismissChartWaiting(); + // Skip WS initial burst for metrics — REST initialLoad() already fetched + // the full history (50k records). WS burst is only ~500 records and would + // cause duplicates / data loss. Only accept live incremental updates. + if (msg.initial) { + // Just update _lastSeenMaxStep from the burst so run-reset detection works + if (data.length > 0) { + var lastRec = data[data.length - 1]; + var bStep = lastRec.step || 0; + if (bStep > _lastSeenMaxStep) _lastSeenMaxStep = bStep; + } + // Sync sliders from burst data if not yet done + if (!_slidersInitialized && data.length > 0) { + _slidersInitialized = true; + var last = data[data.length - 1]; + var lm = last.metrics || {}; + var syncObj = {}; + var specs = (S.config && S.config.controls) || []; + specs.forEach(function(spec) { + if (lm[spec.param_key] !== undefined) syncObj[spec.param_key] = lm[spec.param_key]; + }); + if (lm.lr && lm.lr > 0) syncObj.lr = lm.lr; + if (lm.weight_decay && lm.weight_decay > 0) syncObj.weight_decay = lm.weight_decay; + if (Object.keys(syncObj).length > 0) syncSlidersFromApplied(syncObj); + } + return; // skip adding initial burst data — already loaded via REST + } // Detect run reset: if incoming steps jump backwards, clear stale state if (data.length > 0) { var firstIncoming = data[0].step || 0; @@ -75,9 +101,10 @@ function connectWS() { if (typeof value !== 'number') return; S.metricNames.add(name); if (!S.metricsData[name]) S.metricsData[name] = []; - S.metricsData[name].push({step: step, value: value}); - // No client-side cap — keep all points. - // Downsampling for rendering happens in updateChart(). + // Skip duplicate steps (can happen with REST + WS initial burst overlap) + var arr = S.metricsData[name]; + if (arr.length > 0 && arr[arr.length - 1].step >= step) return; + arr.push({step: step, value: value}); }); }); if (S.metricNames.size !== prevSize) { @@ -87,16 +114,6 @@ function connectWS() { } updateChart(); computeHealth(); - // Sync slider knobs from initial metrics (once per training session) - if (!_slidersInitialized && data.length > 0) { - _slidersInitialized = true; - var last = data[data.length - 1]; - var lm = last.metrics || {}; - var syncObj = {}; - if (lm.lr && lm.lr > 0) syncObj.lr = lm.lr; - if (lm.weight_decay && lm.weight_decay > 0) syncObj.weight_decay = lm.weight_decay; - if (Object.keys(syncObj).length > 0) syncSlidersFromApplied(syncObj); - } // Update step counter var maxStep = 0; S.metricNames.forEach(function(name) { diff --git a/src/hotcb/tests/test_dashboard_config.py b/src/hotcb/tests/test_dashboard_config.py index d8d57f1..26d414c 100644 --- a/src/hotcb/tests/test_dashboard_config.py +++ b/src/hotcb/tests/test_dashboard_config.py @@ -323,12 +323,16 @@ def test_config_controls_from_mutable_state(self, client_with_ms): assert "group" in c assert "current" in c - def test_config_controls_empty_when_no_mutable_state(self, client_no_ms): - """No MutableState -> controls is [].""" + def test_config_controls_defaults_when_no_mutable_state(self, client_no_ms): + """No MutableState -> default optimizer controls are returned.""" r = client_no_ms.get("/api/config") assert r.status_code == 200 data = r.json() - assert data["controls"] == [] + # Should have default lr and weight_decay controls + assert len(data["controls"]) >= 2 + keys = [c["param_key"] for c in data["controls"]] + assert "lr" in keys + assert "weight_decay" in keys def test_config_controls_types_match_actuators( self, tmp_run_dir, _make_mutable_state @@ -401,12 +405,15 @@ def test_control_state_endpoint_uses_mutable_state(self, client_with_ms): assert val_map["lr"] == pytest.approx(1e-3) assert val_map["recon_w"] == pytest.approx(1.0) - def test_control_state_endpoint_empty_when_no_ms(self, client_no_ms): - """GET /api/state/controls returns empty controls when no MutableState.""" + def test_control_state_endpoint_defaults_when_no_ms(self, client_no_ms): + """GET /api/state/controls returns default controls when no MutableState.""" r = client_no_ms.get("/api/state/controls") assert r.status_code == 200 data = r.json() - assert data["controls"] == [] + # Should have default lr and weight_decay controls + assert len(data["controls"]) >= 2 + keys = [c["param_key"] for c in data["controls"]] + assert "lr" in keys class TestControlsFromMutableStateFunction: From 0fc86c27314bb48143541c7e5b0ab08da30a77db Mon Sep 17 00:00:00 2001 From: sidphbot Date: Sun, 15 Mar 2026 13:21:58 +0100 Subject: [PATCH 11/11] refactor --- hottune_upgrade_plan.md | 1187 --------------------------------------- 1 file changed, 1187 deletions(-) delete mode 100644 hottune_upgrade_plan.md diff --git a/hottune_upgrade_plan.md b/hottune_upgrade_plan.md deleted file mode 100644 index 73d4b25..0000000 --- a/hottune_upgrade_plan.md +++ /dev/null @@ -1,1187 +0,0 @@ -Your current architecture already supports the key runtime pieces: the Lightning adapter injects `optimizer`, `scheduler`, and optional `mutable_state` into `env`, and the kernel already owns run paths, polling, recipe replay, ledger writing, and module dispatch for `cb`, `opt`, and `loss`. That means `hottune` can fit naturally as another kernel module rather than a separate repo. - -# **1\. Objective** - -`hottune` is an **optional hotcb module** that performs **online, constrained, Bayesian-guided hyperparameter adaptation during training**, with: - -* safe-point application only - -* bounded search spaces - -* recipe persistence across runs - -* rollback or conservative acceptance logic - -* framework-agnostic operation through adapter-provided metric access and kernel-owned actuators - -This is **not** intended to replace offline HPO entirely. It is meant to cover the gap between: - -* static recipes - -* full-run sweeps - -* manual mid-run tweaking - -The core value proposition is: - -**observe → propose bounded mutation → apply at safe point → evaluate over horizon → accept/reject → persist learning into next recipe** - -# **2\. Non-goals** - -Version 1 should **not** try to do all of the following: - -* full RL-based controller training - -* arbitrary optimizer replacement mid-run - -* automatic model architecture changes - -* unbounded mutation of user code - -* opaque “AI decides everything” behavior - -* required dependencies in base install - -# **3\. Position in the existing hotcb architecture** - -## **3.1 Existing state** - -Your kernel currently: - -* manages `run_dir` - -* tails command and yaml control planes - -* writes an applied ledger - -* owns recipe/freeze/replay behavior - -* dispatches ops to modules `cb`, `opt`, and `loss` through `apply_op` - -* dispatches callback events afterward. - -Your Lightning adapter currently: - -* builds `env` - -* exposes framework, phase, step, epoch, model, trainer, log - -* exposes `optimizer`, `scheduler`, and optional `mutable_state` - -* normalizes `loss` from outputs - -* calls `kernel.apply(env, events=...)`. - -That is already enough to support `hottune` with **minimal architectural change**. - -## **3.2 New module placement** - -Add a new module under the kernel: - -* module key: `"tune"` - -* implementation: `HotTuneController` - -Kernel modules become: - -* `cb` - -* `opt` - -* `loss` - -* `tune` - -`hottune` should be **optional at runtime** and **cheap when unused**. - -# **4\. High-level architecture** - -`hottune` consists of five layers. - -## **4.1 Metric access layer** - -A standardized way for the adapter to expose metrics to the tuner. - -Required adapter addition: - -* `env["metric"] : Callable[[str, Any], Any]` - -This accessor should abstract away framework-specific storage. - -## **4.2 Actuation layer** - -A stable interface for applying mutations to live training state. - -Recommended ownership: - -* actuators are **registered into the kernel** - -* tuner interacts via kernel, not raw optimizer objects - -## **4.3 Policy/search layer** - -Responsible for choosing the next mutation. - -Initial strategy: - -* constrained Bayesian optimization / TPE-style proposal over mutation space - -* phase-aware priors - -* cooldowns and guardrails - -## **4.4 Evaluation layer** - -Measures whether a mutation helped over a short horizon. - -Outputs: - -* accepted - -* rejected - -* rolled back - -* ignored - -* blocked by safety - -## **4.5 Recipe evolution layer** - -Persists cross-run learning: - -* mutation success rates - -* phase-specific winning ranges - -* instability histories - -* default priors for future runs - -# **5\. Packaging and install model** - -Base package remains lightweight. - -Suggested extras: - -* `hotcb[tune]` → installs `optuna` and any tiny numerical deps - -* no hard requirement for tune deps in default install - -Suggested package structure: - -src/hotcb/ - adapters/ - modules/ - callback/ - hotopt/ - hotloss/ - hottune/ - \_\_init\_\_.py - controller.py - policy.py - search.py - constraints.py - evaluator.py - recipe.py - storage.py - state.py - schemas.py - events.py - actuators/ - \_\_init\_\_.py - base.py - optimizer.py - mutable\_state.py - kernel.py - -# **6\. Adapter contract** - -## **6.1 Required additions** - -Every supported adapter should expose: - -* `env["metric"]` - -* `env["kernel"]` - -The current Lightning adapter already exposes raw objects that are useful for actuation. - -## **6.2 Metric accessor behavior** - -Signature: - -metric(name: str, default: Any \= None) \-\> Any - -Expected behavior: - -* first check framework-native callback metrics - -* then logged metrics - -* then normalized env fields like `loss` - -* convert tensor scalars to plain Python numbers when possible - -* return `default` if missing - -## **6.3 Recommended standard metric names** - -Adapters should normalize toward a shared namespace where practical: - -* `train/loss` - -* `val/loss` - -* `val/score` - -* `lr` - -* `grad/norm` - -* `time/step_sec` - -* `system/gpu_mem_mb` - -* `system/cpu_mem_mb` - -Not every framework must supply every metric. - -# **7\. Kernel integration** - -## **7.1 New kernel responsibilities** - -The kernel should become the home for **actuator registration and safe mutation application**. - -Add methods: - -register\_actuator(name: str, actuator: BaseActuator) \-\> None -get\_actuator(name: str) \-\> BaseActuator | None -list\_actuators() \-\> dict\[str, BaseActuator\] -apply\_patch(name: str, patch: dict, \*, source: str, validate: bool \= True) \-\> ApplyResult -begin\_transaction(label: str | None \= None) \-\> MutationTransaction -write\_tune\_record(kind: str, payload: dict) \-\> None - -## **7.2 Why kernel ownership is preferred** - -Because the kernel already owns: - -* application procedures - -* run directory - -* recipe pathing - -* ledgers - -* policy/freeze context - -That makes it the correct control plane for tuned mutations as well. The existing kernel already centralizes module dispatch and applied logging, so this is a natural extension rather than a new subsystem. - -# **8\. Actuator system** - -## **8.1 Base actuator interface** - -class BaseActuator(Protocol): - name: str - - def snapshot(self) \-\> dict: ... - def validate(self, patch: dict) \-\> ValidationResult: ... - def apply(self, patch: dict) \-\> ApplyResult: ... - def restore(self, snapshot: dict) \-\> ApplyResult: ... - def describe\_space(self) \-\> dict: ... - -## **8.2 Required semantics** - -### **snapshot** - -Returns minimal state needed for rollback of actuator-managed parameters. - -### **validate** - -Checks: - -* types - -* bounds - -* allowed phase - -* cooldown - -* reversibility - -* user-declared constraints - -### **apply** - -Applies the mutation to the live object. - -### **restore** - -Best-effort rollback to prior actuator state. - -### **describe\_space** - -Returns the legal mutation schema for search and documentation. - -## **8.3 v1 reference actuators** - -### **Optimizer actuator** - -File: - -* `actuators/optimizer.py` - -Supports: - -* LR multiplicative change - -* LR absolute set - -* weight decay multiplicative change - -* beta1/beta2 small bounded changes if optimizer supports them - -* optional scheduler scale factor if supported - -Patch examples: - -{"op": "lr\_mult", "value": 0.85} -{"op": "lr\_set", "value": 0.0003} -{"op": "wd\_mult", "value": 1.15} -{"op": "betas\_set", "value": \[0.9, 0.98\]} - -### **Mutable-state actuator** - -File: - -* `actuators/mutable_state.py` - -Assumes mutable `mutable_state` dict-like structure. - -Supports: - -* scalar weight adjustments - -* bounded deltas - -* multiplicative changes - -* freezing a weight temporarily if user allows it - -Patch examples: - -{"op": "set", "key": "sp\_mse\_w", "value": 1.2} -{"op": "mult", "key": "grad\_w", "value": 1.1} -{"op": "delta", "key": "hf\_w", "value": \-0.05} - -## **8.4 User-defined actuators** - -Users may register custom actuators for: - -* augmentation knobs - -* EMA decay - -* teacher/student blend - -* freeze-unfreeze schedules - -* sampling curriculum - -# **9\. Tuning model** - -## **9.1 Tuning unit** - -The atomic unit is a **mutation**. - -A mutation is not “the whole config”. - It is a **bounded change** to one or a few live knobs. - -Example: - -* `opt.lr_mult = 0.85` - -* `loss.sp_mse_w += 0.1` - -* `loss.grad_w *= 1.1` - -## **9.2 Decision cycle** - -At a decision event: - -1. read current state and recent metrics - -2. determine if tuning is allowed now - -3. ask policy/search layer for next mutation - -4. validate mutation - -5. snapshot affected actuator state - -6. apply mutation - -7. create an evaluation segment - -8. after horizon, score outcome - -9. accept or restore snapshot - -10. write records - -11. update in-run recipe stats - -# **10\. Policy model** - -## **10.1 Initial policy choice** - -Use **Bayesian/TPE-style proposal over mutation space**, because that fits your stated preference and works well with sparse, expensive evaluations. - -Version 1 can implement this through Optuna-backed sampling internally. - -## **10.2 Context features** - -The proposal is conditioned on a compact context: - -* phase bin: early / mid / late - -* recent train loss slope - -* recent val metric slope - -* recent instability flags - -* recent gradient norm volatility - -* last accepted mutation type - -* cooldown state - -* mutation budget consumed - -## **10.3 Search dimensions** - -The search space should be over: - -* actuator choice - -* mutation op type - -* mutation magnitude - -* optional key within actuator - -This is better than searching raw full config vectors. - -## **10.4 Phase bins** - -Default bins: - -* early: first 20% - -* mid: 20–70% - -* late: final 30% - -Can be step-based or epoch-based. - -## **10.5 Cooldowns** - -Each mutation family has a cooldown to prevent thrashing. - -Example: - -* LR mutation cooldown: 2 decision windows - -* same loss key cooldown: 1 decision window - -* any mutation after reject: 1 window global cooldown - -# **11\. Constraints and safety** - -This is the most important part. - -## **11.1 Hard constraints** - -Each mutation candidate must pass: - -* key exists - -* actuator exists - -* patch type valid - -* bounds valid - -* phase allowed - -* cooldown satisfied - -* max cumulative drift not exceeded - -* risk class allowed in current mode - -## **11.2 Risk classes** - -Every mutation type gets a risk level: - -* `low`: LR small mult, loss scalar small delta - -* `medium`: beta changes, larger LR drops - -* `high`: optimizer family swap, freeze/unfreeze - -Version 1 supports only `low` and optionally some `medium`. - -## **11.3 Max drift constraints** - -Prevent recipe wandering too far from base config. - -Examples: - -* LR cannot move outside base\_lr × \[0.2, 3.0\] - -* weight decay outside base\_wd × \[0.25, 4.0\] forbidden - -* loss weights cannot exceed user bounds - -## **11.4 Stability blockers** - -Mutation blocked if: - -* NaN or inf detected recently - -* anomaly callback raised critical flag - -* gradient norm above emergency threshold - -* validation metric unavailable for too long - -* run in replay/freeze mode forbids tune mutations - -Kernel freeze/replay semantics already exist, so `tune` should respect them exactly like `cb`, `opt`, and `loss`. - -# **12\. Evaluation logic** - -## **12.1 Segment** - -A segment is the evaluation window following one mutation. - -Stored fields: - -* segment id - -* start step - -* end step - -* decision event - -* mutation id - -* pre metrics - -* post metrics - -* smoothed deltas - -* stability flags - -* accept/reject result - -## **12.2 Horizon** - -A horizon can be defined by: - -* fixed steps - -* fixed eval events - -* first validation epoch end after mutation - -Recommended v1: - -* evaluate on next validation epoch end - -* optionally require minimum train steps elapsed too - -## **12.3 Scoring** - -Each recipe defines an objective score. - -Generic default: - -score\_delta \= - primary\_metric\_gain - \- instability\_penalty - \- excessive\_train\_regression\_penalty - -For loss-minimization: - -* gain \= old best minus new best - -For maximize metric: - -* gain \= new minus old - -## **12.4 Acceptance** - -Accept if: - -* score\_delta \> epsilon - -* no blocker triggered - -* no severe regression in backup metric - -Otherwise: - -* reject and restore if rollback available - -* else mark rejected and enter cooldown - -## **12.5 Rollback modes** - -### **Full rollback** - -Actuator restore supported. - -### **Soft rollback** - -Only revert actuator-managed scalars. - -### **No rollback** - -Allowed only for low-risk mutations and only when explicitly configured. - -# **13\. Recipe system** - -## **13.1 Recipe levels** - -There are two recipe layers. - -### **Base recipe** - -User-authored defaults and legal bounds. - -### **Evolved recipe** - -Auto-updated priors and learned preferences from prior runs. - -## **13.2 Files** - -Add to run dir: - -* `hotcb.tune.recipe.yaml` - -* `hotcb.tune.mutations.jsonl` - -* `hotcb.tune.segments.jsonl` - -* `hotcb.tune.study.sqlite` or equivalent optional sampler state - -* `hotcb.tune.summary.json` - -## **13.3 Recipe contents** - -version: 1 -objective: - primary: val/alignment\_score - mode: max - backup\_metrics: - \- val/loss - \- grad/norm -phases: - early: {start\_frac: 0.0, end\_frac: 0.2} - mid: {start\_frac: 0.2, end\_frac: 0.7} - late: {start\_frac: 0.7, end\_frac: 1.0} -actuators: - opt: - enabled: true - mutations: - lr\_mult: - bounds: \[0.7, 1.2\] - prior\_center: 0.95 - cooldown: 2 - risk: low - wd\_mult: - bounds: \[0.8, 1.25\] - prior\_center: 1.0 - cooldown: 2 - risk: low - loss: - enabled: true - keys: - sp\_mse\_w: - mode: mult - bounds: \[0.5, 2.0\] - max\_step\_mult: 1.15 - cooldown: 1 - grad\_w: - mode: mult - bounds: \[0.3, 3.0\] - max\_step\_mult: 1.15 - cooldown: 1 -search: - algorithm: tpe - startup\_trials: 8 - candidate\_count: 24 - phase\_conditioned: true -acceptance: - epsilon: 0.001 - horizon: next\_val\_epoch\_end - rollback\_on\_reject: true -safety: - block\_on\_nan: true - block\_on\_anomaly: true - max\_global\_reject\_streak: 4 - -## **13.4 Evolution logic** - -After each run, update: - -* win rate per mutation family - -* mean accepted magnitude by phase - -* reject causes - -* instability correlation - -* priors for next run - -Keep it simple: - -* exponential moving averages - -* count-based confidence - -* no black-box magic in v1 - -# **14\. Storage formats** - -## **14.1 Mutations log** - -`hotcb.tune.mutations.jsonl` - -Each line: - -{ - "mutation\_id": "m\_00017", - "step": 14800, - "epoch": 4, - "phase\_bin": "mid", - "event": "val\_epoch\_end", - "actuator": "loss", - "patch": {"op": "mult", "key": "grad\_w", "value": 1.1}, - "proposal\_source": "tpe", - "context": { - "train\_loss\_slope": \-0.004, - "val\_score\_slope": 0.0003 - }, - "snapshot\_ref": "snap\_00017", - "status": "applied" -} - -## **14.2 Segments log** - -`hotcb.tune.segments.jsonl` - -{ - "segment\_id": "s\_00017", - "mutation\_id": "m\_00017", - "start\_step": 14800, - "end\_step": 15640, - "horizon\_type": "next\_val\_epoch\_end", - "pre": {"val/alignment\_score": 0.621, "val/loss": 0.842}, - "post": {"val/alignment\_score": 0.629, "val/loss": 0.835}, - "delta": {"val/alignment\_score": 0.008, "val/loss": \-0.007}, - "stability": {"nan": false, "anomaly": false, "grad\_spike": false}, - "decision": "accepted", - "score\_delta": 0.0074 -} - -## **14.3 Summary file** - -`hotcb.tune.summary.json` - Contains compact run summary for downstream tooling. - -# **15\. Events** - -## **15.1 New tuning-friendly events** - -You should add coarser events to adapters, especially Lightning: - -* `fit_start` - -* `train_batch_end` - -* `val_batch_end` - -* `val_epoch_end` - -* `run_end` - -Right now the Lightning adapter defaults to batch-end train and val events; for tuning, `val_epoch_end` is the key decision point. - -## **15.2 Tuner event usage** - -Recommended: - -* observe continuously if needed - -* propose/apply only at `val_epoch_end` - -* finalize/flush at `run_end` - -# **16\. CLI and control-plane integration** - -## **16.1 Philosophy** - -`hottune` should fit the same control-plane story as hotcb. - -## **16.2 New commands** - -Examples: - -hotcb tune enable -hotcb tune disable -hotcb tune status -hotcb tune set objective.primary=val/alignment\_score -hotcb tune set acceptance.epsilon=0.002 -hotcb tune set actuators.loss.keys.grad\_w.bounds=\[0.3,2.5\] -hotcb tune export-recipe \--out run\_dir/hotcb.tune.recipe.yaml -hotcb tune evolve-recipe \--from runs/\*/hotcb.tune.summary.json \--out recipe\_next.yaml - -## **16.3 YAML support** - -Allow a tune section in `hotcb.yaml` or a dedicated `hotcb.tune.yaml`. - -# **17\. Runtime modes** - -## **17.1 Off** - -No overhead beyond tiny module existence. - -## **17.2 Observe-only** - -No mutations; just collect windows and estimate what would have been proposed. - -Very useful for debugging. - -## **17.3 Suggest-only** - -Writes proposals to logs or control plane, but does not apply automatically. - -## **17.4 Active** - -Applies bounded mutations. - -## **17.5 Replay** - -Replays prior tune mutations from recipe, subject to existing kernel replay rules. - -# **18\. Module API** - -## **18.1 Controller class** - -`HotTuneController` - -Responsibilities: - -* maintain tune state - -* respond to control ops - -* handle event-driven proposal/evaluation - -* write tune storage artifacts - -## **18.2 Kernel interaction** - -Either: - -* `kernel.modules["tune"] = HotTuneController(...)` - or equivalent modular registration - -## **18.3 Public methods** - -class HotTuneController: - def apply\_op(self, op: HotOp, env: dict) \-\> ModuleResult: ... - def on\_event(self, event: str, env: dict) \-\> None: ... - def close(self, env: dict | None \= None) \-\> None: ... - -`on_event` can be called by kernel alongside callback dispatch, or the tune logic can be driven through `apply_op` plus an explicit event dispatch path. I would recommend explicit event dispatch support for tune, not only command application. - -# **19\. Search engine details** - -## **19.1 Default engine** - -Optuna TPE under optional dependency. - -## **19.2 Study organization** - -One study per run, optionally resumed from prior recipe stats. - -Optionally persist study database under run dir. - -## **19.3 Candidate generation** - -At each decision event: - -* generate several candidates - -* score feasibility through constraints - -* choose top candidate by sampler utility and novelty penalty - -## **19.4 Novelty penalty** - -Discourage repeating the same rejected mutation too quickly. - -# **20\. Failure behavior** - -## **20.1 If tune deps missing** - -Module self-disables and logs: - -* tuning unavailable - -* install `hotcb[tune]` - -## **20.2 If no metric accessor** - -Self-disable or fall back to observe-only with warning. - -## **20.3 If no actuators registered** - -Observe-only mode only. - -## **20.4 If mutation apply fails** - -* write failed mutation record - -* do not crash training - -* respect auto-disable-on-error if configured - -This mirrors hotcb’s existing defensive style around module apply and ledger logging. - -# **21\. Testing strategy** - -## **21.1 Unit tests** - -Test: - -* metric accessor normalization - -* actuator validate/apply/restore - -* phase binning - -* cooldown logic - -* acceptance logic - -* recipe evolve logic - -* serialization of logs - -## **21.2 Deterministic simulation tests** - -Build a fake trainer loop with synthetic objective surfaces. - -Scenarios: - -* convex improvement region - -* noisy plateaus - -* delayed reward - -* misleading short-term spikes - -* instability-triggered blocks - -## **21.3 Adapter integration tests** - -Lightning: - -* metric function works - -* optimizer actuator wiring works - -* mutable\_state actuator wiring works - -* val\_epoch\_end event emitted - -## **21.4 Failure tests** - -* missing metric names - -* actuator missing - -* rollback failure - -* optuna not installed - -* invalid recipe bounds - -## **21.5 Replay tests** - -Ensure tune records replay consistently with freeze/replay modes. - -# **22\. Documentation plan** - -Add docs sections for: - -* what `hottune` is - -* when to use it - -* required adapter contract - -* built-in actuators - -* recipe format - -* observe-only mode - -* safety model - -* how to evolve a recipe across runs - -* examples for Lightning / HF / bare torch - -# **23\. Recommended v1 scope** - -Keep v1 intentionally tight. - -## **23.1 Included** - -* metric accessor contract - -* kernel actuator registry - -* optimizer actuator - -* mutable-state actuator - -* TPE proposal - -* next-val-epoch acceptance - -* rollback for actuator-managed params - -* recipe persistence and evolution - -* observe-only mode - -## **23.2 Excluded from v1** - -* optimizer class swaps - -* arbitrary scheduler graph mutations - -* RL/meta-learning controller - -* multi-objective Pareto UI - -* distributed cross-worker shared tuner - -* automatic architecture edits - -# **24\. Minimal code changes required** - -## **24.1 Lightning adapter** - -Add: - -* `env["metric"]` - -* `env["kernel"]` - -* `on_validation_epoch_end` support to emit `val_epoch_end` - -The rest is already close enough because `optimizer`, `scheduler`, and `mutable_state` are already exposed. - -## **24.2 Kernel** - -Add: - -* actuator registry - -* tune artifact writers - -* tune event dispatch or module event hook - -* optional transaction wrapper - -## **24.3 New module** - -Add `hottune` controller and its storage/policy helpers. - -# **25\. Suggested roadmap** - -## **Phase 1** - -Infrastructure only: - -* metric accessor - -* kernel actuator registry - -* optimizer/loss actuators - -* observe-only tune module - -## **Phase 2** - -Active bounded tuning: - -* TPE proposal - -* acceptance logic - -* rollback - -* logs and summary - -## **Phase 3** - -Recipe evolution: - -* evolve priors - -* export/import recipes - -* compare runs - -## **Phase 4** - -Advanced: - -* extra actuators - -* suggest-only mode - -* replay of tune recipes - -* richer dashboards - -# **26\. Final recommendation** - -Yes, `hottune` should live **inside the single package**, as an **optional module** built around: - -* adapter-provided `metric()` - -* kernel-owned actuator registry - -* bounded mutation search - -* short-horizon evaluation - -* recipe evolution across runs -
  • 0*eHE)WEpdf1A6jKYX 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