Index
2026-09-21 — Analysis

ZW w/o pretrain 재현 격차 −9.29pp 원인 분석 — 학습 32K vs 공개 recipe 50K + 두 자체 런의 설정 불일치

Zero-WAM | 논문 vs 자체 재현, 자체 LingBot-VA vs 자체 ZW w/o pretrain 설정 실측 대조

TL;DR

−9.29pp
자체 ZW ICL − 논문 w/oP
+23.26pp
자체 LB − 논문 LB
32K/50K
학습 step (64%)
1e-4 vs 1e-5
lr ZW vs LB

1 배경 / 목적

ZW w/o pretrain 자체 재현 ICL macro는 27.00%로 논문(36.29%, 태스크별 radar 역산 합 기준; Table 2 보고치 36.36)보다 −9.29pp 낮다. 동시에 같은 방식으로 학습한 자체 LingBot-VA는 논문보다 +23.26pp 높다(260921-lingbot_va_fixed_criteria_reeval). 편차가 반대 방향이라, 논문 기준 w/o pretrain 우세 +18.84pp가 자체 측정에서 −13.71pp(LB 우세)로 부호가 뒤집힌다(27.00 − 40.71).

기존 한계: 260918 카드는 −9.55pp(당시 ICL 26.81%)의 후보 원인을 “학습 step/packing/단일 시드”로만 적고 미분리로 남겼다. 두 자체 런이 실제로 어떤 조건에서 다른지 설정 파일로 실측한 적이 없었다.

2 작업 내용

두 자체 학습 런의 설정 파일·데이터 parquet·학습 스크립트를 직접 대조했다.

2.1 두 자체 런의 설정 실측

자체 LingBot-VA자체 ZW w/o pretrain
데이터셋robotwin_lingbot_clean50/lerobot_robotwin_eef_clean_50HumanGen/robotwin_data
태스크 × 에피소드43 × 5043 × 50 (parquet 실측)
feature 스키마state[16]/action[16], cam 3개 [3,480,640], fps 50동일
action 채널action_dim 30, used_action_channel_ids = range(0,7)+...동일
에피소드 인스턴스0–49 연속42…940, 1000개 풀의 sparse 서브샘플
학습 해상도256×320224×288
초기화robbyant/lingbot-va-base (VA 사전학습)Wan2.2-TI2V-5B (action head constructor 초기화)
learning rate1e-51e-4
warmup / cfg_prob10 / 0.1200 / 0.4 (droptext_target)
ICL 전용 키없음icl_manifest_path, human_latent_path, use_icl_model, icl 320×480, icl_fps 12
정정: 이전에 “action space가 eef vs joint로 다르다”고 적었으나 틀렸다 — 둘 다 16차원 동일 스키마·동일 채널 매핑이다. 디렉토리 이름(..._eef_clean_50)만 보고 넘겨짚은 것.

즉 데이터는 “ICL 경로가 얹힌 것 외에는 대체로 동일”하고, 실질 차이는 (a) 서로 다른 50개 장면 서브샘플, (b) 해상도, (c) 초기화, (d) lr 10배다.

2.2 학습 step 대조

wan_va/configs/va_robotwin_train_cfg.py:61 num_steps = 50000 <- 공개 recipe 기본값 script/train_zerowam_wopretrain.sh:17 NUM_STEPS=32000 <- 우리가 돌린 값 (공식의 64%)

32000은 자체 LingBot-VA 런과 샘플 예산을 맞추려고 임의로 낮춘 값이며 공개 recipe를 따른 것이 아니다.

3 결과

3.1 전체 비교표 (7 held-out, n=100, seed 0)

task논문 w/oP자체 ZW ICLΔ자체 ZW lang자체 ZW 교체논문 ZW자체 LB (수정)
place_empty_cup46.0028.00−18.0010.0012.0084.8762.00
move_stapler_pad74.0040.00−34.0052.0026.0069.1461.00
place_bread_basket33.0037.00+4.0031.00—35.0060.00
stamp_seal53.0047.00−6.0030.0038.0047.0034.00
open_microwave26.0021.00−5.008.70—59.0034.00
place_object_scale22.0016.00−6.0013.00—24.6734.00
stack_blocks_three0.000.00±00.00—9.000.00
MACRO36.2927.00−9.2920.6725.33 (3 태스크 pooled)46.9540.71

출처: 논문 ZW는 Table 2(3시드 평균). 논문 w/oP 태스크별은 Fig.5 radar 역산(정수 반올림, 역산 macro 36.29 vs Table 2 36.36). 자체 값은 전부 단일 시드. LB eval은 stseed-10000, ZW eval은 stseed-100000이라 자체 두 열끼리도 짝지어지지 않는다.

편차가 반대 방향: LB는 논문보다 +23.26pp(7개 중 6개 우위, 열세 0개), ZW w/o pretrain은 −9.29pp(6개 열세). 논문 기준 격차 +18.84pp(w/oP 우세)가 자체 측정에서 −13.71pp(LB 우세)로 뒤집힌다.

3.2 후보 원인 우선순위

#후보 원인근거검증 가능성
1학습 step 36% 부족 (32K vs 공개 50K)ZW는 action head를 맨바닥에서 배우며 lr 1e-4 / 32K step. LB는 사전학습 base에서 lr 1e-5 미세조정 → 같은 step이어도 ZW가 덜 수렴했을 개연성가능 — 18K step 추가 학습(재학습 아님, resume)
2서로 다른 50개 장면 서브샘플ZW: 1000개 풀의 sparse 서브샘플(42…940), LB: 0–49 연속재학습 필요
3학습 해상도 224×288 vs 256×320설정 실측재학습 필요
43시드 평균(논문) vs 1시드(자체)논문 Table 2 ±1.40 수준시드 추가 평가
배제: 논문의 미공개 데이터 혼합 비율은 w/o-pretrain ablation에는 직접 적용되지 않는다(사전학습 단계 자체가 빠진 설정) — 그건 full Zero-WAM 46.95% 재현 쪽 변수다. 또 prune 때문에 28000·32000 체크포인트만 남아 수렴 여부를 체크포인트로 사후 확인할 수 없다.

4 Takeaway

의미

1. 재현 격차는 “논문이 틀렸다”보다 “우리가 recipe를 절반 가까이만 따랐다”로 먼저 의심해야 한다. 32000은 공개 recipe(50000)에서 벗어난 자체 선택이었고, 이 변경은 기록되지 않은 채 격차 해석에 섞여 있었다.

2. 두 자체 baseline은 동일 조건이 아니다. 데이터 스키마·액션 채널·에피소드 수는 같지만 에피소드 인스턴스·해상도·초기화·lr이 다르다. 따라서 “자체 LB vs 자체 ZW” 비교(LB 5승 2무)는 방법론 우열이 아니라 학습 조건 차이가 섞인 값으로 읽어야 한다.

3. 사실 오류 1건 정정: “action space eef vs joint” 차이는 존재하지 않는다(동일 16차원 스키마). 디렉토리 이름으로 설정을 추정하지 말고 config를 읽을 것.

5 Next Steps

미해결 한계 (현재 보류)

2026-09-19 사용자 결정으로 보류 — GPU 부족 / 타 프로젝트 우선. 따라서 자체 27.00%가 학습 부족 때문인지는 아직 미확정이다. Active 실험은 없다(2026-09-18 전부 완료).

다음 실험 (GPU 여유 시, 우선순위 순)

1. checkpoint_step_32000에서 50,000 step까지 18K 추가 학습 → ICL/lang 재평가. NUM_STEPS=50000 bash script/train_zerowam_wopretrain.sh로 재제출하면 최신 체크포인트에서 자동 resume(8 GPU), 재평가는 script/eval_zerowam_robotwin.sh. 반증 가능 예측: ICL macro가 27.00%에서 논문 36%대로 근접하면 학습 부족 확정, 그대로면 후보 2·3(서브샘플·해상도)으로 이동.
2. 공개 zero-wam-posttrain-robotwin으로 7태스크 재현 → 재현 격차가 학습 쪽인지 평가 쪽인지 확인. 로컬 RoboTwin rev 96c1fea ≠ 테스트 rev 2eeec322 점검.
3. 시드 2~3개 추가 — Δ들을 시드 노이즈(논문 ±1.40)와 구분.