TL;DR
- IDM 7-track 24-ep heldout: clean best Latent-A multistream 109.6 mm, Pixel MG-30 (clean baseline) 172.0 mm 대비 −37%.
- Cosmos hidden vs SigLIP visual: same data scale (720 ep)에서 latent feature가 pixel feature 압도. Cosmos는 large-scale video pretrain의 condensed semantic을 제공.
- Latent-C n12 layer-routed 신규 (260508): 116.1 mm — v1과 동등, multistream/v3에 못 미침. 그러나 std 47.4 mm로 7트랙 중 가장 작음 (per-task 변동성 적음). PnPMicrowaveToCounter에서 −175 mm 큰 win.
- Pi0.5 Real vs Synth: B0 Real 33/192 (17.2%) vs B1 Synth 9/192 (4.7%). 3.7× 격차 — Pi0.5 학습 자체는 정상, 이전 0% SR은 100% eval pipeline bug였음.
- per-task 8-panel 비교 영상 24개: GT + 7 IDM tracks (Pixel MG-30/MG-3000 + Latent-A v1/v2/v3/multistream + Latent-C). 4×2 grid, padding 없이 perfect fit.
1배경/목적
학습 완료된 IDM 변종(Latent-A v1/v2/v3/multistream + Pixel MG-30/MG-3000) + Pi0.5 VLA(Real B0 / Synth B1)를 동일 protocol로 일괄 평가. 보고용으로 정확하게 비교 가능한 표 + 시각 자료 확보가 목적.
이전 결과들은 다른 ep 수, 다른 protocol로 산발적으로 측정되어 있어 공정한 head-to-head가 어려웠음. 이번엔 24-task × {3 ep (IDM) / 8 ep (Pi0.5)} fixed protocol + fresh-env-per-replay + EnvUtils-based init으로 재측정.
Pi0.5 이전 0% SR은 학습 부족이 아니라 eval pipeline bug였음. DexMG wrapper의 success = reward == 1.0 잘못, v0.1 assets 누락, close-task threshold 0.05 too strict, state mismatch 등 chain bug. 상세: claude/260506/analysis-pi05_eval_zero_sr_root_cause.md.
2작업 내용
IDM 4 latent track (이미 학습 완료, 24-ep 재실행으로 재현성 확인)
- Latent-A v1 single L27:
outputs/idm_robocasa_latent_A_sliced_60k_8gpu/checkpoint-60000, 315M params
- Latent-A v2 (action+state):
_v2_60k_8gpu/checkpoint-60000, 16-dim HF state도 동시 출력
- Latent-A v3 multi-layer concat:
_multi_60k_8gpu/checkpoint-60000, dim concat (5120×3=15360)
- Latent-A multistream:
_multistream_60k_8gpu/checkpoint-60000, 401M params, per-layer Linear+SelfAttn(2L)+token concat
Pixel-IDM 2 track (24-ep 신규 평가)
- Pixel MG-30 v2_8gpu:
outputs/idm_robocasa_mg30_v2_8gpu/checkpoint-60000 — clean baseline (data: 720 ep)
- Pixel MG-3000 v2_8gpu:
outputs/idm_robocasa_mg3000_v2_8gpu/checkpoint-60000 — large-data baseline (70.5K ep) ⚠ heldout ⊂ training (leakage)
- 신규 스크립트:
scripts/run_eval_pixel_mg{30,3000}_24ep.sh
Pi0.5 VLA 2 track (24-task × 8 ep)
- B0 Real:
outputs/pi05_b0_real_full_4gpu/checkpoints/017500, real proprio state로 학습/평가
- B1 Synth:
outputs/pi05_p2_full_8gpu/checkpoints/016000, dreamgen P2 1440 ep, all-zero state
- PoC eval (EnvUtils + reset_to + relaxed close-threshold 0.15) 기반 24-task wrapper 신규:
scripts/run_pi05_eval_24tasks.sh
Latent-C n12 layer-routed (260508 추가) 🆕
- ckpt:
outputs/idm_robocasa_latent_C_n12_pooled_60k_8gpu/checkpoint-60000 (학습 완료)
- 아키텍처: π0.5 KI 영감 — ActionDiT 12 block ↔ Cosmos DiT 12 layer (idx [2,5,8,...,35]) 1:1 routing
- cache 신규 빌드: heldout pooled 4×4 multi12 cache (~85 GB, 1899 windows / 716 ep) — inline pool 추가로 6.6 TB raw 중간 산출물 skip. 4 GPU × 14 min wall.
- 신규 스크립트:
scripts/run_cache_hidden_pooled_heldout.sh, dump_idm_actions_latent_C.py, run_eval_latent_C_24ep.sh
- cache_cosmos_hidden_mg30_multi.py에
--pool_h --pool_w 인자 추가 (inline pool)
Per-task 통합 영상
각 task 1 ep을 GT + 7 IDM 트랙 prediction을 4×2 grid로 합성. ffmpeg filter_complex + drawtext로 라벨링. 이전 6트랙 → 7트랙으로 갱신, padding cell 없이 perfect fit.
scripts/build_per_task_comparison_videos.py
→ outputs/per_task_comparison/<heldout_idx>_<task>.mp4 × 24개 (총 ~45 MB)
레이아웃 (4×2 perfect fit):
| GT | Pixel-MG30 | Pixel-MG3000 | Latent-A v1 |
| v2 | v3 (multi) | multistream | Latent-C n12 |
+ 하단 task 이름 + heldout_idx 오버레이
Submission
Cluster: 8개 sbm 1-GPU 동시 제출 (4 IDM latent + 2 IDM pixel + 2 pi05). QOS: core-extra. Wall-clock: IDM ~30 min, Pi05 ~4h.
3결과 — IDM 6-track
Overall (24-ep heldout EEF mm)
| 트랙 | data | leakage | params | EEF avg | std | gripper acc |
| Pixel MG-30 v2_8gpu | 720 ep | 없음 | 315M | 172.0 | 85.3 | 88.97% |
| Pixel MG-3000 v2_8gpu * | 70.5K ep | 있음 ⚠ | 315M | 42.8 | 56.1 | 97.54% |
| Latent-A v1 single L27 | 720 ep (latent) | 없음 | 315M | 115.3 | 65.9 | 83.51% |
| Latent-A v2 action+state | 720 ep (latent) | 없음 | 315M | 128.6 | 70.7 | 83.19% |
| Latent-A v3 multi concat | 720 ep (latent) | 없음 | 315M | 110.0 | 71.0 | 86.14% |
| Latent-A multistream ⭐ | 720 ep (latent) | 없음 | 401M | 109.6 | 77.6 | 83.72% |
| Latent-C n12 layer-routed 🆕 | 720 ep (latent) | 없음 | ~243M | 116.1 | 47.4 ⭐ | 84.10% |
* Pixel MG-3000은 heldout 720 ep ⊂ training 70.5K ep 이라 unfair. 단순 참고용.
🆕 Latent-C: π0.5 KI 영감, dense N=12 layer routing on pooled cache (4×4 spatial). 전체 7트랙 중 std 가장 작음 (가장 일관된 품질).
Same-data clean 비교 (720 ep, no leakage): Pixel MG-30 172.0 mm vs Latent-A multistream 109.6 mm = Cosmos hidden feature가 SigLIP visual보다 37% 개선. Cosmos가 large-scale video pretrain에서 학습한 motion-aware feature가 IDM action 예측에 더 정합한 representation 제공.
v2 trade-off: action+state 동시 예측은 +13 mm 비용 (115 → 129). state quality는 gripper만 13.9 mm로 좋고 base_pos는 1.4 m 글로벌 mean collapse — visual resolution 4×4 spatial이 부족.
Per-task EEF mm (전체 24-task × 7-track)
| task | PixMG30 | PixMG3K * | v1 | v2 | v3 | multistr | C n12 🆕 |
| CloseDoubleDoor | 260.2 | 48.6 | 335.0 | 236.5 | 243.3 | 330.4 | 247.9 |
| CloseDrawer | 129.8 | 28.4 | 67.4 | 133.8 | 91.5 | 103.3 | 116.8 |
| CloseSingleDoor | 158.7 | 15.3 | 124.0 | 94.6 | 92.2 | 103.3 | 121.3 |
| CoffeePressButton | 31.8 | 8.7 | 38.5 | 33.3 | 31.5 | 35.1 | 40.0 |
| CoffeeServeMug | 80.1 | 19.8 | 90.9 | 90.9 | 74.9 | 83.0 | 80.0 |
| CoffeeSetupMug | 108.4 | 52.4 | 94.0 | 80.7 | 56.4 | 53.1 | 63.1 |
| OpenDoubleDoor | 209.0 | 147.6 | 211.7 | 158.3 | 150.9 | 237.3 | 153.3 |
| OpenDrawer | 256.9 | 7.7 | 190.9 | 218.9 | 123.0 | 114.5 | 164.5 |
| OpenSingleDoor | 116.3 | 14.1 | 118.7 | 146.8 | 81.3 | 68.3 | 103.0 |
| PnPCabToCounter | 292.8 | 27.7 | 131.5 | 125.5 | 89.6 | 112.4 | 112.4 |
| PnPCounterToCab | 191.3 | 10.1 | 66.9 | 68.0 | 68.4 | 62.0 | 91.8 |
| PnPCounterToMicrowave | 304.9 | 61.1 | 159.8 | 286.2 | 159.2 | 91.8 | 155.5 |
| PnPCounterToSink | 232.1 | 46.0 | 106.3 | 170.4 | 92.9 | 112.4 | 201.8 |
| PnPCounterToStove | 150.8 | 63.8 | 93.5 | 98.9 | 61.4 | 85.8 | 109.4 |
| PnPMicrowaveToCounter | 240.5 | 230.0 | 212.2 | 274.7 | 344.0 | 327.8 | 169.2 ★ |
| PnPSinkToCounter | 370.5 | 20.3 | 99.0 | 139.0 | 226.9 | 120.2 | 146.1 |
| PnPStoveToCounter | 216.0 | 40.7 | 98.4 | 81.9 | 117.1 | 102.2 | 73.5 |
| TurnOffMicrowave | 62.2 | 2.7 | 102.7 | 109.7 | 107.8 | 117.1 | 119.3 |
| TurnOffSinkFaucet | 111.5 | 157.9 | 91.2 | 209.0 | 95.4 | 88.3 | 112.0 |
| TurnOffStove | 132.6 | 5.7 | 46.2 | 34.2 | 33.9 | 40.0 | 67.5 |
| TurnOnMicrowave | 95.5 | 7.1 | 102.2 | 114.5 | 104.2 | 94.5 | 101.7 |
| TurnOnSinkFaucet | 174.8 | 3.1 | 97.3 | 54.1 | 93.6 | 56.2 | 100.5 |
| TurnOnStove | 151.2 | 6.2 | 26.7 | 55.1 | 38.3 | 31.2 | 60.6 |
| TurnSinkSpout | 50.4 | 3.1 | 63.4 | 70.7 | 61.6 | 59.3 | 75.1 |
| AVG | 172.0 | 42.8 | 115.3 | 128.6 | 110.0 | 109.6 | 116.1 |
| STD | 85.3 | 56.1 | 65.9 | 70.7 | 71.0 | 77.6 | 47.4 ⭐ |
Latent-C 특징: avg 116.1 mm로 v3/multistream에 살짝 못 미치지만, per-task std 47.4 mm로 7트랙 중 최저 — 즉 task 간 변동성이 가장 적고 일관됨. PnPMicrowaveToCounter 169 mm로 v3 (344) / multistream (328)에서의 outlier를 −175 mm 큰 폭으로 개선 (★). 안정성 우선이라면 C가 매력적, peak 성능이 우선이라면 multistream.
multistream 큰 win (vs v3): PnPCounterToMicrowave (−67), PnPSinkToCounter (−107 vs v3), OpenDrawer (−9 vs v3, −76 vs v1), OpenSingleDoor (−13), CoffeeSetupMug (−3), TurnOnSinkFaucet (−37). PnP grasp/place 정밀도가 핵심인 task에서 layer-wise per-stream attention 효과적.
multistream 큰 loss (vs v3): CloseDoubleDoor (+87), OpenDoubleDoor (+86). Articulated double-door spatial trajectory에서 inferior — token concat이 fine-grained spatial reasoning에 약함.
4결과 — Pi0.5 Real vs Synth
Overall
| Exp | data | ckpt | state_mode | overall SR | 비고 |
| B0 Real | heldout 720 ep | 017500 | real (joint+grip) | 33/192 (17.2%) | Real state ✓ |
| B1 Synth | dreamgen P2 1440 ep | 016000 | zero | 9/192 (4.7%) | Synth-only |
B0 Real이 B1 Synth 대비 3.7× SR. Real proprio state로 학습된 policy가 시뮬레이터 분포와 매칭되어 closed-loop drift 적은 단순 motion에서 동작. Pi0.5 학습 자체는 정상이고, 이전 0% SR은 100% eval pipeline bug였음 — 진단 → 수정 chain 검증.
Per-task SR (24 task × 8 ep, success-by-task 정렬)
| task | B0 Real | B1 Synth |
| TurnOnMicrowave | 5/8 (62.5%) | 1/8 (12.5%) |
| TurnSinkSpout | 5/8 (62.5%) | 2/8 (25.0%) |
| CloseDrawer | 3/8 (37.5%) | 1/8 (12.5%) |
| PnPSinkToCounter | 3/8 (37.5%) | 0/8 |
| TurnOffMicrowave | 3/8 (37.5%) | 1/8 (12.5%) |
| TurnOffSinkFaucet | 3/8 (37.5%) | 2/8 (25.0%) |
| CoffeePressButton | 2/8 (25.0%) | 0/8 |
| PnPCounterToSink | 2/8 (25.0%) | 0/8 |
| PnPCounterToStove | 2/8 (25.0%) | 0/8 |
| PnPCabToCounter | 1/8 (12.5%) | 0/8 |
| PnPMicrowaveToCounter | 1/8 (12.5%) | 0/8 |
| PnPStoveToCounter | 1/8 (12.5%) | 0/8 |
| TurnOffStove | 1/8 (12.5%) | 0/8 |
| TurnOnSinkFaucet | 1/8 (12.5%) | 1/8 (12.5%) |
| OpenSingleDoor | 0/8 | 1/8 (12.5%) |
| CloseDoubleDoor | 0/8 | 0/8 |
| CloseSingleDoor | 0/8 | 0/8 |
| CoffeeServeMug | 0/8 | 0/8 |
| CoffeeSetupMug | 0/8 | 0/8 |
| OpenDoubleDoor | 0/8 | 0/8 |
| OpenDrawer | 0/8 | 0/8 |
| PnPCounterToCab | 0/8 | 0/8 |
| PnPCounterToMicrowave | 0/8 | 0/8 |
| TurnOnStove | 0/8 | 0/8 |
| TOTAL | 33/192 (17.2%) | 9/192 (4.7%) |
관찰 및 의의
- Best (B0): TurnOn/Off* (faucet, microwave, spout), CloseDrawer, CoffeePressButton, PnPSinkToCounter — simple stable motion 카테고리. 로봇이 자세 잡고 한 번 누르거나 한 방향으로 움직이는 단순 task에서 잘함.
- Worst (B0=0%): Door open/close, Microwave/Cab PnP, multi-step coffee, Stove on — articulated joint, multi-step manipulation, fine-tuned timing이 필요한 task. 정확한 grasp + 일정한 force + 단계 순서가 모두 맞아야 success.
- B1 Synth 한계: dreamgen P2 데이터는 16-frame chunk로 만들어진 짧은 sequence + state field 0. Long-horizon task는 학습 신호 자체가 부족. 한계 단서: B1 best가 TurnOff*Faucet (25%) — 이건 partial close motion 만으로 success threshold 통과 가능한 task.
- OpenSingleDoor outlier: B1=1/8 (B0=0). Synth가 일부 articulated에서 predictable trajectory 학습 가능성 (16-frame이 우연히 success motion 단편 cover). Statistical noise일 수도 있음.
B0의 0% task 진단: CloseDoubleDoor 같은 articulated 강한 task는 v0.1 controller drift + threshold strict 조합으로 GT replay조차 strict 70%/relaxed 100%만 달성. Pi0.5 closed-loop는 GT보다 drift 더 많아 0% 자연스러움. 추가 fix 후보: open-task / PnP 별 success threshold 재calibration.
5산출물
분석 로그
claude/260507/analysis-eval_all_results.md (per-task tables, takeaway, next)
claude/260507/plan-eval_all_idm_and_pi05.md (실행 계획)
스크립트 (commit accdef2 + 4131777)
scripts/run_eval_pixel_mg30_24ep.sh, run_eval_pixel_mg3000_24ep.sh (신규)
scripts/run_pi05_eval_24tasks.sh (신규, 24-task wrapper)
scripts/build_per_task_comparison_videos.py (신규, 6-panel ffmpeg merger)
- Latent eval (기존):
run_eval_latent_A_{24ep,v2_24ep,multi_24ep,multistream_24ep}.sh
결과 / 영상
- IDM 6-track summary.json:
outputs/idm_simulator_eval{,_latent_A_*}/.../summary.json
- IDM per-track 영상 (트랙당 24 task × 3 ep × 3 mp4 + trajectory PNG):
outputs/idm_simulator_eval_*/ckpt-60k/videos/ep_*/
- Per-task 6-panel 통합 영상 24개 (총 ~40 MB):
outputs/per_task_comparison/<heldout_idx>_<task>.mp4
- Pi0.5 영상 (24 task × 8 ep):
outputs/pi05_eval_24tasks/{b0_last_real,b1_last_zero}/<task_dir>/ep_*.mp4
- Pi0.5 AGGREGATE:
outputs/pi05_eval_24tasks/{b0,b1}_last_*/AGGREGATE_summary.json
6Takeaway
- Cosmos hidden > SigLIP visual (clean same-data 720 ep): Latent multistream 109.6 vs Pixel MG-30 172.0 = −37%. Cosmos large-scale video pretrain feature가 IDM 단계에서도 효과적.
- multistream 아키텍처 우위 견고: PnP-종 task에서 v3 (dim concat)보다 일관 win (per-layer Linear+SelfAttn(2L)+token concat). 그러나 articulated double door에서는 inferior — 두 방식 상보적.
- Latent-C n12 routing의 가치는 안정성: avg 116.1 mm로 multistream에 못 미치지만, per-task std 47.4 mm로 가장 일관. PnPMicrowaveToCounter outlier (다른 트랙 200~344) 를 169로 개선 — π0.5 KI 1:1 routing이 일부 task에선 진짜 효과.
- Pi0.5 학습 정상, eval bug였음: B0 Real 17.2% / B1 Synth 4.7% — 4배 격차로 학습 quality 차이 분명. Pi0.5 학습 재실행 불필요 (eval pipeline 수정만으로 측정 가능했음).
- DreamGen synth의 핵심 한계: 16-frame chunk + zero state로 long-horizon multi-step manipulation을 못 학습. Real heldout 720 ep로도 17.2%이므로 single-step task에선 충분, 복잡 task엔 long-horizon synth + IDM-state 도입 필요 (Step 5/6 plan).
- v2 (action+state) trade-off: state supervision 비용 +13 mm (action). gripper_qpos만 13.9 mm로 좋고 base_pos 1.4 m global mean — 4×4 spatial pool 부족.
7다음 (Next)
- (선택) HF official IDM 24-ep — ckpt 위치 확인 후 동일 protocol로 재평가.
- (선택) Pi0.5 B2 mix 추가 — real / zero state 둘 다 측정해 분포 영향 정량.
- (선택) Latent-IDM B 평가 — 현재 15K (60K 미달). 60K 학습 재개 후 평가.
- Pi0.5 task별 success threshold 재calibration (open/PnP/articulated 등 GT replay로 final state 분포 측정 → 95th percentile 기반).
- Long-horizon synth track (Step 5/6, autoregressive video2world) 진행 — DreamGen 16-frame 한계 우회.
- Hybrid track 후보: PnP는 multistream, articulated는 v3, outlier task는 C로 routing — task-aware ensemble.