model 0.0193 vs zero-motion 0.0785 → 4.07x better — context.md가 정한 통과선(1.5x) 대비 여유 확보TRAIN_PLAN_V2 기준 pi0.5 × MolmoSpaces 파인튜닝(franka_droid, 절대 joint position + gripper, exo+wrist 2뷰, DROID state norm stats 재사용)의 마지막 실행 단계가 Phase 5 본 학습(15k step)이었다. 직전 세션(260803)에서 dataloader 병목 튜닝(-c 96, --num-workers=32)까지 마치고 job 68392를 제출한 뒤 대기 중이었다.
MolmoSpaces bench-v2 val split이 로컬에 없어 held-out validation이 원천적으로 불가능하다 — 확인 가능한 것은 발산 여부(n_nonfinite), step에 따른 개선, 그리고 "정지 상태 유지보다 나은가"(zero-motion baseline 대비)뿐이다. 15fps 데이터 특성상 인접 프레임 간 관절 이동이 작아 zero-motion 자체가 강한 예측기(L1 0.0785)이므로, 학습된 모델이 이 baseline을 얼마나 앞서는지가 "학습이 진짜로 됐는가"를 가르는 최소 게이트다. context.md는 이 배율이 1.5x 미만이면 학습이 안 된 것으로 명시해뒀다.
val_14999.{json,txt}만 남아 있고 5000/10000 스텝 중간 checkpoint는 검증되지 않았다.본 학습은 pi05-mlspaces/scripts/train_full.sh로 job 68392를 제출해 자동 진행됐고, 완주 후 pi05-mlspaces/convert/validate_checkpoint.py로 최종 checkpoint를 채점했다. 검증은 zero-motion baseline과 같은 seed(0)로 프레임을 맞춰 공정 비교하는 방식이다.
중간 checkpoint(5000/10000)는 이번 라운드에서 검증하지 않고 최종 checkpoint만 확인했다 — 목적이 "발산 없이 학습이 끝까지 갔는가"의 최종 게이트 통과 여부였기 때문.
| Step | loss | grad_norm | param_norm |
|---|---|---|---|
| 0 | 1.6255 | 16.8553 | 1936.7322 |
| 490 | 0.0112 | 0.1697 | 1936.7518 |
| 4,990 | 0.0046 | 0.0753 | 1937.5168 |
| 9,990 | 0.0030 | 0.0328 | 1937.9561 |
| 14,980 | 0.0026 | 0.0326 | 1938.0219 |
n_nonfinite=0. loss는 첫 500 step에서 급락(1.63→0.011) 후 완만히 수렴, param_norm은 1936.7→1938.0으로 거의 이동 없이 안정적. sacct도 COMPLETED(16:18:28)로 일치.| Metric | model | zero-motion baseline | 배율 |
|---|---|---|---|
| L1 (전체) | 0.01930 | 0.07853 | 4.07x better |
| RMSE (전체) | 0.07139 | 0.18232 | 2.55x better |
| dim | model L1 | zero-motion L1 | 배율 |
|---|---|---|---|
| gripper | 0.03425 | 0.27835 | 8.13x |
| joint1 | 0.02008 | 0.07937 | 3.95x |
| joint5 | 0.02255 | 0.07144 | 3.17x |
| joint3 | 0.02279 | 0.07136 | 3.13x |
| joint6 | 0.02221 | 0.05755 | 2.59x |
| joint0 | 0.00820 | 0.01989 | 2.43x |
| joint2 | 0.01153 | 0.02553 | 2.21x |
| joint4 | 0.01281 | 0.02476 | 1.93x |
horizon 0(1스텝 뒤 예측) model 0.0123 / baseline 0.0347(2.8x) → horizon 14(15스텝 뒤) model 0.0248 / baseline 0.1151(4.6x). 예측 지평이 멀어질수록 zero-motion의 오차가 더 빨리 커지기 때문에, 상대 배율은 오히려 뒤쪽 horizon에서 더 크다.
Phase 5(본 학습)가 계획대로 완주됐고, 최소 sanity 게이트(zero-motion 대비 1.5x)를 8개 action dim 전부에서 여유 있게 통과했다 — 이는 TRAIN_PLAN_V2의 데이터 파이프라인(변환·norm stats·2-cam 스키마)과 학습 설정이 근본적으로 깨지지 않았다는 증거다. 지난 세션들에서 잡은 변환 버그(96/96 샤드 전멸 → 복구), dataloader 병목(11.83→3.52 s/it) 같은 인프라 이슈가 최종적으로 "학습이 되는 모델"로 이어졌음을 확인한 셈이다.
다만 이 검증은 학습 데이터 자체에 대한 fit 확인일 뿐 generalization 증거가 아니다. MolmoBot 논문 기준 π0.5 15k finetune 평균 36.0%(zero-shot 10.0%) 같은 실제 성공률 비교는 bench-v2 외부 평가에서만 나온다. 이번 결과는 "그 평가로 넘어가도 되는가"에 대한 최종 게이트 통과로 해석하는 게 정확하다.
held-out validation 부재(train split 100% 사용) — 진짜 일반화는 bench-v2에서만 확인 가능. train/val house ID 겹침 여부도 미확증(EVAL_NOTES.md §11-C). context.md가 08-03 시점에서 갱신이 멈춰 있어 이번 학습 완료·validation 결과가 아직 반영 안 됨 — 다음 세션에서 Phase 5/6 상태 업데이트 필요.
bench-v2 외부 평가(Phase 6) 착수: PI_Policy 서버 기동 시 port 불일치(config 기본 8080 vs run_eval_server.sh 8000) 먼저 맞추고, checkpoint 14999 + 동봉 norm stats로 서빙. 평가 세트는 EVAL_NOTES.md §"남은 ablation" 결론대로 RBY1M 아닌 Pick / PnP / PnP-NextTo / PnP-Color 4종으로 고정(260811 분석 근거). 비교 기준: MolmoBot 논문 zero-shot 10.0% / 15k finetune 36.0%(단, 벤치 구성이 달라 직접 비교는 주의).