TL;DR
- 메모리가 blind를 네 전략 모두 유의하게 이긴다 — 짝 McNemar(n=134): textlog p<0.0001 · rf-v3 0.0021 · vis-pure 0.0090 · frames 0.0290. 온라인 트랙에서 처음 확정.
- 메모리 전략끼리는 여전히 미분리 — 전 쌍 p>0.05. writer 결함을 고친 뒤에도 결론이 같다 → SR 압축의 원인은 writer가 아니었다.
- multi 셀(S1+S2)은 전 전략 바닥 — textlog가 첫 navigate를 33/43(0.77) 맞추면서 완주는 3/43(0.07). 정정(9/10): 원인은 VLA 체이닝이 아니라 결합 + 예산이다 — GT vs 실행 대조 리포트 참조.
- 타깃/디스트랙터 뒤집힘 전수 확정 — 첫행동 textlog D1 0.81 vs D2 0.40, 반대로 frames·rf-v3·vis는 D2 ≥ D1. D1:D2 = 31:52 혼합에서 상쇄돼 전체가 비슷해 보인다.
- vis-pure의 cap 8은 제약이 아니다 — 134편에서 KEEP 61 · DROP 60 · 축출 1회, 컨텍스트 프레임 7.21/8 잔존.
1 배경/목적
중간 런(500플랜)의 SR은 t≥1에서 무효였다. 공통 append writer가 모든 전략에 온라인 텍스트 노트를 쌓아, 이미지 전용(vis-pure)·기억 없음(blind)·요약 재작성(rf-v3)의 규칙을 전부 깨뜨렸기 때문이다. 첫 행동 적중(t=0, 시드만 봄)만 유효했다.
또 균등 샘플링으로는 multi 셀(S1·S2)이 전략당 3~6행밖에 안 잡혀 셀 표를 만들 수 없었다.
이번 런의 목적 2가지 — ① 수정된 writer로 SR을 다시 재서 중간 런 수치를 대체한다. ② S1/S2를 전수로 채워 D1/D2/D3/S1/S2 셀 표를 완성한다.
2 작업 내용
질의 = (100컨텍스트 × 1질의, seed 7) ∪ (S1/S2 전수 43질의) = 134질의
플랜 = 134 × 5전략 = 670
전략당 셀 D1 31 · D2 52 · D3 8 · S1 26 · S2 17 ← S1/S2는 데이터셋 전량(각 26·17개가 전부)
프로토콜 v2(strict 접지 · 도달 반경 1.0 m pick · open/close) + 채점 v2(dataset budget_steps, 종료 위치+done)
이미지 obs 4 (직전 서브골 3 + 현재 뷰 1) / image_cap 8
VLA pi05_mlspaces_place_oc@20000 · VLM gemini-3.7-flash
두 선택 규칙의 합집합을 한 잡으로 돌리려고 --v1-queries-file을 추가했다(16a0d66). 기존 --queries-file은 v0.7 경로만 걸러 --v1-contexts 플랜에는 조용히 무효였고, 두 잡 세트로 나누면 겹치는 45플랜이 중복 실행돼 결과 파일에 같은 plan_id가 두 번 들어간다. 같은 커밋에서 paper_cell(셀 판정)을 분석 스크립트 3곳의 복제본에서 sbench_eval.dataset_v1로 통합했다.
먼저 잡은 결함 — writer 커밋(872008b)이 policy = writer_policy(plan.strategy)로 VLA policy 인자를 덮어써 첫 조작 서브골마다 AttributeError: 'dict' object has no attribute 'task'로 죽었다. navigate만 하는 플랜은 살아남아 샤드가 조용히 "COMPLETED"로 보였다. 145c9b3에서 개명 + AST 회귀 테스트(run_online_plan이 policy를 재대입하면 실패) 추가. 이 함수는 env/policy/client가 필요해 단위 테스트가 없던 사각이었다.
3 결과 — 셀 × 전략
670/670행, $42.84. final: done 378 · budget_exhausted 188 · abort 72 · max_subgoals 32. 예산 내 547/670.
SR (성공률) — 셀 × 전략, 셀별 최고값 굵게
| 셀 | n | blind | textlog | frames-uniform | rf-v3 | rf-vis-pure |
| D1 | 31 | 0.19 | 0.52 | 0.32 | 0.35 | 0.29 |
| D2 | 52 | 0.25 | 0.44 | 0.35 | 0.46 | 0.42 |
| D3 | 8 | 0.00 | 0.25 | 0.00 | 0.12 | 0.12 |
| S1 | 26 | 0.00 | 0.12 | 0.08 | 0.00 | 0.04 |
| S2 | 17 | 0.00 | 0.00 | 0.06 | 0.06 | 0.12 |
| 전체 | 134 | 0.142 | 0.328 | 0.231 | 0.276 | 0.261 |
첫 행동 적중 — 셀 × 전략 (t=0 결정, writer 무관)
| 셀 | n | blind | textlog | frames-uniform | rf-v3 | rf-vis-pure |
| D1 | 31 | 0.19 | 0.81 | 0.45 | 0.55 | 0.45 |
| D2 | 52 | 0.29 | 0.40 | 0.54 | 0.56 | 0.54 |
| D3 | 8 | 0.25 | 0.50 | 0.25 | 0.38 | 0.38 |
| S1 | 26 | 0.31 | 0.88 | 0.38 | 0.54 | 0.50 |
| S2 | 17 | 0.59 | 0.76 | 0.71 | 0.59 | 0.59 |
| 전체 | 134 | 0.310 | 0.640 | 0.490 | 0.540 | 0.510 |
전체 SR 95% 신뢰구간 (Wilson)
| 전략 | 성공/전체 | SR | 95% CI |
|---|
| blind | 19/134 | 0.142 | [0.093, 0.211] |
| textlog | 44/134 | 0.328 | [0.255, 0.412] |
| frames-uniform | 31/134 | 0.231 | [0.168, 0.310] |
| rollforward-v3 | 37/134 | 0.276 | [0.207, 0.357] |
| rollforward-vis-pure | 35/134 | 0.261 | [0.194, 0.341] |
4 메모리는 blind를 전부 유의하게 이긴다
| A | B | A>B / B>A | p (양측 McNemar, n=134쌍) |
|---|
| blind | textlog | 4/29 | <0.0001 *** |
| blind | rollforward-v3 | 7/25 | 0.0021 ** |
| blind | rollforward-vis-pure | 9/25 | 0.0090 ** |
| blind | frames-uniform | 7/19 | 0.0290 * |
| textlog | frames-uniform | 26/13 | 0.0533 |
| textlog | rollforward-v3 | 20/13 | 0.2962 |
| textlog | rollforward-vis-pure | 21/12 | 0.1628 |
| frames-uniform | rollforward-v3 | 14/20 | 0.3915 |
| frames-uniform | rollforward-vis-pure | 16/20 | 0.6177 |
| rollforward-v3 | rollforward-vis-pure | 13/11 | 0.8388 |
네 메모리 전략 모두 blind 대비 유의하다. 온라인 트랙에서 "메모리가 실행 성공률을 올린다"가 처음으로 전 전략에서 확정됐다.
그런데 메모리끼리는 여전히 안 갈린다. textlog vs frames 0.053(경계) 외에는 전부 p>0.15다. writer 결함을 고친 뒤에도 같은 결론이라는 점이 중요하다 — SR 압축의 원인은 writer가 아니었고, 260908에 분석한 타깃/디스트랙터 상쇄 + VLA 병목의 곱셈 구조가 그대로 유지된다.
5 multi 셀은 메모리 실패가 아니다
| 전략 | direct (D1+D2) SR | multi (S1+S2) SR | multi 첫 navigate 적중 |
|---|
| blind | 19/83 = 0.23 | 0/43 = 0.00 | 13/43 = 0.30 |
| textlog | 39/83 = 0.47 | 3/43 = 0.07 | 33/43 = 0.77 |
| frames-uniform | 28/83 = 0.34 | 3/43 = 0.07 | 14/43 = 0.33 |
| rollforward-v3 | 35/83 = 0.42 | 1/43 = 0.02 | 19/43 = 0.44 |
| rollforward-vis-pure | 31/83 = 0.37 | 3/43 = 0.07 | 18/43 = 0.42 |
textlog는 multi에서 첫 목적지를 77% 맞추면서 완주는 7%다. 기억은 제 일을 하는데 점수가 안 나온다.
⚠ 정정 (2026-09-10) — 이 절의 원래 결론("VLA가 2개 이상을 연속 조작 못 한다")은
틀렸다. 물체 단위로 세면 textlog는 direct 0.43 → multi
0.44로 저하가 없다. multi SR 0.07의 정체는
결합(p²≈0.19)과
예산 초과(multi 28% vs direct 13%)이며,
두 개를 다 집고도 예산 초과로 0점인 행이 8개 있다. 다만 이미지·요약 전략은 물체 단위로도 떨어진다(rf-v3 0.39→0.22, frames 0.33→0.23). 근거·롤아웃 영상:
GT vs 실제 실행 대조.
6 writer 실측 — vis-pure의 cap 8은 제약이 아니다
| 전략 | notes / img | 메모리 이미지 | keep/drop/evict | 시드 잔존 | 온라인 프레임 | 턴 | 평균 스텝 |
|---|
| blind | none / none | 0 | — | — | — | 8.2 | 1029 |
| textlog | none / none | 0 | — | — | — | 7.3 | 933 |
| frames-uniform | none / uniform | 8 | — | — | 0.95/8 | 6.2 | 801 |
| rollforward-v3 | rewrite / none | 0 | — | — | — | 6.1 | 884 |
| rollforward-vis-pure | none / keep | 8 | 61/60/1 | 7.21/8 | — | 6.3 | 873 |
- vis-pure: 134편에서 KEEP 61 · DROP 60 · 축출 1회, 컨텍스트 프레임 7.21/8 잔존, KEEP을 한 번이라도 쓴 편 41/134. 예산 분리 불필요.
- 뒤집어 말하면 vis-pure의 온라인 시각 메모리는 거의 시드 그대로 굴러간다. 규칙은 열려 있는데 모델이 필요를 못 느껴 안 쓰는 것이므로 결함이 아니라 관측 결과로 기록한다(사용자 판단).
- frames-uniform: 8칸 중 온라인 프레임 0.95장. 온라인 구간이 컨텍스트 영상(1만+ 프레임)보다 훨씬 짧으니 균등 규칙의 산술적 귀결이다.
- blind가 스텝을 가장 많이 쓰고(1029) 예산 소진도 가장 많다(49/134). 기억 없이 돌아다니는 비용이 스텝 예산에 그대로 찍힌다.
7 Takeaway
- 온라인 exec-SR의 본표는 D1/D2(+D3)다. blind 대비 메모리 우위가 네 전략 모두 유의하고, 전략 간 순위는 이 표본으로 주장할 수 없다.
- S1/S2는 메모리 × 결합 × 예산의 곱이다(9/10 정정). 첫 목적지 0.77 vs 완주 0.07은 맞지만 원인은 VLA의 개별 조작 저하가 아니다.
- 중간 런의 SR은 폐기하고 이 670행으로 대체한다. 중간 런의 첫 행동 수치는 t=0이라 여전히 유효하다.
8 Next
- find 전수 확장 여부 — 남은 455질의 × 5 = 2275플랜 ≈ $145. 단 전략 간 SR 분리는 n을 늘려도 안 될 가능성이 높다(필요 n≈2200, 260908 검정력 분석).
- restore 계열 온라인 런(v1.0 53편 + v1.1 47편) 미실시.
운영 메모 — SHARD_BY=plan에서 N_SHARDS가 5의 배수면 샤드 인덱스 mod 5 = 전략이 되어, 샤드 하나가 죽으면 특정 전략만 통째로 빈다(이번에 샤드 6 = frames-uniform 16행 누락 → own QOS 재제출로 복구). 5의 배수를 피하거나 SHARD_BY=episode를 쓸 것. 또 preempt가 잦으면 sbmr 재시도 5회가 소진될 수 있다.