LeWM Push-T: My Second Experiment vs Paper (arXiv 2603.19312v3)

This run fixes the two main differences from the first experiment: it trains for 10 epochs instead of 3, and it uses 224×224 images instead of 112×112, for both training and eval.

Legend: ✓ = matches · ≈ = close / likely same · ⚠️ = differs, likely affects results · — = not stated in paper

1. Training parameters

MinePaper
Epochs1010✓
Image size224×224224×224✓
EncoderViT-tiny, patch 14, 12 layers, 3 heads, hidden 192, from scratchViT-tiny, patch 14, 12 layers, 3 heads, hidden 192, from scratch✓
Embedding[CLS] → MLP projector (hidden 2048) + BatchNorm, dim 192[CLS] → 1-layer MLP + BatchNorm, dim 192≈
Predictortransformer, 6 layers, 16 heads, dropout 0.1, AdaLN action conditioning, ~10M paramstransformer (“ViT-S”), 6 layers, 16 heads, 10% dropout, AdaLN, ~10M params✓
History size33✓
Sub-trajectory4 frames + 4 blocks of 5 actions4 frames + 4 blocks of 5 actions✓
Frameskip55✓
Batch size128128✓
SIGReg λ0.090.1 (λ ablation peaks near 0.09)≈
SIGReg projections10241024✓
SIGReg knots17T nodes in [0.2, 4] (count not stated; insensitive)—
Optimizer / LR / WDAdamW / 5e-5 / 1e-3——
Precision / grad clipbf16 / 1.0——
Train / val split0.9 / 0.1——
Datasetlibrakevin/lewm-pushtDINO-WM Push-T, 20,000 expert episodes≈ (not verified)
Training seeds1 (seed 3072)3⚠️

The run took 6 h 40 min on one RTX 5090: 13,933 steps per epoch and 139,330 steps in total. The full training log is in train.log.

python train.py data=pusht img_size=224 trainer.max_epochs=10

Final metrics after epoch 10:

Total lossPred lossSIGReg loss
Train (last logged step)0.08870.00770.898
Validation0.12300.00321.332

2. Eval parameters

MinePaper
Checkpointweights_epoch_010.ptfinal✓
Episodes per seed5050 (same 50 for all models)✓
Eval budget50 steps50 steps✓
Goal offset25 steps25 steps✓
Start statessampled at random from the datasetsampled at random from the dataset✓
CEM samples300300✓
CEM iterations3030 (Push-T)✓
CEM top-k3030✓
CEM initial variance1.01✓
Planning horizon5 (= 25 env steps)5 (= 25 env steps)✓
Receding horizon5 (execute full plan)5 (execute full plan)✓
Eval image size224224✓
What the seed varieseval start states (1 model)training (3 models)⚠️
Eval seeds0–9——
python eval.py --config-name=pusht.yaml \
  policy=pusht/2026-10-10_120411_img224_s3072/weights_epoch_010.pt \
  eval.img_size=224 seed=<0..9>

Each 50-episode eval takes about 1 minute on the RTX 5090.

3. Eval Result (Push-T success rate)

All 10 seeds together (same epoch-10 checkpoint, 500 episodes in total):

Eval seedSuccess rate
092.0%
192.0%
294.0%
398.0%
488.0%
596.0%
690.0%
796.0%
892.0%
994.0%
Mean ± std93.2 ± 2.9

Overall, 466 of 500 episodes succeeded. The ± is computed the same way as the paper’s. The sample std is ±3.0.

Success rate
Experiment 1 (3 epochs, 112 px)80.6 ± 5.2
Experiment 2 (10 epochs, 224 px)93.2 ± 2.9
Paper, LeWM (Tab. 5)96.0 ± 2.83

Notes

  1. The seed-to-seed spread is sampling noise. At a 93% success rate, 50 episodes give a binomial std of about ±3.6 points. The observed spread across seeds (±3.0) is within that.
  2. The same seed doesn’t give the same result twice. Rerunning seeds 0–2 gave 94 → 92, 90 → 92 and 94 → 94. The seed fixes the start states, and the CEM solver also gets seed, but a run still isn’t bit-reproducible. GPU nondeterminism is a likely cause, but I haven’t confirmed it.
  3. The remaining ~3-point gap to the paper could come from training-run variation (I trained only 1 seed; the paper trained 3), from which 50 trajectories the paper evaluated on (not published), or from differences in the dataset.