← Back to index
2026-05-15 · MEMER · TIER-3B TRUE BOUNDED-MEMORY

Tier-3b — 진짜 압축-memory recall은 CHUNKED 56/56 = 100%

Tier-3a 97.9%는 long-context bypass. Tier-3b로 분해하니 memory 메커니즘은 완벽, 병목은 데이터 커버리지뿐.

TL;DR

100.0%
Tier-3b CHUNKED (56/56)
64.9%
Tier-3b overall (63/97)
17.1%
NOT-chunked (7/41)
97.9%
Tier-3a (long-ctx bypass)
36%
chunkable non-transit segs
30 / 30
scenarios swept

1 왜 Tier-3a 97.9%를 믿으면 안 되는가

scene-mem-benchmark의 평가 대상은 "압축된 memory로 final query의 target fixture를 회상하느냐"다. prior video는 실제 N개 policy rollout 비용을 줄이려는 shortcut일 뿐이다.

Tier-3a (2-turn: Watch 전체 → Recall)는 raw 영상 44 frame을 final query 시점에도 context에 전부 들고 있다. 따라서 답을 memory에서 회상하는 게 아니라 raw frame에 대한 long-context attention으로 찾는다.

사용자 직접 지적 (260515): "이 task 자체는 그 앞에 하는게 지금 중요한게 아니라 memory로 final task를 잘 찾을 수 있냐 이걸 보기 때문에 앞에 돌리는 과정을 줄이기 위해서 해놓은거야. 근데 그걸 그렇게 압축해서 넣어버리면 좀 어긋나지 않을까" → Tier-3b(bounded FIFO) 설계.

Tier-3a 97.9%는 실제 online cascade(chunk 단위 처리, raw 영상 폐기)와 분포가 어긋난다. 벤치마크 의도 위반.

2 Tier-3b 디자인: chunked + bounded FIFO=8 + model keyframe

For each PnP segment chunk: user = [memory FIFO imgs (≤8)] + [chunk recent frames] + prompt model → {"current_subtask": "...", "keyframe_positions": [k]} push recent[k] into FIFO ; if len(FIFO) > 8: evict oldest Final recall turn: user = [bounded FIFO imgs only] + final query ← raw video NOT re-shown model → "place the <obj> in the <fixture>"

학습: ~/ckpts/robocasa-memer-tier1-v2-merged에서 resume, data/scene_mem_tier3b/train.jsonl (1,651 sample), LoRA r=16/α=32, 3 epoch, 12분, eval_loss 9.5e-05 → merge ~/ckpts/scene-mem-tier3b-merged.

3 분해 방법론 — CHUNKED vs NOT-CHUNKED

Tier-3a 97.9% vs Tier-3b 64.9%를 그냥 비교하면 "Tier-3b가 나쁘다"로 오독된다. 실제로는 64.9% 안에 (a) 진짜 memory recall 품질과 (b) 고칠 수 있는 데이터 커버리지 버그가 섞여 있다. 각 test를 분리한다:

combo_035 zero-memory 처리: combo_035는 7개 non-transit segment가 전부 미매칭이라 probe가 no PnP segments — abort로 json을 안 쓰고 drop했다. 이걸 빼면 표본이 "최악 케이스 제외"로 Tier-3b에 유리하게 편향된다. probe를 패치해 빈 FIFO로 final recall을 정직하게 수행하고 json을 쓰도록 변경 (4/4 전부 오답 — 정상). 30/30 확보.

4 결과 — 진짜 memory recall은 완벽 (56/56)

Tier-3b decomposition
Tier-3a(bypass) 97.9% vs Tier-3b overall 64.9% vs Tier-3b CHUNKED 100% vs NOT-chunked 17.1%. 진짜 memory는 완벽, overall은 커버리지 갭으로 눌림.
지표의미
Tier-3a overall95/97 = 97.9%long-context bypass (참조 상한, 허수)
Tier-3b overall63/97 = 64.9%분해 전 raw 수치
Tier-3b CHUNKED56/56 = 100.0%진짜 압축-memory recall — 완벽
Tier-3b NOT-CHUNKED7/41 = 17.1%object 미저장 → 순수 추측 floor
커버리지MATCH 70 / NO-MATCH 122비-transit의 36%만 chunkable

4.1 Per-fixture: Tier-3a vs Tier-3b CHUNKED

per-fixture compare
memory에 들어간 task에 한해서는 Tier-3b가 모든 fixture에서 Tier-3a와 동등(대부분 100%). 즉 정확도 차이는 fixture 난이도가 아니라 chunking 여부.
Tier-3b는 task가 bounded FIFO에 들어가기만 하면 56/56 = 100% 회상. memory 용량/구조/학습 문제는 없다. MemER bounded-FIFO 메커니즘이 scene-mem에서 충분히 작동함을 입증.

5 진짜 병목 — instruction 파서 커버리지 갭

coverage gap
비-transit 192 segment 중 _PNP_INSTR_RE가 70개만 매칭(36%). 122개 미매칭 → 그 object들은 memory에 절대 안 들어감.
미매칭 상위 task# segs대표 구문 (regex 미커버)
OvenBroilFish8"Place the fish on the oven rack" — pick-from 절 없음
PlaceMicrowaveSafeItem6"Place the item in the microwave" — pick-from 절 없음
FilterMicrowavableItem4"Remove X from bowl ... place bowl in microwave"
FreshProduceOrganization4복합 배치
SortingCleanup4"Pick the mug and place it in the sink" — from-src 생략
LoadPreparedFood / Open·CloseOven / AddLemonToFish3 eachTransport/Move/단일동작

5.1 NOT-chunked guess prior

not-chunked prior
memory에 없을 때 모델은 fridge(14)/cabinet(13)로 쏠려 추측. NOT-chunked 17.1%는 GT가 우연히 이 prior에 걸린 경우 (chance 약간 위).

6 Takeaway + Next

Takeaway

  • Tier-3a 97.9%는 허수 — memory recall이 아니라 raw 영상 long-context attention. online cascade와 분포 어긋남.
  • Tier-3b가 올바른 평가이고, 진짜 memory recall은 사실상 완벽(56/56). 병목은 학습/구조가 아니라 builder의 instruction 파서 커버리지 하나뿐.
  • 다음 액션은 "모델을 키운다"가 아니라 "_PNP_INSTR_RE를 Transport/Move/Place/Load 구문까지 확장". chunked 100% 상한이 보장돼 있으므로 커버리지만 올리면 overall이 산술적으로 따라 올라간다.

Next priorities

  1. P0: _PNP_INSTR_RE 확장 — (a) "Transport/Move/Bring X from Y to Z", (b) "Place/Put X on/in Z"(단일 배치), (c) "Pick X and place it in Z"(from-src 생략). dst fixture 추출(trailing fixture noun reduction) 점검 동반.
  2. P1: 확장 후 Tier-3b builder 재생성 → 재학습 → 30-sample 재측정 (가설: chunkable 36%→80%+, overall→85%+).
  3. P2: 858 전체 sweep으로 일반화 확인 (task #10).
  4. P3: cascade(memer_pi05_policy.py)에 Tier-3b 2-turn(watch/query) 분기 추가 → 진짜 Pi0.5(PI05_STUB=0) memory_success 정량 (task #17).