Index
2026-05-25 — Analysis

Pi0.5-Delta IDM 공정 재실험 최종 결과

GR00T-Dreams | state-fix 후 delta_sf 244.6mm / 2frame_sf 635.8mm — 최종 판정

TL;DR

244.6
delta_sf EEF mm
635.8
2frame_sf EEF mm
104.8
feat_delta_reg (기준)
2.3×
baseline 대비 열화
20K
학습 steps

1 배경/목적 (왜)

260518 세션에서 pi05_delta IDM의 실패 원인이 observation.state 2-timestep 버그임을 확정했다. factory.py:62 resolve_delta_timestampsobservation.state에도 delta_indices=[0,16]을 적용해 state를 (2,16)으로 malform시켰고, 이전 v1(562mm)/v2(540mm)/normfix(396mm) 결과는 모두 이 버그에 오염된 무효 실험이었다.

버그 수정 후 공정한 조건에서의 진짜 답을 얻기 위해 두 실험을 재제출했다:

실험 맥락: 260518 이전 실험들은 학습 시 state=(2,16) malform vs eval 시 state=(16,) 불일치로 loss 수렴해도 eval 전멸. 이번 실험은 train_bc.py 패치로 pi05_delta 시 observation.statedelta_indices에서 pop → 학습/eval 모두 state=(16,) 단일 프레임으로 통일.

2 작업 내용 (어떻게)

260518에 minhopark 계정으로 두 실험 제출 (SLURM job 5114=delta_sf, 5115=2frame_sf). 초기 제출(18:44)이 admin 에 의해 ~2시간 후 CANCELLED → 즉시 재제출(20:37)하여 각각 COMPLETED:

delta_sf (job 5176): start 260518 20:37 → elapsed 3h 15m → COMPLETED @ ~23:52 checkpoint: outputs/pi05_delta_idm_4gpu_state_on_sf_acc2/checkpoints/020000 created: 2026-05-18 23:48 2frame_sf (job 5177): start 260518 20:37 → elapsed 9h 56m → COMPLETED checkpoint: outputs/pi05_delta_idm_4gpu_state_on_2frame_sf_acc2/checkpoints/020000 (grad_ckpt + 6토큰 extra overhead로 2.7× 느림)

Eval 방법

idm_intrain_eval.py로 in-train offline replay eval: 매 1K steps마다 CloseDoubleDoor task의 demo에 대해 IDM으로 action 예측 → GT action과 EEF error 계산. SR≈0은 구조적 (offline replay eval은 closed-loop가 아님) — eval/eef_mm만 신호.

주의: in-train eval은 1개 task(CloseDoubleDoor) 기준. 24-task 전체 eval은 미실행. 단일 task eef_mm이 전체 일반화를 대표한다고 가정 (260518 2×2×2 ablation의 24-task 패턴과 유사 가정).

3 결과 (수치)

최종 결과 비교표

실험 입력 방식 EEF mm @ 20K SR train loss 상태
feat_delta_reg (기준) Cosmos hidden Δ + regression 104.8 mm 2×2×2 ablation best
feat_delta_reg qnorm Cosmos hidden Δ + q01/q99 norm 106.0 mm new default
Pixel v2_8gpu (기준) SigLIP2 raw pixel, batch 1024 134.8 mm MG-30 pixel baseline
delta_sf ← 이번 실험 Pi0.5 SigLIP2, forward-Δ 입력, state-fix 244.6 mm 0 0.027 ✅ COMPLETED
normfix (버그-오염) Pi0.5, Δ입력, `*2-1` fix만 395.9 mm state-bug 오염 무효
v2 (버그-오염) Pi0.5, Δ입력, state on 539.9 mm state-bug 오염 무효
v1 (버그-오염) Pi0.5, Δ입력, state off 562.1 mm state-bug 오염 무효
2frame_sf ← 이번 실험 Pi0.5 SigLIP2, 2-frame concat, state-fix 635.8 mm 0 0.019 ✅ COMPLETED (최악)

수렴 곡선 (delta_sf)

step 1,000 → eef_mm = 658.9 mm (미학습, wandb init 직후) step 20,000 → eef_mm = 244.6 mm (최종 수렴값) 감소폭: 658.9 → 244.6 mm (−414 mm, 학습 효과 확인됨) 기준 대비: 244.6 / 104.79 = 2.33× 열화
2frame_sf (635.8mm) 해석: 버그-오염 v1(562mm)·v2(540mm)보다 오히려 나쁨. "현재+미래 2-frame 연결"은 각 frame이 SigLIP의 자연이미지 prior에 맞으나, 두 frame을 concatenation하면 positional confusion이 생긴다는 가설. loss(0.019)는 가장 낮지만 EEF는 최악 — loss-metric alignment 단절.
delta_sf (244.6mm) 판정: HANDOFF 기준 ~250mm 임계를 겨우 하단으로 통과. "버그-없는 delta-IDM이 쓸만하다"고 말하기 어려운 수준 — Pixel v2_8gpu(134.8mm)보다도 열악. Pi0.5 SigLIP2 backbone이 delta-frame 입력을 효과적으로 인코딩하지 못하는 것이 원인.

4 Takeaway

🔬 Pi0.5-delta IDM 실험의 최종 의의

이번 실험은 260515~260520에 걸친 긴 디버깅 여정의 종착점이다. 버그(state 2-timestep malform)는 실재했고 수정 후 결과가 개선됐다(396mm→244mm). 하지만 개선 후에도 best IDM(104mm)의 2.3×로, backbone이 문제라는 원인 진단이 결국 맞았다.

핵심 교훈: delta-frame 입력이 "나쁜 게 맞는지" 확인하는 데 3주 + 수십 번의 SLURM 실험이 소모됐다. 원인 — (1) 버그가 delta 실패처럼 보이는 증상을 만들어 disentangle이 어려웠고, (2) in-train eval 경로도 별개 버그로 오염돼 학습 중 조기 진단이 불가능했다. IDM 새 config 도입 시 eval 경로를 사전에 smoke-test하는 자동화가 필요하다.

Bug-fix 가치 확인됨: state-fix만으로 EEF 396mm → 244mm (−38%). 버그 발견/수정이 의미 있었음. 향후 Pi0.5-delta 계열 실험 시 observation.statedelta_indices pop은 표준 절차.
2frame_sf 실패의 의미: 연속 2-frame concatenation은 delta보다 더 나쁘다. "두 자연이미지를 주면 SigLIP이 더 풍부한 정보를 얻는다"는 직관은 틀렸다 — 단순 concat은 frame 순서 혼동을 유발하고 loss가 낮아도 action 예측은 오히려 악화.
Cosmos feature vs Pi0.5 SigLIP 비교: feat_delta_reg(104mm) vs delta_sf(244mm) — 동일 delta-frame 개념이라도 feature backbone(Cosmos hidden)이 SigLIP pixel보다 2.3× 유리. Cosmos의 spatiotemporal representation이 frame-to-frame motion signal 추출에 근본적으로 유리한 구조.

5 Next Steps

이번 결과로 닫히는 것

열려있는 다음 방향