TL;DR
- aux 재학습이 pick을 확실히 개선했다 — pick 8/15 → 13/15 (+33pp), 같은 과제 정면 대결에서 5승 0패 완봉
- pnp는 무승부 (8/15 → 6/15, 정면 대결 4승 6패) — 유의한 변화 아님. part1이 이긴 6셀이 전부 pnp인 것도 같은 그림
- 시드 고정으로 30/30 셀에서 두 ckpt가 완전히 동일한 과제를 풀었다 — N7/N8을 괴롭히던 "물체 뽑기 운" 교란이 제거된 첫 비교
- 운영: 클러스터 만석(0/120)에서 share 풀 + 행 단위 재개로 완주 — 선점 2회를 겪고도 손실은 진행 중이던 1행씩
1 시드 고정 — 이번 비교가 이전과 다른 이유
N7·N8에서 ckpt 비교의 최대 교란은 unseeded 과제 재샘플이었다 — 같은 house라도 매번 다른 물체가 뽑혀서, SR 차이가 모델 차이인지 물체 난이도 차이인지 구분되지 않았다.
최초 구현(호출 직전 ambient RNG 시드)은 무효였다:
BaseMujocoTaskSampler.__init__ 이 seed_task_sampling(config.seed or 랜덤)으로
전역 RNG를 덮어쓴다 (task_sampler.py:311-314)
→ cfg.seed(config 레벨)로 교체. 메커니즘: 행마다 새 sampler → _task_counter=0 →
결과는 house 로드 시 np.random.shuffle의 첫 원소로 결정되고, 그 셔플이 소비하는
numpy 상태를 cfg.seed가 고정한다.
검증: 통합테스트 4종 + 30행 traversal을 독립 프로세스 2개에서 실행해 시퀀스 완전 일치
실측 검증: 두 ckpt의 30개 셀에서 pickup UID가 30/30 일치. 이제 SR 차이는 온전히 모델 차이다.
2 결과
| ckpt | 전체 | pick | pnp |
| part1-20k (구) | 16/30 | 8/15 | 8/15 |
| mixv2-20k (aux 재학습) | 19/30 | 13/15 | 6/15 |
같은 과제 정면 비교 (승패가 갈린 셀만)
| 스킬 | mixv2 승 | part1 승 | 판정 |
| pick | 5 | 0 | mixv2 완봉 — h290 bowl, h375 remote, h446 bowl, h640 ladle, h640 pen |
| pick_and_place | 4 | 6 | 무승부 (노이즈 범위) |
| 동률 | 15셀 |
패턴이 깨끗하다: part1이 이긴 6셀은 전부 pick_and_place다. aux(Pick part0, weight 0.2)가 pick을 끌어올리고 pnp에서 약간 손해를 본 구조와 정확히 일치한다.
3 운영 기록 — 만석 클러스터에서 완주하기
클러스터 0/120 만석, 사용자 own 쿼터도 8/8 사용 중 → extra/own 모두 대기
→ share 풀(1장 여유)로 선행 투입 (사용자 승인)
→ 선점 2회 (part1 19:30, mixv2 21:00) — share에서는 정상 동작
→ 감시 스크립트가 행 단위 재개로 자동 재제출 (상한 10회, 완료 행 delta 기반 중단 조건)
→ 양쪽 30/30 완주. 선점당 손실 = 진행 중이던 1행(~5분)뿐
부수 교훈: sacct CANCELLED elapsed 00:00은 선점이 아니라 운영자 취소일 수도 있다 — 이번에 구현자가 잘못된 시드 구현으로 GPU를 낭비하지 않으려고 스스로 취소한 사례가 있었고, 컨트롤러가 이를 스케줄러 문제로 오진했다. 원인 귀속은 소유자에게 확인할 것.
4 판단과 다음
판단
"aux로 pick을 높인다"는 학습 쪽 목표는 달성됐다. 그리고 이번 라운드의 더 오래 남을 성과는 시드 고정이다 — n=3이라는 작은 표본에서도 5-0 같은 판정이 가능해진 것은 두 모델이 같은 문제를 풀었기 때문이다. 앞으로 모든 ckpt 비교의 기본값으로 삼는다.
| # | 다음 |
| 1 | pnp 개선 — aux 비중 재조정 또는 pnp 특화 데이터 검토 |
| 2 | 물체 고정 회귀 세트(egg·soapdispenser·저조도 h446)를 시드 세트에 편입 |
| 3 | 벤치 카메라로 FT한 ckpt가 나오면 동일 매트릭스(zed2 주 + bench 참고)로 재실행 |