vrfai/gr00tn1d5-libero-object-gguf
GR00T-N1.5 — LIBERO object (GGUF for vla.cpp)
GGUF conversion of a LIBERO-object finetune of `nvidia/GR00T-N1.5-3B` for inference with **vla.cpp**, a lightweight C++ inference engine for Vision-Language-Action models built on top of `llama.cpp`.
GR00T-N1.5 pairs an Eagle-2 vision-language backbone with a flow-matching (DiT) action head, replayed in 16-step action chunks with min/max normalisation. The vision tower is baked into the combined GGUF, so no separate mmproj file is needed. The text tokenizer (`lerobot/eagle2hg-processor-groot-n1p5`) is pulled from the Hub by the client, so it is not bundled in this repo.
Files
Usage
# Terminal 1 — serve (use the CUDA build for inference). No mmproj argument.
VLA_GR00T_BF16_WEIGHTS=1 VLA_GR00T_EMBODIMENT=new_embodiment \
./build-cuda/vla-server --bind tcp://*:5566 \
gr00tn1d5-libero-object.gguf
# Terminal 2 — drive a LIBERO episode (inside the LIBERO uv venv)
python eval/client/run_sim_client_direct.py \
--arch gr00t_n1_5 \
--task libero_object --task-id 0 --n-episodes 10 \
--stats-json dataset_statistics.json \
--vla-addr tcp://localhost:5566Notes:
- Set
VLA_GR00T_EMBODIMENT=new_embodimentandVLA_GR00T_BF16_WEIGHTS=1(the latter is needed to fit an 8 GB card). - The client auto-downloads the
lerobot/eagle2hg-processor-groot-n1p5tokenizer from the Hub (trust_remote_code); no--tokenizeris needed. - Pass
--stats-json dataset_statistics.json(action/state un-normalisation). - The client uses
--n-action-steps 16for this checkpoint.
Benchmark
Full libero_object sweep (10 tasks × 20 episodes = 200 episodes):
Unlike GR00T-N1.6 / N1.7, N1.5's footprint fits the Jetson Orin Nano 8 GB. The Nano row was run split (server on the Nano, LIBERO client on a separate host); sys-Δ is the system-used-RAM rise, the faithful unified-memory figure on Tegra.License
Weights follow the upstream license of `nvidia/GR00T-N1.5-3B` (NVIDIA license — review and accept it before use). The vla.cpp conversion tooling and inference engine are Apache-2.0-licensed.
