Index
2026-05-13 — Experiment

Cosmos Policy — RoboCasa 추론 smoke test

cosmos-policy | nvidia/Cosmos-Policy-RoboCasa-Predict2-2B on B200 (venv-only, no docker)

TL;DR

98.0%
Mean SR (3 seed)
147/150
Total trials
232.7
Avg ep len
~29 min
per sbatch (50)

1 배경 / 목적

NVIDIA Cosmos Policy OSS 레포가 막 풀려서, 우리 클러스터(B200, k8sl Slurm)에서 그대로 동작하는지 검증할 필요. README의 Quick Start는 Docker 기반인데 우리 worker 노드는 docker 미지원 → venv-only 경로로 실행 가능한지가 핵심 질문.

제약: worker는 ubuntu:22.04 최소 이미지, login도 docker는 DinD sidecar(GPU 없음). 모든 학습/추론은 NAS 상의 venv를 활성화하는 방식으로 풀어야 함.

2 작업 내용

2.1 환경 셋업

uv sync --extra cu128 --group robocasa --python 3.10 git clone https://github.com/moojink/robocasa-cosmos-policy.git uv pip install -e robocasa-cosmos-policy

torch 2.7.0+cu128, transformer-engine 2.2+cu128, mujoco 3.2.6, robocasa 0.2.0.

2.2 opencv-python 충돌 해결

첫 실행에서 ImportError: libGL.so.1: cannot open shared object file. 원인은 pyproject.toml + robocasa-cosmos-policy/setup.py가 모두 opencv-python을 선언해서 GUI 빌드가 headless보다 우선 적재되었기 때문.

uv pip uninstall opencv-python uv pip install --force-reinstall opencv-python-headless # 호출은 `uv run` 대신 `.venv/bin/python` 직접 # (uv run이 sync 시 opencv-python 재설치하므로)

2.3 mujoco EGL 렌더링 해결

두 번째 실행에서 AttributeError: 'NoneType' object has no attribute 'eglQueryString'. 시스템에 libEGL_nvidia.so.0만 있고 libglvnd 로더(libEGL.so.1)가 없어 PyOpenGL.EGL이 ctypes dlopen 실패.

mkdir -p tmp/egl_libs # 다른 conda env에서 libglvnd 셋 symlink ln -sf ~/conda_envs/envs/gr00t-idm/lib/libEGL.so.1 tmp/egl_libs/ ln -sf ~/conda_envs/envs/gr00t-idm/lib/libGL.so.1 tmp/egl_libs/ ln -sf ~/conda_envs/envs/gr00t-idm/lib/libGLX.so.0 tmp/egl_libs/ ln -sf ~/conda_envs/envs/gr00t-idm/lib/libGLdispatch.so.0 tmp/egl_libs/ # (versioned siblings .1.1.0, .1.7.0, .0.0.0 도 동일하게) export LD_LIBRARY_PATH=$(pwd)/tmp/egl_libs:$LD_LIBRARY_PATH export MUJOCO_GL=egl export PYOPENGL_PLATFORM=egl

2.4 RoboCasa kitchen assets

download_kitchen_assets.py로 textures / fixtures / objaverse / generative_textures 4종(~5GB) 다운/압축해제. aigen_objs는 스크립트가 의도적으로 skip.

2.5 Smoke test 실행

CUDA_VISIBLE_DEVICES=0 timeout 5400 .venv/bin/python \ -m cosmos_policy.experiments.robot.robocasa.run_robocasa_eval \ --config cosmos_predict2_2b_480p_robocasa_50_demos_per_task__inference \ --ckpt_path nvidia/Cosmos-Policy-RoboCasa-Predict2-2B \ --task_name TurnOffMicrowave --num_trials_per_task 5 \ --seed 195 --randomize_seed False --deterministic True \ --chunk_size 32 --num_open_loop_steps 16 \ --num_denoising_steps_action 5 \ --num_denoising_steps_future_state 1 --num_denoising_steps_value 1 \ ... (전체 플래그는 ROBOCASA.md L52-82와 동일)

HF 캐시(/home/nas_main/.cache/huggingface/)에 다른 사용자가 이미 체크포인트를 받아둬서 추가 다운로드 없이 즉시 로드됨.

3 결과

EpisodeSuccessLength (steps)Note
0311press_the_stop_button_on_the_microwave
1278
2277최단
3357
4358최장
Avg5/5 (100%)316.2seed=195, deterministic
핵심: pretrained checkpoint 그대로 100% SR. 환경 재현 자체가 핵심 작업이었고, 모델 성능 자체는 README 주장과 일치.
남은 경고 (영향 없음): T5 임베딩 캐시 락파일 권한 오류 — 다른 사용자가 점유. 임베딩은 on-demand 계산으로 fallback되어 결과에 영향 없음.

아티팩트

4 Takeaway

의미

Cosmos Policy OSS 레포가 우리 B200 + venv-only 환경에서 그대로 동작한다. Docker 의존성 없이 sbm 워커로 fan-out 가능. 환경 픽스 두 개(opencv-python headless 강제, libglvnd LD_LIBRARY_PATH 주입)는 worker에서도 그대로 필요하지만, tmp/egl_libs/가 NAS 상에 있어 자동으로 보일 것이 거의 확실.

5 업데이트 — Worker 검증 + Full Eval

5.1 Worker 추가 픽스 (libX11 deps)

Worker(ubuntu:22.04) 첫 sbm 시도(job 2422)에서 mujoco import가 AttributeError: 'NoneType' object has no attribute 'glGetError'로 죽음. 진단 스크립트(scripts/diag_gl.sh, job 2423) ldd libGL.so.1 결과:

libX11.so.6 => not found

Worker 기본 이미지가 X11 라이브러리 부재. 해결: ~/conda_envs/envs/gr00t-idm/lib/libX*, libxcb*, libxshmfence* 113개 파일을 tmp/egl_libs/에 symlink. 재진단(job 2424): mujoco 3.2.6 ok. Worker smoke (5 trials, job 2425): 5/5 100%, avg 316.2, 5:31 elapsed — login과 정확히 동일.

5.2 Full eval — TurnOffMicrowave × 3 seeds × 50 trials

스크립트가 SEED/TRIALS/NOTE env로 파라미터화되어 있어 3 sbm fan-out:

for SEED in 195 196 197; do sbm "SEED=$SEED TRIALS=50 NOTE=full50_seed${SEED} bash scripts/eval_robocasa_smoke.sh" \ --gres=gpu:1 -c 8 --mem 200GB --qos=extra -J cosmos_full_s$SEED done
SeedJobSuccessAvg lenElapsed
195242850/50 (100%)228.929:09
196242947/50 (94%)247.430:33
197243050/50 (100%)221.828:13
Mean98.0%232.7~30min (병렬)
3 seed 평균 98% — single task에서 paper의 RoboCasa 평균(~91%)을 상회. 24 task 전체로 가야 paper 평균과 직접 비교 가능. 5 trials → 50 trials 스케일링도 깨끗(~5.3배).

6 Next Steps

6.1 24-task sweep

같은 eval_robocasa_smoke.sh + TASK= env로 24개 task 모두 → 72 sbatch (24 × 3 seed). 각 ~30분, extra quota 내 동시 24+ fan-out 가능. RoboCasa task 리스트는 cosmos_policy/experiments/robot/robocasa/robocasa_utils.py 또는 paper Table 참조.

6.2 결과 집계 스크립트

72개 결과 텍스트(logs/ENV_EVAL-*--full50_seed*.txt)에서 success rate / avg length 파싱 → task별 평균 표 자동 생성. Paper Table과 1:1 비교용.

6.3 T5 cache 정리

본인 HF_HOME 분리하거나 락 권한 풀어 noise 제거.