Skip to content
Draft
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
41 commits
Select commit Hold shift + click to select a range
614df7f
Add independent three-branch MoT world model and offline pipeline
monzzzz Oct 17, 2026
9425317
Add embodiment-specific image residual adapters to MoT world model
monzzzz Oct 17, 2026
e443192
Support selective per-frame refinement in world-model sampler
monzzzz Oct 17, 2026
ca9c04a
Fix world-model conditioning coverage and confidence normalization
monzzzz Oct 17, 2026
044602a
Reject silent missing-track zeros and add explicit conditional comple…
monzzzz Oct 17, 2026
e7c6f76
Verify DINO patch geometry and add labeled resolution diagnostic
monzzzz Oct 17, 2026
d885073
Use FP32 training for both world-model time modes
monzzzz Oct 17, 2026
962a1f2
Separate projected landmark diagnostics from visible labels and reuse…
monzzzz Oct 17, 2026
0a19e95
Add isolated frozen DINO landmark readout diagnostic
monzzzz Oct 17, 2026
c64e9b8
Test MoT branches and clean-input pose readout in isolation
monzzzz Oct 17, 2026
90e4ea0
Separate verified DINO feature extraction from point matching
monzzzz Oct 17, 2026
e7aa332
Add native MoT real-data pose readout component probe
monzzzz Oct 17, 2026
58458f6
Prepare aligned LIBERO state-rendered RGB pose and tracks
monzzzz Oct 17, 2026
7596497
Add opt-in clean image prediction for MoT denoising
monzzzz Oct 17, 2026
e5d986c
Stabilize clean-image sampling at tiny refinement strengths
monzzzz Oct 17, 2026
9ee18dd
Add fixed episode splits and physical-time component diagnostics
monzzzz Oct 17, 2026
a56bb98
Document clean feature objective and checkpoint semantics
monzzzz Oct 17, 2026
cc7c419
Add frozen DINO segmentation probe with reviewed masks and episode ho…
monzzzz Oct 17, 2026
7670078
Keep segmentation plot titles outside image panels
monzzzz Oct 17, 2026
6b08076
Bound continuous world-model samples to three seconds around current …
monzzzz Oct 17, 2026
48975ce
Allow up to sixteen continuous timestamps while preserving token guard
monzzzz Oct 17, 2026
6251407
Set user-requested MoT training budget to 150k updates
monzzzz Oct 17, 2026
9ced3d0
Add exact query-chunked MoT attention and rematerialization with pari…
monzzzz Oct 17, 2026
4439f20
Prepare native Quest Sharpa tracks with explicit assets and marker ex…
monzzzz Oct 17, 2026
df77663
Read prepared world-model frame slices from HDF5 caches
monzzzz Oct 17, 2026
56b56ca
Export explicit measured simulator finger joints with fixed-frame pose
monzzzz Oct 17, 2026
5a3a376
Prepare explicit native simulation corpora with resumable episode rec…
monzzzz Oct 17, 2026
fbdee58
Require native replay proof when reusing prepared simulation caches
monzzzz Oct 17, 2026
7b8319a
Verify exact native geometry and stream high-resolution RGB with expl…
monzzzz Oct 17, 2026
1c9be86
Export native RGB corpora with immutable per-episode reuse proofs
monzzzz Oct 17, 2026
9388766
Finalize world model corpora with bound train-only streaming normaliz…
monzzzz Oct 17, 2026
891ad97
Add streaming native DINO FP32 feature caches with strict provenance
monzzzz Oct 17, 2026
4ce9fe5
Record a separate corpus-validated RGB rounding policy while preservi…
monzzzz Oct 17, 2026
4547bf5
Resume MoT model RNG and consumed sample cursors exactly
monzzzz Oct 17, 2026
2067a2b
Add opt-in strict FP32 backend gate to shared training entrypoint
monzzzz Oct 17, 2026
6b0a4b8
Reuse verified immutable world-model artifact fingerprints safely
monzzzz Oct 17, 2026
c3037cf
Add authenticated direct trainer PID checkpoint transport
monzzzz Oct 17, 2026
b90732f
Bound smoke validation per embodiment without changing full sampling
monzzzz Oct 17, 2026
a3cdfeb
Add safe allocation-end timer to checkpoint runner
monzzzz Oct 17, 2026
48a44b1
Reuse verified artifact memo across overlapping prepared corpora
monzzzz Oct 17, 2026
b127d90
Defer runner boundary saves through validation until optimizer comple…
monzzzz Oct 17, 2026
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
429 changes: 429 additions & 0 deletions docs/WORLD_MODEL.md

Large diffs are not rendered by default.

39 changes: 39 additions & 0 deletions docs/cluster-pipeline.md
Original file line number Diff line number Diff line change
Expand Up @@ -131,6 +131,45 @@ status and signal names and never requeues a cancellation or ordinary child
failure. A failed upstream dependency automatically retires the dependent
request; it does not permit bypassing its smoke gate.

For a single-process trainer sharing the runner's Linux container, the generic
`ice_requeue_runner.py` also supports opt-in `--checkpoint-forwarding trainer-pid`.
Run the runner from the exact source root, and pass its own Python executable
as the direct child command (no shell or `srun` wrapper). The existing
`runtime.slurm_requeue_owner=runner` callback installs SIGUSR2 before publishing
readiness. The runner binds that proof to its nonce, job/restart, source hashes,
UID, node, boot ID, PID namespace, cgroup, executable, working directory and
process start time; `pidfd` prevents signaling a reused PID. It signals only its
known child and never invokes `scancel`, including on failure. This route requires
one task/node/process and a working `scontrol` client inside the same container;
verify the site's client/config/Munge-socket bindings with a read-only query and
a dedicated requeue test before training. Do not expose or copy a Munge key.

SIGUSR2 only latches a request; the callback saves at a completed batch hook,
publishes an immutable full-state checkpoint and receipt, and the runner strictly
validates a newer optimizer step before asking Slurm to requeue. Work after that
checkpoint can be replayed after restart. Keep periodic checkpoint/validation
cadences unchanged; allocation-boundary recovery saves are additional. Pass
`--target-global-step` with a completion sentinel to reject an early zero exit or
an older COMPLETE record. Boundary and validator time must fit the signal lead;
restart limits must cover the measured run budget. When the runner lives inside
an `srun` container, a batch-only Slurm signal may not reach it. Opt in to
`--allocation-boundary-lead-seconds` to arm a relative kernel timer from the
native `SLURM_JOB_END_TIME` epoch before discovery. Missing/invalid/past end times
fail closed; already inside the lead window uses the existing early-boundary
path. The timer only latches the same safe save request and cannot override
TERM/INT. It is disarmed/restored on every runner exit and is not inherited by
the trainer. This route requires a fixed allocation end time for the attempt;
do not shorten its walltime externally without coordinating the boundary.
Prove one actual deadline-triggered requeue separately from an injected signal.
When mid-validation continuation is unverified, set
`runtime.slurm_signal_train_batch_only=true`. Requests then remain latched through
validation and epoch/fit-end hooks until the next completed optimizer update.
This avoids conflicting with a scheduled checkpoint at the same global step.
The allocation lead and signal grace must exceed the measured **complete**
validation pass, longest training step, save and strict checkpoint verification;
a small diagnostic validation cap is not a production timing bound.
Defaults and the existing `slurm-steps` transport remain unchanged.

In this Action Flow branch, `egomimic/eval/artifact_paths.py` supplies the same
namespace rule to EnergyScore, UNITE diagnostics, and Action Flow diagnostics.
The Action Flow smoke verifier selects a matching active job/restart namespace
Expand Down
11 changes: 9 additions & 2 deletions egomimic/benchmarks/libero/replay.py
Original file line number Diff line number Diff line change
Expand Up @@ -223,15 +223,22 @@ def fetch(row):
return raw / suite


def rebase_demo_xml(xml, robosuite_root, assets_root):
def rebase_demo_xml(xml, robosuite_root, assets_root, asset_remaps=()):
"""Relocate saved asset paths, preserving every model and physics parameter."""
tree = ET.fromstring(xml)
for element in tree.iter():
old = element.get("file")
if old is None:
continue
parts = Path(old).parts
if "robosuite" in parts:
matches = [(Path(prefix), Path(target).resolve()) for prefix, target in asset_remaps
if Path(old).is_relative_to(Path(prefix))]
if len(matches) > 1:
raise ValueError(f"Ambiguous demonstration asset remap: {old}")
if matches:
prefix, target = matches[0]
new = target / Path(old).relative_to(prefix)
elif "robosuite" in parts:
index = max(i for i, part in enumerate(parts) if part == "robosuite")
new = Path(robosuite_root).joinpath(*parts[index + 1 :])
elif "assets" in parts:
Expand Down
Loading
Loading