CloseBlenderLid success_rate 1.0 (336 steps / horizon 600), 서버 dream video + 클라이언트 렌더 영상 + action tensor 저장까지 전 구간 정상acvlab/abot-m0.5는 존재하지 않는 repo — 실제는 acvlab/ABot-M0.5-RoboCasa365, (2) gated 상태라 라이선스 동의 필요, (3) 런처의 포트 검사가 bare python을 호출해 오진단 후 죽음get_task_horizon을 가진 robocasa 1.0.0은 기존 robocasa-main env 뿐 — 재사용해서 robocasa+robosuite+mujoco 세팅 반나절을 절약ABot-M0.5는 Wan2.2 video diffusion backbone 위에 latent action + dual-level MoT를 얹은 World Action Model로, 2026-07-21에 inference 코드/가중치/평가 스크립트가 공개됐다. 목표는 이걸 우리 B200 클러스터에서 돌려 RoboCasa365 수치(논문 46.6)를 직접 재현하고, FastWAM / X-WAM 등 우리 WAM 계열 연구의 비교 baseline으로 확보하는 것.
GETTING_STARTED.md를 그대로 따라가면 체크포인트 다운로드 단계에서부터 막힌다. 문서의 HF repo 이름이 실재하지 않고, 실제 repo는 gated이며, 문서가 "스크립트 상단 변수를 편집하라"고 하지만 실제 스크립트는 전부 env var 구동이라 파일을 건드릴 필요가 없다.abot_m05 신규 생성flash-attn은 의도적으로 생략. B200(sm_100)에서 flash-attn 2.8.3 prebuilt wheel의 아키텍처 지원이 불확실하고 소스 빌드는 수십 분이 든다. 모든 eval 스크립트 기본값이 ATTN_MODE=torch(SDPA)라 없어도 동작한다.
클라이언트는 robocasa.utils.dataset_registry_utils.get_task_horizon을 import하는데, 로컬 4개 robocasa 계열 env 중 이 함수를 가진 건 robocasa-main 하나뿐이었다.
| env | robocasa | editable source | 사용 |
|---|---|---|---|
| robocasa | 0.2.0 | repos/Robotics/robocasa | ✗ |
| robocasa-main | 1.0.0 | repos/Robotics/robocasa-365 | ✓ |
| robocasa_legacy | 0.1.0 | repos/legacy/robocasa_legacy | ✗ |
| pi05 | 0.2.0 | robot-data-gen/libs/robocasa | ✗ |
여기에 부족한 websockets, msgpack만 추가 설치. gym.make('robocasa/CloseFridge') reset이 정상 동작하는 걸 먼저 확인한 뒤 채택했다.
공용 토큰(mpark 계정)은 라이선스 미동의라 403. 개인 HF 토큰(Keh0t0)으로 gating 해제 후 다운로드.
scripts/eval_robocasa.sh경로(ckpt 2종, server/wrapper python, robocasa env root)를 박아둔 얇은 래퍼. SUITE=atomic_seen|composite_seen|composite_unseen으로 upstream 런처를 호출한다.
eval_atomic_seen.sh의 포트 검사 루틴이 bare python을 호출한다. conda base가 아닌 셸에서는 python: command not found → check_port_available이 무조건 실패 → ERROR: websocket port 29172 is already in use로 오진단하며 죽는다. 래퍼에서 PATH="${ABOT_ENV}/bin:${PATH}"를 export해 해결. SKIP_PORT_CHECK=1로도 우회되지만 그러면 진짜 포트 충돌까지 못 잡게 되므로 택하지 않았다.로그인 노드 1 GPU 스모크 테스트 (SUITE=atomic_seen NUM_EPISODES=1 BATCH_MAX=1):
| Task | success_rate | steps | wall | Notes |
|---|---|---|---|---|
| CloseBlenderLid | 1.0 | 336 / 600 | 184.1s | horizon 내 성공 |
| OpenCabinet | 0.0 | 700 | 297.7s | horizon 초과 (1 ep 샘플이라 무의미) |
robocasa_eval.json + pred_video.mp4(서버 dream) + ep000_success.mp4(클라 렌더) + actions_*.pt 저장. obs schema도 config 기대값과 정확히 일치 (3-cam + gripper_qpos(2) / base_position(3) / base_rotation(4) / ee_position_relative(3) / ee_rotation_relative(4)).MAX_STEPS 환경변수는 실제 episode horizon을 결정하지 못한다. target_*_task_horizons.json(태스크별 300~600) × HORIZON_MULTIPLIER가 이긴다. 스모크에서 MAX_STEPS=30을 줬는데 실제로는 600 horizon으로 돌았다 — 짧은 테스트를 의도한다면 HORIZON_MULTIPLIER를 써야 한다.ABot-M0.5 RoboCasa365 inference가 우리 클러스터에서 재현 가능한 상태가 됐다. 이제 publish된 SOTA 수치(RoboCasa365 46.6)와 직접 비교할 baseline을 뽑을 수 있다.
얻은 교훈 두 가지. (1) 갓 릴리즈된 repo의 문서는 실제 아티팩트와 어긋나 있다고 가정하고 HF API로 repo 실체부터 확인하는 게 빠르다 — 여기서도 문서상 repo명·파일 구성·편집 지시가 모두 실제와 달랐다. (2) 시뮬레이터 env는 새로 파는 것보다 기존 것 중 API 시그니처가 맞는 걸 찾는 쪽이 압도적으로 싸다. get_task_horizon 하나로 4개 후보를 1분 만에 걸러냈다.
· LIBERO 평가 불가 — M0.5 post-train ckpt가 HF 미공개. RoboCasa365만 올라와 있다.
· flash-attn 미설치 — sm_100 빌드 안 함. 현재 SDPA만으로 태스크당 184~298s인데, 이 값이 전체 eval 비용을 좌우하므로 빌드 후 비교가 필요하다.
· composite 스위트 미검증 — horizon json이 별도라 atomic과 동일하게 동작할지 확인 안 됨.
atomic seen 18 task × 50 ep 전체 평가를 4 GPU로 제출해 논문 수치(46.6) 재현 검증:
가설: 태스크당 ~200s × 18 task × 50 ep / 4 GPU ≈ 12~13시간. --time은 16시간 정도로 잡는 게 안전하다.