Index
2026-10-13 · Experiment

AssembleBench: B200 구동과 expert sweep

RoboTTA | In-context self-improvement for large WAMs | hud-evals/assemble-bench, Isaac Sim 6 + Isaac Lab Arena

TL;DR

14 / 14
B200에서 실행된 과제
9
expert 23/32 이상 과제
5
expert 5/32 이하 과제
약 335
원형 peg 안착 step

1 배경 / 목적

연구 목표는 Long-WAM이 자기 시도 영상 히스토리만으로 접촉 과제의 조건부 성공률을 올리는지 보는 것이다. FurnitureBench one_leg 삽입에서는 pi0.5 실패가 초기 배치에 묶여 있지 않아(카이제곱 p 약 0.19) 히스토리로 기억할 인스턴스 고유 정보가 부족했다. AssembleBench는 peg, 기어, 너트 삽입 14개 과제와 privileged scripted expert를 제공하므로, 두 번째 테스트베드이자 데이터 엔진 후보로 B200에서 도는지와 expert가 얼마나 넣는지를 확인했다.

2 작업 내용

B200에서 띄우기

  • NGC isaac-sim:6.0.0-dev2를 --container=로 주면 pod가 바로 죽는다(190847, 70분간 CONFIGURING). 이미지 기본 사용자가 uid 1234이고 entrypoint가 고정인 것이 원인으로 추정된다(pod 로그는 못 봤다).
  • 우회: 로그인 DinD에서 docker create + docker cp로 /isaac-sim을 NAS(assemble-bench/.isaac-sim-6.0.0-dev2, VERSION 6.0.0-rc.22, python 3.12)로 복사. 워커는 nvcr.io/nvidia/isaac-lab:2.2.0 컨테이너로 띄우고 NAS의 python.sh를 쓴다.
  • 설치(scripts/assemblebench/install.sh, 로그인에서 1회): 공식 Dockerfile 순서대로 Kit site-packages에 Isaac Lab, Arena, assemble_bench, hud를 넣었다. user-site 설치는 Kit 내장 websockets 12에 가려져 websockets.asyncio import가 실패했다(191195).
  • Arena 기본 출력 경로 /eval/output은 워커에 없어 --output_base_dir로 프로젝트 경로를 줬다(191220 실패 후 수정).

실행한 것

스크립트내용job
smoke.shzero-action 1 에피소드 + expert 4 env191249
expert_sweep.sh14개 과제, 16 env x 2 wave, 카메라 끔191255, 191332
expert_sweep.sh (CAMERAS=1)사각 peg 8 / 16 mm, 8 env x 2 wave, 카메라 켬191354
record_expert.sh + make_expert_video.py과제별 expert 4 env, env 0의 front/wrist를 2 step마다 저장해 mp4로 인코딩191686~191690
sbm "bash scripts/assemblebench/expert_sweep.sh" --gres=gpu:1 -c 8 --mem 200GB --qos=extra --time 3:00:00 -J ab_expert --container=nvcr.io/nvidia/isaac-lab:2.2.0

3 결과

expert 안착률 (16 env x 2 wave, 카메라 끔)

과제군과제wave 0wave 1합계 / 32
원형 peg4 mm161531
8 mm141226
12 mm121224
16 mm161430
사각 peg4 mm022
8 mm000
12 mm011
16 mm011
기어small161632
medium141428
large131023
너트M8235
M12151631
M16161632

사각 peg를 카메라를 켠 기본 조건으로 다시 돌려도(191354) 8 mm 0/16, 16 mm 0/16이었다.

expert 영상: 잘 되는 과제

왼쪽이 front 카메라, 오른쪽이 wrist 카메라(각 640x360). env 0만 찍었고 2 step마다 한 프레임, 15 fps 재생이다. 마지막 몇 프레임은 에피소드 종료 후 자동 리셋된 장면이다.

peg_round_8mm (191686). 이 실행은 4 env 중 4개 안착, 335 step에 종료.
gear_medium (191687). 4 env 중 4개 안착, 337 step에 종료.
nut_M16 (191688). 4 env 중 3개 안착, 1개는 thread_1 단계에서 실패. 360 step에 종료.

expert 영상: 못 넣는 과제

peg_square_8mm (191689). 4 env 모두 실패. peg를 구멍 위로 옮긴 뒤 align 단계에서 599 step 시간 초과까지 머문다. 로그상 peg z 약 25 mm에 멈춰 있다.
nut_M8 (191690). 4 env 모두 thread_2 단계에서 실패, 416 step에 종료.
사각 peg는 peg.py 주석상 여유가 약 0.1 mm이고 yaw가 약 1.5° 넘게 틀어지면 걸리며, 구멍 yaw가 에피소드마다 흔들린다. 이 환경에서 expert가 거의 못 넣는 원인은 아직 확인하지 못했다. 저자 쪽 수치와 직접 비교하지 않았으므로 환경 차이인지 expert 자체의 한계인지도 모른다.

렌더

README는 A100/H100에서 렌더가 안 된다고 적었지만 B200에서는 tiled camera가 정상으로 나왔다. zero-action 1 에피소드는 122초 걸렸다(191249, 초기 로딩 포함).

job 191249, peg_round_8mm expert, step 300의 front / wrist 카메라.

4 Takeaway

원형 peg, 기어, nut_M12, nut_M16은 expert가 72~100% 넣는다. 이 9개 과제는 시연 데이터 생성과 "정답 시도" 생성에 바로 쓸 수 있다.
사각 peg 4개와 nut_M8은 expert가 16% 이하다. 데이터 엔진으로 쓰려면 expert부터 고쳐야 한다.
사각 peg는 구멍 yaw라는 숨은 변수가 과제에 원래 들어 있어서, 히스토리로 인스턴스 고유 정보를 기억해야 하는 과제 후보로는 가장 자연스럽다. 다만 지금은 expert가 못 풀기 때문에 당장 쓸 수 있는 건 원형 peg에 숨은 오프셋을 넣는 쪽이다. 이건 내 판단이고 아직 실험으로 확인한 건 아니다.

5 Next Steps