new_embodiment → robocasa_panda_omron (CosSim -0.069 → 0.66~0.90)IDM (Inverse Dynamics Model) 품질을 normalized space의 CosSim/MSE로만 평가했는데, 이 메트릭만으로는 실제 물리 성능 판단이 불가능했다. DreamGen 논문도 IDM 자체의 CosSim 수치를 보고하지 않고 downstream success rate만 보고한다.
목표: IDM predicted action을 RoboCasa 시뮬레이터에서 실제 replay하여, GT action replay와 EEF 궤적 divergence 및 gripper agreement로 비교 평가.
tianshou.Batch 의존성 제거 → dict 기반으로 변경. binary normalization transforms.unapply()가 gripper/control_mode inverse를 올바르게 수행하지 않음을 발견 → 수동 post-processing 추가. state shape 불일치(task마다 120~179 dim) → min_cols로 처리.
HF 공식 체크포인트 비교 시 첫 시도에서 embodiment_tag="new_embodiment" 사용 → CosSim = -0.069 (garbage). 원인: IDM의 CategorySpecificMLP action decoder가 embodiment별로 다른 weight matrix(32개 slot)를 사용하는데, HF 체크포인트는 slot 13(robocasa_panda_omron)으로 학습됨. 잘못된 slot weight 사용이 원인.
multi-sample averaging(--num_samples 3)이 magnitude를 줄이는 원인인지 검증. 원본 DreamGen dump_idm_actions.py는 1회 추론 사용.
| Task | Pos Error (mean) | Gripper Agree |
|---|---|---|
| CloseDoubleDoor | 505mm | 100% |
| CloseDrawer | 452mm | 98% |
| CloseSingleDoor | 414mm | 98% |
| CoffeePressButton | 76mm | 45% |
| CoffeeServeMug | 214mm | 75% |
| 평균 | 332mm | 83% |
| 설정 | Magnitude (% of GT) | Sim Pos Error |
|---|---|---|
| 3-sample (기본) | 9~21% | 332mm |
| 1-sample | 16~49% | 345mm |
| Task | Ours MG-30 (720ep) | HF FullSet (72K ep) | 개선 |
|---|---|---|---|
| CloseDoubleDoor | 505mm | 299mm | 41%↓ |
| CloseDrawer | 452mm | 67mm | 85%↓ |
| CloseSingleDoor | 414mm | 95mm | 77%↓ |
| CoffeePressButton | 76mm | 26mm | 66%↓ |
| CoffeeServeMug | 214mm | 76mm | 65%↓ |
| 평균 | 332mm | 113mm | 66%↓ |
HF CosSim: 0.66~0.90 (방향 정확), magnitude: GT의 61~99%
| Step | Ours (MG-30, 720ep) | HF (FullSet, 72K ep) |
|---|---|---|
| 1K | 0.196 | — |
| 5K | 0.123 | — |
| 10K | 0.116 | — |
| 50K | 0.104 | — |
| 100K | 0.094 | — |
| 60K | — | 0.013 |
num_trajectories=1,691,280의 정체: global_metadata/robocasa/stats.json의 episode_index max=3010 확인. 24 tasks × 3000 ep = 72,000 에피소드 = MG-3000. 1.7M은 에피소드가 아니라 총 training windows(steps) 수.
IDM backbone = IdentityBackbone (패스스루, LLM 없음), vision = SigLIP2-large 직접 사용. GR00T_N1 = Eagle VLM backbone + 별도 action head. backbone이 완전히 다른 별개 모델 → GR00T_N1 pretrained weight에서 IDM으로 직접 전이 불가. random-init이 올바른 학습 방식. HF 공식 체크포인트도 random-init으로 학습.
HF 체크포인트가 113mm로 정상 동작하며 파이프라인 자체는 검증 완료. MG-30(720ep) vs FullSet(72K ep) = 100배 데이터 차이 → loss 7배(0.094 vs 0.013), sim error 3배(332mm vs 113mm) 차이. MG-3000 학습으로 HF 수준의 성능 달성 가능할 것으로 예상.
HF(113mm)도 완벽하지 않으며 open-loop replay 자체의 한계가 있음. IDM의 용도는 시뮬레이터에서 직접 제어하는 것이 아니라 policy 학습용 pseudo label 생성. DreamGen 최종 목표는 IDM pseudo label → gr00t_finetune.py로 GR00T N1 policy 학습.
robocasa_panda_omron 지정 필요.scripts/run_idm_train_robocasa_mg3000.sh, 4×B200 GPU, 60K steps 목표. 데이터셋: /home/nas_main/taewoongkang/Dataset/robocasa/idm_mg3000 (70,492 ep). 완료 후 시뮬레이터 eval로 HF(113mm)와 직접 비교 → 데이터 가설 최종 검증.
best checkpoint로 전체 데이터 IDM dump (dump_idm_actions_for_eval.py). 이어서 gr00t_finetune.py로 GR00T N1 policy fine-tune (DreamGen Section 4). downstream success rate로 최종 평가.
open-loop replay는 error가 누적됨. HF(113mm)도 실제 task success rate는 미측정. IDM의 진정한 품질은 downstream GR00T N1 성능으로만 판단 가능. MG-3000이 충분하지 않다면 full DreamGen 파이프라인(합성 비디오 생성 → IDM labeling → policy fine-tune) 필요.