RACE_Robotwin / README.md
SeonghoonYu's picture
add 100-episode results table
5c672c4 verified
|
Raw
History Blame Contribute Delete
3.09 kB
---
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
```
<task>/
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
`<task>/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 <P> policy:checkpoint \
--policy.config=st_<task>_phase_loc[_h75|_h100] --policy.dir=<downloaded dir>
```
`--policy.config` must match the action horizon (`st_<t>_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.