jaehyeokdoo2/flow-edit-cube-triple-tkgrid-seeds30003-40004
Edit-placement (t x K x eb) campaign — OGBench cube-triple, task 2 — seeds 30003 & 40004 Seed scope: this repository contains only seeds 30003 and 40004. It is not the full seed set for this campaign — seeds 10001 and 20002 were trained on separate hardware and are not included here. Any per-cell mean computed from this repo alone is an n=2 estimate; see Caveats. 290 training runs from the uedit_place agent: a grid over where in the flow a value-driven edit is applied (t), how… See the full description on the dataset page: https://huggingface.co/datasets/jaehyeokdoo2/flow-edit-cube-triple-tkgrid-seeds30003-40004.
Edit-placement (t x K x eb) campaign — OGBench cube-triple, task 2 — seeds 30003 & 40004
Seed scope: this repository contains only seeds 30003 and 40004. It is not the full seed set for this campaign — seeds 10001 and 20002 were trained on separate hardware and are not included here. Any per-cell mean computed from this repo alone is an n=2 estimate; see Caveats.
290 training runs from the uedit_place agent: a grid over where in the flow a value-driven edit is applied (t), how many corrector iterations are applied there (K), and the displacement budget the dual holds the edit to (eb), across two value-signal arms and two seeds. Each run folder holds the full training record and its final checkpoint.
Start with `INDEX.csv` — one row per run, read from that run's own flags.json. It is the only reliable way to identify a run; the directory names encode the config too, but the index is authoritative.
The grid
2 arms x 3 eb x 4 K x 6 t x 2 seeds = 288 grid runs, plus 2 shared BC pretraining runs. All 288 completed with the full 10-point eval curve; zero failures.
The two arms
Identical in every respect except the value signal and one dependent flag:
clip_pred_action is a one-step-only knob (inert under inner), so the pairing is not a confound — it has no effect in the inner arm.
Layout
<experiment>/flow-edit-prelim/<run_group>/<env>/<run_name>/
eval.csv success + env info at each eval (every 100k steps, 50 episodes)
eval_sv.csv same, checkpointed copy written at save time
offline_agent.csv training diagnostics every 5k steps: losses, dual/alpha,
dual/edition_ema, critic/ed_path, q stats
offline_agent_sv.csv same, checkpointed copy
flags.json complete resolved config (the authoritative record)
params_1000000.pkl final checkpoint, 298 MB (params_300000.pkl for BC runs)
progress.tk last completed step
token.tk W&B run URLExperiments: tk_grid_ct_exp (inner, 144), tk_grid_ct_os_exp (one-step, 144), ctriple_bc_h5_exp (BC pretraining, 2).
Reading a run name
uedit_place_cube-triple-play-singletask-task2-v0_seed30003_h5_off1000000_on0_disc0.995
_cgFalse_gsone-step_edamortized_bcpedited_amdual_nq2_qaggmean_ls1024_alnTrue
_fosFalse_alp0.05_eb0.1_tw0.6-0.6_K5_cpaTrue_rho0.0gs=guidancesource, `ed`=edition, `eb`=displacement budget, `tw<lo>-<hi>`=placement window (lo==hi is a single placement), `K`=corrector iterations (**absent when K=1**), `fos`=finalouterstep (True only at t=1, which is not on the in-loop flow grid), `cpa`=clippred_action (one-step only), ls=layer width.
Checkpoint contents
pickle.load gives {'agent': {'rng', 'network', 'alpha', 'edition_ema', 'clip_radius_ema'}}. agent['network']['params'] holds:
Plus Adam opt_state (~199 MB), which is why each file is 298 MB. modules_tc_critic is allocated but never trained in the one-step arm (critic_loss returns before the distillation step), so it is random init there.
Shared training config
uedit_place, H=5 action chunking (25-D chunk, obs 46-D, act 5-D), layer_size=1024, layer_norm and actor_layer_norm True, flow_steps=10, batch 256, lr 3e-4, tau 0.005, num_qs=2, q_agg=mean, rho=0, discount 0.995, best_of_n=1, edition=amortized, alpha_mode=dual, edition_metric=displacement, bc_eval_point=edited, edit_order=edit_then_bc, final_grad_source=field, edit_train_t=uniform, outlier_q=0, value_norm=False, alpha in [0, 20], eta_alpha=0.01.
Data: OGBench cube-triple-play-10m-v0, 10 sharded files cycled every 1000 steps (dataset_replace_interval=1000). Each grid run loads a shared BC flow (params_300000.pkl from ctriple_bc_h5_exp, per seed) via pretrained_bc_path and runs bc_steps=0 + 1M offline steps, so every cell of a seed starts from identical BC weights and only the edit configuration differs.
Caveats
- BC rows in `INDEX.csv` carry meaningless `eb`/`K`/`t` values (0.1 / 10 / 0.8). Those flags are inert when
bc_steps>0, offline_steps=0. Identify BC runs byarm == 'bc-pretrain', not by the grid columns. - Two seeds only, and they differ systematically. Seed 40004 sits ~30-45 points below 30003 in essentially every cell where either arm works. Orderings within a seed replicate; absolute values at n=2 have a standard error of roughly 15-20 points. Do not quote a single cell's number as a headline result.
- Eval steps are logged 100k..1M, i.e. the offline phase only — the 300k BC steps happened in the separate pretraining run and are not on this axis.
