demo_clean·HF clean_50에 그대로 존재 → 43/7 분할에 해석의 여지 없음lingbot-va-base 23 GB 다운로드 완료 + HF clean_50에 latent가 이미 추출된 채로 포함(~0.70 GB/task)dataset_path를 재귀 walk 하므로 심링크 구성만으로 통제lingbot-va-posttrain-robotwin은 50 task 전부로 학습됨 → 시작점으로 쓰면 실험 무효새 프로젝트: RoboTwin 2.0의 50 task 중 43개만 학습하고 7개는 완전히 제외해서 zero-shot cross-task 일반화를 측정한다. 프로토콜은 Zero-WAM 논문을 그대로 따른다.
Zero-WAM은 LingBot-VA를 baseline으로 쓰고 있다. 즉 같은 split으로 LingBot-VA를 post-train 하면 논문 수치와 직접 대조 가능한 앵커가 생긴다.
50 − 7로 역산했다.로컬 레포 우선 탐색(~/repos/Robotics/{lingbot-va, RoboTwin, dreamzero, X-WAM, …}) → Zero-WAM이 로컬에 없음을 확인한 뒤 arXiv 본문 / GitHub / 프로젝트 페이지 원문 조회. HF 자산은 README 주장 대신 huggingface.co/api/<repo>/tree/… 엔드포인트로 실제 파일 목록과 바이트 크기를 직접 열람해 확인했다.
| 논문 표기 | RoboTwin task name | demo_clean | HF clean_50 |
|---|---|---|---|
| Place object on scale | place_object_scale | ✅ | ✅ |
| Stamp seal | stamp_seal | ✅ | ✅ |
| Open microwave | open_microwave | ✅ | ✅ |
| Move stapler to pad | move_stapler_pad | ✅ | ✅ |
| Place bread in basket | place_bread_basket | ✅ | ✅ |
| Place empty cup | place_empty_cup | ✅ | ✅ |
| Stack blocks three | stack_blocks_three | ✅ | ✅ |
RoboTwin/data/demo_clean/(50 task × 50 ep)과 HF lerobot_robotwin_eef_clean_50(50 task)에 이름 그대로 존재한다.| Task | WAN-Action | LingBot-VA | Zero-WAM |
|---|---|---|---|
| Place object on scale | 3.00±2.16 | 6.17±4.87 | 24.67±2.05 |
| Stamp seal | 7.33±1.25 | 3.67±2.49 | 47.00±4.55 |
| Open microwave | 2.26±1.60 | 29.33±10.66 | 59.00±2.83 |
| Move stapler to pad | 10.67±1.70 | 23.33±8.22 | 69.14±2.93 |
| Place bread in basket | 15.26±2.55 | 17.33±6.18 | 35.00±3.74 |
| Place empty cup | 38.33±2.05 | 42.33±7.85 | 84.87±0.18 |
| Stack blocks three | 0.00±0.00 | 0.00±0.00 | 9.00±2.16 |
| Average | 10.98±1.07 | 17.45±1.40 | 46.95±0.72 |
Hold-out 7개는 stack_blocks_three(세 모델 전부 0~9%, long-horizon)부터 place_empty_cup(38~85%, easy)까지 난이도 스펙트럼을 걸쳐 있다. 다만 논문은 선정 기준을 밝히지 않았다.
논문 인용: "We evaluate zero-shot cross-task generalization in the clean setting of RoboTwin 2.0 simulation." 우리 쪽 두 평가 경로(허브 demo_clean 기본값 = seen, lingbot-va 공식 클라이언트 instruction_type='seen' 하드코딩) 모두 이 설정과 정합.
lingbot-va-base에서 출발, 43 seen task 데이터만robbyant/lingbot-va-posttrain-robotwin은 50 task 전체로 post-train된 체크포인트다. 여기서 출발하면 hold-out 7개가 이미 학습에 들어가 실험이 무효가 된다. 반드시 lingbot-va-base에서 시작해야 한다.| 자산 | 상태 | 경로 / 출처 |
|---|---|---|
| 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>/ | 150 | 43.5 MB |
data/chunk-000/*.parquet | 50 | 1.0 MB |
meta/{info, episodes, episodes_ori, episodes_stats, tasks} | 5 | 0.3 MB |
| 합계 / task | 355 | ~0.70 GB |
→ 50 task ≈ 35 GB, 학습용 43 task ≈ 30 GB.
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 표준 레이아웃 매핑)과 정확히 일치한다.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를 뽑을 때만 주의.wan_va/dataset/lerobot_latent_dataset.py:39-51의 construct_lerobot_multi_processor가 config.dataset_path 하위를 재귀 walk 하며 모든 meta/info.json을 찾아 task별 dataset을 만든다:
dataset_path 아래에 43개 task 디렉토리 심링크만 두면 43 task 학습이 된다. 데이터로더·트레이너 수정 0줄. (empty_emb.pt는 empty_emb_path로 따로 지정되므로 심링크 루트에 같이 배치)| 항목 | 값 | 비고 |
|---|---|---|
| 학습 세그먼트 | 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 = 50000 | 50 task 2,500 sample ≈ 160 epoch, lr 1e-5, warmup 10 |
| A. RoboTwin 허브 (XPolicyLab) | B. lingbot-va 공식 eval | |
|---|---|---|
| 진입점 | scripts/hub/eval_multitask_worker.sh → XPolicyLab/policy/LingBot_VA | evaluation/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 루프, 허브 밖 |
| instruction | demo_clean 기본값 = seen | eval_polict_client_openpi.py:305 instruction_type='seen' 하드코딩 |
hf download + 심링크 43개다.dataset_path를 재귀 walk 하므로 디렉토리 구성만으로 통제된다.RoboTwin/claude/260907/progress-robotwin_hub_setup.md, RoboTwin/XPolicyLab/policy/LingBot_VA/README.md, lingbot-va/wan_va/{configs/va_robotwin_cfg.py, dataset/lerobot_latent_dataset.py}, lingbot-va/evaluation/robotwin/