Index
2026-09-07 — Research

Zero-WAM 43/7 split 조사 — RoboTwin 2.0 cross-task 일반화 실험 설계

lingbot-va | 50 task 중 43개 학습 / 7개 hold-out, clean 50만 사용

TL;DR

43 / 7
seen / unseen
17.45%
LingBot-VA 앵커
46.95%
Zero-WAM
2,150
학습 샘플
~30 GB
데이터(43 task)
2,100
평가 rollout

1 배경 / 목적

새 프로젝트: RoboTwin 2.0의 50 task 중 43개만 학습하고 7개는 완전히 제외해서 zero-shot cross-task 일반화를 측정한다. 프로토콜은 Zero-WAM 논문을 그대로 따른다.

Zero-WAM은 LingBot-VA를 baseline으로 쓰고 있다. 즉 같은 split으로 LingBot-VA를 post-train 하면 논문 수치와 직접 대조 가능한 앵커가 생긴다.

Zero-WAM 코드·데이터는 아직 미공개 — GitHub README 기준 release 예정 2026-09-15. 따라서 split·프로토콜은 논문 본문에서 재구성했고, 43개 목록은 논문에 없어 50 − 7로 역산했다.

2 조사 방법

로컬 레포 우선 탐색(~/repos/Robotics/{lingbot-va, RoboTwin, dreamzero, X-WAM, …}) → Zero-WAM이 로컬에 없음을 확인한 뒤 arXiv 본문 / GitHub / 프로젝트 페이지 원문 조회. HF 자산은 README 주장 대신 huggingface.co/api/<repo>/tree/… 엔드포인트로 실제 파일 목록과 바이트 크기를 직접 열람해 확인했다.

Zero-WAM: In-Context World-Action Modeling from Human Videos for Open-Ended Task Generalization arXiv 2608.26103 (Robbyant — LingBot-VA와 같은 조직) GitHub robbyant-research/Zero-WAM → code/data expected before 2026-09-15 Page robbyant-research.github.io/Zero-WAM/

3 결과

3.1 Hold-out 7 task (논문 명시 → RoboTwin task 이름 매핑)

논문 표기RoboTwin task namedemo_cleanHF clean_50
Place object on scaleplace_object_scale✅✅
Stamp sealstamp_seal✅✅
Open microwaveopen_microwave✅✅
Move stapler to padmove_stapler_pad✅✅
Place bread in basketplace_bread_basket✅✅
Place empty cupplace_empty_cup✅✅
Stack blocks threestack_blocks_three✅✅
매핑 실패 0건. 7개 전부 로컬 RoboTwin/data/demo_clean/(50 task × 50 ep)과 HF lerobot_robotwin_eef_clean_50(50 task)에 이름 그대로 존재한다.

3.2 학습용 43 task (= 50 − 7, 역산)

adjust_bottle beat_block_hammer blocks_ranking_rgb blocks_ranking_size click_alarmclock click_bell dump_bin_bigbin grab_roller handover_block handover_mic hanging_mug lift_pot move_can_pot move_pillbottle_pad move_playingcard_away open_laptop pick_diverse_bottles pick_dual_bottles place_a2b_left place_a2b_right place_bread_skillet place_burger_fries place_can_basket place_cans_plasticbox place_container_plate place_dual_shoes place_fan place_mouse_pad place_object_basket place_object_stand place_phone_stand place_shoe press_stapler put_bottles_dustbin put_object_cabinet rotate_qrcode scan_object shake_bottle shake_bottle_horizontally stack_blocks_two stack_bowls_three stack_bowls_two turn_switch

3.3 논문 Table 2 — 7 unseen task success rate (%)

TaskWAN-ActionLingBot-VAZero-WAM
Place object on scale3.00±2.166.17±4.8724.67±2.05
Stamp seal7.33±1.253.67±2.4947.00±4.55
Open microwave2.26±1.6029.33±10.6659.00±2.83
Move stapler to pad10.67±1.7023.33±8.2269.14±2.93
Place bread in basket15.26±2.5517.33±6.1835.00±3.74
Place empty cup38.33±2.0542.33±7.8584.87±0.18
Stack blocks three0.00±0.000.00±0.009.00±2.16
Average10.98±1.0717.45±1.4046.95±0.72

Hold-out 7개는 stack_blocks_three(세 모델 전부 0~9%, long-horizon)부터 place_empty_cup(38~85%, easy)까지 난이도 스펙트럼을 걸쳐 있다. 다만 논문은 선정 기준을 밝히지 않았다.

3.4 평가 프로토콜 (논문)

환경
clean setting
rollout / task
100
seed
3
총 rollout
7 × 100 × 3 = 2,100
instruction
seen (baseline)

논문 인용: "We evaluate zero-shot cross-task generalization in the clean setting of RoboTwin 2.0 simulation." 우리 쪽 두 평가 경로(허브 demo_clean 기본값 = seen, lingbot-va 공식 클라이언트 instruction_type='seen' 하드코딩) 모두 이 설정과 정합.

3.5 Baseline 학습 조건 (논문)

누수 함정: HF robbyant/lingbot-va-posttrain-robotwin은 50 task 전체로 post-train된 체크포인트다. 여기서 출발하면 hold-out 7개가 이미 학습에 들어가 실험이 무효가 된다. 반드시 lingbot-va-base에서 시작해야 한다.

3.6 자산 실사 — 이미 있는 것

자산상태경로 / 출처
base 체크포인트다운로드 완료 23 GB/home/nas_main/.cache/huggingface/hub/models--robbyant--lingbot-va-base
RoboTwin clean 50 latent 포함 데이터셋HF 공개robbyant/robotwin-clean-and-aug-lerobot → lerobot_robotwin_eef_clean_50/
empty_emb.pt (cfg_prob용)포함 4.2 MB동일 repo 루트
RoboTwin sim / asset / 데이터 허브셋업 완료, 워커 스모크 통과~/repos/Robotics/RoboTwin (data/demo_clean 50×50)
LingBot_VA XPolicyLab 어댑터존재RoboTwin/XPolicyLab/policy/LingBot_VA/ (허브 context의 "미착수"는 오래된 기록)
latent 추출 스크립트존재위 어댑터 process_data.py / process_data.sh
공식 eval 경로존재lingbot-va/evaluation/robotwin/{launch_server,launch_client}.sh

lerobot_robotwin_eef_clean_50 실측 구조 (task 1개 = adjust_bottle-demo_clean_collect_200-50):

하위파일 수크기
latents/chunk-000/{cam_high, cam_left_wrist, cam_right_wrist}/150 (= 50 ep × 3 cam)651 MB
videos/chunk-000/<cam>/15043.5 MB
data/chunk-000/*.parquet501.0 MB
meta/{info, episodes, episodes_ori, episodes_stats, tasks}50.3 MB
합계 / task355~0.70 GB

→ 50 task ≈ 35 GB, 학습용 43 task ≈ 30 GB.

meta/info.json robot_type=aloha, total_episodes=50, fps=50, total_videos=150 observation.state / action = 16-dim = [left xyz(3)+quat(4)+gripper(1)] + [right 동일] cams = cam_high / cam_left_wrist / cam_right_wrist (480×640) meta/episodes.jsonl 에피소드당 action_config 세그먼트 1개 (start_frame=0, end_frame=length, action_text=instruction) 길이 편차 큼: adjust_bottle ~142 frame/ep put_bottles_dustbin ~625 frame/ep
액션 표현 변환 불필요. 이 16채널은 va_robotwin_cfg.used_action_channel_ids = range(0,7) + range(28,29) + range(7,14) + range(29,30) (7+1+7+1=16, 30-dim 표준 레이아웃 매핑)과 정확히 일치한다.
네이밍 예외 1건: put_bottles_dustbin만 폴더명이 put_bottles_dustbin-piper_clean_50-50(나머지 49개는 <task>-demo_clean_collect_200-50). 내용은 확인 결과 동일 규격(robot_type=aloha, 50 ep, 3 cam, state 16-dim)이므로 glob으로 task를 뽑을 때만 주의.

3.7 43 task 선택 — 코드 변경 불필요

wan_va/dataset/lerobot_latent_dataset.py:39-51의 construct_lerobot_multi_processor가 config.dataset_path 하위를 재귀 walk 하며 모든 meta/info.json을 찾아 task별 dataset을 만든다:

repo_list = recursive_find_file(config.dataset_path, 'info.json') repo_list = [v.split('/meta/info.json')[0] for v in repo_list]
dataset_path 아래에 43개 task 디렉토리 심링크만 두면 43 task 학습이 된다. 데이터로더·트레이너 수정 0줄. (empty_emb.pt는 empty_emb_path로 따로 지정되므로 심링크 루트에 같이 배치)

3.8 학습 스텝 환산

항목값비고
학습 세그먼트43 × 50 × 1 = 2,150에피소드당 세그먼트 1개
논문 baseline 소비량64 GPU × 4,000 step × batch 1 = 256K sample혼합 샘플링 여부 미명시
우리 8 GPU 등가32,000 step (≈ 119 epoch)batch_size=1, grad_accum=1
공식 기본값num_steps = 5000050 task 2,500 sample ≈ 160 epoch, lr 1e-5, warmup 10

3.9 평가 경로 두 가지 (미결정)

A. RoboTwin 허브 (XPolicyLab)B. lingbot-va 공식 eval
진입점scripts/hub/eval_multitask_worker.sh → XPolicyLab/policy/LingBot_VAevaluation/robotwin/launch_{server,client}.sh
장점멀티 GPU 스케줄러, X_WAM·FlexPi와 동일 하네스 = 직접 비교, TASK_CONFIG·TEST_NUM·SEED 인자 이미 존재논문 baseline이 쓴 바로 그 경로 → 17.45%와 정합성 최상
위험어댑터가 RoboDojo 기준(arx_x5, robotwin30_train, 30-dim joint) → 좌표·액션 규약 불일치 위험. X_WAM이 같은 이유로 0%가 나와 X_WAM_RoboTwin 셔임을 새로 만들어야 했던 전례RoboTwin 2eeec322 구 레이아웃 필요(허브는 96c1fea), 단일 GPU 루프, 허브 밖
instructiondemo_clean 기본값 = seeneval_polict_client_openpi.py:305 instruction_type='seen' 하드코딩

4 Takeaway

의미

  • split은 완전히 확정 가능하다. 7개 hold-out 이름이 논문에 명시되어 있고 7개 모두 로컬·HF 데이터에 그대로 있어서, 43/7 분할에 해석의 여지가 없다.
  • RoboCasa 트랙을 막던 blocker 2개가 여기서는 둘 다 해소되어 있다 — base 체크포인트는 이미 23 GB 받아져 있고, latent는 HF 데이터셋에 이미 추출된 채로 들어 있다. "데이터 준비"가 사실상 hf download + 심링크 43개다.
  • 43 task 선택에 코드 수정이 필요 없다. 로더가 dataset_path를 재귀 walk 하므로 디렉토리 구성만으로 통제된다.
  • 가장 큰 리스크는 데이터가 아니라 평가 하네스의 규약 불일치다. 허브에서 X-WAM이 정확히 이 이유로 0%를 찍었다.
  • 비교 앵커가 둘 생긴다: 논문 LingBot-VA 17.45%(unseen 7), 그리고 공식 posttrain 체크포인트의 50-task 90+%(seen 조건이라 직접 비교 대상이 아니라 하네스 sanity 상한).

5 Next Steps

미결정 (사용자 확인 필요)

  • 학습 대상 모델 — LingBot-VA로 확정인지 (근거: cwd가 lingbot-va, 논문 baseline이 LingBot-VA, clean_50 latent가 lingbot 포맷으로 이미 존재)
  • 평가 경로 A vs B (§3.9)
  • step 예산 — 논문 등가 32,000 step vs 공식 기본 50,000 step vs 축소
  • seed 3개 전부(rollout 2,100회) vs 1개 선행

확정 시 즉시 할 일

1. hf download robbyant/robotwin-clean-and-aug-lerobot \ --include 'lerobot_robotwin_eef_clean_50/*' 'empty_emb.pt' (~35 GB) 2. data/robotwin_clean50_seen43/ 에 43개 task 심링크 + empty_emb.pt 7개는 절대 포함하지 않음 → assert 스크립트로 자동 검증 3. wan_va/configs/va_robotwin_seen43_train_cfg.py 신규 va_robotwin_train_cfg 상속 + dataset_path / empty_emb_path / wan22_pretrained_model_name_or_path(base 캐시) / num_steps 교체 VA_CONFIGS에 'robotwin_seen43_train' 등록 4. base transformer/config.json 의 attn_mode 학습 전 "flex" → eval 전 "torch" 또는 "flashattn" (어댑터 README 경고) 5. 8 GPU 스모크(≤100 step, 로그인) → sbm "bash script/run_va_posttrain.sh" --gres=gpu:8 -c 64 --mem 1600GB 6. 평가 하네스 규약 검증: hold-out 7개 중 1개를 posttrain-robotwin 공식 체크포인트로 먼저 돌려 하네스 정상 동작 확인 (seen이라 높게 나와야 정상 — 하네스 sanity 전용, 실험 수치로는 미사용)

남은 불확실성

  • 논문의 43 task 목록이 미공개 → 우리 역산이 다를 가능성은 0에 가깝지만(50−7) 공식 확인 불가
  • baseline LingBot-VA가 4,000 step에서 혼합 샘플링을 썼는지 RoboTwin만 썼는지 논문 미명시
  • Zero-WAM 코드·데이터 공개 예정 2026-09-15 → 이후 재확인하면 43 목록·하이퍼파라미터를 정본으로 교체 가능

6 Sources