scripts/build_scene_mem_subgoal_tier2.py (420L). multi-turn structure — 11 chunk turns + final query = 25 messages, 162 images/sample. ProcessPool 8 worker + cv2 seek → 858 scenario 9분.place the X in the Y). memory build time 24s→18s.Tier-1 LoRA V2 probe(260514 새벽)에서 RoboCasa atomic vocab format은 확보됐으나 target fixture 정확도가 0/3이었다. 원인은 Tier-1이 단일 atomic episode 1개 = keyframe 1개로 학습되어, scene-mem-benchmark가 요구하는 prior video 전체를 기억하고 마지막 query에 맞는 fixture를 recall하는 능력이 없었기 때문.
이 세션에서 데이터셋 오너가 subtasks.json을 HF에 올려 segment-level supervision이 생겼다. Tier-2 builder와 학습을 한 세션에 완성하는 것이 목표.
2026-05-14 04:51 UTC에 Keh0t0/scene-mem-benchmark에 videos/subtasks.json이 858 scenario 전체에 추가됐다. combo_002 예시:
scripts/build_scene_mem_subgoal_tier2.py, 420L)핵심 구조: multi-turn conversation으로 prior video 전체를 segment별로 흘리고, 마지막 turn에서 test query에 맞는 target atomic 예측.
| Step | train_loss | token_acc | eval_loss | eval_token_acc |
|---|---|---|---|---|
| 1 | 0.744 | 0.890 | — | — |
| 60 | 0.211 | 0.948 | — | — |
| 100 | 0.048 | 0.988 | 0.0288 | 0.9927 |
| 200 | 0.003 | 0.9994 | 0.0022 | 0.9994 |
| 258 (final) | 0.002 | 0.99966 | 0.00171 | 0.99965 |
| Test | 정답 fixture | Tier-1 V2 출력 | Tier-2 출력 | Tier-2 정답? |
|---|---|---|---|---|
| steak | freezer | "pick the steak from the cabinet and place it on the counter" | "place the steak in the fridge" | ❌ cold-storage confusion |
| bowl | cabinet | "pick the bowl from the cabinet and place it on the counter" | "place the bowl in the cabinet" | ✅ |
| fish | oven | "pick the fish from the counter and place it in the microwave" | "place the fish in the fridge" | ❌ 큰 miss |
개선 요약:
place the X in the Y 정확히 매칭 (Tier-1은 pick...place 형식 혼재)| 경로 | 내용 |
|---|---|
data/scene_mem_tier2/train.jsonl | 2,793 sample, 65MB |
data/scene_mem_tier2/images/ | ~25K JPEG (858 scenario × ~30 frame) |
~/ckpts/scene-mem-tier2-merged/ | merged ckpt, 8.5GB |
scripts/build_scene_mem_subgoal_tier2.py | 420L, ProcessPool 8 worker |
scripts/finetune_scene_mem_memer_tier2.sh | V2 ckpt resume, max_length=20480 |
scripts/eval_tier2_30sample.sh | 30-scenario sweep entry (sbm용) |
eval_outputs/cascade_tier2_combo_002.json | combo_002 cascade (stub) 결과 |
segment-level supervision(frame_start/end + task_idx + instruction) 없이는 prior video를 chunk로 나눠 GT atomic을 붙이는 것이 불가능했다. 데이터셋 오너가 제공한 이 파일이 Tier-1(single-atomic) → Tier-2(memory recall) 전환의 열쇠였다.
Tier-2 학습으로 출력 format이 place the X in the Y로 완전히 정합됐다. fixture 정확도(1/3)는 아직 낮지만, 30-scenario 통계와 추가 학습(더 많은 epoch, frames-per-chunk 조정)으로 개선 여지가 충분하다.
8 frame/chunk에서 162 images/sample → ~40K image token. IMAGE_MAX_TOKEN_NUM=128 cap으로 보호했지만, 4 frame/chunk(~20K)로 줄이면 더 안전하다. 두 설정을 ablation해서 최적값 찾는 것이 Tier-3 방향.
stratified seed=42로 선택한 30 scenario에 대해 Tier-2 cascade(stub) 실행 중. fixture accuracy 분포 확인 후 task-별 breakdown 필요. RestockBowls/cabinet이 높고 OvenBroilFish/oven이 낮을 것으로 예상 (visual ambiguity 차이).
stub mode 검증 완료 → 진짜 Pi0.5 inference 연결. mme_vla_suite config 매핑 + 32-dim → 12-dim action 트리밍 + norm_stats 로딩 확인 후 memory_success 실측.
현재 8 frame/chunk(162 images). 4 frame/chunk(~81 images, 더 안전한 context)와 비교. 또한 Tier-2 2,793 sample은 Tier-1 3,519보다 작아서 epoch 2~3 추가 또는 RoboCasa Tier-1 data concat augment 고려.
chunk 0의 atomic과 test 0의 target_atomic이 동일 → 모델이 chunk 0 그대로 copy 학습할 수 있음. chunk 1(bowl), chunk 2(fish) 정답률로 진짜 memory recall 검증 필요.