← 목록으로
2026-06-11 · EXPERIMENT

X-WAM RoboCasa 평가 재현

Wan2.2-TI2V-5B 기반 4D World-Action Model · code release 평가 파이프라인 구성 및 풀 평가

TL;DR

75.8%
Overall SR
910/1200
성공/전체
79.2%
논문 SR
−3.4%p
차이
45분
8 GPU 소요
24×50
tasks×rollouts

1배경/목적

X-WAM(통합 4D World-Action Model, Wan2.2-TI2V-5B 비주얼 prior 기반) code release를 받아 RoboCasa 24 kitchen 태스크 평가를 재현하는 것이 목표. 레포는 코드만 있고 체크포인트·데이터셋·서브모듈·전용 env가 전무했음(checkpoints/·datasets/ 없음, 서브모듈 0 entries).

평가는 broker–server–client 아키텍처: policy_server(GPU, 모델 추론) ← policy_broker(CPU 디스패치, 요청 deque 버퍼링) ← client(robocasa sim). 셋이 zmq로만 통신해 서로 다른 conda env로 둘 수 있는 점이 환경 구성을 단순화함.

2작업 내용 (구성 + 함정 해결)

환경

server env xwam 신규: python 3.10 + torch 2.8.0+cu129 + requirements + pyzmq(requirements 누락분). flash-attn 빌드 실패했으나 modules/attention.py가 SDPA 자동 폴백이라 무방.
client env는 robocasa(0.2.0) 재활용: robocasa-main(1.0.0)은 태스크명이 신네이밍이라 PnPCounterToCab not found로 실패 → 구 PnP* 태스크명을 가진 robocasa 0.2.0으로 교체, zmq/tyro만 추가.

함정 ① HF 다운로드 stallhf downloadhf_xet 백엔드 때문에 futex 교착(바이트 진행 0). HF_HUB_DISABLE_XET=1로 HTTP range 다운로드 전환 → 즉시 해결. 손상된 partial(xet↔http resume 불일치로 비대)은 삭제 후 fresh 재다운로드.
함정 ② robocasa 버전 불일치 — X-WAM은 구 태스크명(PnPCounterToCab) 기대, robocasa 1.0.0은 신네이밍(PickPlaceCounterToCabinet). robocasa 0.2.0 env로 정합.
함정 ③ worker 컴파일러 부재 — 첫 제출(14562)이 worker(ubuntu:22.04, gcc 없음)에서 server의 torch.compileInductorError: Failed to find C compiler로 8개 server 전부 크래시. TORCHDYNAMO_DISABLE=1(compile no-op, eager 0.35s/call)로 해결.

제출

sbm "bash scripts/eval_robocasa.sh" \ --qos=own --gres=gpu:8 -c 112 --mem 1600GB --time 08:00:00 -J xwam_robocasa_eval # 단일 pod: broker 1 + server 8(GPU당 1) + client 24(태스크당 1) # server=xwam env, client=robocasa env (절대경로 python) # denoise_steps=50, action_denoise_steps=10, 50 rollouts/task

사용자가 core 그룹이라 own(8 GPU non-preemptible) 사용 — resume 없는 평가라 preempt 방지가 중요했음.

3결과 — 태스크별 Success Rate

로그인 1-GPU 스모크 테스트 통과(PnPCounterToCab SR 1.0) 후 풀 평가(Job 14566, COMPLETED 45:29). Overall 75.8% (910/1200).

태스크SR성공/전체태스크SR성공/전체
CloseDrawer100.0%50/50PnPCounterToSink80.0%40/50
CloseSingleDoor98.0%49/50PnPStoveToCounter80.0%40/50
CoffeePressButton96.0%48/50CoffeeServeMug78.0%39/50
TurnOffMicrowave96.0%48/50TurnOnStove78.0%39/50
TurnOnSinkFaucet96.0%48/50OpenSingleDoor70.0%35/50
TurnOnMicrowave94.0%47/50PnPCabToCounter68.0%34/50
OpenDoubleDoor92.0%46/50PnPSinkToCounter62.0%31/50
PnPCounterToStove90.0%45/50PnPCounterToCab56.0%28/50
TurnSinkSpout88.0%44/50PnPCounterToMicrowave50.0%25/50
TurnOffSinkFaucet86.0%43/50PnPMicrowaveToCounter50.0%25/50
CloseDoubleDoor82.0%41/50TurnOffStove36.0%18/50
OpenDrawer82.0%41/50CoffeeSetupMug12.0%6/50

4Takeaway

재현 성공. door/drawer/sink/button/microwave 조작류는 거의 만점(92~100%). 논문과의 −3.4%p 차이는 (1) robocasa 0.2.0 ↔ 서브모듈 핀(756598a) 미세차, (2) SDPA vs flash-attn, (3) eval config 미세차 등 체계적 요인.
100-rollout 재실행 검증(Job 14842, 1:28). Overall 75.3% (1808/2400) — 50-roll 75.8%와 −0.5%p로 수렴. 75% 중반이 우리 환경의 참값이고, 논문과의 ~4%p 갭은 sampling noise가 아니라 실재함을 확인. 개별 태스크는 ±0~16%p로 noisy(특히 PnP 계열), overall은 안정적.
분석. 평균을 끌어내리는 건 PnP(pick-and-place) 계열과 CoffeeSetupMug(12%). PnP는 grasp+이동+배치의 다단계 정밀 조작이라 본질적으로 어렵고, CoffeeSetupMug(12%)는 단일 outlier로 overall을 ~0.5%p 깎음. 조작 난이도 위계(단순 토글 > door/drawer > PnP)가 SR에 그대로 반영됨.

5Next

• PnP·CoffeeSetupMug 저조 원인을 rollout 비디오(eval_results/robocasa_14566/<task>/*.mp4)에서 분석 — grasp 실패 vs 배치 실패 구분.
• 더 엄밀한 논문 대조 시 EVALS=100으로 재실행(own 8 GPU ~1.5h 예상).
• throughput 필요 시 system CUDA로 flash-attn 재빌드, 혹은 NGC 이미지 --container.
• RoboTwin 2.0 평가는 별도 sim 설치 필요(미착수).