← Index
2026-09-08 — scene_bench · online control 계측

온라인 이미지/관측 예산 계측 버그 발견·수정

중간 런 500플랜 분석 중 사용자 지적으로 발견 — 메모리 이미지 예산(frames-uniform 2배), 턴당 관측 이미지 예산(+1장) 두 건

TL;DR

17 → 9
frames-uniform t=0 이미지
5 → 4
턴당 관측 이미지
1→1
obs4 첫 행동 적중(불변)
$0.97
obs4 확인 런 (10플랜)

1배경 / 목적

중간 런 500플랜(260907-online_mid_find500.html) 심층 분석 도중 사용자가 "메모리 4장 아니야? vlm eval도 4장 아니야?"라고 질문. 실제 프롬프트에 들어가는 이미지 수를 한 번도 직접 세어본 적이 없었다는 뜻이라 즉시 실측했다.

2작업 내용

2.1 메모리 이미지 예산 (커밋 96dac04)

읽기 격자 (--cap 8)온라인 t=0 (수정 전 → 후)온라인 t≥1
blind / textlog / rf-v301(현재 뷰)5(+직전 서브골 4)
rollforward-vis-pure8 (kept)9 → 913
frames-uniform817 → 921 → 13

원인: seed_memory가 frames_uniform_indices(ep)를 cap 없이 호출해 기본값 16이 그대로 적용 — 온라인 frames-uniform만 읽기 예산의 2배를 받고 있었다. rollforward.VIS_MEM_CAP=16은 쓰기 단계 상한이지 이 런들의 읽기 예산이 아니라는 점도 이번에 명확해짐. 수정: READ_IMAGE_CAP=8, seed_memory(..., image_cap), CLI --image-cap, 행 필드 image_cap 추가. 테스트 232개 통과.

영향 범위: 중간 런 frames-uniform 100행(16장 예산)은 두 트랙 비교에 못 쓴다 → tmp/protocol_v2/frames16_mid_rows.jsonl로 보관. blind/textlog/rf-v3/vis-pure 400행은 예산 동일이라 영향 없음. 파일럿2/4의 frames 행도 같은 결함(탐색용이라 재측정 안 함, 각주 처리).

2.2 턴당 관측 이미지 예산 (obs)

읽기 트랙 writer는 청크(30s)마다 정확히 4장(rollforward_chunks(ep, images_per_chunk=4)). 온라인은 직전 서브골 4장 + 현재 뷰 1장 = 5장이었다 → 현재 뷰를 예산 안에 포함해 직전 3장 + 현재 1장 = 4장으로 정정(OBS_IMAGE_BUDGET=4, --obs-images, 행 필드 obs_budget). t=0에는 직전 프레임이 없어 현재 뷰 1장뿐이므로 첫 행동 적중 지표는 이 변경과 무관 — 영향은 턴≥1의 실행(SR@예산)뿐이다.

2.3 obs4 짝 비교 확인 런 (사용자 승인, $0.97, job 113389/113390)

중간 런과 같은 컨텍스트·질의·전략을 obs 4로 재측정해 짝 비교(2컨텍스트 × 5전략 = 10플랜).

컨텍스트/전략첫적중 (5→4)성공턴사용 스텝비용
2169__1 blind0→00→020→61932→521.144→.029
2169__1 frames*0→00→05→20532→2272.072→.359
2169__1 vis-pure0→00→020→202445→2452.391→.284
2788__2 rf-v30→00→03→13232→1500.017→.072
2788__2 vis-pure0→00→012→31500→147.146→.034
합계 (10플랜)1→10→0103→91–$1.17→$0.97

`*` frames는 image_cap도 16→8로 함께 바뀌어 obs 단독 효과가 아님. 표는 대표 5행만 발췌(전체 10플랜 중).

3결과 해석

첫 적중 1→1, 성공 0→0: 예측대로 t=0(직전 프레임 없음)은 obs 변경과 무관 — 핵심 지표(first_action_hit)는 불변임이 확인됐다.
턴·스텝·비용은 플랜 단위로 크게 요동(20→6, 3→13, 5→20, 12→3 — 상승 5·하락 4·동일 1, 방향 자체가 갈림) — obs 효과가 아니라 VLM 샘플링 잡음이 지배한다. 턴 2에서 결정 하나가 갈리면 이후 궤적이 통째로 달라진다. 합계로는 턴 103→91, 비용 −17%(이미지 1장 감소 + 턴 감소가 섞임).

함의: 실행 지표(SR·턴·스텝)는 플랜 단위 재현성이 낮아 큰 n이 필요하고, t=0 단일 결정인 first_action_hit가 훨씬 안정적인 주 지표다. 잡음 크기를 따로 재려면 동일 설정 반복(obs 5×2, ≈$1)이 필요 — 미실행.

4Takeaway

의미

계측 파라미터(이미지 개수)는 코드 리뷰로는 안 잡히고 "직접 세어보자"는 질문으로만 드러났다 — 온라인/읽기 두 트랙을 비교하는 실험은 프로토콜 파라미터(이미지 예산·관측 예산)가 일치하는지를 각 지표 도입 시점마다 명시적으로 검증해야 한다. 다행히 이번 결함은 frames-uniform 한 전략에만 영향을 줬고, 핵심 비교 지표(first_action_hit)가 t=0 단일 결정이라 obs 변경 자체에는 안정적이라는 점도 이번에 실증됐다.

5Next Steps

미해결 — 본 런 regime 결정

중간 런 500행(obs 5)과 본 런을 같은 표에 못 섞는다. 선택지: (a) 본 런 589×5 전량을 obs 4로 재측정(추가 ≈$31, 표 전체 obs 4로 통일) (b) 본 런을 --obs-images 5로 돌려 중간 런과 재사용(읽기와는 +1 차이 유지). 사용자 결정 대기.

다음 작업

frames-uniform 재측정 여부 미결(승인 없이 제출했다가 취소된 건) — 본 런 계획에서 image_cap=8로 통일해 재산정할지 결정 필요.