feat(configs): hydra config groups for the batchflow stack - #558
Conversation
|
Warning This pull request is not mergeable via GitHub because a downstack PR is open. Once all requirements are satisfied, merge this PR as a stack on Graphite.
This stack of pull requests is managed by Graphite. Learn more about stacking. |
1c3da50 to
48db95d
Compare
0855598 to
3c29a2b
Compare
0b796a7 to
ae704d6
Compare
ea0fd13 to
6d650f1
Compare
f6c5cc2 to
1c41133
Compare
b970db5 to
282bba0
Compare
data, experiment, evaluator and callbacks groups, plus every model config the
rest of the tree actually references.
An earlier pass kept 3 model configs. Scanning hydra_configs, tests and scripts
for names that resolve against the model group finds 62 referenced, so that
prune broke two things at once:
* all 31 experiment configs -- each carries an `override /model:`, so hydra
fails at `Could not find 'model/<name>'` before any code runs;
* 25 cases in tests/test_config_compose.py, covering the dfot_*, vae_* and
bc_rnn_pushshapes_paperexact_* families.
The 59 missing configs are restored here, bringing the model group to the 62
that are reachable from the tree. Two of them (bf_rh_sdp_dual,
bf_rh_sdp_nodual) are the only configs that instantiate egomimic/pipeline, so
without them the batchflow runner shipped unreachable.
The remaining 181 per-arm variants on elmo/batchflow-core are still
deliberately excluded -- nothing in this tree references them.
Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
…amilies
The model group was 62 flat files, 9,581 lines, with exactly one config
(pi0.5_bc_eva) using defaults-inheritance. Everything else was authored by
copying a whole file and editing a few numbers.
Folders. Each model family gets its own directory and the filename drops the
prefix the folder already carries:
hnet_cotrain_cossim_s4_trunk_200M.yaml
-> hnet_cotrain_cossim/s4.yaml (model=hnet_cotrain_cossim/s4)
64 configs, 10 folders, none left at the root. Every reference was rewritten:
8 in-repo files plus 26 scratch launchers outside the repo. Old -> new mapping
is saved at scratch/name_mapping_full.txt, since model names appear in the
Results Ledger and run pages as provenance.
Deduplication. Two families were literal copies differing only in numbers, and
both are now base + thin variants:
* hnet_cotrain_cossim -- 12 configs, 270 of 304 lines identical across all of
them (89%). The whole family is one 5-stage skeleton with a different split
of transformer depth between the per-embodiment levels and the shared apex.
Now 8 knobs; each variant is ~13 lines. 3,642 -> 961 lines.
* hnet_dualstream_txar -- 3 configs, 9 knobs. txar_m16 turns out to differ
from txar in k_agnostic/k_specific alone (3/2 -> 10/6).
Model group overall: 9,581 -> 6,414 lines.
The knobs are top-level scalars referenced by interpolation rather than
overridden in place, because outer_stage.hnet.stages is a YAML *list* and
OmegaConf replaces lists wholesale on merge -- a variant cannot override one
element of it.
Defaults entries need @_here_ (e.g. `- hnet_cotrain_cossim/base@_here_`).
Without it Hydra derives the package from the folder path and merges the base
under model.hnet_cotrain_cossim instead of the model root; the config still
composes and the tests still pass, it just silently inherits nothing.
The other seven families are NOT factored. Each has line-count differences
between members, i.e. they are structurally different models that share
boilerplate rather than copies of one template, so the same mechanical proof
does not apply. Duplication left: dfot 31%, bc_rnn 58%, vae 62%,
hnet_pushshapes 39%, hpt 34%, 2trunk 44%, bf_rh 39%.
Verified: parameterization proven lossless by reconstruction (11/11 cossim,
3/3 txar reproduce the originals byte-for-byte) before anything was written;
all 31 experiment configs compose; tests/test_config_compose.py 25 passed; and
the resolved model config of every one of the 62 pre-existing configs was
compared across the rename -- 48 identical, 14 differing only by the added
knob keys, 0 real differences.
Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
data/pushshapes/packed_episode/simulation/delta.yaml pointed at
Tsim_datasets2/circle, which today contains a single basic/ subdirectory and
zero .zarr episodes. LocalEpisodeResolver does not recurse (AGENTS.md:139 says
so explicitly), so the config resolved to an empty dataset and training died
with:
No valid collection names from local filtering: filters matched no
episodes in the local directory.
The episodes live one level down. Both the train and valid resolver paths now
point at circle/basic.
Verified: the composed config resolves to a directory containing 311 .zarr
episodes (previously 0); all 32 experiment configs still compose.
Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
evaluator/dfot, evaluator/tf and model/dfot move to the DFoT PR stacked above. No experiment config selects them. Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
This stack added egomimic/scripts/eva_process/zarr_write_test.py while main has the same converter at egomimic/rldb/zarr/hdf5_to_zarr.py, so merging would have partly undone #562, which renamed it. Git recorded that as a rename, so a delete-oriented check across the stack missed it; content-level duplicate detection found the shared bodies (main 179 lines, is_image_array 38, needs_transpose_to_hwc 17). The copy here is also the older fork: it predates main's mandatory-intrinsics change and omits the intrinsics= kwarg entirely, so it would write zarr episodes with no camera calibration -- the exact failure that per-episode intrinsics were introduced to prevent. Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
Claude Code ReviewReview: PR #558 — Hydra config groups for the batchflow stackSummaryLarge-scale reorganization of Key concerns1. Stray edit in
|
Claude Code ReviewReviewSummaryLarge-scale reorganization of Hydra config groups into nested directories ( Key concerns
Suggestions
Verdict: Request ChangesThe Reviewed by Claude · Review workflow |

data, experiment, evaluator and callbacks groups, plus the three model configs
any surviving config references. Per-arm model variants are deliberately not
included.
Co-Authored-By: Claude Opus 5 (1M context) noreply@anthropic.com