Index
2026-04-30 — Plan

Phase 4 계획 — Pi0.5 Fine-tuning on DreamGen P2 (B1→B2)

GR00T-Dreams | DreamGen Datagen 옵션 A → Policy Fine-tuning 전환

TL;DR

1 배경 / 목적

DreamGen Datagen P2(1440 ep) HF push 완료(260430)로 Phase 4 진입 조건 충족. 원래 GR00T N1 policy fine-tuning 예정이었으나, 사용자 측에서 Pi0.5 코드(DAVIAN robot-data-gen fork)를 제공하기로 변경.

목표: synthetic-only(B1) 먼저 → real heldout + synthetic mix(B2). 시뮬레이터에서 24 robocasa task SR 측정 → DreamGen 합성 데이터 효과 검증. 현재 real-only baseline(B0) 대비 얼마나 올라가는지가 핵심 지표.

운용 매핑 필요: lerobot upstream train_expert_only 옵션이 DAVIAN fork에서 tune_targets 리스트로 표현됨. 두 코드베이스 차이를 미리 파악하지 않으면 silent-freeze 함정에 빠짐.

2 작업 내용

DAVIAN fork vs lerobot upstream 차이 분석

lerobot upstream Pi0.5 default: freeze_vision_encoder=false, train_expert_only=false = full fine-tune. DAVIAN fork는 그 위에 update_method_to_partial_tuning을 항상 호출하여 먼저 모든 param frozen, 이후 tune_targets에 명시된 것만 unfreeze.

DAVIAN fork apply_tuning_settings 동작: self.requires_grad_(False) ← 전체 동결 if "visual" in tune_targets: vision_tower.requires_grad_(True) if "llm" in tune_targets: language_model.requires_grad_(True) if "action_expert" in tune_targets: gemma_expert.requires_grad_(True) ※ projection layers (action_in_proj/out_proj/time_mlp/state_proj)은 항상 frozen — 토글 옵션 없음 (코드 한계)
함정: tune_targets=[] default 그대로 두면 모든 gradient frozen, 학습 자체가 안 됨. 오류 메시지도 없음.

확정 결정 사항 (260430)

#항목결정근거
1Pi0.5 base ckptlerobot/pi05_basepi05_droid HF에 없음 (초기 추측 오류)
2fine-tune scopetune_targets=[visual, llm, action_expert]lerobot upstream full fine-tune 기본값과 동등
3proprioceptiondisable_proprioceptive_obs=trueP2 state 모두 zero placeholder
4data mix 순서B1(synthetic-only) → B2(real+syn)DreamGen 효과 측정 baseline 먼저
5n_action_steps16IDM horizon 정합 (pi05_base default 50 override)
6dtype / 메모리bf16 + compile + gradient_checkpointinglerobot 표준
7eff batch32 × 8 GPU × grad_accum 1 = 256lerobot pi05 권장 256과 정합

3 4단계 실행 플랜

Phase A — 환경 빌드 (login, ~30분)

conda create -p /home/nas_main/taewoongkang/conda_envs/envs/pi05 python=3.12 -y conda activate /home/nas_main/taewoongkang/conda_envs/envs/pi05 cd /home/nas_main/taewoongkang/repos/Robotics/robot-data-gen bash setup/setup_lerobot.sh bash setup/setup_rlpd_robosuite.sh pip install -e . pip install "lerobot[pi]@git+https://github.com/huggingface/lerobot.git"

검증: from resfit.lerobot.scripts.train_bc import train import OK + ENV_ROBOTS에 CloseDoubleDoor 등 24 task PandaOmron 매핑 확인.

Phase B — sanity smoke (1 GPU, 200 step, login 가능)

timeout 5400 accelerate launch --num_processes=1 --mixed_precision=bf16 \ -m resfit.lerobot.scripts.train_bc \ --dataset.repo_id=Keh0t0/dreamgen_robocasa_p2 \ --policy.type=pi05 --policy.pretrained_path=lerobot/pi05_base \ --policy.n_action_steps=16 --policy.chunk_size=16 \ --batch_size=2 --steps=200 \ --tune_targets='[visual, llm, action_expert]' \ --pad_state_first=true --disable_proprioceptive_obs=true \ --eval_freq=0 --wandb.enable=false --debug=true

Phase C — B1 본 학습 (8 GPU sbm, 20K step)

conda activate pi05 sbm "bash scripts/launch_pi05_dreamgen_p2.sh" \ --gres=gpu:8 -c 112 --mem 1600GB --qos=core-extra

스크립트 핵심 파라미터: --steps=20000, --batch_size=32, eval_freq=2000, eval_env_name=CloseDoubleDoor, --eval.n_episodes=24. eval 2K마다 SR 추세 모니터.

Phase D — 평가 + B2 (B1 결과 보고 결정)

Run데이터의미
B0real heldout 720 ep onlysynthetic 없는 baseline
B1 ← 이번 차례synthetic P2 1440 ep onlyDreamGen 단독 효과
B2real + synthetic 50:50DreamGen 논문 권장, 베스트 시나리오

4 Takeaway

DreamGen 파이프라인 완주까지 한 단계

P2 1440 ep synthetic 데이터 확보 → Pi0.5 fine-tuning 설계 완료. DAVIAN fork의 tune_targets 함정과 projection 동결 한계를 미리 파악하여 실수 없이 진행 가능. B1 결과가 나오면 DreamGen 합성 데이터의 실제 policy improvement 효과를 최초로 측정할 수 있음.

5 Next Steps

알려진 리스크

  • GPU OOM: PaliGemma 3B + Gemma expert + visual all grad. batch=32 bf16 gradient_checkpointing도 빡빡 가능 → grad_accum 2~4 또는 batch=16로 fallback
  • tune_targets 미적용 잠재 문제: lerobot main API 변경 시 attribute path 깨질 수 있음. smoke 단계에서 trainable params 직접 출력 확인 필수
  • projection 동결: action_in_proj/out_proj/time_mlp/state_proj 항상 frozen. action 12→32→12 매핑 핵심 모듈에 grad 안 켜짐. 학습 불안정 시 train_bc.py 패치 검토
  • compile=true × accelerate DDP: torch.compile + DDP 호환 이슈 가능 → 깨지면 compile=false (속도 ~20% 저하)

B1 완료 후

24 task × 24 ep 시뮬레이터 SR 측정 → per-task SR heatmap. B0(real-only baseline) 대비 delta 확인. B2 mix 진행 여부 결정. DreamGen 논문 비교: B0 vs B1 vs B2 SR 표.