260406-260412 · Robotics video world model for VLA augmentation
제한된 teleop 데이터를 video world model로 증강하여 VLA(Vision-Language-Action)의 few-shot post-training 성능을 극대화한다. Baseline은 DreamGen / DreamZero. 핵심 기여 3가지: (1) CA-LoRA(concept-aware LoRA로 domain-aligned smart finetune), (2) diffusion model의 intermediate feature에서 perception annotation을 추출하는 label decoder, (3) diverse rollout generation. 5단계 로드맵 중 현재 Stage 1 (Wan multi-view LoRA finetune)에 있다.
Why: RoboCasa MG-30은 3개 카메라(ext1/ext2/wrist)를 갖는다. 이를 한 프레임 안에 어떻게 배치해야 video diffusion이 multi-view consistency를 가장 잘 학습하는지 미해결 상태였다. DreamGen은 2×2 grid를 쓰지만 wrist는 외부 뷰와 분포가 매우 달라 강제 포맷이 차이를 가릴 우려가 있었다.
How: 3 layout × 2 conditioning을 직교 비교. Layout A (1×3 가로, 192×960), Layout B (역삼각형, 352×640), Layout C (2×2 black-fill, DreamGen 방식). T2V는 Wan2.1-T2V-1.3B, I2V는 Wan2.1-I2V-14B-480P. LoRA rank=32, alpha=32, lr=5e-5, warmup=100, effective batch=32, 8000 step. 데이터: 23 task × 30 ep × sliding window (49f, stride 10~25 random) ≈ 10K clips.
Result:
| 실험 | 최종 step | 3분할 | GT 일관성 | wrist 구분 |
|---|---|---|---|---|
| Layout A T2V (1.3B) | 8000 ✅ | 보임 | 낮음 | 약함 |
| Layout A I2V (14B) | 8000 ✅ | 매우 명확 | 높음 | 약간 보임 |
| Layout B I2V (14B) | 8000 ✅ | 약함 | 중간 | 약함 |
| Layout B T2V | 3000 / 8000 🔄 | 진행 중 | ||
| Layout C T2V | 1000 / 8000 ❌ | 체크포인트 손상, 재시작 필요 | ||
| Layout C I2V | 7500 / 8000 🔄 | 진행 중 | ||
Takeaway: 첫 프레임 conditioning(I2V)이 T2V를 압도. Layout A의 가로 1×3 배치가 stretch 없이 view boundary를 명확히 학습. Layout B는 wrist를 가로 2배로 늘려 distortion 유발. 현재 베스트는 Layout A + I2V 14B 조합으로 확정.
Why: 처음에는 T2V만 검증되어 있었으나 Layout A T2V 결과에서 view 분리가 약해 I2V 우위가 강하게 시사. I2V 경로를 빠르게 확보해야 했다.
How: finetrainers의 WanModelSpecification이 transformer_config.image_dim != None으로 I2V를 자동 감지한다는 점을 확인 → 코드 수정 없이 모델 체크포인트만 Wan2.1-I2V-14B-480P-Diffusers로 교체. 14B는 1.3B 대비 ~10× 크므로 batch 8→2, grad_accum 1→4 (effective batch 유지). 추론 스크립트 scripts/infer_i2v.py는 학습 데이터의 첫 프레임을 자동 추출해 WanImageToVideoPipeline에 conditioning으로 주입.
Result: 단일 commit에 17 files / +1277 lines로 I2V 학습 + external precompute + overfit 실험 셋업을 일괄 추가. Layout A I2V 8000 step을 약 14h GPU 시간으로 완료(Job 37401, 13h50m completed).
Why: 학습 루프 안에서 precompute를 재진입할 때 multi-GPU 환경에서 SIGKILL/nvlink 에러 간헐 발생. 학습 시작 시 VAE/T5 모델이 GPU에 잔류하면서 multi-GPU 전환 시점에 메모리 충돌. 동일 데이터를 학습마다 다시 인코딩하는 것도 시간/VRAM 낭비.
How: precompute를 학습과 분리. 별도 1-GPU 스크립트가 모든 클립에 대해 T5 텍스트 인코딩 → condition-{rank}-{idx}.pt, VAE 비디오 인코딩 → latent-{rank}-{idx}.pt (I2V는 첫 프레임 VAE + CLIP image embedding 추가). finetrainers의 기존 파일명 규칙({type}-0-{idx}.pt) 유지 → 학습 스크립트는 --precomputation_dir만 지정.
Result: 학습 루프에서 VAE/T5 로드 자체가 사라져 VRAM 절약 + multi-GPU 전환 문제 해결. 한 번의 precompute로 layout × conditioning 여러 실험에서 재사용 가능. 전체 10K 클립 커버.
의미: 이번 주로 Stage 1의 표현 공간(layout × conditioning)이 결정됐다. 향후 모든 실험의 default는 Layout A + I2V로 고정한다. multi-view Wan I2V LoRA finetune이 RoboCasa 분포에서 작동한다는 baseline이 확보되어 DreamGen 재현이 사실상 가능해졌다.