PPS_checkpoints / README.md
Tritiumac's picture
Add model card
6cee890 verified
|
Raw History Blame Contribute Delete
3.6 kB
---
license: apache-2.0
library_name: openpi
tags:
- robotics
- vla
- pi0
- isaaclab
- manipulation
---
# PPS Checkpoints β€” IsaacLab DROID proxy steering models
PROXY steering models for [`TritiumR/pps`](https://github.com/TritiumR/pps),
trained on IsaacLab DROID manipulation tasks with joint-position actions.
Each task ships a **pair** of proxies used by `eval_steering.py`:
- `task/<step>/` β€” the **task proxy**, trained on task demonstrations
- `reference/20000/` β€” the **reference proxy**, the steering baseline
At inference the base pi0.5 velocity is nudged by their difference:
```
v_t[:, :, :proxy_action_dim] += steer_scale * (task_v_t - ref_v_t)
```
## Contents
| Task | Task proxy | Reference proxy | IsaacLab task id |
|---|---|---|---|
| pot | `task/24000` | `reference/20000` | `Isaac-Pot-Droid-Visuomotor-v0` |
| tea | `task/32000` | `reference/20000` | `Isaac-Tea-Droid-Visuomotor-v0` |
| weight | `task/24000` | `reference/20000` | `Isaac-Weight-Droid-Visuomotor-v0` |
Only the final task step and the reference are published β€” these are exactly the
checkpoints the evaluation scripts load. Optimizer state is not included, so
these are for **inference / steering, not resuming training**.
Each step directory holds `model.safetensors` (the Gemma-based action expert
plus projection heads, ~135 MB fp32), `metadata.pt`, and
`assets/cn356/<dataset>/norm_stats.json`.
## Download
> [!IMPORTANT]
> These must land under a directory literally named `checkpoints/`.
> `eval_steering.py` derives the training-config name from the path β€” it finds
> the `checkpoints/` segment and reads the **next** segment as the config name
> (e.g. `.../checkpoints/proxy_isaaclab_droid_pot_pi05_jointpos/task/24000`).
> Unpacking anywhere else raises `Could not derive a training config name`.
From the repo root:
```bash
python openpi/fetch_checkpoints.py
```
or equivalently:
```python
from huggingface_hub import snapshot_download
snapshot_download(
repo_id="Tritiumac/PPS_checkpoints",
local_dir="openpi/checkpoints",
)
```
## Usage
You also need the base pi0.5 policy at
`openpi/checkpoints/pytorch/pi05_droid_jointpos`, and the scene assets from
[Tritiumac/PPS_assets](https://huggingface.co/datasets/Tritiumac/PPS_assets).
```bash
python eval_steering.py \
--task Isaac-Pot-Droid-Visuomotor-v0 \
--base_checkpoint_dir openpi/checkpoints/pytorch/pi05_droid_jointpos \
--task_checkpoint_dir openpi/checkpoints/proxy_isaaclab_droid_pot_pi05_jointpos/task/24000 \
--ref_checkpoint_dir openpi/checkpoints/proxy_isaaclab_droid_pot_pi05_jointpos/reference/20000 \
--prompt "remove the lid of the pot and put egg in it" \
--exp_name demo --seed_start 42 --seed_end 43
```
Prompts used for the published results:
| Task | Prompt |
|---|---|
| pot | `remove the lid of the pot and put egg in it` |
| tea | `pour the tea from the teapot into the cup` |
| weight | `put pear and apple on the scale` |
## Model details
Configs are registered in `openpi/src/openpi/training/config.py` under names
matching the directory names (`proxy_isaaclab_droid_<task>_pi05_jointpos`):
- action expert: `gemma_12m`, action horizon 15, action dim 8
- vision backbone: `facebook/dinov3-vits16-pretrain-lvd1689m`
- quantile normalization, joint-position action space
The DINOv3 backbone is **not bundled** β€” it is fetched from the Hub at load
time and carries its own license terms.
## License
Apache-2.0, matching [openpi](https://github.com/Physical-Intelligence/openpi).
The DINOv3 vision backbone is a runtime dependency under Meta's DINOv3 license.