Index
2026-07-27 — Engineering

SceneMem 벤치마크 879-scenario 릴리즈 재다운로드 및 구버전 대조

SceneMem | HF Keh0t0/scene-mem-benchmark rev bd811db3

TL;DR

879
Scenarios
7,680
Tests
8803/8803
Verified
623/623
Video changed
0/879
fine_subtasks

1 배경 / 목적

로컬 미러 ~/Dataset/scene-mem-benchmark(858 scenario)의 취득 시점을 확인하던 중, HF 원본이 2026-07-22에 갱신된 것을 발견했다. 로컬은 원래 2단계에 걸쳐 받은 상태였다.

시점내용
2026-05-13 11:30HF snapshot 최초 다운로드 (eval_spec / env / eval 코드)
2026-05-13 15:12_pi05_meta/ 추가
2026-05-14 04:57~08:05combo 디렉토리 대량 다운로드, eval/eval_runner.py
2026-05-16 13:52videos/ 추가
2026-05-20 05:35fine_subtasks_manifest.json — 자체 생성 annotation push
2026-07-01 04:43~04:50trajectory.hdf5 재다운로드

리모트 최신 커밋은 bd811db3 "Update README for 879-scenario release"(07-22 07:10)이고, 그 앞에 Upload data chunk 1/22~22/22가 연속으로 붙어 있었다. 즉 data/ 전체가 재업로드된 릴리즈다.

기존 한계: 로컬 858 scenario 기준으로 260519~260625의 모든 메모리 메서드 측정치(M3v2 0.564 / ours 0.462 / M2 0.308)가 쌓여 있는 상태. 리모트 갱신이 이 기준을 유지시켜 주는지 먼저 확인해야 했다.

2 작업 내용

2-1. 사전 대조 (다운로드 전)

HfApi.list_repo_tree로 리모트 파일 목록을 받아 로컬과 대조. 토큰은 ~/envs/api_keys.txt에서 self-read하고 출력하지 않았다. env는 conda_envs/envs/memer(huggingface_hub 0.36.2).

항목로컬 (구)리모트 (신)
scenario858879
파일6,2358,803
용량22 GB24.88 GB
ID 신규 / 제거 / 공통신규 256   제거 235   공통 623
fine_subtasks.json8580
단순 증분이 아니었다. 235개가 리모트에서 사라지고 256개가 새로 생긴, 셋 자체의 교체. 여기에 5월에 push했던 fine_subtasks.json 858개가 리모트에서 통째로 소실된 것까지 확인됐다.

2-2. 백업

Dataset/scene-mem-benchmark_fine_subtasks_backup_260727.tar.gz (859 files, 318K) = data/*/videos/fine_subtasks.json (858) + fine_subtasks_manifest.json

2-3. 전체 재다운로드

증분 동기화(7.23 GB)가 아니라 새 디렉토리에 clean 전체 다운로드를 선택했다. 구버전을 그대로 남겨 과거 결과의 재현 경로를 유지하기 위함.

hf download Keh0t0/scene-mem-benchmark --repo-type dataset \ --revision bd811db32c5a4b831d01e8af060eb1b8a7174683 \ --local-dir ~/Dataset/scene-mem-benchmark-879 --max-workers 8

revision을 명시적으로 pin해서, 다운로드 도중 리모트가 바뀌어도 스냅샷 일관성이 깨지지 않게 했다.

2-4. 검증 & 구/신 대조

리모트 파일별 size와 로컬 실제 size를 1:1 비교. 이어서 ID가 공통인 623개의 subtasks.json / eval_spec.json을 byte 비교하고, 차이가 난 항목을 파싱해 무엇이 바뀐 것인지 특정했다.

3 결과

3-1. 다운로드 & 검증

소요
27 min (exit 0)
파일 검증
8803 / 8803
size mismatch
0
.incomplete 잔여
0
scenario set
879 == 879
용량
24 GB

3-2. 신 릴리즈 구성

항목비고
scenario879구 858
test7,680구버전엔 task 구분 없음
task=restore3,181채점 restore_success
task=find_target2,878채점 memory_success
task=find_distractor1,621채점 memory_success
평균 프레임 / scenario8,549~7분 연속 영상
licensecc-by-4.0구 apache-2.0

3-3. 구버전과의 차이 — ID가 같아도 다른 에피소드

대조 항목결과
ID 공통 scenario623
그중 video_total_frames 변경623 / 623 (100%)
그중 n_tasks 변경300 / 623
subtasks.json byte 동일0 / 623
eval_spec.json byte 동일0 / 623
combo_002_L29_S48_0006 (ID 공통) video_total_frames : 10,230 → 8,882 n_tasks : 6 → 5
핵심 발견: 같은 scenario ID가 같은 에피소드를 뜻하지 않는다. 623개 전부 재생성된 다른 영상이다. ID 재사용은 명명 규칙(combo_NNN_LNN_SNN_NNNN)이 겹친 결과일 뿐.

3-4. 스키마 변경

대상
eval_spec.json tests[].task필드 없음신설 (3종)
eval/tasks.py없음신규
eval/eval_runner.py5,188 B6,753 B
eval/success_fn.py2,294 B3,334 B

4 Takeaway

1. 백업본은 "복원용"이 아니라 "구버전 재현용"이다

당초엔 리모트가 annotation을 날렸으니 백업본을 새 디렉토리에 복원하면 된다고 봤다. 하지만 공통 623개가 전부 다른 영상으로 재생성된 것이 확인되면서 이 판단은 틀린 것이 됐다. fine_subtasks.jsonsubtasks.jsonper_test에 index-align된 구조라, 영상이 다르면 정렬 자체가 무의미하다.

2. --recall-walk fine이 신 릴리즈에서 동작하지 않는다. scene_mem_api/dataset.py:177-181videos/fine_subtasks.json을 읽고 없으면 fall back 없이 raise한다. 신 디렉토리엔 이 파일이 0개다. 260624~260625의 핵심 결과(M3v2 0.564 / ours 0.462 / M2 0.308)가 전부 fine walk 기반이므로, fine annotation 재생성이 이행의 선행 블로커다.
3. 과거 측정치를 신 벤치에 옮겨 붙일 수 없다. tmp/diverse12.txt 같은 시나리오 리스트도 ID 기준이라, 살아남은 ID조차 다른 에피소드를 가리킨다. 신 릴리즈 기준 수치는 전면 재측정이 필요하다.
4. 벤치마크가 3-task 체계로 정식화됐다. 특히 find_distractor(1,621건)는 영상 중 pick-and-place 대상이 아니었던 물체의 위치를 회상하게 하는 것으로, 기존 개선 항목이던 "상식차단 질의"(상식으로는 못 맞히게 하기)와 목적이 정확히 겹친다. 우리가 직접 설계하려던 것을 벤치가 먼저 제공한 셈.

5 Next Steps

블로커 fine subtask annotation 재생성 (879개)

구 파이프라인(memer/tmp/hf_push_fine_subtasks.py 계열)을 신 subtasks.json에 맞춰 재실행. 이게 되기 전까지 --recall-walk fine 경로는 신 데이터에서 못 쓴다.

보류 DATA_ROOT 전환

scene_mem_api/config.py:4는 아직 구 경로를 가리킨다. fine annotation 재생성 전에 바꾸면 fine walk가 즉시 깨지므로 의도적으로 두었다. 재생성 완료 후 전환.

보류 구 디렉토리(22 GB) 처리

과거 결과 재현이 필요 없어지는 시점에 삭제. 그 전까지 보존. 백업 tarball(318K)은 어느 쪽이든 유지.

신규 task 필드 3종 분기 대응

현 러너는 task 필드를 모르고, restore는 채점 기준 자체가 restore_success로 다르다. 신 eval/tasks.py + eval/success_fn.py를 먼저 읽고 러너 대응 범위를 정할 것.

신규 diverse12 재선정

신 879개 기준으로 다양성 셋을 다시 뽑아야 한다 (ID 재사용 불가).