Index
2026-05-14 — Experiment

Pi0.5 Delta-IDM — PaliGemma backbone + 2-frame forward delta 구현 + Smoke PASS

DreamData / GR00T-Dreams | pi05_delta 정책 타입 신규 등록, Phase 0–7 완료, Full train RUNNING

TL;DR

−62.5%
Smoke loss 감소
9/9
Unit tests PASS
0.148
loss @ step 100
2447
Full train Job

1 배경/목적 (왜)

현 IDM 트랙(Pixel SigLIP2-large, Latent multistream)보다 Pi0.5가 24-ep heldout에서 더 좋은 이유가 pretrained PaliGemma backbone 때문이라는 가설. Pi0.5의 VLA 사전학습에서 이미 시각-언어-행동 연계를 학습했으므로 IDM 형태로 fine-tune하면 현 SigLIP2 IDM을 능가할 수 있다.

기존 Latent-IDM 트랙들 (A: 107.5mm, v3: 110.9mm)은 모두 random-init DiT 기반이다. PaliGemma full backbone을 활용하면 표현 풍부성에서 우위를 가질 수 있다.

IDM 입력 형태: 두 프레임 x_t와 x_{t+16}의 forward delta를 입력으로 사용 — closed-loop이 아닌 open-loop labeling 상황이라 IDM 원정의(vision-only, state output)와 일치. disable_proprioceptive_obs=true로 state input 차단.

v1에서 state output은 뺌 — lerobot observation_delta_indices가 obs feature별로 다른 delta 미지원이라 이를 우회하려면 라이브러리 수정 필요. v1은 action만(12-dim), state output은 v2 트랙으로 분리.

2 작업 내용 (어떻게)

Phase 0 — 코드 조사 (research-pi05_input_pipeline.md)

4개 핵심 결정 확정:

Phase 1–3 — 구현 + 단위 테스트

신규 파일 (robot-data-gen):

수정 파일: libs/lerobot/.../factory.py elif 분기 추가, convert_to_multi_env_policy.py pi05_delta 포함, train_bc.py policy 생성부 분기 추가.

단위 테스트 (GR00T-Dreams): tests/test_pi05_delta.py 9개.

Commits: robot-data-gen c3a4075 — feat(pi05-delta): register pi05_delta + monkey-patch (6 files, +210/-12) GR00T-Dreams 9088f8b — test(pi05-delta): compute_delta + PI05DeltaConfig unit tests (+119) robot-data-gen 449ef9f — fix: side-effect import GR00T-Dreams 1fd1e19 — feat: eval_pi05_delta_idm.py (473 lines, 24-task heldout EEF mm + SR) GR00T-Dreams a8b2bf6 — feat: run_pi05_delta_eval.sh (per-ckpt eval wrapper) GR00T-Dreams c2811e7 — fix: 16-dim state for eval normalizer GR00T-Dreams 1857803 — feat: parallel per-task fan-out eval + aggregate GR00T-Dreams ac0f818 — fix: auto-source slurm_commands.sh in subshell

왜 monkey-patch인가

PI05DeltaPolicy 클래스로 상속하지 않고 monkey-patch를 선택한 이유: (a) PI05Policy.from_pretrained가 "pi05" 타입을 가정한 경로가 많아 새 클래스 시 weight load 재구현 필요, (b) 차이가 _preprocess_images 한 함수뿐이라 상속 비용 과함, (c) update_method_to_multi_env가 이미 monkey-patch 패턴 사용 — 일관성.

Phase 4–5 — Launch script + Smoke

scripts/launch_pi05_delta_idm.sh SMOKE=1 : 1 GPU, batch=4, 100 step SMOKE=0 : 4 GPU, batch=16, 20K step, eff bs 64 backbone : lerobot/pi05_base dataset : Keh0t0/robocasa_mg30_real_v2 (720 ep mg30 H50 schema) tune_targets: [visual, llm, action_expert] chunk_size=16, n_action_steps=16, disable_proprioceptive_obs=true

Phase 6 — Eval script

scripts/eval_pi05_delta_idm.py (473 lines) — open-loop chunk 단위 labeling + sim replay. 24 task × 30 ep heldout (mapping_heldout_to_hdf5.json). EEF mm + SR 측정.

Bug fix 2건:

3 결과 (수치)

Unit tests — 9/9 PASS (pytest, 55.39s)

Test검증 내용결과
test_compute_delta_5d_two_frame(2,2,3,128,128) → (2,3,128,128), img[1]-img[0]PASS
test_compute_delta_5d_single_frame_passthroughT=1 → 그대로 (2,3,128,128)PASS
test_compute_delta_4d_passthrough(B,C,H,W) 4D 그대로PASS
test_compute_delta_5d_wrong_T_raisesT=3 → ValueError("T in")PASS
test_compute_delta_3d_raises3D → ValueError("must be 4D or 5D")PASS
test_pi05_delta_config_observation_indicesdelta_lookahead=16, indices=[0, 16]PASS
test_pi05_delta_config_custom_lookaheaddelta_lookahead=8 → [0, 8]PASS
test_pi05_delta_config_registered_in_lerobotget_choice_class("pi05_delta") is not NonePASS
test_preprocess_images_with_delta_routesmonkeypatch로 4D 전달 검증PASS

Smoke test (Job 2436) — 1 GPU B200, 5분 03초, exit 0:0

StepLossGradient norm
100.3957.51
200.1962.12
300.1941.37
500.1861.11
800.1480.58
1000.1480.77
−62.5% loss 감소 (100 step) — criterion >50% ✓. delta_lookahead: 16 로그 확인 ✓. ckpt 저장 ✓. Throughput: 0.27 s/step, ~3.78 it/s.

Full train (Job 2447) — RUNNING

sbmr 5 retry × 4 GPU extra QOS × 20K step × eff batch 64 WandB: dreamgen-pi05/pi05_delta_idm_4gpu Step 100 : loss 0.461, throughput 1.86 it/s (0.54 s/step), GPU util 25-44% Step 200 : loss 0.158 ETA : ~3h (chunk_size=16 + B200 효과로 예상보다 빠름)
GPU util 25–44% — dataloader-bound. chunk_size=16 (Pi0.5 기본 50 대비 짧음)으로 sequence가 짧아 I/O가 상대적으로 느린 구간 발생.

vs 기존 트랙 (목표 비교)

Trackmm (24-ep)비고
Latent-A multistream107.46현재 best
Latent-A v3 multi-layer110.9
Pixel v2_8gpu (batch 1024)134.8baseline
Pi0.5 Delta-IDM (목표)<107.5Full train 완료 후 측정

4 Takeaway

Smoke loss 0.148 @ 100 step — latent IDM 시작 loss와 비슷한 수준. PaliGemma backbone이 delta 입력에서 즉시 학습되고 있음 확인. OOD 우려(pretrained 모델에 생소한 차분 입력) 해소 신호.

이 실험의 의미

기존 IDM 트랙은 모두 random-init SigLIP + DiT 조합이었다. Pi0.5 전체를 IDM 형태로 전이학습하는 이 접근은 세 가지를 동시에 검증한다: (1) pretrained VLA backbone이 IDM task로 전이되는가, (2) chunk_size=16으로 token seq 축소가 action_expert weight 활용에 문제 없는가, (3) state input 없이도 PaliGemma가 action을 정확히 labeling할 수 있는가. Smoke 통과로 모두 초기 긍정 신호.

5 Next Steps