pi0.5 LoRA finetunes on LIBERO-Object
Anonymous model release for the ICLR submission Which VLAs Learn a Grasp That Transfers to New Object Positions? It holds every checkpoint of ours that the paper evaluates: the pi0.5 LoRA on all 500 LIBERO-Object demonstrations (Table 1), its training-step curve, and the data ladder (Sec. 6). The code, the evaluation harness and one row per evaluated episode are in the paper's supplementary material.
Checkpoints
| path | openpi config | demos | step | evaluated in |
|---|---|---|---|---|
pi05_lora_libero_object/step_11999 |
pi05_libero_object_orig |
500 (all) | 11999 | Table 1 (swap and task cell, with and without the harness), Sec. 5 |
pi05_lora_libero_object/steps/step_<S>, S = 1000 ... 11000 |
pi05_libero_object_orig |
500 | every 1000 | training-step curve (stock, policy alone; swap in the harness at 1000, 2000, 4000, 6000, 8000) |
pi05_lora_libero_object_ladder/p50_250demos/step_1999 |
pi05_libero_object_p50 |
250 | 1999 | data ladder |
pi05_lora_libero_object_ladder/p25_125demos/step_1999 |
pi05_libero_object_p25 |
125 | 1999 | data ladder |
pi05_lora_libero_object_ladder/p10_50demos/step_1999 |
pi05_libero_object_p10 |
50 | 1999 | data ladder |
pi05_lora_libero_object_ladder/p02_10demos/step_<S>, S = 500, 1000, 1500, 1999 |
pi05_libero_object_p02 |
10 (one per task) | 500-1999 | data ladder |
Each step_* folder is an openpi checkpoint without its optimizer state:
params/ (Orbax, the full parameter tree of the finetuned model, 6 GB) and
assets/libero/<dataset>/norm_stats.json, the normalization statistics it was trained and is served
with.
Recipe
openpi's pi05_base with LoRA on both experts (gemma_2b_lora, gemma_300m_lora), trained on
LIBERO's own LIBERO-Object demonstrations (native 128x128 frames rotated 180 degrees, no-op steps
dropped, the task string as the prompt). Batch 24, AdamW with gradient clipping at 1.0, cosine
schedule with 200 warmup steps and peak 5e-5 decaying to 1e-6, no EMA, action horizon 10. The full
run is 12,000 steps; every ladder rung is 2,000 steps on a stratified subset of the demos (at 2 %, one
demo per task). The configs are in training/openpi.patch (against openpi 215abfb). The data
conversion and the launch script are in the supplementary material's training/ folder.
Use
# openpi at 215abfb with the patch (it adds the five configs; serving needs them)
git clone --recurse-submodules https://github.com/Physical-Intelligence/openpi.git && cd openpi
git checkout 215abfb && git apply ../training/openpi.patch && GIT_LFS_SKIP_SMUDGE=1 uv sync
# one checkpoint
hf download sketcH2027/evaluated_models --include "pi05_lora_libero_object/step_11999/*" --local-dir models
uv run scripts/serve_policy.py --port 8000 policy:checkpoint \
--policy.config=pi05_libero_object_orig --policy.dir=models/pi05_lora_libero_object/step_11999
Serve a ladder checkpoint with its own config (pi05_libero_object_p50, _p25, _p10, _p02). A
LoRA checkpoint served with a non-LoRA config loads without error and answers as the wrong model.
The server speaks openpi's LIBERO protocol: frames rotated 180 degrees and padded to 224, an 8-D state
(end-effector position, axis-angle orientation, two finger joints), and ten 7-D delta actions, of
which the paper executes five per query.
License
These weights are finetuned from openpi's pi05_base and are subject to the terms under which
pi05_base is distributed.