Repository navigation
Conversation
This was referenced Sep 28, 2026
Contributor
Author
aidang3019
changed the base branch from
ryanco/replay-fractional-stride
to
graphite-base/701
September 30, 2026 01:06
RyanPCo
force-pushed
the
ryanco/weight-ema
branch
from
October 12, 2026 20:01
600d1a3 to
e2294c1
Compare
RyanPCo
force-pushed
the
graphite-base/701
branch
from
October 12, 2026 20:01
b99295a to
643857b
Compare
RyanPCo
force-pushed
the
ryanco/weight-ema
branch
from
October 12, 2026 20:26
e2294c1 to
b1ee0f2
Compare
RyanPCo
changed the base branch from
graphite-base/701
to
ryanco/ephemeral-stage
October 12, 2026 20:27
RyanPCo
force-pushed
the
ryanco/weight-ema
branch
from
October 12, 2026 21:50
b1ee0f2 to
bf18575
Compare
RyanPCo
force-pushed
the
ryanco/ephemeral-stage
branch
from
October 12, 2026 21:50
6e5d9e1 to
8c92207
Compare
This was referenced Oct 12, 2026
RyanPCo
force-pushed
the
ryanco/weight-ema
branch
from
October 12, 2026 23:19
bf18575 to
a9e7b7a
Compare
RyanPCo
force-pushed
the
ryanco/ephemeral-stage
branch
from
October 19, 2026 19:57
2f0c6a8 to
3e255fd
Compare
Opt-in via model.ema (enabled, power, max_decay). Decay follows RDT's 1 - (1 + n)^-0.75 capped at 0.9999. When on, validation and mode=eval run on the EMA weights; checkpoints carry them under an 'ema' key and keep raw weights in state_dict even when saved mid-validation. The raw-weight backup during validation lives on CPU. Co-Authored-By: Claude Opus 5.5 <[email protected]> Claude-Session: https://claude.ai/code/session_01Jk3skP294hqzoTA37vu4xK
RyanPCo
force-pushed
the
ryanco/weight-ema
branch
from
October 19, 2026 19:58
a9e7b7a to
7948bb4
Compare
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.

Opt-in EMA of the trainable weights, using RDT's schedule: decay
1 - (1 + n)^-0.75, capped at 0.9999.egomimic/pl_utils/ema.py:WeightEMA, an fp32 shadow copy updated with one fused_foreach_lerp_per optimizer step.ModelWrapper: updates the EMA once per optimizer step and validates on the EMA weights, restoring the raw weights afterwards; the raw backup is kept on CPU during validation. Checkpoints store the EMA underema, andstate_dictkeeps the raw weights even when a checkpoint is saved mid-validation. A checkpoint without an EMA starts one from its current weights.load_checkpoint_weightspasses the EMA through, somode=evalevaluates the EMA weights.Enable with
+model.ema.enabled=true(optional:+model.ema.power,+model.ema.max_decay).Tested: unit tests only (
tests/unit/test_ema.py, CPU).Not yet tested on GPU:
trainer=debugrun: checkpoint has anemakey, andTrain/ema_decayis loggednum_updatesmode=evalmatches the EMA val metrics🤖 Generated with Claude Code
https://claude.ai/code/session_01Jk3skP294hqzoTA37vu4xK