Repository navigation
Conversation
Copying the current step / frame into the past slots (the old history dropout, and what the dataset's front padding produced) looks exactly like a genuinely static hand or scene. Missing history is now a learned null token, by default: - MLPPolicyStem (history_len > 1): a (D,) null_token replaces the per-step MLP token of every past step that history_dropout drops (per sample, train only) or that the dataset's proprio_history_mask marks as front padding (train and eval); the per-step time embedding is still added. The mask now travels HPT.process_batch_for_training -> _robomimic_to_hpt_data -> stem (history_mask kwarg) instead of being dropped. - RDTModel (image_history > 1): a (D,) null_frame replaces a dropped or padded past frame's stem tokens, under the usual position, frame and camera embeddings. The dataset now emits <camera>_hist_mask for a single lagged frame too; RDT appends the current frame's 1 as <camera>_mask. - The current step / frame is never nulled. torch.where keeps both null params in the graph every step, so plain DDP sees no unused parameter. history_null_token / image_history_null_token (default true) select the legacy copy-current path, bit-identical to before. Every config that sets history_dropout / image_history_dropout gets null-token semantics at its existing rate. The kp RDT models (rdt_bc_mecka_kp_dinov3_vitb and rdt_1b_..., i.e. the mecka private opscale and freeform op2 recipes) set both explicitly, with history_dropout and image_history_dropout 0.1. Architecture change: new parameters. A checkpoint from before this lacks them; loading one warns and switches that stem / model back to the legacy copy-current semantics it was trained with, so old runs still evaluate and resume. Co-Authored-By: Claude Opus 5.5 <[email protected]> Claude-Session: https://claude.ai/code/session_01X86xQuci4asKUkiCwqMiKF
This was referenced Oct 12, 2026
Contributor
Author
This was referenced Oct 23, 2026
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.

Copying the current step / frame into the past slots (the old history
dropout, and what the dataset's front padding produced) looks exactly like a
genuinely static hand or scene. Missing history is now a learned null token,
by default:
MLP token of every past step that history_dropout drops (per sample, train
only) or that the dataset's proprio_history_mask marks as front padding
(train and eval); the per-step time embedding is still added. The mask now
travels HPT.process_batch_for_training -> _robomimic_to_hpt_data -> stem
(history_mask kwarg) instead of being dropped.
padded past frame's stem tokens, under the usual position, frame and camera
embeddings. The dataset now emits _hist_mask for a single lagged
frame too; RDT appends the current frame's 1 as _mask.
params in the graph every step, so plain DDP sees no unused parameter.
history_null_token / image_history_null_token (default true) select the
legacy copy-current path, bit-identical to before. Every config that sets
history_dropout / image_history_dropout gets null-token semantics at its
existing rate. The kp RDT models (rdt_bc_mecka_kp_dinov3_vitb and
rdt_1b_..., i.e. the mecka private opscale and freeform op2 recipes) set
both explicitly, with history_dropout and image_history_dropout 0.1.
Architecture change: new parameters. A checkpoint from before this lacks
them; loading one warns and switches that stem / model back to the legacy
copy-current semantics it was trained with, so old runs still evaluate and
resume.
Co-Authored-By: Claude Opus 5.5 [email protected]
Claude-Session: https://claude.ai/code/session_01X86xQuci4asKUkiCwqMiKF
Ported from ideas in #710 (no IDs taken). Combined stack: ruff clean; 562 targeted unit tests pass on CPU; no GPU smoke run yet.
🤖 Generated with Claude Code
https://claude.ai/code/session_01X86xQuci4asKUkiCwqMiKF