PressButtonTask 태스크 클래스 + 200편 JSON 벤치(4카테고리 균형) + 집계/실행 스크립트 일체press 트랙(버튼 누르기 11,070편) 데이터는 학습에 바로 쓸 수 있으나, 평가 수단이 없었다 — molmospaces 벤치와 태스크 클래스 어디에도 press가 존재하지 않는다. 사용자 지시: "press bench 새로 만들어주면 좋겠고."
molmo_spaces에 press가 없어 PressButtonTask(PickTask 상속) + PressButtonTaskConfig + PressButtonTaskSpec를 새로 작성.
두 venv 대상, 멱등, .press_orig 백업, --revert 지원. ① TASK_CLASS_TO_CONFIG_CLASS["PressButtonTask"] 등록 ② benchmark_schema.ALL_TASK_SPEC_CLASSES에 스펙 추가(button_body·press_point가 task_config로 복사되게 함) ③ set_joint_values가 press에서 조기 반환(세탁기·전자레인지는 articulation object라 grasp file 없으면 ValueError).
press shard 3개(0000·0001 press, 0022 washer, 총 6GB)를 받아 h5만 추출 → 각 편의 frozen_config(pickle)에서 씬·로봇·카메라·태스크·언어를 뽑아 AI2 형식(benchmark.json + benchmark_metadata.json)으로 변환. 생성기 fork에만 있는 클래스는 TolerantUnpickler로 placeholder 치환해 읽는다(find_spec+hasattr 판정, try-except 미사용).
| 회차 | 조건 | 결과 | 조치 |
|---|---|---|---|
| 1차 | 버튼 body 탐색 | 못 찾음 | 데이터의 button_body(..._1_1_2_button)는 생성기 fork 이름, 우리 씬은 접미사 없는 ..._1_1_2 → 접미사 제거 후보 추가 |
| 2차 | 접촉만으로 판정 | 미학습 모델 2/2 오탐 성공 | 패널 body가 geom 74개짜리 큰 링크라 아무 데나 닿아도 통과 → 거리 3cm + 접촉 동시 요구로 조임 |
| 3차 (최종) | 거리+접촉+밀림 동시 판정 | 의도대로 구분 | 커피머신 편 실패(최근접 8.2cm, 가전 9.8cm 밀려 실격) / 세탁기 편 성공(2.7cm, 접촉, 밀림 0) |
press는 이제 closed-loop 성공률로 잴 수 있다. 판정이 데이터 생성 규칙(접촉 ∧ 정밀 접근 ∧ 가전 안 밀기)과 같은 취지라 학습-평가 정합성이 open보다 낫다. 물체도 4종(커피머신·전자레인지·세탁기·건조기)이라 open처럼 "한 물체만 학습" 문제가 덜하다.
open 트랙에서 얻은 교훈을 press에 그대로 적용했다: 학습 데이터에 없는 물체·동작이 벤치에 섞이면 점수가 안 오른다(open 카드 참조). press는 학습 데이터와 벤치가 같은 4종 분포이므로, 향후 성능이 안 오르면 데이터 분포가 아니라 모델/학습량 문제로 해석할 수 있다.
200편 정식 baseline이 아직 없다(스모크 2편뿐). press_radius 3cm는 초기값으로, 어느 반경이 주 지표가 될지 아직 결정 안 됨(단 집계 스크립트가 4개 반경을 모두 산출하므로 사후 결정 가능).
1) 기준선 측정: 미학습 모델(pi0.5 place_oc@20k, MolmoBot no-goal@10k)로 200편 평가 → press 학습 전 baseline 확보(각 1GPU 4–6h).
2) 학습 투입: press 65GB 전량 다운로드 → sensor_data 채우기(open/close와 같은 수리) → press/washer 두 데이터셋으로 분리(집 번호 85개 충돌) → held_out_houses.json 200채 제외 → 비율 press 0.10 추가해 재학습.
3) 벤치 확장 여지: 현재 shard 3개(227채)에서만 추출 — 더 다양한 집을 원하면 shard를 더 받아 재생성(build_press_bench.py --n).