Skip to content

mup: refinement pass on the merged plugin#17

Merged
utkarshgill merged 5 commits into
commaai:mainfrom
utkarshgill:mup-refine-1
Jul 2, 2026
Merged

mup: refinement pass on the merged plugin#17
utkarshgill merged 5 commits into
commaai:mainfrom
utkarshgill:mup-refine-1

Conversation

@utkarshgill

@utkarshgill utkarshgill commented Jul 2, 2026

Copy link
Copy Markdown

four follow-ups to #12: suite outcomes returned not mutated, degenerate fit removed from the scaling page, training dataset named in page conditions, convnext marked not-ready until its configs land.

_coord_check/_mutransfer/_scaling now return (label, url_or_reason, ok)
instead of appending into caller-owned produced/skipped accumulators;
run_suite (renamed from _suite) collects outcomes into produced/skipped
itself. _val_verb renamed to run_val to match: both are real verb bodies,
not helpers. _curves folds into build_report, its only caller. Suite
outcome ordering and content are unchanged.
fit_predictor was fitting L_inf + A*w^(-alpha) to as few as 3 width
points, then publishing the fit and a "predicted" loss even when the fit
was degenerate (alpha near 0, R2 meaningless, prediction circular on a
handful of points). Drop the fit entirely: the scaling page now shows
only the measured loss(w) points connected by a line. bigvit_width /
--big-array only existed to feed the now-removed prediction, so it drops
from scaling_report, the suite verb, and the CLI along with it.
…ages

None of the report pages named which dataset the runs they show were
trained on. Add TRAIN_DATASET_LABEL (the random-100k proxy list,
prune10m_random100k_seed0.txt) to spec.py and fold it into each page's
conditions sentence. mutransfer and scaling only ever read from the
vit_mup_w{width} sweep configs, which are hardcoded to this dataset, so
the clause there is a fixed fact. The val page evaluates arbitrary
checkpoints (config_registry.py already carries landed-but-unfired
configs for the random-1M and full-10M checkpoints), so its clause is
phrased as "runs to date" and points at the run label, which already
encodes each checkpoint's own training dataset via its directory stem.

coord_check trains on synthetic random tensors, not any dataset list --
its existing "random input" wording already states this truthfully, so
it is left unchanged rather than getting a misleading dataset clause.
SPECS declared convnext ready=True (the dataclass default), but no
convnext_mup_w* config functions exist anywhere in the tree -- the
convnext muP configs are a separate, not-yet-merged PR. Any routine
verb run against convnext today would pass the ready gate and then fail
deep in collect() with an opaque manifest-not-found error instead of
the intended "no muP configs landed yet" message. fastvit already
carries ready=False for the same situation; convnext should too.
@utkarshgill utkarshgill merged commit bc4ed66 into commaai:main Jul 2, 2026
5 checks passed
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant