π0 (pi0) - LIBERO finetuned v044 (GGUF for vla.cpp)
GGUF conversion of lerobot/pi0_libero_finetuned_v044
for inference with vla.cpp, a lightweight
C++ inference engine for Vision-Language-Action models built on top of
llama.cpp.
π0 pairs a PaliGemma vision-language backbone with a Gemma action expert running a flow-matching head. On LIBERO it matches the lerobot reference and runs roughly two orders of magnitude faster than the lerobot CPU path.
Usage
# Terminal 1 - serve (use the CUDA build for inference)
./build-cuda/vla-server --bind tcp://*:5566 \
pi0-libero-finetuned-v044.gguf
# Terminal 2 - drive a LIBERO episode (inside the LIBERO uv venv)
python eval/client/run_sim_client_direct.py \
--arch pi0 \
--task libero_object --task-id 0 --n-episodes 10 \
--n-action-steps 32 \
--vla-addr tcp://localhost:5566
Notes:
- π0 uses the gated
google/paligemma-3b-pt-224tokenizer. Runhuggingface-cli loginand accept the licence, or point--tokenizerat a local copy. --n-action-stepsis 32 for this checkpoint (50 was used for the Orin Nano sweep).
Benchmark
Full libero_object sweep (10 tasks × 20 episodes = 200 episodes):
| Hardware | n_act | Success rate | client/step | client/call | Peak mem |
|---|---|---|---|---|---|
| RTX 3060 (sm_86) | 32 | 87.5% | 9.74 ms | 312 ms | 5548 MiB VRAM |
| Jetson AGX Orin (sm_87) | 32 | 85.5% | 27.90 ms | 893 ms | 640 MiB RAM |
| Jetson Orin Nano 8 GB (sm_87, split) | 50 | 80.5% | 39.10 ms | 1955 ms | 6068 MiB RAM |
The Orin Nano run was split (server on the Nano, client + LIBERO sim on a second machine) because a co-resident client + sim + server exceeds 8 GB; its timings include cross-machine network latency.
License
Weights follow the upstream license of
lerobot/pi0_libero_finetuned_v044
(Apache-2.0). The vla.cpp conversion tooling and inference engine are MIT-licensed.