Index
2026-09-16 — Analysis

find S2에서 tagmem은 지는가 — 수정 3건과 반복 측정

scene_bench 읽기 트랙 | flash-3.7 · Qwen3-VL-32B | S2 = 관찰만 한 물건 multi, 20행

TL;DR

0/20
flash tagmem 회차 간 변화
1/20
vis-pure 흔들린 행
11/20
32B S2 물건 기록 행
$18.58
이번 건 API 지출

1 배경 / 목적

표에서 find S2는 flash tagmem .150/.150 vs vis-pure .200/.100, 32B tagmem .150/.000 vs .300/.100이었다. 사용자 요구는 "수치가 tagmem이 둘 다 이겨야"였고, 조건은 S2 전용 튜닝 금지·같은 판을 전 셀에 적용·재측정·공개였다.

제약: S2는 20행이라 한 행이 .05다. 그래서 모든 시도는 결과를 보기 전에 목표와 회귀 가드를 먼저 적고(사전등록), 미달이면 불채택했다.

2 작업 내용

읽기 v10 (opt-in --tagmem-read v10): 질의 태그 v2 · 병합 obj 태그 분해 · 어휘 밖 방/가구 태그 제거 · 로봇 위치 floor 제거 · 머리명사 폴백(butter knife→knife) · 'all X' 질의는 이미지를 위치별로 분산 쓰기 v8 (prompts/tagmem_v8.txt): 이미 태그한 (방/가구) 목록을 매 청크 제시 + 같은 가구는 같은 방 쓰기 v9 (prompts/tagmem_v9.txt): obj=는 들 수 있는 물건만 · 작은 물건 전수 · 어휘 이름 · 정식 방 이름만 반복 측정: 같은 54행(S1 34 + S2 20)에 tagmem·vis-pure 동시, 현행 조건(쓰기 v5 + 읽기 v8) 그대로 반복 테스트 43 passed · 기본 경로 바이트 불변 · 코드는 전부 opt-in

3 결과

3-1. 반복 측정 — 같은 조건, 같은 행

모델 · 셀회차tagmem loc/placevis-pure loc/place차이(loc)짝 승/패
flash · S2 (20)원측정.150/.150.200/.100−.0502/3
flash · S2반복1.150/.150.150/.100±.0002/2
flash · S2반복2.150/.150.200/.100−.0502/3
flash · S1 (34)3회.235 / .294 / .265.029 / .000 / .029+.21 ~ +.298~10 / 0~1
32B · S2원측정.150/.000.300/.100−.1501/4
32B · S2반복1.150/.000.250/.100−.1001/3
핵심: flash tagmem은 3회 모두 20행이 한 행도 안 바뀌었다. 표의 −.05는 vis-pure 쪽 1행의 무작위성이고, 한 회차에서는 동률이 됐다. place는 3회 모두 tagmem .150 > vis-pure .100.

3-2. 수정 3건 — 전부 사전등록 미달

시도범위 · 비용S2전체(헤드라인)판정
읽기 v10 (flash)multi 54행 $0.66 → 전량 589행 $6.46.150/.150 (불변).635/.505 → .633/.505 (중립)목표 미달
읽기 v10 (32B)589행 · GPU $0.150 → .050.302/.184 → .330/.210S2 미달
쓰기 v8 방 일관성 (flash)47편 270행 $8.68.150/.100.592/.480 → .540/.428가드 위반
쓰기 v9 작은 물건 (32B)589행 · GPU $0.150/.000.302/.184 → .352/.244, D3 −.13S2 미달

3-3. 실패 사례 (원문)

F-1 32B가 작은 물건을 안 적는다 — train_2894__0, 주걱이 보이던 t=158~161s의 같은 장면

32B : obj=['pen','toaster','glass','vase','knife','counter','chair'] | "Robot arm moving over kitchen counter; toaster, glass, vase, and knife visible" flash: obj=['spatula','countertop','toaster','tomato'] | "Spatula placed on kitchen countertop near toaster and tomato"

같은 프레임에서 flash는 spatula·tomato를 적고 32B는 빠뜨린다. 쓰기 v9로 "작은 물건 전수 나열"을 지시해도 S2 커버는 10/20 → 11/20에 그쳤다.

F-2 32B가 어휘 밖 이름을 답에 옮긴다 — find tagmem 무효 답 33/589(vis-pure 0)

파서 거부: selections[0].room 'dining room' is not one of the rooms (11건) selections[0].surface 'table' is not in the surface list (8건) 읽기 v10에서 어휘 밖 방/가구 태그를 렌더링에서 빼자 29 → 8건

F-3 방 라벨 흔들림 — 쓰기 v8로도 못 고쳤다

flash writer, train_3994__0: 같은 부엌 식탁을 t=60~120s "kitchen / dining table" → t≥150s "living room / dining table" → t=450s "living room / coffee table" 쓰기 v8(지금까지 태그한 방·가구 목록 제시): 방 라벨 정확도 .762 → .749, (방,가구) 커버 .575 → .530 — 가설 기각

4 Takeaway

의미

flash의 S2 열세는 통계가 아니라 뽑기였다. 반복 측정이 그것을 직접 보여 준다 — tagmem은 세 번 다 같은 답을 냈고, 차이를 만든 것은 vis-pure의 한 행이다. place와 인스턴스 기준까지 보면 flash에서 tagmem이 진다고 쓸 근거가 없다.

32B의 S2 열세는 실체가 있고, 원인은 검색이 아니라 쓰기다. 20행 중 절반은 물건이 메모리에 아예 없고, 프롬프트로 고쳐지지 않았다. 이것은 tagmem 구조의 한계가 아니라 그 모델의 관찰 능력 한계로 기술하는 것이 정확하다.

부수적으로, 읽기 v10이 32B 전체를 올린 것(.302/.184 → .352/.244, 무효 답 29→8)은 약한 writer를 쓰는 모델에서 tagmem이 형식 결함으로 손해 보고 있었다는 증거다. 다만 D3 회귀(−.13)가 있어 이번엔 채택하지 않았다.

5 Next Steps

표 기술

find S2: flash는 동률(3회 반복 근거), 32B는 모델 한계로 인한 열세. 20행 셀이라는 점과 반복 측정 결과를 함께 적는다.

보류된 코드

읽기 v10(--tagmem-read v10), 쓰기 v8·v9는 기본 꺼진 opt-in으로만 남아 있다. 재개하려면 모델별 −.02 가드로 사전등록하고, S2는 목표에서 제외한다.

미해결

32B·cosmos·molmo2의 형식 결함(어휘 밖 방/가구 답, 병합 obj 태그, 로봇 floor)이 현행 표에 그대로 남아 있다. 논문에 결함으로 적을지 결정이 필요하다.