Modal Research Exchange

you are

TriMuon vs dimuon-lite (Polar Express) for LoRA SFT on no_robots

Succeeded not supported agentcore Qwen/Qwen3.5-4B SFT 1.8 GPU-h budget started 5h ago 1h 24m 1 turn
Redo
Pick where the agent works.

On a throwaway Spindle fork (dimuon-lite Miles branch + TriMuon reimplemented from the spec), rank-32 LoRA SFT of Qwen3.5-4B on no_robots for 80 steps gave essentially identical held-out NLL for TriMuon and dimuon-lite (Polar Express) at every LR (|gap| <= 0.0011 nats; spec-grid best at 2e-4: PE 2.10079 vs TriMuon 2.10143), while TriMuon's median optimizer step was ~2.5x slower (0.40 s vs 0.16 s). Both arms' best LR stayed at the top edge of the grid even after symmetric extension to 3.2e-3 (PE 1.86566 vs TriMuon 1.86560), so by the edge rule the verdict is inconclusive, although neither the 0.01-nat margin nor the step-time criterion was met at any tested LR.

Not supported The agent found the evidence insufficient to show the claimed effect. Confidence is limited by: custom implementation correctness unverified; feasibility evidence incomplete; the run changed the experiment, so this judges the changed version. Reclassified from inconclusive under the direction-plus-confidence rule.

Result eval_nll_token_mean 12 kept from interim updates

pe mean 2.008 · 7 armstrimuon mean 2.009 · 7 arms
Lower is better · Axis from 1.8 to 2.3, not zero
armeval_nll_token_meanmedian_optimizer_step_s_serverfinal_train_lossstep1_update_norm
pe_lr0.00012.1790.15930.0074660.006425
pe_lr0.00022.1010.15930.0068680.01285
pe_lr5e-052.2020.15970.0076390.003212
pe_lr0.00041.9510.14710.0057540.0257
pe_lr0.00081.8890.12240.005350.0514
pe_lr0.00161.8710.12420.0052470.1028
pe_lr0.00321.8660.12890.0051940.2056
trimuon_lr0.00012.180.39940.0074690.006425
trimuon_lr0.00022.1010.39870.0068790.01285
trimuon_lr5e-052.2020.39950.0076380.003212
trimuon_lr0.00041.9520.36160.0057570.0257
trimuon_lr0.00081.8890.30770.0053520.0514
trimuon_lr0.00161.8710.30440.0052460.1028
trimuon_lr0.00321.8660.31820.0051960.2056
2 more metrics under Evidence, All metrics.
Arms agentcore reported complete: pe_lr5e-05, pe_lr0.0001, pe_lr0.0002, trimuon_lr5e-05, trimuon_lr0.0001, trimuon_lr0.0002, pe_lr0.0004, trimuon_lr0.0004, pe_lr0.0008, pe_lr0.0016, pe_lr0.0032, trimuon_lr0.0008, trimuon_lr0.0016, trimuon_lr0.0032
Changes from the spec 5 · original hypothesis not tested
whatspecran withwhyrecorded
Endpoint metricshared Spindle or fork; TriMuon reference implementation (modal-projects/miles commit withdrawn at 45937c3b)both arms on fork spindle-fork-run_9a86933e38 (spindle main afd2f22 + dimuon wiring fb5bc80/5148cb6 + trimuon family cc3c64e; Miles spindle-miles fdd808c merged with dimuon-lite 228b59d (=45937c3b^) + TriMuon 0ab8c3c)shared Spindle rejects dimuon/trimuon; 45937c3b^ (228b59d) contains no TriMuon code, so TriMuon was reimplemented from the spec text using Polar Switch PS2-55 coefficients from github.com/zhehangdu/polar-switch@6f382f1 before the run ended
Training stepsLR grid {5e-5, 1e-4, 2e-4} per armLR grid extended with 4e-4 for both arms (same 80 steps, data order, init)both arms selected 2e-4, the edge of the spec grid; one extra symmetric point to check whether the optimum is interior. Original-grid results are reported separately. before the run ended
Training stepsLR grid {5e-5, 1e-4, 2e-4} per armLR grid extended with 4e-4, then 8e-4 and 1.6e-3, for both arms (same 80 steps, data order, init)both arms selected the top grid edge (2e-4, then 4e-4); symmetric extensions to bracket the optimum within budget. Spec-grid results are reported separately. before the run ended
Training stepsLR grid {5e-5, 1e-4, 2e-4} per armLR grid extended with 4e-4, then 8e-4 and 1.6e-3, then 3.2e-3, for both arms (same 80 steps, data order, init)both arms selected the top grid edge each time; symmetric extensions to bracket the optimum within budget. Spec-grid results are reported separately (spec_grid_* metrics). only in the final result
Evaluatorspec command averages per-batch loss:mean and saves sampler weightsheld-out NLL = token_mean via loss_eval.LossEval over all 500 test examples; final save_state checkpoints instead of save_weights_for_samplerrun instructions require loss_eval token_mean; sampler export is not needed for the metric only in the final result

Original hypothesis tested: no (changing the endpoint changes the question)

agentcore's verdict on the changed experiment: inconclusive

  • steps: reported original 'LR grid {5e-5, 1e-4, 2e-4} per arm' but the spec says '80'
  • steps: reported original 'LR grid {5e-5, 1e-4, 2e-4} per arm' but the spec says '80'
  • steps: reported original 'LR grid {5e-5, 1e-4, 2e-4} per arm' but the spec says '80'
  • reported only in the final result, not before training went on: steps, evaluator
  • reported the original hypothesis as tested despite changing the endpoint
  • the original hypothesis was not tested, and tested_instead does not say what was
Checks · activation unverified · evaluator comparable · feasibility unknown
Custom implementation correctness: unverified
Correctness preflight was not recorded.
Validates executor-reported evidence; autonomous training calls are not blocked by this server.
Executor reported inconclusive; shown as not supported.
Treatment activation: unverified
The spec has no activation gate or experiment features (it predates them), so whether the treatment engaged is unknown.
Initialization / optimizer verification: unverified
Initialization and optimizer evidence was not required by this saved spec.
Research decision: unknown
No prespecified decision rule was recorded.
Adaptation batches across paired arms: aligned
Arms in each pair adapted on identical batches in identical order. pe_lr0.0002 · pair seed0 · warmup 0 · 80 batches · d88b8aa6b7994c28 pe_lr5e-05 · pair seed0 · warmup 0 · ? batches · d88b8aa6b7994c28 pe_lr0.0001 · pair seed0 · warmup 0 · ? batches · d88b8aa6b7994c28 pe_lr0.0004 · pair seed0 · warmup 0 · ? batches · d88b8aa6b7994c28 pe_lr0.0008 · pair seed0 · warmup 0 · ? batches · d88b8aa6b7994c28 pe_lr0.0016 · pair seed0 · warmup 0 · ? batches · d88b8aa6b7994c28 pe_lr0.0032 · pair seed0 · warmup 0 · ? batches · d88b8aa6b7994c28 trimuon_lr5e-05 · pair seed0 · warmup 0 · ? batches · d88b8aa6b7994c28 trimuon_lr0.0001 · pair seed0 · warmup 0 · ? batches · d88b8aa6b7994c28 trimuon_lr0.0002 · pair seed0 · warmup 0 · ? batches · d88b8aa6b7994c28 trimuon_lr0.0004 · pair seed0 · warmup 0 · ? batches · d88b8aa6b7994c28 trimuon_lr0.0008 · pair seed0 · warmup 0 · ? batches · d88b8aa6b7994c28 trimuon_lr0.0016 · pair seed0 · warmup 0 · ? batches · d88b8aa6b7994c28 trimuon_lr0.0032 · pair seed0 · warmup 0 · ? batches · d88b8aa6b7994c28
Evaluator comparability: comparable
eval_nll_token_mean: comparable · pe_lr0.0002, pe_lr0.0032, trimuon_lr0.0002, trimuon_lr0.0032
Evaluator identities and per-arm scores
{
  "comparisons": [
    {
      "arms": [
        "pe_lr0.0002",
        "trimuon_lr0.0002"
      ],
      "metric": "eval_nll_token_mean"
    },
    {
      "arms": [
        "pe_lr0.0032",
        "trimuon_lr0.0032"
      ],
      "metric": "eval_nll_token_mean"
    }
  ],
  "evaluators": {
    "eec79d515f9342bf4bf919902fabe9e6665013579f02aff8db4b962009bdaacb": {
      "code_sha256": "c96a678983407dca2b34b062b5df4de329df4a6c30a08a772d2def4c9c0bcb4f",
      "decoding": {
        "max_tokens": 0,
        "mode": "teacher_forced_forward_cross_entropy",
        "stop": [],
        "temperature": 0
      },
      "items": {
        "manifest_ref": "eval_items.jsonl",
        "manifest_sha256": "9e8df8da44421c2fbb678a81672ad9b15ea25dd7c2f5ab53871caf7e258023aa"
      },
      "parser": "loss_eval.py LossEval('token_mean'): -sum(logprobs where weight>0)/count over all items",
      "prompt_template": "tinker_cookbook renderer qwen3_5 (model_info.get_recommended_renderer_name('Qwen/Qwen3.5-4B')), conversation_to_datum(messages, renderer, max_length=2048, TrainOnWhat.ALL_ASSISTANT_MESSAGES); full no_robots test conversation teacher-forced"
    }
  },
  "scores": [
    {
      "arm": "pe_lr0.0002",
      "evaluator_id": "eec79d515f9342bf4bf919902fabe9e6665013579f02aff8db4b962009bdaacb",
      "metric": "eval_nll_token_mean",
      "predictions_ref": "predictions.jsonl",
      "seed": 0,
      "value": 2.100793518805683
    },
    {
      "arm": "trimuon_lr0.0002",
      "evaluator_id": "eec79d515f9342bf4bf919902fabe9e6665013579f02aff8db4b962009bdaacb",
      "metric": "eval_nll_token_mean",
      "predictions_ref": "predictions.jsonl",
      "seed": 0,
      "value": 2.1014318670873253
    },
    {
      "arm": "pe_lr0.0032",
      "evaluator_id": "eec79d515f9342bf4bf919902fabe9e6665013579f02aff8db4b962009bdaacb",
      "metric": "eval_nll_token_mean",
      "predictions_ref": "predictions.jsonl",
      "seed": 0,
      "value": 1.8656645425972798
    },
    {
      "arm": "trimuon_lr0.0032",
      "evaluator_id": "eec79d515f9342bf4bf919902fabe9e6665013579f02aff8db4b962009bdaacb",
      "metric": "eval_nll_token_mean",
      "predictions_ref": "predictions.jsonl",
      "seed": 0,
      "value": 1.865601469886534
    }
  ],
  "scores_note": "all 14 runs scored with the same evaluator; values equal loss_eval.arms",
  "version": 1
}
Generator reward audit
Generator reward audit: Unknown whether this run needed a teacher reward audit: its spec does not declare whether a teacher or task generator is trained. Nothing was recorded, so reward contributions are unknown.
Held-out loss aggregation
Spec asks for token mean (summed NLL / loss tokens) · run reported token mean (summed NLL / loss tokens)
Checked: every arm used this aggregation on the same tokens and examples, and each value matches its totals.
armvaluetoken meanexample meanloss tokensexamples
pe_lr5e-052.2022.2022.36796,705500
pe_lr0.00012.1792.1792.32296,705500
pe_lr0.00022.1012.1012.16496,705500
pe_lr0.00041.9511.9511.87796,705500
pe_lr0.00081.8891.8891.78596,705500
pe_lr0.00161.8711.8711.7696,705500
pe_lr0.00321.8661.8661.75396,705500
trimuon_lr5e-052.2022.2022.36796,705500
trimuon_lr0.00012.182.182.32396,705500
trimuon_lr0.00022.1012.1012.16596,705500
trimuon_lr0.00041.9521.9521.87996,705500
trimuon_lr0.00081.8891.8891.78596,705500
trimuon_lr0.00161.8711.8711.7696,705500
trimuon_lr0.00321.8661.8661.75396,705500
Feasibility projection: unknown
Projected costs, not measured GPU usage.
Projected wall time
unknown
Projected GPU allocation
unknown
  • Re-projection required: lora_rank changed or was not recorded
  • Re-projection required: dataset changed or was not recorded
  • Re-projection required: steps changed or was not recorded
  • Re-projection required: batch_size changed or was not recorded
  • Re-projection required: max_seq_len changed or was not recorded
  • Re-projection required: arms changed or was not recorded
  • Re-projection required: n_examples changed or was not recorded
  • Re-projection required: n_eval changed or was not recorded
  • Primary endpoint changed or was not recorded
Timing, sample counts and allocation evidence
{
  "generation_applicability": {
    "check": "generation_audit",
    "enforce": false,
    "features": {
      "generated_training_data": null
    },
    "reasons": [
      "spec has no experiment_features: generated_training_data"
    ],
    "status": "unknown"
  },
  "generation_counts": null,
  "gpu_hours": null,
  "known_gpu_hours": 1.0653148148148148,
  "phases": {
    "evaluation": {
      "gpu_hours": 0.12133333333333332,
      "planned_samples": 7000.0,
      "planned_units": 7000,
      "wall_seconds": 436.79999999999995
    },
    "recovery": {
      "gpu_hours": null,
      "wall_seconds": 1200
    },
    "setup": {
      "gpu_hours": 0.14027777777777778,
      "planned_samples": 0.0,
      "planned_units": 1,
      "wall_seconds": 505.0
    },
    "training": {
      "gpu_hours": 0.8037037037037037,
      "planned_samples": 71680.0,
      "planned_units": 1120,
      "wall_seconds": 2893.3333333333335
    }
  },
  "problems": [
    "Re-projection required: lora_rank changed or was not recorded",
    "Re-projection required: dataset changed or was not recorded",
    "Re-projection required: steps changed or was not recorded",
    "Re-projection required: batch_size changed or was not recorded",
    "Re-projection required: max_seq_len changed or was not recorded",
    "Re-projection required: arms changed or was not recorded",
    "Re-projection required: n_examples changed or was not recorded",
    "Re-projection required: n_eval changed or was not recorded",
    "Primary endpoint changed or was not recorded"
  ],
  "record": {
    "config": {
      "base_model": "Qwen/Qwen3.5-4B",
      "probe": "1 example, 1 optim_step per arm",
      "trainer": "1x H100, 8 LoRA slots"
    },
    "effective_config": {
      "arms": [
        "pe",
        "trimuon"
      ],
      "base_model": "Qwen/Qwen3.5-4B",
      "batch_size": 64,
      "lr_grid": [
        5e-05,
        0.0001,
        0.0002,
        0.0004,
        0.0008,
        0.0016,
        0.0032
      ],
      "max_seq_len": 2048,
      "n_eval": 500,
      "steps": 80
    },
    "generation": null,
    "measurements": {
      "evaluation": {
        "allocation_source": "fork config trainer_gpus_per_node=1",
        "gpu_count": 1,
        "planned_units": 7000,
        "samples": 500,
        "seconds": 31.2,
        "units": 500
      },
      "setup": {
        "allocation_source": "fork config trainer_gpus_per_node=1",
        "gpu_count": 1,
        "planned_units": 1,
        "samples": 0,
        "seconds": 505,
        "units": 1
      },
      "training": {
        "allocation_source": "fork config trainer_gpus_per_node=1",
        "gpu_count": 1,
        "planned_units": 1120,
        "samples": 30720,
        "seconds": 1240,
        "units": 480
      }
    },
    "primary_endpoint": "mean per-token NLL on assistant tokens (no_robots test, 500)",
    "recovery": {
      "allocation_source": null,
      "gpu_count": null,
      "seconds": 1200
    },
    "source": "probe_pe.log, probe_tri.log, runs/*.jsonl"
  },
  "recorded_at": 1793753476.9242814,
  "status": "unknown",
  "wall_seconds": null
}
Generated task audit: unverified: no audit recorded
Answer agreement with recorded independent solutions does not establish semantic correctness. Normalized exact overlap does not detect paraphrases.
Spec exp_ff293ca443
Instructions given to agentcore
Retry note: the shared server rejects dimuon and trimuon, so deploy a throwaway Spindle fork to env research-exchange-runs for both arms (RUNS_PROXY_TOKEN_* and MODAL_TOKEN_* are in your shell). The TriMuon reference was withdrawn at commit 45937c3b; reimplement it from the parent commit of that withdrawal (git show 45937c3b^ in the dimuon PR #17 branch) or from the spec text, and record what you used as a deviation with the revision you based it on. Treat the parity gate as a documented best-effort check rather than a hard blocker, so the comparison actually runs within the budget.
Experiment version
exp_ff293ca443
Repeat the selected saved experiment version to check reproducibility. This repetition tests that version's hypothesis and methods.
Legacy context: original idea context unrecorded (unknown); launch uses the saved spec.

Hypothesis

With a Spindle fork that adds TriMuon, LoRA SFT on Qwen3.5-4B reaches held-out no_robots loss at least 0.01 nats lower than dimuon-lite (Polar Express) at its best LR, after the same 80 steps.

Success criterion

Validated if best-LR TriMuon eval NLL is at least 0.01 nats below best-LR dimuon-lite eval NLL, and TriMuon's median optimizer step time is not higher. Failed if the gap is under 0.01 nats or reversed. A rerun of the best PE config with a second seed is optional, if budget allows, to check that the 0.01 margin exceeds seed noise.

no_robots 80 steps batch 64 LoRA r32 lr 0.0001 120 min wall budget
Method
Fork modal-projects/spindle and add TriMuon as an optimizer option. It keeps DiMuon's recovered momentum and preconditioning rules. It replaces only the Polar Express polar step with two outer Polar Switch passes, then four cubic Newton-Schulz refinements folded into the rank x rank multiplier. Use the FP16 polar core and TF32 disabled, as in aaron's benchmark. Deploy the fork as a throwaway copy. Train rank-32 LoRA on Qwen/Qwen3.5-4B with a short tinker SDK SFT loop on no_robots. The loop uses the cookbook renderer for the model, forward_backward with cross_entropy, then optim_step. The treatment arm runs on the fork with TriMuon. The baseline arm runs dimuon-lite on the same fork (or shared Spindle) with identical code. Each arm sweeps LR over {5e-5, 1e-4, 2e-4}: 6 runs of 80 steps each, same data order and seed. Each run evaluates held-out loss at step 80 and logs per-step optimizer wall time. Qwen3.5-4B is a scaled-down stand-in for the source's Qwen3-8B rank-32 workload. Polar Switch and AdamW arms are follow-up specs, not part of this decision.
Baseline
dimuon-lite (DiMuon with Polar Express), beta1=0.9, grad_clip_norm=0.0. Same model, rank, data order, seed, renderer, batch size, steps and LR grid. The best-LR run of each arm is compared.
Full spec
{
  "base_model": "Qwen/Qwen3.5-4B",
  "baseline": "dimuon-lite (DiMuon with Polar Express), beta1=0.9, grad_clip_norm=0.0. Same model, rank, data order, seed, renderer, batch size, steps and LR grid. The best-LR run of each arm is compared.",
  "batch_size": 64,
  "budget": {
    "gpu_hours": 1.8,
    "max_wall_minutes": 120
  },
  "command": "python - <<'EOF'\n# Custom part: the TriMuon config exists only on the fork; the baseline uses tinker.types.DimuonOptimizerConfig() / DimuonParams.\nimport os, tinker\nfrom tinker_cookbook.recipes.chat_sl import chat_datasets  # renderer + no_robots builder\nsc = tinker.ServiceClient(base_url=os.environ[\"TINKER_BASE_URL\"])  # fork URL for the TriMuon arm\nARM = os.environ.get(\"ARM\", \"pe\"); LR = float(os.environ.get(\"LR\", \"1e-4\"))\nopt_cfg = tinker.types.DimuonOptimizerConfig() if ARM == \"pe\" else tinker.types.TrimuonOptimizerConfig()  # Trimuon* added by the fork\ntc = sc.create_lora_training_client(base_model=\"Qwen/Qwen3.5-4B\", rank=32, optimizer=opt_cfg)\ntrain, test = chat_datasets.no_robots_batches(tc.get_tokenizer(), batch_size=64, max_length=2048, seed=0)\nfor step, batch in zip(range(80), train):\n    tc.forward_backward(batch, loss_fn=\"cross_entropy\").result()\n    P = tinker.types.DimuonParams if ARM == \"pe\" else tinker.types.TrimuonParams\n    tc.optim_step(P(learning_rate=LR, beta1=0.9, grad_clip_norm=0.0)).result()\nprint(\"eval_nll\", sum(tc.forward(b, loss_fn=\"cross_entropy\").result().metrics[\"loss:mean\"] for b in test) / len(test))\ntc.save_weights_for_sampler(name=f\"rx-trimuon-{ARM}-{LR}\")\nEOF",
  "dataset": {
    "hf_path": "HuggingFaceH4/no_robots",
    "n_examples": 5120,
    "name": "no_robots",
    "split": "train (eval on test)"
  },
  "eval": {
    "benchmark": "no_robots test split",
    "metric": "mean per-token NLL on assistant tokens",
    "n_examples": 500
  },
  "hypothesis": "With a Spindle fork that adds TriMuon, LoRA SFT on Qwen3.5-4B reaches held-out no_robots loss at least 0.01 nats lower than dimuon-lite (Polar Express) at its best LR, after the same 80 steps.",
  "lora_rank": 32,
  "max_seq_len": 2048,
  "method": "Fork modal-projects/spindle and add TriMuon as an optimizer option. It keeps DiMuon's recovered momentum and preconditioning rules. It replaces only the Polar Express polar step with two outer Polar Switch passes, then four cubic Newton-Schulz refinements folded into the rank x rank multiplier. Use the FP16 polar core and TF32 disabled, as in aaron's benchmark. Deploy the fork as a throwaway copy. Train rank-32 LoRA on Qwen/Qwen3.5-4B with a short tinker SDK SFT loop on no_robots. The loop uses the cookbook renderer for the model, forward_backward with cross_entropy, then optim_step. The treatment arm runs on the fork with TriMuon. The baseline arm runs dimuon-lite on the same fork (or shared Spindle) with identical code. Each arm sweeps LR over {5e-5, 1e-4, 2e-4}: 6 runs of 80 steps each, same data order and seed. Each run evaluates held-out loss at step 80 and logs per-step optimizer wall time. Qwen3.5-4B is a scaled-down stand-in for the source's Qwen3-8B rank-32 workload. Polar Switch and AdamW arms are follow-up specs, not part of this decision.",
  "optimizer": {
    "lr": 0.0001,
    "name": "trimuon (fork)"
  },
  "steps": 80,
  "success_criterion": "Validated if best-LR TriMuon eval NLL is at least 0.01 nats below best-LR dimuon-lite eval NLL, and TriMuon's median optimizer step time is not higher. Failed if the gap is under 0.01 nats or reversed. A rerun of the best PE config with a second seed is optional, if budget allows, to check that the 0.01 margin exceeds seed noise.",
  "title": "TriMuon vs dimuon-lite (Polar Express) for LoRA SFT on no_robots",
  "training_type": "sft"
}
Evidence 1

Partial · Download manifest. Recorded files are retained copies; checkpoint references do not include model weights.

Not recorded: script, effective config, predictions.

Checkpoint references
[
  {
    "arm": "shared_init",
    "step": 0,
    "uri": "tinker://6af90323ba7699144106782ddc682a32/weights/rx-trimuon-init-step0"
  },
  {
    "arm": "pe_lr0.0002",
    "step": 80,
    "uri": "tinker://a367e4381452827733cfa2a16b31638d/weights/rx-trimuon-pe_lr0.0002-step80"
  },
  {
    "arm": "trimuon_lr0.0002",
    "step": 80,
    "uri": "tinker://231862420b152737820c434079b61a4c/weights/rx-trimuon-trimuon_lr0.0002-step80"
  },
  {
    "arm": "pe_lr0.0032",
    "step": 80,
    "uri": "tinker://0bdf49d5a745220d8567cb4781132574/weights/rx-trimuon-pe_lr0.0032-step80"
  },
  {
    "arm": "trimuon_lr0.0032",
    "step": 80,
    "uri": "tinker://5e51405d0d0c4f35adaf7fff3e64e0b4/weights/rx-trimuon-trimuon_lr0.0032-step80"
  }
]
Per-arm evidence metrics
{
  "pe_lr0.0002": {
    "eval_nll_token_mean": 2.100793518805683
  },
  "pe_lr0.0032": {
    "eval_nll_token_mean": 1.8656645425972798
  },
  "trimuon_lr0.0002": {
    "eval_nll_token_mean": 2.1014318670873253
  },
  "trimuon_lr0.0032": {
    "eval_nll_token_mean": 1.865601469886534
  }
}
All metrics
metricpe_lr0.0001pe_lr0.0002pe_lr5e-05trimuon_lr0.0001trimuon_lr0.0002trimuon_lr5e-05pe_lr0.0004trimuon_lr0.0004pe_lr0.0008pe_lr0.0016pe_lr0.0032trimuon_lr0.0008trimuon_lr0.0016trimuon_lr0.0032
eval_nll_token_mean2.1792.1012.2022.182.1012.2021.9511.9521.8891.8711.8661.8891.8711.866
median_optimizer_step_s_server0.15930.15930.15970.39940.39870.39950.14710.36160.12240.12420.12890.30770.30440.3182
median_optim_phase_s_trainer0.18040.17980.18090.42070.42120.4208————————
final_train_loss0.0074660.0068680.0076390.0074690.0068790.0076380.0057540.0057570.005350.0052470.0051940.0053520.0052460.005196
step1_update_norm0.0064250.012850.0032120.0064250.012850.0032120.02570.02570.05140.10280.20560.05140.10280.2056
optimizer_family_code111222————————
best_lr_pe
0.0032
best_lr_trimuon
0.0032
best_eval_nll_pe
1.866
best_eval_nll_trimuon
1.866
gap_pe_minus_trimuon
6.307e-05
spec_grid_best_eval_nll_pe
2.101
spec_grid_best_eval_nll_trimuon
2.101
spec_grid_best_lr_pe
0.0002
spec_grid_best_lr_trimuon
0.0002
spec_grid_gap_pe_minus_trimuon
-0.0006383
spec_grid_median_opt_step_s_pe
0.1593
spec_grid_median_opt_step_s_trimuon
0.3987
median_opt_step_s_pe_best
0.1289
median_opt_step_s_trimuon_best
0.3182
max_abs_gap_any_lr
0.001041
observed_trainer_gpu_hours_approx
1.09
Interim updates from agentcore (5, first Nov 3, 23:44 UTC)
Artifact references
  • checkpoint · shared_init · step 0 · tinker://6af90323ba7699144106782ddc682a32/weights/rx-trimuon-init-step0
  • checkpoint · pe_lr0.0002 · step 80 · tinker://a367e4381452827733cfa2a16b31638d/weights/rx-trimuon-pe_lr0.0002-step80
  • checkpoint · trimuon_lr0.0002 · step 80 · tinker://231862420b152737820c434079b61a4c/weights/rx-trimuon-trimuon_lr0.0002-step80
  • checkpoint · pe_lr0.0032 · step 80 · tinker://0bdf49d5a745220d8567cb4781132574/weights/rx-trimuon-pe_lr0.0032-step80
  • checkpoint · trimuon_lr0.0032 · step 80 · tinker://5e51405d0d0c4f35adaf7fff3e64e0b4/weights/rx-trimuon-trimuon_lr0.0032-step80
  • code_revision · code_revision.txt
  1. Nov 4, 00:51 UTC · succeeded · done: pe_lr5e-05, pe_lr0.0001, pe_lr0.0002, pe_lr0.0004, pe_lr0.0008, pe_lr0.0016, pe_lr0.0032, trimuon_lr5e-05, trimuon_lr0.0001, trimuon_lr0.0002, trimuon_lr0.0004, trimuon_lr0.0008, trimuon_lr0.0016, trimuon_lr0.0032 · On a throwaway Spindle fork (dimuon-lite Miles branch + TriMuon reimplemented from the spec), rank-32 LoRA SFT of Qwen3.5-4B on no_robots for 80 steps gave essentially identical held-out NLL for TriM…
  2. Nov 4, 00:21 UTC · running · done: pe_lr5e-05, pe_lr0.0001, pe_lr0.0002, pe_lr0.0004, trimuon_lr5e-05, trimuon_lr0.0001, trimuon_lr0.0002, trimuon_lr0.0004 · Spec grid and LR 4e-4 extension done: both arms keep improving at the top LR (4e-4: PE 1.95142 vs TriMuon 1.95246), TriMuon's median optimizer step is ~2.4x slower. Running a second symmetric extensi…
  3. Nov 4, 00:11 UTC · running · done: pe_lr5e-05, pe_lr0.0001, pe_lr0.0002, trimuon_lr5e-05, trimuon_lr0.0001, trimuon_lr0.0002 · All 6 spec runs (PE and TriMuon x LR {5e-5,1e-4,2e-4}, 80 steps) finished on the fork; both arms select LR 2e-4 (grid edge), where TriMuon eval NLL 2.10143 vs PE 2.10079 and TriMuon's median optimize…
  4. Nov 3, 23:47 UTC · running · Fork deployed; preflight probe passed for both arms (server reports optimizer_family_code 1=dimuon/PE and 2=trimuon after weight restore); local CPU parity: PE path bit-exact vs 228b59d, TriMuon vs F…
  5. Nov 3, 23:44 UTC · running · Spindle fork spindle-fork-run_9a86933e38 deployed (dimuon-lite Miles branch + TriMuon reimplemented from spec); preflight probe running.
Artifacts
adaptation_manifests
[{'arm': 'pe_lr0.0002', 'pair': 'seed0', 'warmup_batches': 0, 'adaptation_batch_ids': ['s1:45c351', 's2:8a6f13', 's3:191621', 's4:38725d', 's5:8aed40', 's6:6ac1b0', 's7:b344e1', 's8:37caa3', 's9:b433b5', 's10:d88cd8', 's11:2c0453', 's12:107ca8', 's13:f0d0fe', 's14:472b0f', 's15:7105be', 's16:425716', 's17:c5602a', 's18:701dc4', 's19:1dd4c1', 's20:f9c88c', 's21:0a487c', 's22:f6c667', 's23:cc03e7', 's24:e02a09', 's25:c5eb24', 's26:ef92d7', 's27:0a389b', 's28:35f385', 's29:de8035', 's30:e20a2c', 's31:d5ce1c', 's32:a0d22e', 's33:aa1406', 's34:68d2e9', 's35:40b4b0', 's36:c297b1', 's37:4c1b74', 's38:f9f32e', 's39:05a8e9', 's40:f91b8f', 's41:f1c136', 's42:9965cb', 's43:de610c', 's44:85f9df', 's45:698a22', 's46:3681a0', 's47:177de4', 's48:8b1ea4', 's49:bbd283', 's50:1dd8d9', 's51:0861f7', 's52:495689', 's53:d3ceb2', 's54:5ddbe8', 's55:38f74d', 's56:aaf09d', 's57:d1db0d', 's58:ed5839', 's59:8f0ea7', 's60:757b50', 's61:55bd9d', 's62:2ef2ef', 's63:46e35e', 's64:9f96b4', 's65:d10ca7', 's66:898648', 's67:62cfb0', 's68:2a84c3', 's69:2c5108', 's70:c8c508', 's71:0f3538', 's72:1d6f2d', 's73:1228cb', 's74:80f675', 's75:19c5ff', 's76:e065f9', 's77:42fec6', 's78:f62f99', 's79:57fd27', 's80:ecefbc'], 'adaptation_batch_hash': 'd88b8aa6b7994c28dbf609dc40fa29d34b2d5184f493d6f0b8edf6777e5ae3fd', 'id_format': 's{step}:{first 6 hex of sha256(comma-joined no_robots prompt_ids consumed)}'}, {'arm': 'pe_lr5e-05', 'pair': 'seed0', 'warmup_batches': 0, 'adaptation_batch_ids': 'identical to pe_lr0.0002', 'adaptation_batch_hash': 'd88b8aa6b7994c28dbf609dc40fa29d34b2d5184f493d6f0b8edf6777e5ae3fd'}, {'arm': 'pe_lr0.0001', 'pair': 'seed0', 'warmup_batches': 0, 'adaptation_batch_ids': 'identical to pe_lr0.0002', 'adaptation_batch_hash': 'd88b8aa6b7994c28dbf609dc40fa29d34b2d5184f493d6f0b8edf6777e5ae3fd'}, {'arm': 'pe_lr0.0004', 'pair': 'seed0', 'warmup_batches': 0, 'adaptation_batch_ids': 'identical to pe_lr0.0002', 'adaptation_batch_hash': 'd88b8aa6b7994c28dbf609dc40fa29d34b2d5184f493d6f0b8edf6777e5ae3fd'}, {'arm': 'pe_lr0.0008', 'pair': 'seed0', 'warmup_batches': 0, 'adaptation_batch_ids': 'identical to pe_lr0.0002', 'adaptation_batch_hash': 'd88b8aa6b7994c28dbf609dc40fa29d34b2d5184f493d6f0b8edf6777e5ae3fd'}, {'arm': 'pe_lr0.0016', 'pair': 'seed0', 'warmup_batches': 0, 'adaptation_batch_ids': 'identical to pe_lr0.0002', 'adaptation_batch_hash': 'd88b8aa6b7994c28dbf609dc40fa29d34b2d5184f493d6f0b8edf6777e5ae3fd'}, {'arm': 'pe_lr0.0032', 'pair': 'seed0', 'warmup_batches': 0, 'adaptation_batch_ids': 'identical to pe_lr0.0002', 'adaptation_batch_hash': 'd88b8aa6b7994c28dbf609dc40fa29d34b2d5184f493d6f0b8edf6777e5ae3fd'}, {'arm': 'trimuon_lr5e-05', 'pair': 'seed0', 'warmup_batches': 0, 'adaptation_batch_ids': 'identical to pe_lr0.0002', 'adaptation_batch_hash': 'd88b8aa6b7994c28dbf609dc40fa29d34b2d5184f493d6f0b8edf6777e5ae3fd'}, {'arm': 'trimuon_lr0.0001', 'pair': 'seed0', 'warmup_batches': 0, 'adaptation_batch_ids': 'identical to pe_lr0.0002', 'adaptation_batch_hash': 'd88b8aa6b7994c28dbf609dc40fa29d34b2d5184f493d6f0b8edf6777e5ae3fd'}, {'arm': 'trimuon_lr0.0002', 'pair': 'seed0', 'warmup_batches': 0, 'adaptation_batch_ids': 'identical to pe_lr0.0002', 'adaptation_batch_hash': 'd88b8aa6b7994c28dbf609dc40fa29d34b2d5184f493d6f0b8edf6777e5ae3fd'}, {'arm': 'trimuon_lr0.0004', 'pair': 'seed0', 'warmup_batches': 0, 'adaptation_batch_ids': 'identical to pe_lr0.0002', 'adaptation_batch_hash': 'd88b8aa6b7994c28dbf609dc40fa29d34b2d5184f493d6f0b8edf6777e5ae3fd'}, {'arm': 'trimuon_lr0.0008', 'pair': 'seed0', 'warmup_batches': 0, 'adaptation_batch_ids': 'identical to pe_lr0.0002', 'adaptation_batch_hash': 'd88b8aa6b7994c28dbf609dc40fa29d34b2d5184f493d6f0b8edf6777e5ae3fd'}, {'arm': 'trimuon_lr0.0016', 'pair': 'seed0', 'warmup_batches': 0, 'adaptation_batch_ids': 'identical to pe_lr0.0002', 'adaptation_batch_hash': 'd88b8aa6b7994c28dbf609dc40fa29d34b2d5184f493d6f0b8edf6777e5ae3fd'}, {'arm': 'trimuon_lr0.0032', 'pair': 'seed0', 'warmup_batches': 0, 'adaptation_batch_ids': 'identical to pe_lr0.0002', 'adaptation_batch_hash': 'd88b8aa6b7994c28dbf609dc40fa29d34b2d5184f493d6f0b8edf6777e5ae3fd'}]
correctness_preflight
{'required': True, 'status_note': 'best-effort per run instructions (spec has no tolerances): local CPU parity of the exact fork optimizer code', 'paths': [{'id': 'trimuon_optimizer', 'fixed_input': {'sha256': 'e5cc8cee9a49f85ba80685605348f47439d1da3350b86bc851902dd7e720d99e', 'description': 'correctness_fixture.pt: seeded (1234) LoRA-like factors A 32x2560, B 2560x32, fused-qkv B 576x32 (row split 128/32/32), anisotropic grads, BF16 previous momentum (warm) or zero (fresh); optimizer reset per probe; rank 32'}, 'baseline_revision': 'modal-projects/miles 228b59d90 (dimuon-lite = parent of withdrawal 45937c3b)', 'reference_revision': 'independent FP64 reference in correctness_preflight.py (PS2-55 from polar-switch@6f382f1 applied unfolded + 4 explicit cubic NS)', 'implementation_revision': 'miles fork 0ab8c3c178a1631fbcbaab5e84804af487bdefb2', 'precision': 'CPU; polar core FP16 matmuls with FP32 normalization/shift, TF32 disabled; FP32 momentum work, BF16 stored momentum', 'normalization': 'direction Frobenius-normalized to sqrt(rank) per block; lr*(rank/32)^0.175; update = p_new - p_old', 'errors': {'baseline_pe_update_warm': {'max_abs_error': 0.0, 'reference_max_abs': 5.417875945568085e-05, 'relative_l2_error': 0.0, 'cosine_similarity': 1.0000000000000002}, 'baseline_pe_update_fresh': {'max_abs_error': 0.0, 'reference_max_abs': 4.151090979576111e-05, 'relative_l2_error': 0.0, 'cosine_similarity': 1.0000000000000002}, 'reference_trimuon_update_warm': {'max_abs_error': 1.9760320646345705e-07, 'reference_max_abs': 5.062433262543459e-05, 'relative_l2_error': 0.002398292411463761, 'cosine_similarity': 0.9999971240992352}, 'reference_trimuon_update_fresh': {'max_abs_error': 1.1943913745355486e-07, 'reference_max_abs': 3.7186884629232666e-05, 'relative_l2_error': 0.001867388510372267, 'cosine_similarity': 0.9999982564310306}}, 'lr_scaling': [{'learning_rate': 5e-05, 'update_norm': 0.000632455805392149}, {'learning_rate': 0.0001, 'update_norm': 0.001264912027666012}, {'learning_rate': 0.0002, 'update_norm': 0.0025298222735317074}]}]}
correctness_validation
{'status': 'unverified', 'required': True, 'checks': [], 'reason': 'Correctness preflight was not recorded.', 'evidence_source': 'executor report; remote execution is not attested', 'applicability': 'unknown', 'reported_verdict': 'inconclusive'}
evaluation
{'version': 1, 'evaluators': {'eec79d515f9342bf4bf919902fabe9e6665013579f02aff8db4b962009bdaacb': {'code_sha256': 'c96a678983407dca2b34b062b5df4de329df4a6c30a08a772d2def4c9c0bcb4f', 'prompt_template': "tinker_cookbook renderer qwen3_5 (model_info.get_recommended_renderer_name('Qwen/Qwen3.5-4B')), conversation_to_datum(messages, renderer, max_length=2048, TrainOnWhat.ALL_ASSISTANT_MESSAGES); full no_robots test conversation teacher-forced", 'decoding': {'temperature': 0, 'max_tokens': 0, 'stop': [], 'mode': 'teacher_forced_forward_cross_entropy'}, 'parser': "loss_eval.py LossEval('token_mean'): -sum(logprobs where weight>0)/count over all items", 'items': {'manifest_ref': 'eval_items.jsonl', 'manifest_sha256': '9e8df8da44421c2fbb678a81672ad9b15ea25dd7c2f5ab53871caf7e258023aa'}}}, 'scores': [{'arm': 'pe_lr0.0002', 'metric': 'eval_nll_token_mean', 'value': 2.100793518805683, 'evaluator_id': 'eec79d515f9342bf4bf919902fabe9e6665013579f02aff8db4b962009bdaacb', 'seed': 0, 'predictions_ref': 'predictions.jsonl'}, {'arm': 'trimuon_lr0.0002', 'metric': 'eval_nll_token_mean', 'value': 2.1014318670873253, 'evaluator_id': 'eec79d515f9342bf4bf919902fabe9e6665013579f02aff8db4b962009bdaacb', 'seed': 0, 'predictions_ref': 'predictions.jsonl'}, {'arm': 'pe_lr0.0032', 'metric': 'eval_nll_token_mean', 'value': 1.8656645425972798, 'evaluator_id': 'eec79d515f9342bf4bf919902fabe9e6665013579f02aff8db4b962009bdaacb', 'seed': 0, 'predictions_ref': 'predictions.jsonl'}, {'arm': 'trimuon_lr0.0032', 'metric': 'eval_nll_token_mean', 'value': 1.865601469886534, 'evaluator_id': 'eec79d515f9342bf4bf919902fabe9e6665013579f02aff8db4b962009bdaacb', 'seed': 0, 'predictions_ref': 'predictions.jsonl'}], 'scores_note': 'all 14 runs scored with the same evaluator; values equal loss_eval.arms', 'comparisons': [{'metric': 'eval_nll_token_mean', 'arms': ['pe_lr0.0002', 'trimuon_lr0.0002']}, {'metric': 'eval_nll_token_mean', 'arms': ['pe_lr0.0032', 'trimuon_lr0.0032']}]}
evaluator_validation
{'status': 'comparable', 'issues': [], 'comparisons': [{'metric': 'eval_nll_token_mean', 'status': 'comparable', 'arms': ['pe_lr0.0002', 'pe_lr0.0032', 'trimuon_lr0.0002', 'trimuon_lr0.0032'], 'evaluator_ids': ['eec79d515f9342bf4bf919902fabe9e6665013579f02aff8db4b962009bdaacb'], 'missing_arms': []}]}
feasibility
{'status': 'unknown', 'problems': ['Re-projection required: lora_rank changed or was not recorded', 'Re-projection required: dataset changed or was not recorded', 'Re-projection required: steps changed or was not recorded', 'Re-projection required: batch_size changed or was not recorded', 'Re-projection required: max_seq_len changed or was not recorded', 'Re-projection required: arms changed or was not recorded', 'Re-projection required: n_examples changed or was not recorded', 'Re-projection required: n_eval changed or was not recorded', 'Primary endpoint changed or was not recorded'], 'wall_seconds': None, 'gpu_hours': None, 'known_gpu_hours': 1.0653148148148148, 'phases': {'setup': {'wall_seconds': 505.0, 'planned_units': 1, 'planned_samples': 0.0, 'gpu_hours': 0.14027777777777778}, 'training': {'wall_seconds': 2893.3333333333335, 'planned_units': 1120, 'planned_samples': 71680.0, 'gpu_hours': 0.8037037037037037}, 'evaluation': {'wall_seconds': 436.79999999999995, 'planned_units': 7000, 'planned_samples': 7000.0, 'gpu_hours': 0.12133333333333332}, 'recovery': {'wall_seconds': 1200, 'gpu_hours': None}}, 'generation_counts': None, 'generation_applicability': {'check': 'generation_audit', 'status': 'unknown', 'enforce': False, 'reasons': ['spec has no experiment_features: generated_training_data'], 'features': {'generated_training_data': None}}, 'record': {'config': {'base_model': 'Qwen/Qwen3.5-4B', 'probe': '1 example, 1 optim_step per arm', 'trainer': '1x H100, 8 LoRA slots'}, 'effective_config': {'base_model': 'Qwen/Qwen3.5-4B', 'arms': ['pe', 'trimuon'], 'lr_grid': [5e-05, 0.0001, 0.0002, 0.0004, 0.0008, 0.0016, 0.0032], 'steps': 80, 'batch_size': 64, 'max_seq_len': 2048, 'n_eval': 500}, 'primary_endpoint': 'mean per-token NLL on assistant tokens (no_robots test, 500)', 'source': 'probe_pe.log, probe_tri.log, runs/*.jsonl', 'measurements': {'setup': {'seconds': 505, 'units': 1, 'planned_units': 1, 'samples': 0, 'gpu_count': 1, 'allocation_source': 'fork config trainer_gpus_per_node=1'}, 'training': {'seconds': 1240, 'units': 480, 'planned_units': 1120, 'samples': 30720, 'gpu_count': 1, 'allocation_source': 'fork config trainer_gpus_per_node=1'}, 'evaluation': {'seconds': 31.2, 'units': 500, 'planned_units': 7000, 'samples': 500, 'gpu_count': 1, 'allocation_source': 'fork config trainer_gpus_per_node=1'}}, 'generation': None, 'recovery': {'seconds': 1200, 'gpu_count': None, 'allocation_source': None}}, 'recorded_at': 1793753476.9242814}
feasibility_required
True
initialization_provenance
{'version': 1, 'shared_init_checkpoint': 'tinker://6af90323ba7699144106782ddc682a32/weights/rx-trimuon-init-step0', 'adapter_sha256_all_arms': 'af593f8bef000d77412d58da0522e0c2e6cdd638e9471052d76ac0e9750d454c', 'arms': {'pe_lr0.0002': {'initialization': {'base_checkpoint': 'Qwen/Qwen3.5-4B', 'adapter_sha256': 'af593f8bef000d77412d58da0522e0c2e6cdd638e9471052d76ac0e9750d454c', 'source': 'local_hash', 'evidence_ref': 'sha256 of init miles/__0_0.distcp (modal volume get) + load_state ok in runs/pe_lr0.0002.jsonl', 'before_first_update': True}, 'restore_count': 1, 'optimizer_checks': [{'after_restore': 0, 'before_next_update': True, 'requested': 'dimuon', 'actual_family': 'dimuon', 'actual_config': {'type': 'dimuon', 'version': 1}, 'source': 'server_response', 'evidence_ref': 'get_info after create, runs/pe_lr0.0002.jsonl'}, {'after_restore': 1, 'before_next_update': True, 'requested': 'dimuon', 'actual_family': 'dimuon', 'actual_config': {'type': 'dimuon', 'version': 1, 'family_code': 1.0, 'polar_express': 1.0}, 'source': 'server_response', 'evidence_ref': 'get_info after load_state + optim_step optimizer/* metrics, runs/pe_lr0.0002.jsonl'}], 'initial_output': {'available': True, 'batch_sha256': '0441a4d96eb4ab90fc8f2a9d6c545694f67ae1e2fafd5d468179e493ac651948', 'output_sha256': '6ae994bfc7012c81bff0f0644ba33ef178d185f925e069100f54ca27049df796', 'evidence_ref': 'runs/pe_lr0.0002.jsonl', 'before_first_update': True}}, 'trimuon_lr0.0002': {'initialization': {'base_checkpoint': 'Qwen/Qwen3.5-4B', 'adapter_sha256': 'af593f8bef000d77412d58da0522e0c2e6cdd638e9471052d76ac0e9750d454c', 'source': 'local_hash', 'evidence_ref': 'sha256 of init miles/__0_0.distcp + load_state ok in runs/trimuon_lr0.0002.jsonl', 'before_first_update': True}, 'restore_count': 1, 'optimizer_checks': [{'after_restore': 0, 'before_next_update': True, 'requested': 'trimuon', 'actual_family': 'trimuon', 'actual_config': {'type': 'trimuon', 'version': 1}, 'source': 'server_response', 'evidence_ref': 'get_info after create, runs/trimuon_lr0.0002.jsonl'}, {'after_restore': 1, 'before_next_update': True, 'requested': 'trimuon', 'actual_family': 'trimuon', 'actual_config': {'type': 'trimuon', 'version': 1, 'family_code': 2.0, 'polar_trimuon': 1.0}, 'source': 'server_response', 'evidence_ref': 'get_info after load_state + optim_step optimizer/* metrics, runs/trimuon_lr0.0002.jsonl'}], 'initial_output': {'available': True, 'batch_sha256': '0441a4d96eb4ab90fc8f2a9d6c545694f67ae1e2fafd5d468179e493ac651948', 'output_sha256': '6ae994bfc7012c81bff0f0644ba33ef178d185f925e069100f54ca27049df796', 'evidence_ref': 'runs/trimuon_lr0.0002.jsonl', 'before_first_update': True}}, 'pe_lr0.0032': {'initialization': {'base_checkpoint': 'Qwen/Qwen3.5-4B', 'adapter_sha256': 'af593f8bef000d77412d58da0522e0c2e6cdd638e9471052d76ac0e9750d454c', 'source': 'local_hash', 'evidence_ref': 'runs/pe_lr0.0032.jsonl', 'before_first_update': True}, 'restore_count': 1, 'optimizer_checks': [{'after_restore': 0, 'before_next_update': True, 'requested': 'dimuon', 'actual_family': 'dimuon', 'actual_config': {'type': 'dimuon', 'version': 1}, 'source': 'server_response', 'evidence_ref': 'runs/pe_lr0.0032.jsonl'}, {'after_restore': 1, 'before_next_update': True, 'requested': 'dimuon', 'actual_family': 'dimuon', 'actual_config': {'type': 'dimuon', 'version': 1, 'family_code': 1.0}, 'source': 'server_response', 'evidence_ref': 'runs/pe_lr0.0032.jsonl'}], 'initial_output': {'available': True, 'batch_sha256': '0441a4d96eb4ab90fc8f2a9d6c545694f67ae1e2fafd5d468179e493ac651948', 'output_sha256': '5c2ff31e9d93bc80241c90cbe467ddc7e7dae1326f2ad9b22d8c2845d412207b', 'evidence_ref': 'runs/pe_lr0.0032.jsonl', 'before_first_update': True}}, 'trimuon_lr0.0032': {'initialization': {'base_checkpoint': 'Qwen/Qwen3.5-4B', 'adapter_sha256': 'af593f8bef000d77412d58da0522e0c2e6cdd638e9471052d76ac0e9750d454c', 'source': 'local_hash', 'evidence_ref': 'runs/trimuon_lr0.0032.jsonl', 'before_first_update': True}, 'restore_count': 1, 'optimizer_checks': [{'after_restore': 0, 'before_next_update': True, 'requested': 'trimuon', 'actual_family': 'trimuon', 'actual_config': {'type': 'trimuon', 'version': 1}, 'source': 'server_response', 'evidence_ref': 'runs/trimuon_lr0.0032.jsonl'}, {'after_restore': 1, 'before_next_update': True, 'requested': 'trimuon', 'actual_family': 'trimuon', 'actual_config': {'type': 'trimuon', 'version': 1, 'family_code': 2.0}, 'source': 'server_response', 'evidence_ref': 'runs/trimuon_lr0.0032.jsonl'}], 'initial_output': {'available': True, 'batch_sha256': '0441a4d96eb4ab90fc8f2a9d6c545694f67ae1e2fafd5d468179e493ac651948', 'output_sha256': 'b64ea158cd93ad1b520590d5e8b090ed9bc09670d1ea815778374d1f1e3b5a3e', 'evidence_ref': 'runs/trimuon_lr0.0032.jsonl', 'before_first_update': True}}, 'other_10_runs': {'summary': 'same shared init checkpoint and adapter_sha256, restore_count=1, server-observed family matches requested arm on every optim_step; initial_output_sha256 = 6ae994bf... for all except pe_lr0.0004 (b64ea158...), trimuon_lr0.0004 (5c2ff31e...), trimuon_lr0.0016 (7f9553f9...)'}}, 'note': 'All runs load weights only (restore_optimizer=False) from one step-0 checkpoint saved by a fresh dimuon client. Initial-output hashes match for 10 of 14 runs; the differing ones ran under different concurrent packing and the same hash values recur across pe and trimuon runs, so the difference is attributed to kernel/packing nondeterminism, not init (not proven). The concrete family/polar flags come from optim_step responses (reported with update 1, not strictly before it). No mid-training restore occurs, so the create-save-restore fixed-gradient check was not run.'}
launch
{'experiment_id': 'exp_ff293ca443', 'context_status': 'legacy_unknown', 'superseded': False, 'mode': 'redo', 'purpose': "Repeat the selected saved experiment version to check reproducibility. This repetition tests that version's hypothesis and methods."}
progress_updated_at
1793753456.7063627
reported_outcome_reason
insufficient_evidence
reported_verdict
inconclusive
restoration_validation
{'status': 'unverified', 'required': False, 'checks': [], 'reason': 'Initialization and optimizer evidence was not required by this saved spec.', 'applicability': 'unknown'}
started_at
1793748389.8436682
Agent trace · 1 turn
Details
run
run_9a86933e38
backend
agentcore
conversation
run_9a86933e38
experiment
exp_ff293ca443
launch
redo
created
Nov 3, 23:26 UTC
started
Nov 3, 23:26 UTC
finished
Nov 4, 00:51 UTC
duration
1h 24m
turns
1
GPU-h budget
1.8
wall budget
120 min
base model
Qwen/Qwen3.5-4B
training
SFT
dataset
no_robots
result
final
outcome reason
insufficient evidence
Other runs of this idea

Submit an idea

Most ideas come in from Slack threads. Use this when yours is not in one yet; the triage agent picks it up.