Index
2026-05-18 — Analysis

IDM 2×2×2 q01/q99+clamp Norm 완전 통합 비교

DreamData / GR00T-Dreams  |  base(min_max) vs qnorm(q01/q99+clamp)  |  8-cell × 24-ep sim eval

TL;DR

106mm
feat_delta_reg (best)
−44%
pix_delta_reg Δ
8
cell 완료
15.9°
feat_abs_reg quat (best)

1 배경 / 목적

IDM 2×2×2 3-axis 직교 ablation (input × frame × loss, 8 cell)의 base 학습은 min_max normalization (stats min/max → [−1,1], clamp 없음)을 사용했다. VLA·Pi0.5 표준 norm은 q01/q99 + clamp — action/state target의 하위 1%·상위 99% quantile로 [−1,1] 정규화 후 경계에서 clamp. outlier에 robust한 방식이다.

핵심 질문: base에서 pix_delta_reg가 303mm로 "대참사"였다 (diff→reg 전환 시 +67% 폭발). q01/q99 clamp가 이 셀을 구할 수 있는가?

두 가지 가설: (A) regression은 raw target에 직접 MSE fit → long-tail outlier에 민감 → q01/q99 clamp가 outlier를 압축해 학습 안정화. (B) Cosmos hidden (feature)은 이미 압축/정규화된 표현 → norm 효과 없음.

검증 방법: 동일 architecture + 동일 data, --norm_method q01_q99_clamp만 바꿔 8-cell 재학습 후 24-ep open-loop sim EEF mm 비교.

2 작업 내용

코드 변경

gr00t/data/dataset_h50_droid_pixel_v2.py — norm_method arg 추가 ("min_max" | "q01_q99_clamp") gr00t/data/dataset_latent_idm_2frame.py — 동일 scripts/dump_idm_actions_h50_droid_v2.py — --norm_method flag scripts/dump_idm_actions_2x2x2_feature.py — --norm_method flag (dump 시 학습과 동일 norm stats source 사용 — denorm에 필수) scripts/eval_idm_simulator_replay.py — quat geodesic 메트릭 추가 (260514)

재학습 스케줄

8-cell 전체 재학습 (outputs/idm_2x2x2_qnorm/<tag>/), 분산 제출 (own 2 + minhopark 6 GPU). 60K steps, batch 1024, 동일 hybrid v2 pack (video=idm_mg30, state=mg30_real_h50).

6-cell (4 pixel + feat_delta×2) 먼저 완료 → dump + sim replay. feat_abs×2는 후속 (Job 3404, 28:11 완료). SLURM 3334 (dump 성공, replay 버그 fail) → 3374 (replay-only, mkdir VIDEO_DIR fix + dump-skip idempotent).

부가 픽스: ulimit -n fd 증가 (torchcodec EMFILE), LRU decoder cache 적용.

Normalization 구현 상세

# q01_q99_clamp 모드 (학습 + dump 동일) q01 = np.percentile(values, 1) q99 = np.percentile(values, 99) normalized = (values - q01) / (q99 - q01 + eps) * 2 - 1 normalized = np.clip(normalized, -1.0, 1.0) # dump 시 denorm도 동일 stats로 역변환 (필수)

3 결과

8-cell 전체 비교 (24-ep open-loop sim, EEF pos mm)

Cellbase posqnorm posΔposbase quat°qnorm quat°Δquatgrip(qnorm)
feat_delta_reg ⭐104.8106.0+1.220.1°19.6°−0.583.6%
feat_abs_reg108.6109.6+1.019.5°15.9° ⭐−3.685.6%
feat_abs_diff122.9111.3−11.623.5°19.6°−3.984.5%
feat_delta_diff114.4114.7+0.321.9°19.6°−2.283.3%
pix_delta_diff181.6157.8−23.832.1°27.4°−4.788.3%
pix_delta_reg302.9168.6−134.3 ⭐38.4°24.0°−14.488.0%
pix_abs_reg363.9336.6−27.353.2°59.2°+5.976.6%
pix_abs_diff339.0344.1+5.059.6°59.3°−0.275.8%

Marginal effects — 축별 평균 (pos mm)

Axisbaseqnorm해석
input: pixel → feature297mm252mm → 110mm (−56%)Feature 압도, 두 norm 무관
frame: abs → delta234→176 (−25%)225→137 (−39%)Δ 우위가 qnorm에서 더 커짐
loss: diffusion → regression190→220 (+16%)182→180 (−1%)qnorm이 regression을 구원 ⭐
핵심 발견 1 — regression 구원: base에서 diffusion→regression 전환 시 평균 +16% 악화 (특히 pix_delta_reg 303mm). qnorm에서는 regression ≈ diffusion (−1% 차이). pix_delta_reg 303→169mm (−44%), quat 38°→24°(−38%). norm method 하나가 이 셀 학습 안정성의 결정적 변수였음.
핵심 발견 2 — Δ frame 우위 강화: abs→delta 개선이 base −25%에서 qnorm −39%로 확대. delta가 frame 차분으로 outlier를 1차 상쇄 + q01/q99가 잔여 outlier clamp → 이중 안정화. abs는 절대값이라 norm에 더 의존.
핵심 발견 3 — feature 무변화는 feat_delta에만: feat_delta 셀 ±1mm 불변 (action stat 이미 [−1,1] identity라 q01/q99≈min/max). 단 feat_abs_diff는 qnorm으로 −12mm (123→111) 개선 — abs frame은 절대값이라 state outlier clamp 효과를 받음.
핵심 발견 4 — pix_abs collapse는 norm으로 미해결: pix_abs_diff 339→344 (오히려 +5mm). state quat 117° collapse (anti-aligned)는 normalization 무관 — abs+diffusion+pixel 조합의 학습 불안정이 근본 원인. 재학습/구조 점검 필요.

Feature spread 변화 — robustness 강화

Feature 4-cell spread: base: 105~123mm → spread 18mm qnorm: 106~115mm → spread 9mm (절반으로 축소) → qnorm이 design choice 간 편차를 줄여 robustness 강화

Qnorm 최종 랭킹 (24-ep sim EEF pos)

RankCellqnorm posqnorm quat°grip
1 ⭐feat_delta_reg106.0mm19.6°83.6%
2feat_abs_reg109.6mm15.9° ⭐85.6%
3feat_abs_diff111.3mm19.6°84.5%
4feat_delta_diff114.7mm19.6°83.3%
5pix_delta_diff157.8mm27.4°88.3%
6pix_delta_reg168.6mm24.0°88.0%
7pix_abs_reg336.6mm59.2°76.6%
8pix_abs_diff344.1mm59.3°75.8%

4 Takeaway

q01/q99+clamp = new default 채택 근거

손해 보는 셀 없음 (pix_abs_diff collapse는 norm 무관 별개 문제). regression 셀 평균 +16%→−1% 정상화, pix_delta_reg −44% 구원, feat_abs_diff −12mm, quat 6/8 cell 개선. 잃는 것 없이 얻는 것만 있음.

왜 regression이 min_max에서 취약했는가: regression은 raw target에 직접 MSE fit → state target의 long-tail outlier 하나가 gradient를 지배. q01/q99 clamp가 outlier를 [−1,1] 경계로 압축 → 학습 안정화. diffusion(flow matching)은 stochastic sampling이라 outlier 영향이 분산되어 norm 효과가 작다.

feat_delta vs feat_abs의 차이: feat_delta는 frame 차분이라 outlier가 상쇄됨 → norm 무관. feat_abs는 두 frame의 절대값을 보므로 state outlier clamp 효과가 있음. 같은 "feature 무변화" 결론이라도 frame axis에 따라 달라짐.

pix_abs_diff 재학습 필요: 이 셀의 state quat 117° (anti-aligned에 가까움)는 normalization으로 해결 불가. abs+diffusion+pixel 조합의 구조적 학습 불안정. lr/warmup/loss-weight 실험 또는 구조 점검 별도 필요.

5 Next Steps

pix_abs_diff 재학습 진단

state quat 117° collapse (sim 59°, state-pred 117°) — norm 무관 확인. 원인 후보: lr 너무 큼, warmup 부족, action/state loss weight 불균형, abs+diff 조합의 feature 불안정. lr 절반 / warmup 2× / loss_weight 조정으로 각각 1개씩 ablation.

qnorm pix_delta_reg closed-loop 재측정

base CL에서 pix_delta_reg가 OL 303 → CL 327mm (+8%)였음. qnorm OL이 169mm로 크게 좋아졌으니 CL에서도 개선됐는지 확인 가치 있음. Feature CL eval은 sim render → Cosmos encoder 경로 필요 (~3.5h), 우선 pixel CL만.

feat_abs_reg quat 15.9° deployment 고려

pos는 2위 (109.6mm)지만 orientation 정확도는 8-cell 최강. rotation-critical task (예: pour, insert)에서 feat_abs_regfeat_delta_reg보다 유리할 수 있음. task 특성에 따라 최종 모델 선택 기준 마련.

산출물 위치

학습: outputs/idm_2x2x2_qnorm/<cell>/checkpoint-60000/ eval: outputs/idm_2x2x2_qnorm_eval/<cell>/ckpt-60k/videos/summary.json × 8 base: outputs/idm_2x2x2_eval/<cell>/ckpt-60k/videos_quat/summary.json × 8