_rgb/ (mode 무관 reuse) / _pt__<hash16>/ (PT meta hash 연동) / _ff[__<hash>]/. PT extractor 재실행 시 RGB 재인코딩 완전 제거.scripts/build_robocasa_latent_cache.py --mode {rgb,pt,ff,all}. 학습 entry 없이 cache만 독립 빌드 가능.기존 모놀리식 cache는 use_pointmap on/off 모드별로 별도 디렉토리가 나뉘었고, RGB + PT를 합친 단일 텐서로 저장했다.
I2V A14B 마이그레이션(Phase B) 완료 직후 적용. backward compat는 신경 쓰지 않기로 명시적으로 결정(새 데이터로 학습 예정)해서 스키마를 깔끔하게 재설계.
_pt_meta_hash())입력: 모든 pt_norm_path의 (resolved_path, size, mtime_ns) + pt_norm_mean/std + pt_cache_root. 출력: sha256 16자. PT extractor 재실행 → norm.json mtime 변경 → hash 변경 → 새 _pt__<new_hash>/ dir 분기. RANK 0에서 first call 시 episode당 1 stat() (memoize 이후 무비용).
robocasa_hdf5.py)_cache_dirs(): RGB universal _rgb suffix, 기존 _hcpt 분기 제거_build_grid_latent → _build_rgb_row + _build_pt_row 분해_getitem_t2v: RGB row / PT row / FF를 각 dir에서 독립 load/buildis_sample_cached(ep, s): trainer pre-filter 위임용. build_only 모드면 해당 slot만 체크_build_only_slot: None이 아니면 해당 slot만 빌드, placeholder dict 반환 → 다른 slot 미접촉scripts/build_robocasa_latent_cache.py)trainer.py의 pre-filter 로직: monolithic vid_dir lookup 제거 → dataset.is_sample_cached(ep, s=0) 위임. trainer가 cache 기하구조(dir suffix, hash)를 직접 모르도록 결합도 감소.
| 테스트 | Config | Mode | GPU | 결과 |
|---|---|---|---|---|
| Sanity | 모든 config | — | none | Args.build_only_slot default None, 잘못된 값 raise 확인 |
| RGB 전용 빌드 | smoke_rgbonly | rgb | 0 | _rgb/ 만 생성 (10 files). PT/FF dir 미생성 |
| PT 전용 빌드 | smoke_hcpt | pt | 1 | _pt__651647b2b3b86f03/ 만 생성 (10 files) |
| 병렬성 검증 | 위 두 job 동시 | — | 0+1 | timestamps 14s window 내 완전 overlap, 충돌 0 |
| HCPT smoke 회귀 | smoke_hcpt | all | 0 | RGB+PT+FF 3 dirs 정상. 4 step + validation 통과. loss = 모놀리식과 동일 |
| 파일 | 변경 내용 |
|---|---|
core/finetune/datasets/robocasa_hdf5.py | _RGB/PT/FF_SUFFIX 상수, _cache_dirs override, _pt_meta_hash, _build_rgb_row/_build_pt_row, _build_single_slot, _getitem_t2v 3-way split, build_only bypass |
core/finetune/trainer.py | prepare_dataset kwargs forward, pre-filter is_sample_cached 위임 |
core/finetune/schemas/args.py | strict_rgb/pt/ff_must_exist, skip_ff, build_only_slot 필드 + CLI flags |
scripts/build_robocasa_latent_cache.py | 신규 standalone builder, --mode {rgb,pt,ff,all}, sys.path 보정 |
PT extractor 재실행 시 RGB 재인코딩 비용이 완전히 제거됐다. PT 데이터 품질 개선(view2 outlier fix 등)을 반복해도 RGB encoding을 다시 돌릴 필요가 없다. PT meta hash 메커니즘이 들어온 덕분에 PT extractor 수정 후 hash 자동 갱신으로 stale cache 참조 위험도 없다.
RGB || PT 진짜 병렬 빌드가 검증됐다. 30K demo 기준 4+4 GPU 동시 빌드로 10h → ~5h 단축. trainer.py의 cache 기하구조 직접 참조를 is_sample_cached로 위임해서 결합도도 낮아졌다.
cache 사전 빌드 후 또는 lazy fill 방식으로 즉시 제출 가능. configs/robocasa_i2v.yaml (rank=64, boundary_ratio=0.875, use_pointmap=true).
view2 depth invalid pixel이 norm.json 통계를 오염시켜 pred PT cluster가 GT 기준 수백 m 밖에 위치하는 버그. PT meta hash 자동 invalidate 메커니즘이 들어왔으니 PT extractor 수정 후 hash 자동 갱신으로 안전하게 적용 가능.
_rgb/ dirbuild_only 모드(--mode pt/ff)에서도 RGB dir을 무조건 mkdir. 0 byte라 무해지만, _cache_dirs()의 RGB mkdir을 lazy(첫 RGB write 직전)로 미룰 수 있음. 우선순위 낮음.