Index
2026-08-27 — Plan

RoboTwin run2 재학습 제출 — lr/schedule/batch 레시피 재점검

tau-0-wm | RoboTwin 2.0 트랙, run1 34.8% 갭 확정 이후 후속 학습 결정

TL;DR

-17%
action loss 20k→50k
2.18cm
42k ckpt 최선 정밀도
384
run2 global batch
1153/15000
run2 현재 step

1 배경 / 목적

같은 카드(260827-robotwin_gap_diagnosis.html)에서 하네스·환경 결함이 모두 제거된 뒤에도 τ₀ 54k는 학습 씬에서조차 34.8%로 X-WAM 82.1%에 크게 못 미친다는 사실이 확정됐다. 다음 질문은 "모델 용량 한계인가, 아니면 학습 레시피 자체가 X-WAM/τ₀ 논문과 달라서 덜 우려낸 것인가"다. 재학습에 들어가기 전에 기존 학습 곡선과 체크포인트별 정밀도를 먼저 점검해 재학습이 실제로 유효한 선택인지 확인했다.

기존 한계: run1은 X-WAM RoboTwin SFT 샘플 수(1.28M)에 맞춰 54k step(5.2M 샘플, 4배 더 많음)을 돌렸지만 lr 스케줄이나 배치 구성은 논문값과 대조해본 적이 없었다.

2 작업 내용

레시피 차이 대조

run1X-WAMτ₀ 논문
lr5e-51e-55e-5
스케줄constant_with_warmup (감쇠 없음)get_cosine_schedule_with_warmup → 0—
global batch96 (12×8)32384
steps54k40k—

두 지점이 겹친다: ① 54k step 내내 5e-5를 유지한 채 종료(annealing 없음) ② τ₀ 레시피 배치의 1/4에 같은 lr을 적용.

loss 곡선 확인 (tfevents, 2699 포인트 스무딩)

action loss: 0.103 → 0.055(2k) → 0.044(11k) → 0.036(20k) → 0.036(32k) → 0.036(41k) → 0.030(50k). 20k~50k 30k step 동안 -17%뿐이고 오르내림이 존재 → 수렴이라기보다 일정 lr의 노이즈 바닥.

체크포인트별 open-loop 정밀도 확인 (tmp/ckpt_precision.py, 동일 140 클립)

ckptpos meanstep32rot
step_180002.69cm3.795.0°
step_300002.60cm3.485.3°
step_420002.18cm3.414.7°
step_540002.30cm3.245.2°

같은 step_54000을 다른 GPU에서 잰 앞선 측정이 2.20cm였던 점을 보면 ±0.1cm는 n=140 측정 노이즈 범위.

run2 제출 (job 97294)

config: configs/tau_model/posttrain_robotwin_v2.yaml sub_folder: run2_cos384 batch 12 × 8 GPU × accum 4 = global batch 384 lr_scheduler: cosine (→0), warmup 500 15,000 optimizer step (= 5.76M 샘플, run1 5.18M과 동급) 저장 주기: 1500 step마다 정상 RGB (로더 R/B 수정 반영, --swap_rb 불필요)

코드 확인: accelerator.accumulate() + sync_gradients 가드로 accum이 정상 동작하고, train_steps는 optimizer step 기준이며 scale_lr: false라 lr 5e-5가 그대로 유지됨(τ₀ 레시피와 동일 lr)을 코드 레벨로 검증. 예상 학습 시간 ~17h.

큐 재배치

run1의 50-task 최종 평가(job 96629, own QOS)가 재학습을 6h 밀어내므로 취소하고 extra QOS로 재제출(job 97293 → preempt 후 97360으로 재개) — 직전에 추가한 unit 단위 resume 덕에 preempt/timeout 후 이어서 진행 가능. own 쿼터는 재학습(job 97294)이 차지.

3 결과 (수치)

Job내용QOS상태 (2026-08-27 09:45 기준)
97294run2_cos384 재학습 (15k step)own, 8 GPURUNNING — 1153/15000 step, loss≈0.20~0.25 (video 0.12~0.17 / action 0.08~0.11), 3.86 s/it
97293→97360run1 최종 50-task×100 평가 (optix+swap_rb)extra97293 PREEMPTED(37분) → 97360 재제출 후 RUNNING(6h37m+), 130개 task-shard 결과 파일 생성 중, 미완료
속도: run2는 global batch 384(accum×4)라 step당 3.86s로 run1(1.05s/it, batch 96)보다 느림 — 15k step 완주까지 tqdm 추정 약 14h51m 남음(1h18m 경과 시점).

4 Takeaway

의미

18k → 42k는 실제 개선(pos err -19%)이었지만 42k 이후 12k step은 아무것도 벌지 못했다 — 일정 lr 진동은 실재하나 폭은 ~5% 수준. 즉 run1이 "학습이 덜 됐던" 상태는 아니고, 스케줄/배치 차이가 병목이라는 가설을 검증하려면 실제로 다른 스케줄로 다시 돌려보는 것 외에 대안이 없었다. 다만 annealing의 기대 이득 자체가 제한적이라고 추정된다(2.2 → 1.9~2.0cm 추정, X-WAM의 1.31cm까지는 못 갈 전망) — run2가 성공해도 완전한 갭 해소는 아니고, 다음 후보인 action 표현 변경(chunk-relative → per-step delta)으로 넘어갈 근거를 강화하는 실험에 가깝다.

5 Next Steps

미해결 한계

run2는 아직 8%(1153/15000 step) 지점이라 결과 판단은 이르다. annealing 이득 추정치(1.9~2.0cm)는 run1 곡선 형태로부터의 외삽이며 실측이 아니다 — 실제로 그 이상으로 나아지거나, 반대로 batch 384에서 다른 동역학(예: 더 느린 초반 수렴)이 나타날 가능성도 배제 못 한다.

다음 작업

1) run2(97294) 15k step 완주 후 open-loop 정밀도 + 50-task SR 측정 → run1(34.8%, 2.30cm)과 직접 비교. 2) run1 최종 50-task×100 전체 평가(97360) 완료 대기 → X-WAM released 90.7% 앵커와 최종 갭 확정. 3) run2로도 갭이 크게 안 좁혀지면 action 표현을 chunk-relative 20ch → per-step delta로 변경하는 재학습을 다음 우선순위로 진행 (사용자 결정 대기, 학습 씬 34.8%라는 결과를 보면 해상도/augmentation보다 이 변경이 더 유망).