MemerPi05Policy(BasePolicy) 골격 작성 완료. 3-venv IPC 설계 (memer torch / pi05 JAX / robocasa sim), reset()에서 prior 비디오 → MemER FIFO, get_action()에서 subtask → Pi0.5 action chunk.
scene-mem-benchmark의 memory_success(approach fixture ∧ door open)를 실제 측정하려면
low-level VLA인 Pi0.5-RoboCasa가 필요하다.
260513 오전 probe에서 MemER (dusting ckpt)의 vocabulary lock-in 문제를 확인했고,
같은 날 오후 Pi0.5+MemER LoRA cascade 통합 plan을 확정했다.
transformers.AutoModel로 바로 로드 안 됨.
MemER(torch 2.11)와 완전히 다른 프레임워크 → process 분리 + IPC 필수.
action dim 레이아웃을 정확히 알아야 proprio state 매핑이 가능.
이 문서는 cascade adapter 작성 전에 Pi0.5의 내부 구조(파라미터, action/state spec,
로딩 API)를 확정하고, 다음 세션에서 즉시 코딩에 들어갈 수 있는 골격을 작성하기 위해 만들어졌다.
소스: _CHECKPOINT_METADATA, params/_METADATA, assets/norm_stats.json 직접 분석.
대상: robocasa/robocasa365_checkpoints의
pi05_pretrain_human300/multitask_learning/75000/ (44 files, 260513 오전 49s 다운 완료).
PaliGemma (Google) 기반 + Pi-style action expert:
| 컴포넌트 | 세부 |
|---|---|
| Image encoder (PaliGemma.img.Transformer) | ViT 27 layers, hidden 1152, MLP 4304, 16 heads × 72 dim. Patch: 14×14 → 1152. Out projection: 1152 → 2048. |
| LLM (PaliGemma.llm) | Gemma-style, 18 layers, hidden 2048, vocab 257152, 8 heads × 256 dim |
| Two-pathway parallel attention | Path 1: 2048 dim (image+text expert). Path 2: 1024 dim (action expert). 각각 별도 q_einsum/kv_einsum + mlp + pre_attention_norm |
| Action head (flow matching) | time_mlp_in/out (1024→1024), action_in_proj (32→1024), action_out_proj (1024→32) |
| 총 파라미터 | PaliGemma-3B + action expert ~500M ≈ ~3.5B (bf16 ~7GB) |
state 32-dim + action 32-dim 모두 정규화 상수 보유. active dims (std > 1e-6) 기준:
| dim | 의미 | std (raw) |
|---|---|---|
| 0–5 | arm OSC_POSE: Δx Δy Δz Δrx Δry Δrz | 0.31–0.37 (xyz), 0.08–0.10 (rpy) |
| 6 | gripper (binary-ish) | 0.99 |
| 7–9 | base velocity: vx vy wz | 0.14–0.23 |
| 10 | (padding) | 0.0 |
| 11 | torso | 0.70 |
| 12–31 | cross-embodiment padding (unused) | 1.0 (의미 없음) |
3-venv IPC 설계:
| 컴포넌트 | venv | 역할 |
|---|---|---|
| eval_runner orchestrator | robocasa (3.11) | scene-mem env 로드 + rollout 루프 |
| MemerPi05Policy wrapper | robocasa | BasePolicy.reset / get_action 구현 |
| MemER inference subprocess | memer (3.11, torch 2.11) | LoRA 머지 ckpt + Qwen3-VL infer |
| Pi0.5 inference subprocess | robomme_policy_learning/.venv (3.12, jax 0.5.3) | orbax/openpi action chunk emit |
| 단계 | 시간 | 비고 |
|---|---|---|
| Memory build (per scenario) | ~80s | 3 videos × stride 100 × 0.27s/call; 1회만, test 간 공유 |
| Per-test rollout | ~200s | 1500 step × (Pi0.5 ~0.1s + MemER 매 N step ~0.8s + mujoco ~0.01s) |
| Per-scenario | ~680s (~11분) | 80s + avg 3 tests × 200s |
| 257 scenario sequential | ~47h | 순차 실행 |
| 8 GPU SLURM batch | ~6h | sbm, 병렬화 |
| 30 scenario subset | ~5h | combo_002(27개) 우선 — 권장 시작점 |
MemER LoRA 출력이 Pi0.5의 학습 분포 prompt와 정확히 매치하는지. dusting MemER는 "place X on bottom shelf"만 출력 → RoboCasa 학습된 Pi0.5에겐 의미 없음. RoboCasa LoRA (Job 2448) 학습 후 비교 필수.
scene-mem 비디오: robot0_agentview_left.mp4. robosuite live obs: robot0_agentview_left_image(일반적). eval_runner.py의 env._get_observations() 출력 1회 인쇄해서 정확한 키 확인 필요.
비디오 256×256, MemER resize → 320×180. Pi0.5 학습 시 해상도는 norm_stats에 image stats 없음 → openpi config 직접 확인 필요.
Pi0 family는 보통 action_horizon=50 chunked output. eval_runner.py는 1 step = 1 action → chunk[0]만 쓰거나 매 50 step마다 chunk를 새로 받는 두 가지 전략. latency vs reactivity tradeoff.
state 32-dim 중 active ~12. 어느 슬롯이 어떤 proprio 값인지 정확한 매핑은 openpi/robocasa training config에서 확인. norm_stats의 dim 순서와 robosuite obs 키 순서 대조 필요.
PaliGemma LLM의 동일 layer 안에 text/image expert(2048-dim)와 action expert(1024-dim)가 병렬로 co-exist하는 구조.
이 설계 덕분에 언어 prompt("navigate to the freezer")와 시각 관찰이 action denoising에 직접 조건으로 작용한다.
MemER subtask string이 곧 Pi0.5의 prompt 입력 → cascade 연결점이 명확하다.
pi05_robocasa config 이름 확인이 필수 첫 단계.
COMPLETED → swift export --merge_lora → combo_002 probe → vocab 비교 (dusting vs LoRA).
FAILED → slurms/robocasa_memer_tier1_lora_2448.out 확인. max_length=3200 부족 / OOM 예상.
robomme_policy_learning/.venv의 src/openpi/ local copy에서 Policy.from_checkpoint() API 확인.
pi05_robocasa config 이름 확정. login node 1 GPU에서 1 forward pass 검증(≤100 step debug threshold).
memer/memer_eval/memer_pi05_policy.py — 위 골격 기반. 단 vocab sanity check 완료 후 RoboCasa LoRA로 MemER 교체.
1단계 MVP: dusting LoRA placeholder cascade, combo_002 × 1 test, env.step() 1500 step 완주만 확인.
combo_002 (27 scenarios) 먼저 (~5h, login node or 1-GPU sbm). memory_success baseline 측정.
그 다음 257 scenario 전체 → SLURM 8 GPU 병렬 (~6h).