Index
2026-08-26 — Analysis

RoboTwin 2.0 평가 관문 — worker Vulkan/SAPIEN 렌더 가능 여부 분석

tau-0-wm | RoboTwin 2.0 트랙 착수 전 인프라 확인

TL;DR

3/3
isaac-lab 렌더 테스트 통과
2/2
기본환경 렌더 실패
240×320×4
Rasterizer 출력 shape

1 배경 / 목적

τ₀-VAM을 RoboTwin 2.0(dual-arm, head+wrist 캠 = τ₀ pretrain 토폴로지)에서 학습·평가하려면 SAPIEN 3(Vulkan 렌더)이 headless worker pod에서 동작해야 한다. X-WAM 팀도 이 클러스터에서 RoboTwin 평가를 해본 적이 없어("RoboTwin 평가 미착수 — 별도 sim 설치 필요") 데이터·코드 투자 전에 렌더 관문부터 먼저 확인하기로 사용자가 결정했다.

리스크: 이 확인 없이 데이터(465 GB)·데이터셋 클래스·브릿지를 먼저 만들었다가 렌더가 불가능하면 전체 트랙이 무산될 수 있는 구조라, 최소 비용으로 관문부터 검증.

2 작업 내용

클라이언트 env 구축 — tmp/build_robotwin_env.sh

python 3.10, torch 2.8.0+cu129 (RoboTwin의 torch 2.4.1 핀은 X-WAM README대로 무시 — B200 sm_100 CuRobo 빌드를 위해), sapien 3.0.0b1, mplib 0.2.1, CuRobo v0.7.8 + pytorch3d CUDA 소스 빌드 (로그인, nvcc 12.8, TORCH_CUDA_ARCH_LIST=10.0) numpy 1.23.5 고정 (opencv가 2.x로 올린 것 되돌림) conda-forge libgl/libglvnd/libvulkan-loader 추가, RoboTwin _install.sh의 sapien/mplib sed 패치 적용

게이트 스크립트 — scripts/robotwin_render_test.sh

ICD/드라이버 lib 점검 → vulkaninfo → RoboTwin script/test_render.py (rt shader + OIDN) → rasterizer 오프스크린 렌더, 3개 환경에서 순차 실행: 로그인 pod, worker 기본 ubuntu:22.04, worker nvcr.io/nvidia/isaac-lab:2.2.0.

진단 경로

NVIDIA ICD(libGLX_nvidia.so.0)는 dlopen·심볼 존재까지는 확인되나 vkCreateInstance를 반환하지 않음. LD_DEBUG 추적에서 libnvidia-glcore__malloc_hook/__free_hook/ErrorF 미해결(glibc 2.34+에서 제거된 심볼)을 확인 → shim(tmp/vkshim/libnvhooks_shim.so) preload로 그 오류는 제거됐지만 초기화는 여전히 실패 → 기본 이미지의 Vulkan 유저스페이스 불완전이 근본 원인으로 판단. isaac-lab 이미지는 사용자의 cosmos/RoboLab job이 실제 Isaac Sim 렌더에 쓰던 것(클러스터 캐시)이라 이를 시험 → 통과.

3 결과

환경vulkaninfoSAPIEN rtrasterizerJob
로그인 pod (ubuntu 22.04 + conda glvnd)Found no driversRender Errorfailed to find a rendering device-
worker 기본 ubuntu:22.04Found no driversRender Error실패95630
worker nvcr.io/nvidia/isaac-lab:2.2.0NVIDIA B200, driver 580.95.5Render WellOK (240×320×4)95631
핵심 발견: GPU 자체는 B200 bare-metal(Virtualization None)로 하드웨어 제약이 아니며, isaac-lab 컨테이너로 감싸면 즉시 해결됨 — 별도 드라이버 패치나 관리자 개입 불필요.
실패: 기본 이미지·로그인 환경은 사용자 권한 범위(shim preload 등)에서 시도 가능한 방법으로는 복구 불가 — Vulkan 유저스페이스 자체가 불완전한 구조적 문제.

4 Takeaway

의미

RoboTwin 평가 클라이언트는 --container=nvcr.io/nvidia/isaac-lab:2.2.0로 실행하면 되는 것으로 확정 (τ₀ 서버는 기본 이미지 그대로, zmq 경계로 분리해 서버·클라이언트 컨테이너를 다르게 가져갈 수 있음을 확인). 클러스터에서 Vulkan 기반 시뮬레이터(SAPIEN/ManiSkill/RoboTwin)를 쓰는 모든 작업에 재사용 가능한 일반 레시피 — 로그인 노드에서는 SAPIEN 렌더가 불가능하므로 sim 관련 스모크는 항상 sbatch 컨테이너 경유로 해야 한다는 것도 확정됐다.

5 Next Steps

미해결 한계

기본 이미지가 왜 Vulkan 유저스페이스를 완전히 지원하지 않는지 근본 원인(드라이버 패키징 vs 클러스터 이미지 구성)은 규명하지 않고 컨테이너 우회로 해결 — 다른 Vulkan 워크로드에서도 매번 isaac-lab류 이미지가 필요한지, 더 가벼운 대안(예: 순수 Vulkan runtime만 포함한 경량 이미지)이 가능한지는 미조사.

완료된 후속 작업

이 관문 확인을 바탕으로 데이터 다운로드·데이터셋 클래스·브릿지·평가 스크립트 구축이 이미 진행돼 E2E 스모크(job 95671)까지 통과했고 본 학습(job 95687)이 진행 중이다 — 상세는 260826-robotwin_pipeline.html 참조.