TL;DR
- v2 전처리: 49프레임 uniform downsampling(7배속 재생 문제) → sliding window 클립으로 변경. 에피소드 당 여러 클립 생성, 총 데이터량 대폭 증가.
- Layout A I2V v2: 50K step 완료 (SLURM job 48006, 1h 25m). validation step 38K~48K 생성 확인.
- Layout C I2V v2: 3K step 도달 (job 49582, 3h 22m COMPLETED). B는 1K step (반복 preemption).
- 해상도 변경: Layout B/C v2에서 480×832 (Wan 기본 480P bucket)로 통일. v1 대비 해상도 업.
1 배경 / 목적
v1 전처리의 핵심 문제: 에피소드 전체(100~500 프레임)를 49프레임으로 uniform downsampling하면 실제 재생 시 7배속처럼 보임. 모션이 왜곡되어 video generation 모델이 자연스러운 모션을 학습하기 어렵다.
v1 한계: 49프레임 uniform downsampling → 평균 에피소드 길이 343프레임 기준 7× 빠른 재생. 생성된 비디오에서 부자연스러운 빠른 모션 관찰.
v2에서는 sliding window로 연속 49프레임 클립을 생성하여 자연 속도(20fps)를 보존한다. 또한 해상도를 Wan 기본 480P bucket(480×832)로 맞춰 사전학습 분포와의 gap을 줄인다.
2 작업 내용
v2 전처리 핵심 변경사항
스크립트: scripts/prepare_robocasa_data.py (v2 표기)
변경점:
v1: 에피소드 전체 → uniform sampling → 49프레임 1개 클립
v2: 에피소드 → sliding window(stride_min~stride_max) → 49프레임 N개 클립
(에피소드 길이 < 49프레임이면 skip)
TARGET_FRAMES = 49 # (T-1) % 4 == 0, Wan-VAE constraint
fps = 20fps 그대로 (속도 보존)
클립명: {task}_ep{ep:04d}_clip{clip:02d}.mp4
Layout 별 학습 설정
| Layout | 해상도 | 모델 | 스크립트 | rank/alpha | train_steps |
| A I2V v2 | 192×960 | Wan2.1-I2V-14B-480P | train_MG30_layout_A_i2v_v2.sh | 128/64 | 50,000 |
| B I2V v2 | 480×832 | Wan2.1-I2V-14B-480P | train_MG30v2_layout_B_i2v.sh | 128/64 | 50,000 |
| C I2V v2 | 480×832 | Wan2.1-I2V-14B-480P | train_MG30v2_layout_C_i2v.sh | 128/64 | 50,000 |
공통 학습 하이퍼파라미터 (B/C v2):
optimizer: AdamW (beta1=0.9, beta2=0.99, eps=1e-8, wd=1e-4)
lr: 1e-4, scheduler: constant_with_warmup (100 steps)
batch_size: 2/GPU × 4GPU = effective 8 (grad_accum=4 → effective 32)
target_modules: blocks.*(to_q|to_k|to_v|to_out.0)
precomputation_items: 10,172 (B/C 모두)
checkpointing: 매 1,000 steps, 최근 4개 유지
3 결과 (SLURM 실행 이력)
SLURM Job 이력 (preemption 상세)
| Job ID | 실험 | 상태 | 실행 시간 | 비고 |
| 48006 | Layout A I2V v2 | COMPLETED | 1h 25m | 50K step 완료 |
| 49582 | Layout C I2V v2 | COMPLETED | 3h 22m | 3K step 도달 |
| 48020, 48021 | B/C I2V v2 초기 | PREEMPTED | ~1h | 1K 미만 |
| 48068, 48071 | B/C I2V v2 | PREEMPTED | 2h/5h | B 1K, C 일부 |
| 48168, 48235 | B/C I2V v2 | PREEMPTED | 7h/4h | 누적 중 |
| 48427, 48502 | B/C I2V v2 | PREEMPTED | 2h/2h | 누적 중 |
| 49614~50112 | B I2V v2 | PREEMPTED | 1~4h 반복 | 현재 1K step |
Layout B가 심각하게 막혀 있음: 총 10회 이상 preemption, 누적 실행 시간 약 25h에도 불구하고 1K step. checkpointing_steps=1000이라 첫 checkpoint 저장 전 preemption이 반복됨.
완료된 학습 검증 (Layout A I2V v2)
출력 디렉토리: output/MG-30_layout_A_i2v_v2/
최종 checkpoint: finetrainers_step_50000/
Validation 비디오: step 38000, 40000, 42000, 44000, 46000, 48000 생성 확인
→ 각 step마다 2 prompt × 2 sample = 4개 mp4
Layout A I2V v2 50K 완료: validation 비디오 38K~48K step 생성. 질적 평가(v1 대비 모션 자연스러움) 필요.
현재 checkpoint 상태
| Layout | 최고 step | checkpoint 위치 |
| A I2V v2 | 50,000 | output/MG-30_layout_A_i2v_v2/finetrainers_step_50000/ |
| C I2V v2 | 3,000 | output/MG-30-v2_layout_C_i2v/finetrainers_step_3000/ |
| B I2V v2 | 1,000 | output/MG-30-v2_layout_B_i2v/finetrainers_step_1000/ |
4 Takeaway
v2 전처리의 의미
sliding window 클립이 핵심 개선. v1의 uniform downsampling은 에피소드 전체를 7배 빠르게 압축했기 때문에 생성 모델이 "빠른 로봇 동작"을 학습하게 됨. v2에서는 20fps 자연 속도의 연속 클립으로 학습하여, 생성 비디오의 모션 속도가 실제 로봇과 일치할 것으로 기대.
Layout A v2가 50K 완료되었으므로 v1 대비 질적 비교가 가능. v1 A I2V(8K step)와 v2 A I2V(50K step)를 같은 프롬프트로 추론하여 모션 자연스러움을 비교해야 함.
Layout B preemption이 bottleneck. --qos=core-extra이므로 반복 preemption은 예상된 결과지만, 첫 1K checkpoint 이전에 계속 preempt되는 것은 비효율. checkpoint 주기를 500 steps로 줄이거나 core-own으로 한 번 제출 필요.
5 Next Steps
- Layout A I2V v2 추론 실행: step 50K 체크포인트로 비디오 생성 → v1 대비 모션 품질 비교
- Layout B preemption 해결: checkpointing_steps=500으로 줄여서 재제출. 또는
--qos=core-own으로 1회 보호 실행
- Layout C 추가 학습: 3K에서 더 돌아야 함 (50K 목표). B와 동시 진행
- B/C 완료 후 A vs B vs C 비교: 동일 프롬프트로 추론 → 3분할 구조 명확성, GT 일관성, wrist view 구분 평가
# Layout B checkpointing 개선 예시
sbm "bash scripts/train_MG30v2_layout_B_i2v.sh" \
--qos=core-own --gres=gpu:4 -c 96 --mem=800GB
# 또는 checkpointing_steps=500으로 스크립트 수정