Index
2026-09-10 — Experiment

Stamp_seal 저조 성능 원인 진단 — Instruction Wording Ablation

lingbot-va | RoboTwin 43-seen/7-unseen 트랙 A | job 115898

TL;DR

4.0%
원본 프롬프트
19.0%
재구성 프롬프트
+15.33p
vs paper(3.67%)
100
rollout 수

1 배경 / 목적

RoboTwin 43-seen/7-unseen zero-shot 일반화 실험(Zero-WAM split)에서 unseen-7 평가가 7/7 완료됐다 (260910-robotwin_unseen7_eval_final.html). 평균 delta는 +10.4p로 paper baseline(17.45%)을 상회했지만 태스크별 편차가 극심했다 — place_bread_basket +42.67p인 반면 move_stapler_pad는 -22.33p, stack_blocks_three는 0/100로 완전 실패.

그중 stamp_seal은 원본 프롬프트 기준 4/100(4.0%)로 paper baseline(3.67%)과 별 차이가 없는 수준이었다. 코드를 보면 이 태스크의 원래 instruction 표현은 "stamp Turquoise" 형태인데, 43-seen 학습에 포함된 거의 동일한 pick-and-place 동작 태스크(place_mouse_pad)는 "place it on the Turquoise mat" 형태로 문구 스타일이 다르다. 즉 물리적 동작(조작 자체)은 학습 분포 안에 있는데 언어 표현만 분포 밖일 가능성이 있어, 이를 분리 검증할 필요가 있었다.

기존 한계: unseen-7 델타(+10.4p / task별 -22.33p~+42.67p)를 전부 "cross-task 조작 일반화"로 해석하면, 실제로는 표면적인 language-conditioning wording 민감도에서 오는 편차를 조작 능력 격차로 잘못 귀속시킬 위험이 있었다.

2 작업 내용

동일 체크포인트로 프롬프트 워딩만 학습 분포 스타일로 바꿔 재평가하는 ablation을 구현했다.

1) evaluation/robotwin/eval_polict_client_openpi.py (L513-522, 기존 파일 수정) - LINGBOT_INSTRUCTION_TEMPLATE env var 지원 추가 - 설정 시 태스크 고유 instruction 대신 지정 템플릿을 {A}/{a}/{B} placeholder로 episode_info 치환해서 사용 (기존엔 항상 np.random.choice(원본 문구 pool)) 2) script/eval_robotwin_task.sh, script/eval_robotwin_seen43.sh (신규, uncommitted) - EVAL_TAG로 baseline 결과와 variant 결과를 같은 체크포인트 기준 분리 저장 - RUN_TAG="${TAG}${EVAL_TAG:+_$EVAL_TAG}" → eval/step32000_pnpprompt/ 처럼 별도 디렉토리 3) evaluation/robotwin/summarize_seen43.py (신규, uncommitted) - task별 succ/total, ours vs paper(Zero-WAM Table2) delta 요약 테이블 자동 생성 4) 실행 (job 115898, rt32k_stamp_pnp) sbatch --gres=gpu:1 -c 8 --mem 200GB --qos=extra --time 20:00:00 \ --container=nvcr.io/nvidia/isaac-lab:2.2.0 template.sh EVAL_TAG=pnpprompt \ LINGBOT_INSTRUCTION_TEMPLATE="Pick up {A} with {a} and place it on the {B} mat." \ bash script/eval_robotwin_seen43.sh 32000 100 0 stamp_seal (checkpoint: robotwin_seen43_train step32000, job 112772 학습 산출물)

참고: 동일 파라미터로 처음 제출한 job 115897은 시작 12초 만에 사용자가 직접 cancel(재현/설정 확인 목적으로 추정), 115898로 재제출해 정상 완료.

3 결과

RunInstructionSuccessRatevs paper(3.67%)
원본 (step32000/seed0)"stamp Turquoise" 스타일4/1004.0%+0.33p
재구성 (step32000_pnpprompt/seed0)"Pick up {A} with {a} and place it on the {B} mat."19/10019.0%+15.33p

job 115898 소요 시간: 5h03m47s (1 GPU, extra QOS, test_num=100, seed=0 단일). 결과는 eval_result/stamp_seal/LingBot_VA/demo_clean/step32000_pnpprompt/2026-09-10 02:18:49/_result.txt와 checkpoints/.../eval/step32000_pnpprompt/seed0/.../metrics/stamp_seal/res.json에 저장됨.

핵심 발견: 워딩만 바꿔 성공률이 4.0%→19.0%로 거의 5배 뛰었다. 즉 stamp_seal의 원래 낮은 점수 중 상당 부분은 조작 실패가 아니라 언어 조건화(instruction grounding)가 학습 분포 밖 문구를 만나 무너진 결과였다.
한계: 그래도 19.0%는 여전히 낮다 — 워딩 문제를 제거해도 잔여 81%는 실제 조작/시각 조건 자체의 zero-shot 실패로 남아있다는 뜻. seed 1개(0)만 사용해 분산도 미확인.

4 Takeaway

의미

RoboTwin 43-seen/7-unseen 실험의 task별 성공률 편차(-22.33p ~ +42.67p, 260910 카드)를 전부 "cross-task manipulation 일반화 실패/성공"으로 해석하는 것은 과대·과소평가로 이어질 수 있다는 게 확인됐다. 적어도 stamp_seal의 경우, 격차의 큰 부분이 언어 표현의 표면적 분포 이탈에서 왔다 — 순수 동작 일반화 능력은 원래 측정치(4.0%)보다 실제로 더 좋을 가능성이 높다.

이는 unseen-7 평균 delta(+10.4p)를 "LingBot-VA가 cross-task 조작을 이만큼 더 잘한다"는 단일 숫자로만 보고하기보다, 태스크별로 wording sensitivity를 분리해서 봐야 한다는 방법론적 시사점을 준다.

5 Next Steps

미해결 한계

seed 0 단일 rollout만 확인 — 분산 미확인. 재구성 문구도 1개뿐이라 특정 템플릿에 대한 과적합인지 일반적 워딩 스타일 개선인지 구분이 안 됨. 19.0%도 여전히 낮아 워딩 외 요인(카메라 각도, 오브젝트 재질 등)이 남아있을 가능성.

다음 실험

1) unseen-7 중 baseline보다 나빴던 move_stapler_pad(-22.33p)에도 동일 wording ablation 적용 — 워딩 문제인지 순수 동작 실패인지 구분.
2) stamp_seal에 대해 워딩 템플릿 2~3종 추가 스윕 + seed 3개(논문과 동일 프로토콜)로 평균·분산 확보.
3) 근본 해결책으로 43-seen 학습 데이터에 instruction paraphrase augmentation을 추가할지 결정 — 이번 결과가 긍정적이면 language-conditioning robustness 자체를 학습 단계에서 강화하는 방향이 유효.