--- license: apache-2.0 tags: - robotics - robotwin - pi0.5 - vla --- # RACE RoboTwin — π0.5 t5k showcase checkpoints Single-task π0.5 (OpenPI) checkpoints on RoboTwin 2.0 (aloha-agilex, `demo_clean`, 50 demos/task), for 6 tasks: `pick_dual_bottles`, `move_can_pot`, `place_dual_shoes`, `place_can_basket`, `blocks_ranking_rgb`, `stack_blocks_three`. All fine-tunes start from the **5k-step teacher** (weak-teacher regime, "t5k"). ## Layout ``` / teacher_ac50/ # 5k-step teacher (JAX -> PyTorch conversion, float32) vlmfreeze_ac50/{5000,10000}/ # phase-loc fine-tune, VLM frozen, action horizon 50 vlmfreeze_ac75/{5000,10000}/ # action horizon 75 vlmfreeze_ac100/{5000,10000}/ # action horizon 100 ``` Each checkpoint dir has `model.safetensors`, `assets/` (norm stats), and `metadata.pt` (training config + step). Optimizer states are omitted. ## Results — 100 episodes (seeds 0+1, demo_clean, 50 ep each) | task | teacher ac50@5k | ac50@5k | ac75 best | ac100 best | |---|---|---|---|---| | pick_dual_bottles | 58% | 62% | **67%** (@2k) | 59% (@2k) | | move_can_pot | 58% | **76%** | 61% (@5k) | 54% (@8k) | | place_dual_shoes | 29% | **48%** | 39% (@9k) | 28% (@9k) | | place_can_basket | 45% | 47% | 40% (@4k) | **48%** (@7k) | | blocks_ranking_rgb | 48% | **64%** | 43% (@10k) | 41% (@6k) | | stack_blocks_three | 31% | **45%** | 36% (@9k) | 39% (@4k) | | **mean** | 44.8% | **57.0%** | 47.7% | 44.8% | ac75/ac100 "best" steps were selected on the seed-0 dense sweep, so their totals carry some selection bias; ac50@5k is a fixed step (no selection). Takeaway: action horizon 50 at 5k steps is the sweet spot — vlm-freeze fine-tuning beats the 5k teacher by +12.2%p on average. ### Best ac75 checkpoints `/vlmfreeze_ac75_best/` holds each task's best-performing ac75 checkpoint, selected over the 1k-10k dense eval sweep (demo_clean, seed 0, 50 episodes). `BEST_INFO.txt` inside records the source training step and score: | task | step | success | |---|---|---| | pick_dual_bottles | 2000 | 68% | | move_can_pot | 5000 | 64% | | place_dual_shoes | 9000 | 46% | | place_can_basket | 4000 | 46% | | blocks_ranking_rgb | 10000 | 46% | | stack_blocks_three | 9000 | 40% | ### Best ac100 checkpoints Two selections from the ac100 dense sweep: `vlmfreeze_ac100_best/` (designated best, used for the 100-episode report) and `vlmfreeze_ac100_max/` (per-row curve maximum). Steps: best = 2000/8000/9000/7000/6000/4000, max = 9000/2000/9000/2000/7000/7000 (task order as above). See each `BEST_INFO.txt`. ## Serving / eval Serve with OpenPI's `scripts/serve_policy.py` (PyTorch path): ``` python scripts/serve_policy.py --port

policy:checkpoint \ --policy.config=st__phase_loc[_h75|_h100] --policy.dir= ``` `--policy.config` must match the action horizon (`st__phase_loc` = 50, `_h75` = 75, `_h100` = 100); evaluate with RoboTwin 2.0 `script/eval_policy.py` (`--pi0_step` = the same horizon, `demo_clean`, seed 0, 50 episodes). Checkpoints are uploaded progressively as trainings/evals complete.