Index
2026-05-11 — Progress

Latent-IDM C v2 (action+state) 60K 완료 + 24-ep Eval Handoff

GR00T-Dreams | Latent Track | N=12 dense layer-routed, mg30_real_h50 schema

TL;DR

115.66
v1 action only (mm)
147.31
v2 action+state (mm)
+31.65
state 비용 (mm)
60K
steps, 8 GPU

1 배경/목적 — 왜

Latent-IDM C는 π0.5 KI / π0의 MoE per-block attention에서 영감을 받은 Layer-Routed ActionDiT. N=12 dense (block [2,5,…,35]) 레이어를 ActionDiT depth=12에 1:1 routing하여 층별 Cosmos hidden을 직접 매핑. v1은 기존 idm_mg30(droid camera, action eef only) 위에서 학습, v2는 mg30_real_h50(h50 schema, 16-dim eef+state) 위에서 action[12]+state[16]을 동시 예측. v2의 목적은 Pi0.5 학습의 pseudo action source로 IDM dump를 바로 활용할 수 있도록 state schema 호환성 확보.

2 작업 내용 — 어떻게

아키텍처 (v1·v2 공통)

Cache: pooled 4×4 N=12 multi-layer (83 GB, mg30) + heldout (~83 GB, 716 ep) Model: LayerRoutedActionDiT (LayerRouted + ActionDiT 12L) - KV: pooled_4x4_multi12_sigma30 cache → per-DiT-block routing - kv_projector: 5120×12 → 1024 (layer-wise) - Trainable: ~386M params Batch: 8 GPU × bs8 × grad_accum16 = eff batch 1024 lr: 1e-4, 60K steps, bf16 autocast

v2 Target Packing (actions[16, 32])

[0:12] action_eef — identity norm (raw [-1,1]) [12:15] base_to_eef_pos — linear → [-1, 1] [15:19] base_to_eef_quat — raw xyzw, ‖q‖=1, 부호 보존 [19:21] gripper_qpos — linear [21:24] base_pos — linear [24:28] base_quat — raw xyzw, 부호 보존 [28:32] zero (mask=False)

검증 (v2 신규)

Episode mapping: cosmos cache sorted .mp4[i] ↔ mg30_real_h50 ep_idx i ↔ cache <ep_name>/<w_start>.pt — 0번·719번 ep 모두 일치. Frame counts 720 ep / 206,570 frames byte-exact. Stats byte-identical 확인. Login 1 GPU smoke (debug_latent_C_n12_pooled_v2.py): 3 step loss 1.36→1.17, peak 9 GB 통과.

학습 (v1: own QOS 21h12m / v2: share QOS preempt 2회, 23h47m)

v2는 -A share --qos=share로 제출, preempt 2회 자동 requeue 후 완료. train_loss: v1 0.003 / v2 0.000177 (state 추가로 fit 더 깊게).

3 결과 — 수치

9-model 비교표 (24-ep simulator replay)

모델Training sourceavg pos (mm)gripper비고
latent-A multistream (55K)idm_mg30104.99best 24-ep
latent-A v3 multi-concatidm_mg30110.9
latent-C v1 (n12 pooled)idm_mg30115.6684.0%layer-routed dense
Pixel v2_8gpuMG-30134.8pixel baseline
latent-C v2 (n12 pooled)mg30_real_h50147.3183.9%action+state
Pixel h50 v2 (cam OOD)mg30_real_h50721.6376.6%무효

v2 State Quality (24-ep)

State dimerror평가
gripper_qpos13.9 mm양호
base_to_eef_pos254 mm중간
base_to_eef_quat60°중간
base_pos1.4 mcollapse (mean drift)
divergence_onset_5mm ~6 step (0.3 sec @ 20fps). latent-A v2의 base_pos 1.4m collapse와 유사 패턴 — global base_pos 예측이 구조적으로 어려운 문제로 보임.

4 Takeaway

Latent-C v1은 N=12 dense layer routing으로 latent-A 계열(104–115mm)에 근접하는 115.66mm 달성 — pooled cache (9.6 MB/sample) 덕분에 shm OOM 없이 안정 학습 완료.
v1→v2 action 손해 +31.65mm는 latent-A v2 +14mm의 2배. 가능한 원인: (1) mg30_real_h50 stats가 타이트 (실제 range), (2) dense routing이 state 부담에 sensitive, (3) quat sign 보존이 학습 어려움 ↑.

Pi0.5 downstream에서 v2 가치

v2의 147mm는 pixel 134mm보다 나쁘지만, state[16] 동시 예측이 핵심 가치. IDM dump 결과를 Pi0.5 학습 source로 바로 투입 가능 (mg30_real_h50 schema 호환). action quality 손해 31mm가 Pi0.5 SR에 어떻게 전달되는지 downstream 실험으로만 판단 가능.

5 Next Steps (우선순위 순)

옵션내용예상 작업
A. Pi0.5 downstreamlatent-C v2 dump → Pi0.5 학습 source 투입. pixel v2 dump와 Pi0.5 SR 비교dump script 1.5h + dump 7-9h + Pi0.5 학습
C. Loss reweightaction vs state loss weight 조정 (예: 2.0, 5.0) → 재학습 60K. v1 115mm 이하 달성 목표10분 dev + 24h 학습 + 30min eval
B. N=4 sparse routingpooled cache (9.6 MB/sample)로 SEL=[1,4,7,10] ActionDiT 4L 비교30분 dev + 5-8d wall
E. State quality 정밀 측정v2 state_error per-dim 분석, base_pos collapse 원인 규명분석 script 1-2h
핵심 산출물: outputs/idm_robocasa_latent_C_n12_pooled_60k_8gpu/checkpoint-60000/ outputs/idm_robocasa_latent_C_n12_pooled_v2_60k_8gpu/checkpoint-60000/ outputs/idm_simulator_eval_latent_C_n12_pooled_24ep/ckpt-60k/videos/summary.json → avg_pos_error_mm: 115.66 outputs/idm_simulator_eval_latent_C_n12_pooled_v2_24ep/ckpt-60k/videos/summary.json → avg_pos_error_mm: 147.31