Index
2026-04-17 — Experiment

IDM RoboCasa MG-30 학습 실험

GR00T-Dreams | IDM from scratch · EEF-space action · 4×B200

TL;DR

0.109
Final Loss
720
Episodes
10K
Steps
85분
Train Time
612M
Params

1 배경 / 목적

GR00T-Dreams 파이프라인의 핵심은 action label 없는 비디오(Cosmos 생성 데이터)에 pseudo action을 부여하는 것이다. 이를 위해 IDM(Inverse Dynamics Model) — 연속 프레임으로부터 action trajectory를 역추정하는 모델 — 을 RoboCasa 데이터로 학습해야 한다.

첫 단계로 공식 MG-30 서브셋(24 task × 30 ep = 720 episodes)을 사용해 소규모 테스트를 진행했다. 목표는 학습 가능성 검증데이터 파이프라인 구축이며, 이후 MG-3000 풀 데이터로 확장 예정.

기존 상황: IDM 아키텍처 분석(260416)은 완료됐으나 RoboCasa용 data config 및 학습 파이프라인이 없었음. action 컬럼도 joint-space(28-dim)와 EEF-space(12-dim) 중 선택이 필요했음.

2 작업 내용

데이터 파이프라인 구축

원본 DROID-style LeRobot(/home/nas_main/hyojinjang/DATA/robocasa_mg3000_droid_lerobot_20fps_v2_merged/)에서 HDF5 mask(/home/nas_main/minhopark/datasets/robot/robocasa/v0.1/single_stage/)의 공식 30_demos episode ID를 추출해 24개 task를 병합했다.

스크립트: scripts/prepare_idm_mg30_dataset.py 출력: /home/nas_main/taewoongkang/Dataset/robocasa/idm_mg30 규모: 24 tasks × 30 ep = 720 episodes, 206,570 steps

Action Space 선택: EEF 12-dim

원본 action 컬럼(28-dim joint-space) 대신 action_eef(12-dim EEF-space)를 사용. IDM은 manipulation 동작에서 end-effector 표현이 더 compact하고 학습이 안정적이기 때문.

인덱스의미차원
[0:3]eef_position delta3
[3:6]eef_rotation delta (axis-angle)3
[6:7]gripper (-1/1)1
[7:11]base_motion4
[11:12]control_mode1

새 Data Config

파일: gr00t/experiment/data_config_idm.py 클래스: RobocasaDroidDataConfig Video: exterior_image_1_left, exterior_image_2_left, wrist_image_left (180×320, 20fps) State: joint_position(7) + gripper_position(1) — min_max 정규화 Action: action_eef 12-dim — min_max + binary(gripper, control_mode)

학습 설정

Model
IDM scratch
GPU
4× B200
Batch
16/GPU (×4)
Max Steps
10,000
LR
1e-4 cosine
Warmup
5%
Optimizer
AdamW
dtype
bfloat16
Conda env
gr00t-idm
Embodiment
new_emb(31)

gr00t-idm: vggrpo(PyTorch 2.12 + B200 호환) 환경 clone 후 GR00T-Dreams 의존성 추가 설치. SigLIP backbone은 pretrained 가중치 로드, 나머지는 random init.

3 결과

지표
초기 loss (step 0)~1.04
step 500~0.16
step 1,000~0.13
step 5,000~0.11
최종 loss (step 10,000)0.109
grad_norm (최종)0.27
학습 속도1.85 it/s
총 학습 시간85분
총 epoch3.1
모델 크기612M params, 2.5GB safetensors
수렴 확인: loss 1.04 → 0.109 (약 10.5× 감소). step 1K 이후 plateau — 데이터 규모(720 ep) 대비 충분히 수렴.
안정성: grad_norm 0.27, NaN 없음. EEF 12-dim action 학습이 안정적으로 동작.
정량 평가 미완: GT action 대비 MSE/cosine similarity 계산 스크립트 미작성 — 실제 action 예측 품질은 아직 미확인.

체크포인트

최종: outputs/idm_robocasa_mg30/model.safetensors 중간: outputs/idm_robocasa_mg30/checkpoint-{500,1000,...,10000}/

4 Takeaway

파이프라인 end-to-end 검증 완료

HDF5 MG mask 추출 → LeRobot 변환 → IDM 학습 → safetensors 저장까지 전체 파이프라인이 동작함을 확인. 720 ep(MG-30) 소규모 데이터에서도 loss 0.109까지 수렴 — 시각 정보(3-view camera)로부터 EEF action을 학습 가능함을 증명.

action_eef 컬럼 활용으로 기존 IDM SinglePandaGripper config와 호환되는 EEF-space action 표현 확립. 다음 단계인 MG-3000 풀 스케일 학습과 DreamData pseudo action dump의 기반이 마련됐다.

5 Next Steps

정량 평가 스크립트 작성

GT action 대비 MSE, cosine similarity를 계산해 IDM 예측 품질을 정량화. 현재 loss 0.109가 실제로 얼마나 정확한 action을 예측하는지 불명확.

MG-3000 풀 데이터 확장 학습

720 ep → ~72,000 ep(MG-3000)으로 확장. 데이터 규모가 100× 증가할 때 loss 및 action 예측 품질 변화 측정.

DreamData pseudo action dump

학습된 IDM 체크포인트(outputs/idm_robocasa_mg30/model.safetensors)로 Dataset/robocasa/DreamData/MG-30/의 Cosmos 생성 비디오에 action 부여. IDM_dump/dump_idm_actions.py 사용.

observation_indices 최적화

현재 [0, 16] 고정. 20fps 데이터에서 최적 관측 간격 탐색 필요 (간격이 너무 크면 motion blur, 너무 작으면 정보 부족).