Index
2026-09-04 — Experiment / Analysis

place+open/close goal v2 (복원 프롬프트): 참조 물체 없는 지시로도 goal만으로 replace 12% / 15 cm, goal 없으면 44 cm 맹목 · Open은 서랍장에서만 6.8→25%

MolmoBot-Pi0 · pi0.5 · `pi05_mlspaces_place_oc_goal_v2/10000` (v2에서 10k 이어서, open/close 각 0.10) · hand-off 117편 · Open/Close HardBench 200편

TL;DR

12.0%
replace@5cm (goal on)
0.9%
replace@5cm (goal off)
15 vs 44 cm
goal까지 중앙값 on / off
25.0%
Open chestofdrawers (기준 6.8%)
45.5%
Close 200편 (무변화)

1 배경 / 정정

사용자 지적으로 goal 실험의 프롬프트가 "Place the X next to the Y"임을 확인. 학습 config는 프롬프트 템플릿을 쓰지 않고 h5의 task_description 원문을 그대로 쓰는데, place 변환 스크립트가 원본 MolmoBot 문장("Pick up … next to …")만 보고 "Place … next to …"로 고쳤고, HF 업로더가 place-only 클립용으로 index.json에 넣어 둔 instruction "Place the X on the {받침면}."은 확인하지 않고 버렸다(내 실수). 언어가 위치(Y 옆)를 알려줘 goal 이미지 실험이 흐려진 상태였다.

복원: scripts/restore_augment_instruction.py — index.json instruction → train 14,567 / val 460 h5 obs_scene.task_description (기존 문장은 task_description_nextto 보존) 받침면 어휘: countertop 10,160 · dining table 3,085 · sofa 708 · dresser 515 · bed 428 · … (20종) 평가 러너: HANDOFF_PROMPT_MODE=onsupport → "Place the {물체} on the {받침면}." (참조 물체를 받치는 body를 접촉으로 찾아 자연어 이름 선택; 예 "Place the small red potato on the countertop.") 학습: PLACE=1 GOAL=2 OPENCLOSE=1 INIT=place_goal_v2/10000, 10k step, main 0.24 / Pick 0.12 / PnP 0.08 / NextTo 0.12 / Color 0.08 / place 0.16 / open 0.10 / close 0.10 (job 109319, own 8 GPU 8h21m, loss 0.0112→0.0085) ⚠️ 제출 시 --container=nvcr.io/nvidia/cuda:12.8.0-devel-ubuntu22.04 필수 (없으면 Triton JIT 'Failed to find C compiler'로 16분 만에 종료 — job 109241에서 실제 발생)

2 hand-off closed-loop — replace 기준 (117편, 쌍 비교 113편)

조건 (프롬프트)replace@5cm@10cm@15cmgoal까지 중앙값NextTo(구)off-surface
place_oc goal on (on the {받침면})12.0% (14)27.4% (32)44.4% (52)15.1 cm50.4% (59)20
place_oc goal off (on the {받침면})0.9% (1)6.8% (8)11.1% (13)44.2 cm19.7% (23)16
place_oc 틀린 goal (on the {받침면})2.6% (3)6.0% (7)12.8% (15)43.9 cm20.5% (24)26
v2 goal on (on the {받침면}, 언어 OOD)11.1% (13)30.8% (36)49.6% (58)13.9 cm35.0% (41)17
v2 goal on (next to the Y, 이전)12.8% (15)36.8% (43)53.0% (62)13.4 cm53.8% (63)18
v2 goal off (next to the Y, 이전)1.7% (2)7.7% (9)13.7% (16)28.9 cm26.5% (31)17
CDF and success bars
Figure 1. (좌) 최종 물체 위치 → goal 이미지 속 위치의 xy 거리 CDF. 빨강(place_oc on)과 파랑(v2 on, on-the)은 겹치고, 주황·회색(goal off/wrong)은 44 cm에서 시작 지점(50 cm)과 비슷. (우) replace@5/10/15 cm와 구 NextTo.
goal on vs off (같은 프롬프트): 거리 Wilcoxon p=2.4e-12, replace@5 13:1 (p=1.8e-3), @10 26:4 (p=5.9e-5), NextTo 41:5 (p=4.4e-8). 틀린 goal도 off와 같은 수준(43.9 cm). → 언어에 참조 물체가 없으면 위치 정보는 goal뿐이고, 모델은 그것으로 v2와 같은 정밀도에 도달한다.
place_oc vs v2 (같은 on-the 프롬프트): 거리 p=0.71, replace@5 11:10, @10 15:20 (p=0.50) — 동급. NextTo만 51 vs 35% (p=0.005): 새 모델은 goal이 보여주는 "참조 물체 옆" 배치를 언어 없이 더 잘 재현. v2 on-the vs next-to: replace 차이 없음(p ≥ 0.36), NextTo 35 vs 54%. "next to Y" 힌트 값어치 ≈ @10cm +10%p (11:23, p=0.058).

3 open-loop val (복원 프롬프트, 39,040 프레임)

ckptonoffwronggoal 이득
place_oc@10k (on the)0.05730.09580.1525−40.2%
place_oc@5k0.05970.10080.1692−40.8%
v2@10k (next to)0.06190.08710.1520−28.9%

goal-off가 v2보다 나쁜 것(0.0958 vs 0.0871)은 언어가 참조 물체를 안 주기 때문이며 의도된 방향. goal-on은 최저치.

4 Open / Close HardBench 200편 (goal 없음, 언어만)

물체Open place_ocOpen 기준선 part1@15k (zero-shot, 같은 200편)증강 open 편수Close place_oc (200편)Close 같은 50편: part1@15k → place_oc
chestofdrawers11/44 = 25.0%3/44 = 6.8%7,477 (99.5%)18/48 = 37.5%6 → 5 / 14
refrigerator5/44 = 11.4%3/44 = 6.8%432/48 = 66.7%4 → 5 / 11
desk3/44 = 6.8%3/44 = 6.8%3117/48 = 35.4%6 → 6 / 13
stand3/44 = 6.8%4/44 = 9.1%423/49 = 46.9%8 → 6 / 12
microwaveoven0/240/2401/7—
전체22/200 = 11.0%13/200 = 6.5%91/200 = 45.5%24 → 22 / 50 (p=0.80)
Open: 학습한 물체(chestofdrawers)에서만 6.8 → 25.0% (Fisher p=0.039), 전체 6.5 → 11.0% (p=0.16). Close: 무변화 — zero-shot으로 이미 45–58%(밀어 닫기는 원래 함). 증강 데이터가 서랍장 99%라 힌지 문(냉장고·전자레인지)로 일반화되지 않음. 벤치 전체를 올리려면 물체 다양성이 필요.

5 영상 (hand-off 시점부터, 프롬프트 "Place the X on the {받침면}.")

행: place_oc goal ON / goal OFF / WRONG goal / v2 goal ON(같은 on-the 프롬프트). 열: 모델이 받은 goal 이미지 | exo | wrist. 노란 테두리 = hand-off 첫 8 프레임.

house_104 — "Place the red vase on the dining table."

place_oc goal ON 2.2 cm(replace 성공). goal OFF 38 cm — 언어가 받침면만 말하니 아무 데나 놓음. v2(on-the)도 3.7 cm.
place_oc goal ON (on-the prompt): REPLACE OK (2.2 cm from goal) · place_oc goal OFF: FAIL: 38 cm from goal · place_oc WRONG goal: REPLACE OK (3.0 cm from goal) · v2 goal ON (on-the prompt, OOD): REPLACE OK (3.7 cm from goal)

house_432 — "Place the remote control on the dresser."

place_oc 1.0 cm. goal OFF 37 cm. v2(on-the) 3.7 cm — 두 모델 모두 goal만으로 자리를 찾음.
place_oc goal ON (on-the prompt): REPLACE OK (1.0 cm from goal) · place_oc goal OFF: FAIL: 37 cm from goal · place_oc WRONG goal: FAIL: 46 cm from goal · v2 goal ON (on-the prompt, OOD): REPLACE OK (3.7 cm from goal)

house_257 — "Place the transparent glass salt shaker on the countertop."

place_oc 4.8 cm(경계). goal OFF 90 cm(다른 곳). v2(on-the) 5.3 cm 근접.
place_oc goal ON (on-the prompt): REPLACE OK (4.8 cm from goal) · place_oc goal OFF: FAIL: 90 cm from goal · place_oc WRONG goal: FAIL: 85 cm from goal · v2 goal ON (on-the prompt, OOD): near miss (5 cm from goal) | NextTo OK

house_116 — "Place the fork on the countertop."

place_oc 5.0 cm 근접 실패(경계 바로 밖). goal OFF 33 cm. v2 11.3 cm.
place_oc goal ON (on-the prompt): near miss (5 cm from goal) | NextTo OK · place_oc goal OFF: FAIL: 33 cm from goal · place_oc WRONG goal: FAIL: 29 cm from goal · v2 goal ON (on-the prompt, OOD): near miss (11 cm from goal)

house_562 — "Place the small irregular brown potato on the countertop."

반례: place_oc 20 cm 실패, v2(on-the)는 3.0 cm 성공. 같은 goal·같은 프롬프트에서 모델 차이/샘플링 분산.
place_oc goal ON (on-the prompt): FAIL: 20 cm from goal | NextTo OK · place_oc goal OFF: FAIL: 74 cm from goal · place_oc WRONG goal: FAIL: 75 cm from goal · v2 goal ON (on-the prompt, OOD): REPLACE OK (3.0 cm from goal)

6 Takeaway / Next

의미

참조 물체를 말하지 않는 지시("받침면 위에 놓아라")에서 goal 이미지만으로 replace@5cm 12%, 중앙값 15 cm — 이전 v2와 같은 정밀도이고, goal이 없으면 44 cm로 맹목이다. 이전 표의 goal-off 29 cm는 언어가 절반을 해 준 값이었고, 이제 goal 기여를 순수하게 잰 수치를 확보했다.

open/close 데이터를 얹어도 place는 손실이 없었지만, open은 학습 물체에서만 오르고 close는 천장 효과. 새 스킬의 일반화는 데이터의 물체 다양성에 달렸다.

다음

(1) replace 정밀도: 마지막 5–15 cm(@5 12% vs @15 44%) — goal 존재 비율↑, 정밀 배치 데이터 가중, goal 프레임 팔 가림 제거. (2) 배포 조건 강건성: goal 시점·base 교란(산만 물체 교란은 완만한 감소 확인). (3) open/close: 냉장고·전자레인지 등 힌지 물체 데이터 추가 후 재학습.

ckpt : ~/ckpts/molmobot_pi05_runs/pi05_mlspaces_finetune/pi05_mlspaces_place_oc_goal_v2/10000 결과 : handoff_eval/results/placeoc_{on,off,wrong}_step10000.json · placegoalv2_on_onsupport_step10000.json · place_val/placeoc_{on,off,wrong}.json rollout_eval/FrankaOpenHardBench/step10000/…/20260904_182716 · FrankaCloseFixedBench/step10000/…/20260904_194358 잡 : 학습 109319 · hand-off 109735–109738 · val 109739–109741 · Open 109742 · Close 109743 로그 : claude/260904/analysis-place_oc_goal_results.md · analysis-place_prompt_restore.md · research-molmo_augment_open_close.md