Index
2026-09-02 — Analysis

Flex-π clean-50: ckpt 선택 확정 & 리더보드 프로토콜 평가 제출

flex-pi | RoboTwin 2.0 clean-50 학습 모델 (Wan2.2 init, 10 epoch) — 8-task 선택 평가 최종표

TL;DR

93.5
clean2clean (10.96k, 8 task)
42.0
clean2random (10.96k, 8 task)
67.8 / 68.0 / 67.8
overall 9k / 10k / 10.96k
100
리더보드 유닛 (50×2)

1 배경 / 목적

clean-50 학습(job 105354, 10,960 step)의 세 ckpt(9k/10k/10.96k) 중 리더보드 제출용을 고르기 위한 8-task 서브셋 평가. 이전 라운드는 공유 에셋 트리가 평가 도중 바뀌어(2026-09-02 04:33) lift_pot/open_microwave 결과가 무효였고, 전용 에셋 assets_own으로 재평가(c50re_* 107226~28)를 돌린 상태였다.

기존 한계: 재평가 완료 후에도 (a) 10.96k의 lift_pot random 셀이 에셋 오류 구간(07:57)에 실행돼 여전히 무효였고, (b) compaction 요약의 디렉토리↔ckpt 매핑이 실제와 반대(050521=10k, 051851=9k)여서 재평가 job이 상대 ckpt의 디렉토리에 결과를 썼다.

2 작업 내용

검증: 각 (dir, task) 의 eval_config_<task>.yaml / 로그의 step_XXXX.pt 로 실제 ckpt 확인 → 20260902_050521 = step_010000, 20260902_051851 = step_009000, 20260902_041317 = step_010960 교정: lift_pot/, open_microwave/, eval_config_*.yaml, 09:xx 로그를 두 디렉토리 사이에서 맞바꿈 (README_swap_note.txt) 재실행: 10.96k lift_pot random 만 1 GPU (job 107327, 16 min) — 기존 결과는 _result_random.invalid_assets_*.txt 로 보존 집계: tmp/aggregate_clean50_ckpt.py — 셀별로 로그의 ckpt == 컬럼 ckpt assert, "out of range" 카운트로 무효 표시 step 상한: third_party/RoboTwin/envs/_base_task.py 가 ROBOTWIN_EVAL_STEP_LIMIT_FILE env 를 읽도록 패치 (미설정 시 기존 동작) task_config/_eval_step_limit_upstream.yml (X-WAM 원본 복사), sweep 래퍼 STEP_LIMIT_FILE=upstream 노브 제출: 50 task 를 step 상한 내림차순 round-robin 5 그룹 → lb_joint_g1..5 (107346~107350), extra 2 GPU, 100 ep, 30 h, sbmr 6회, 공통 RESUME_DIR=evaluate_results/robotwin/robotwin_clean50_clean50_10ep/lb_010960_joint

Traceback 은 남아 있지만 모두 RoboTwin expert 플래너의 시드 사전검사 실패(target_pose cannot be None)로 시드를 건너뛰는 정상 동작이며, 에셋 오류(modelid … out of range)는 새 로그 전부 0건.

3 결과 — 8 task × clean/random × 25 ep (full-joint, 절반 step 상한)

taskreleased 48k (full data)9k10k10.96k
adjust_bottle98 / 97100 / 44100 / 4496 / 44
click_bell94 / 97100 / 72100 / 80100 / 68
lift_pot99 / 100100 / 0100 / 0100 / 4
open_microwave50 / 5776 / 1272 / 2072 / 12
place_shoe97 / 9796 / 5696 / 56100 / 48
put_object_cabinet90 / 9084 / 2088 / 2084 / 20
scan_object95 / 9188 / 4892 / 3296 / 44
stack_bowls_two90 / 9492 / 96100 / 88100 / 96
clean / random / overall89.1 / 90.4 / 89.892.0 / 43.5 / 67.893.5 / 42.5 / 68.093.5 / 42.0 / 67.8
선택: 세 ckpt 는 노이즈 안에서 동률(Δ ≤ 0.3 pt overall). 테스트 task 로 ckpt 를 고르지 않는 것이 리더보드 관점에서 깔끔하므로 10 epoch 종점 step_010960 채택.
분포이동 붕괴: lift_pot random 0~4% — 에셋 오류 0건, 매 에피소드 200 step 상한(절반 한도) 소진. randomized 데이터로 학습한 released ckpt 는 100%. clean-only 학습의 한계가 가장 극단적으로 드러나는 task. upstream 상한(400)에서 회복되는지가 리더보드 run 의 관전 포인트.

4 Takeaway

의미

clean-50 모델은 clean2clean 에서 released(full data) ckpt 보다 높다(93.5 vs 89.1, open_microwave 72 vs 50) — 2,500 ep 로 10 epoch 이면 clean 도메인에는 충분히 특화된다. 반면 clean2random −51.5 pt 는 randomized 데이터 없이는 구조적 한계로, 리더보드 hard 트랙 수치는 낮게 나올 것이 예상된다. 연구계획 P-C(demo-scarce regime margin)에는 이 갭이 오히려 헤드룸이다.

운영 교훈 2가지: (1) 평가 디렉토리가 타임스탬프명이라 ckpt 가 드러나지 않으므로 다중 ckpt 집계는 반드시 셀별로 로그의 ckpt 를 검증할 것(이번에 assert 로 자동화). (2) 공유 에셋 심링크 + 결과 파일 기반 resume 조합은 무효 셀을 "완료"로 간주하므로, 재개 전에 무효 결과 파일을 치워야 한다.

5 Next Steps

진행 중

lb_joint_g1..5 (107346~107350) 100 유닛 — 유닛당 60~100 min 예상, 총 130~170 GPU-h. 클러스터 119/120 사용 중이라 큐 대기 포함 1~2일. 다른 세션의 c50act_010960(107345, action-only 8-task) 결과로 regime 대조.

다음

리더보드 표(50 task clean2clean / clean2random) 산출 → 리더보드 상위 항목과 비교, from-Wan-init 명시. 이후 같은 프로토콜로 action-only 50-task(P-C) 제출 여부 결정.