VTWM ablation — 40s long-horizon rollouts (auto-uploaded)

Diffusion-forcing world model rollouts. Each sample is ~2.7 s (16 raw frames @ 6 fps). Side-by-side videos show ground truth on the left, model prediction on the right. First half of each clip = history (GT), second half = autoregressively sampled future. Click a sample header to expand its videos (default-collapsed to keep the page light).

40s long-horizon AR rollouts

Model rolls out ~40 s autoregressively. Suffix _s1 = ar_stride=1 (finer step). Short 16-frame rollouts live on the sister page: yxma/vtwm-ablation-v2.

Sections

Setup comparison

Click a run name to jump to its rollout videos. ✓ = feature on, ✗ = off. Lower val_loss is better.

runfusionviewstactileshift16delta-refcam-posegateval_loss
stride2 (window ref) · 40s AR SOTA (val_loss)mmdit_mv32window0.013
stride2 + h4/f12 window · 40s ARmmdit_mv32window0.013
stride2 + p01 · 40s ARmmdit_mv32episode_p010.0159
mv1 256-res (window ref) · 40s ARmmdit_mv32window0.0143
stride2 + p01 + hybrid (dual6+single7) · 40s ARmmdit_mv_hybrid32episode_p010.0161
stride2 + p01 + hybrid (dual6+single7) · 40s AR (ar_stride=1)mmdit_mv_hybrid32episode_p010.0161
stride2 + p01 + hybrid + flow matching · 40s ARmmdit_mv_hybrid32episode_p010.1445
stride2 + p01 + hybrid (deeper, dual6+single8) · 40s ARmmdit_mv_hybrid32episode_p010.0159
stride2 + p01 + hybrid (deeper, dual6+single8) · 40s AR (ar_stride=1)mmdit_mv_hybrid32episode_p010.0159

Rollout-latent metrics (10 val samples)

Latent-space MSE of predicted future vs ground truth. Contact/no-contact split uses tactile latent-to-reference energy (threshold 0.05).

runview MSETL MSETR MSEtactile contact MSEtactile no-contact MSE
stride2 (window ref) · 40s ARn/an/an/an/an/a
stride2 + h4/f12 window · 40s ARn/an/an/an/an/a
stride2 + p01 · 40s ARn/an/an/an/an/a
mv1 256-res (window ref) · 40s ARn/an/an/an/an/a
stride2 + p01 + hybrid (dual6+single7) · 40s ARn/an/an/an/an/a
stride2 + p01 + hybrid (dual6+single7) · 40s AR (ar_stride=1)n/an/an/an/an/a
stride2 + p01 + hybrid + flow matching · 40s ARn/an/an/an/an/a
stride2 + p01 + hybrid (deeper, dual6+single8) · 40s ARn/an/an/an/an/a
stride2 + p01 + hybrid (deeper, dual6+single8) · 40s AR (ar_stride=1)n/an/an/an/an/a

Training loss curves & conclusions

val/train loss vs epoch (visual / tactile / combined / train-visual)
Conclusions (markdown)
# Loss curve analysis — multi-view + cam-pose ablations

| Run                  | Type                                            | Best val_loss_visual | Best val_loss_tactile | Final val_loss |
|----------------------|-------------------------------------------------|----------------------|-----------------------|----------------|
| vo_left              | single view (left)                              | 0.0096 @ ep84        | —                     | 0.0097         |
| vo_middle            | single view (middle/top)                        | 0.0128 @ ep97        | —                     | 0.0128         |
| **vo_right**         | single view (right)                             | **0.0093 @ ep97**    | —                     | 0.0093         |
| p2_mv                | 3-view shared weights, no tactile               | 0.0099 @ ep96        | —                     | 0.0099         |
| p3_mv2t              | 3-view + 2-tactile, shared weights              | 0.0100 @ ep97        | 0.0040                | 0.0139         |
| p4_mv2t_extr (no gate) | p3 + cam-pose extrinsics                      | 0.0102 @ ep98        | **0.3244 (blow-up)**  | 0.3346         |
| **p4_gate**          | p4 + scalar gate (this fix)                     | **0.0096 @ ep134**   | 0.2621 (still bad)    | 0.2751         |
| **p5_gate**          | vision-only p2 + cam-pose + gate                | **0.0095 @ ep149**   | —                     | 0.0095         |
| vo_v0  (legacy)      | single view (old 1v0t pipeline)                 | 0.0167 @ ep53        | —                     | 0.0171         |
| mm_v0  (legacy)      | 1-view + 2-tactile channel-stack (old mm_v0)    | 0.0162 @ ep56        | 0.0032                | 0.0198         |

## Conclusions

1. **The gate fix worked for the VISUAL branch.** Both `p4_gate` (0.0096) and `p5_gate` (0.0095) now **match the best single-view baseline `vo_right` (0.0093)** — for the first time, multi-view + cam-pose conditioning beats the best single-view model on visual fidelity. Without the gate (`p4_mv2t_extr`) the visual stream was already OK (0.0102) but tactile blew up.

2. **The gate did NOT save the tactile branch.** `p4_gate` val_loss_tactile = 0.262 (vs `p3_mv2t` baseline 0.0040, ~65× worse). The single scalar gate delays the cam-pose perturbation by one step but does not prevent it from injecting noise into the tactile token stream once it opens. Likely fix for a future run: route cam-pose ONLY through view tokens (gate visual cam-pose embedding, but never add it to tactile-stream AdaLN).

3. **Plateau.** `p4_gate` and `p5_gate` reach their best around ep122–150 and have plateaued for >1h; safe to inference now even though target was 200 epochs.

4. **Multi-view rank** (visual val_loss, lower=better):
   `p5_gate (0.0095) ≈ p4_gate (0.0096) ≈ vo_right (0.0093) < vo_left (0.0096) < p2_mv (0.0099) ≈ p3_mv2t (0.0100) < vo_middle (0.0128)`

5. **`vo_middle` is the worst single view** by a margin — top-down camera has the least useful geometry for predicting future frames.

A. Baselines — window ref (tight short-window)

stride2 (window ref) · 40s AR SOTA (val_loss)

Stride=2 re-encoded latents → 4x training data. Same recipe as mv1_3v2t. Ties pre-stride2 SOTA at ep39. 40-second autoregressive rollout at test time. Showing 3 of 3 samples.

sample_000  (click to expand videos)
panel for 09_mv1_v2_stride2_val_0.0130_long_40s/sample_000
view_left — GT | rollout
view_middle (top-down) — GT | rollout
view_right — GT | rollout
tactile_left — GT | rollout
tactile_right — GT | rollout
sample_001  (click to expand videos)
panel for 09_mv1_v2_stride2_val_0.0130_long_40s/sample_001
view_left — GT | rollout
view_middle (top-down) — GT | rollout
view_right — GT | rollout
tactile_left — GT | rollout
tactile_right — GT | rollout
sample_002  (click to expand videos)
panel for 09_mv1_v2_stride2_val_0.0130_long_40s/sample_002
view_left — GT | rollout
view_middle (top-down) — GT | rollout
view_right — GT | rollout
tactile_left — GT | rollout
tactile_right — GT | rollout

stride2 + h4/f12 window · 40s AR

Shorter history (4), longer future (12) — 1.5x more train windows per episode. Ties stride2 SOTA at ep39. 40-second autoregressive rollout at test time. Showing 3 of 3 samples.

sample_000  (click to expand videos)
panel for 09c_mv1_v2_h4f12_val_0.0130_long_40s/sample_000
view_left — GT | rollout
view_middle (top-down) — GT | rollout
view_right — GT | rollout
tactile_left — GT | rollout
tactile_right — GT | rollout
sample_001  (click to expand videos)
panel for 09c_mv1_v2_h4f12_val_0.0130_long_40s/sample_001
view_left — GT | rollout
view_middle (top-down) — GT | rollout
view_right — GT | rollout
tactile_left — GT | rollout
tactile_right — GT | rollout
sample_002  (click to expand videos)
panel for 09c_mv1_v2_h4f12_val_0.0130_long_40s/sample_002
view_left — GT | rollout
view_middle (top-down) — GT | rollout
view_right — GT | rollout
tactile_left — GT | rollout
tactile_right — GT | rollout

mv1 256-res (window ref) · 40s AR

Same mv1 recipe at 256x256 input (2x spatial). val_loss not directly comparable (different latent dims), kept for visual quality comparison. 40-second autoregressive rollout at test time. Showing 1 of 1 samples.

sample_000  (click to expand videos)
(no panel.png)

B. Baselines — episode_p01 ref (rollout-consistent)

stride2 + p01 · 40s AR

Stride2 with tactile_ref_source=episode_p01. Closes only ~halfway the gap vs window (Δ=+0.003), confirming window ref is tighter. 40-second autoregressive rollout at test time. Showing 3 of 3 samples.

sample_000  (click to expand videos)
panel for 10_mv1_v2_stride2_p01_val_0.0159_long_40s/sample_000
view_left — GT | rollout
view_middle (top-down) — GT | rollout
view_right — GT | rollout
tactile_left — GT | rollout
tactile_right — GT | rollout
sample_001  (click to expand videos)
panel for 10_mv1_v2_stride2_p01_val_0.0159_long_40s/sample_001
view_left — GT | rollout
view_middle (top-down) — GT | rollout
view_right — GT | rollout
tactile_left — GT | rollout
tactile_right — GT | rollout
sample_002  (click to expand videos)
panel for 10_mv1_v2_stride2_p01_val_0.0159_long_40s/sample_002
view_left — GT | rollout
view_middle (top-down) — GT | rollout
view_right — GT | rollout
tactile_left — GT | rollout
tactile_right — GT | rollout

C. Hybrid architecture — SOTA (HunyuanVideo/FLUX style)

stride2 + p01 + hybrid (dual6+single7) · 40s AR

Dual→Single hybrid fusion: first 6 blocks are MMDiTBlockDFMV (per-modality QKV+MLP), last 7 blocks are SingleStreamHybridBlock (shared QKV+MLP with per-modality adaLN, forces deep V-T fusion). Depth=12, 85M params (0.84x mmdit_mv baseline). Warm-started from mv1_v2_stride2_p01 (loaded 282/298 tensors bit-exact). 40-second autoregressive rollout at test time. Showing 3 of 3 samples.

sample_000  (click to expand videos)
panel for 15_mv1_v2_stride2_p01_hybrid_val_0.0161_long_40s/sample_000
view_left — GT | rollout
view_middle (top-down) — GT | rollout
view_right — GT | rollout
tactile_left — GT | rollout
tactile_right — GT | rollout
sample_001  (click to expand videos)
panel for 15_mv1_v2_stride2_p01_hybrid_val_0.0161_long_40s/sample_001
view_left — GT | rollout
view_middle (top-down) — GT | rollout
view_right — GT | rollout
tactile_left — GT | rollout
tactile_right — GT | rollout
sample_002  (click to expand videos)
panel for 15_mv1_v2_stride2_p01_hybrid_val_0.0161_long_40s/sample_002
view_left — GT | rollout
view_middle (top-down) — GT | rollout
view_right — GT | rollout
tactile_left — GT | rollout
tactile_right — GT | rollout

stride2 + p01 + hybrid (dual6+single7) · 40s AR (ar_stride=1)

Dual→Single hybrid fusion: first 6 blocks are MMDiTBlockDFMV (per-modality QKV+MLP), last 7 blocks are SingleStreamHybridBlock (shared QKV+MLP with per-modality adaLN, forces deep V-T fusion). Depth=12, 85M params (0.84x mmdit_mv baseline). Warm-started from mv1_v2_stride2_p01 (loaded 282/298 tensors bit-exact). 40-second autoregressive rollout at test time. (ar_stride=1) Showing 3 of 3 samples.

sample_000  (click to expand videos)
panel for 15_mv1_v2_stride2_p01_hybrid_val_0.0161_long_40s_s1/sample_000
view_left — GT | rollout
view_middle (top-down) — GT | rollout
view_right — GT | rollout
tactile_left — GT | rollout
tactile_right — GT | rollout
sample_001  (click to expand videos)
panel for 15_mv1_v2_stride2_p01_hybrid_val_0.0161_long_40s_s1/sample_001
view_left — GT | rollout
view_middle (top-down) — GT | rollout
view_right — GT | rollout
tactile_left — GT | rollout
tactile_right — GT | rollout
sample_002  (click to expand videos)
panel for 15_mv1_v2_stride2_p01_hybrid_val_0.0161_long_40s_s1/sample_002
view_left — GT | rollout
view_middle (top-down) — GT | rollout
view_right — GT | rollout
tactile_left — GT | rollout
tactile_right — GT | rollout

stride2 + p01 + hybrid + flow matching · 40s AR

Hybrid backbone + rectified flow matching training objective (SD3/FLUX/HunyuanVideo). Same 85M backbone. Linear-interpolation schedule + velocity target + Euler ODE sampling (50 steps instead of 100). Val_loss numerically incomparable to pred_v runs — compare via decoded LPIPS + tactile MSE. 40-second autoregressive rollout at test time. Showing 3 of 3 samples.

sample_000  (click to expand videos)
panel for 15b_mv1_v2_stride2_p01_hybrid_flow_val_0.1445_long_40s/sample_000
view_left — GT | rollout
view_middle (top-down) — GT | rollout
view_right — GT | rollout
tactile_left — GT | rollout
tactile_right — GT | rollout
sample_001  (click to expand videos)
panel for 15b_mv1_v2_stride2_p01_hybrid_flow_val_0.1445_long_40s/sample_001
view_left — GT | rollout
view_middle (top-down) — GT | rollout
view_right — GT | rollout
tactile_left — GT | rollout
tactile_right — GT | rollout
sample_002  (click to expand videos)
panel for 15b_mv1_v2_stride2_p01_hybrid_flow_val_0.1445_long_40s/sample_002
view_left — GT | rollout
view_middle (top-down) — GT | rollout
view_right — GT | rollout
tactile_left — GT | rollout
tactile_right — GT | rollout

stride2 + p01 + hybrid (deeper, dual6+single8) · 40s AR

Deeper hybrid: depth=14 (+2 single-stream blocks) for more cross- modal fusion capacity. Same dual_depth=6 to preserve warm-start. ~100M params — matches original mmdit_mv budget. 40-second autoregressive rollout at test time. Showing 3 of 3 samples.

sample_000  (click to expand videos)
panel for 15c_mv1_v2_stride2_p01_hybrid_deep_val_0.0159_long_40s/sample_000
view_left — GT | rollout
view_middle (top-down) — GT | rollout
view_right — GT | rollout
tactile_left — GT | rollout
tactile_right — GT | rollout
sample_001  (click to expand videos)
panel for 15c_mv1_v2_stride2_p01_hybrid_deep_val_0.0159_long_40s/sample_001
view_left — GT | rollout
view_middle (top-down) — GT | rollout
view_right — GT | rollout
tactile_left — GT | rollout
tactile_right — GT | rollout
sample_002  (click to expand videos)
panel for 15c_mv1_v2_stride2_p01_hybrid_deep_val_0.0159_long_40s/sample_002
view_left — GT | rollout
view_middle (top-down) — GT | rollout
view_right — GT | rollout
tactile_left — GT | rollout
tactile_right — GT | rollout

stride2 + p01 + hybrid (deeper, dual6+single8) · 40s AR (ar_stride=1)

Deeper hybrid: depth=14 (+2 single-stream blocks) for more cross- modal fusion capacity. Same dual_depth=6 to preserve warm-start. ~100M params — matches original mmdit_mv budget. 40-second autoregressive rollout at test time. (ar_stride=1) Showing 3 of 3 samples.

sample_000  (click to expand videos)
panel for 15c_mv1_v2_stride2_p01_hybrid_deep_val_0.0159_long_40s_s1/sample_000
view_left — GT | rollout
view_middle (top-down) — GT | rollout
view_right — GT | rollout
tactile_left — GT | rollout
tactile_right — GT | rollout
sample_001  (click to expand videos)
panel for 15c_mv1_v2_stride2_p01_hybrid_deep_val_0.0159_long_40s_s1/sample_001
view_left — GT | rollout
view_middle (top-down) — GT | rollout
view_right — GT | rollout
tactile_left — GT | rollout
tactile_right — GT | rollout
sample_002  (click to expand videos)
panel for 15c_mv1_v2_stride2_p01_hybrid_deep_val_0.0159_long_40s_s1/sample_002
view_left — GT | rollout
view_middle (top-down) — GT | rollout
view_right — GT | rollout
tactile_left — GT | rollout
tactile_right — GT | rollout