SpatialCasa-GR1 checkpoints (paper Table "main results, GR1")
Fine-tuned policy weights behind the GR1 rows of the SpatialCasa results table. Every checkpoint here was trained on
twanghcmut/SpatialCasa-GR1 (12 LeRobot v2.0 datasets
gr1_spatial.<Task>, 1,000 demos each; the 4 episodes with undecodable mp4s are dropped -> 11,996 episodes /
3,177,178 frames at 20 Hz; one 256x256 ego_view camera, 29-d joint state/action) and evaluated closed-loop on the
5,700-episode SpatialCasa-GR1 eval set (eval/episodes.jsonl, eval_seen + eval_novel, 720-step horizon, one start
state per item).
Code: GitHub Eric-nguyen1402/SpatialLIBERO, branch
robocasa-spatial-vla (project doc: docs/SPATIALCASA_GR1.md).
| folder | model | base init | what it is |
|---|---|---|---|
pi05_gr1/ck29999/ |
Ο0.5 (openpi JAX, PaliGemma 2B + 300M action expert) | RoboCasa365 Ο0.5 VLM + pi05_base action expert |
run rc365vlm_b256_4g, step 29,999, EMA weights (bf16) |
groot_n17_gr1/ck190000/ |
GR00T N1.7 3B (Isaac-GR00T) | nvidia/GR00T-N1.7-3B |
run chain n17_all12_bs64_v2 -> n17_rel_long -> long2 -> long3, n17_rel_long3_b192/checkpoint-30000 (= cumulative ck190000) |
eval/ |
- | - | full 5,700-episode eval summaries (summary.md) of both checkpoints |
gam_gr1/, lawam_gr1/ |
(reserved) | - | GAM and LaWAM GR1 runs are still training; they will be added here when they enter the table |
Results (closed-loop SR %, 5,700 episodes, pooled over eval_seen + eval_novel)
| policy | seen | L1 (easy) | L2 (medium single) | L3 (hard single) | medium (composed) | hard (composed) | 6-level avg | all |
|---|---|---|---|---|---|---|---|---|
| Ο0.5 ck29999 | 39.6 | 37.2 | 29.5 | 29.8 | 27.2 | 12.1 | 29.2 | 28.2 |
| GR00T N1.7 ck190000 | 25.0 | 16.7 | 15.9 | 13.3 | 13.8 | 5.2 | 15.0 | 14.1 |
| GR00T N1.7 base (0-shot, not uploaded) | 0.2 | 0.0 | 0.0 | 0.1 | 0.2 | 0.0 | 0.1 | 0.1 |
SR = success (target can on the goal relation, tilt < 15 deg, other objects moved < 2 cm, released, target at rest). Paired on the same 5,700 episodes: Ο0.5 solves 1,224 episodes GR00T does not, GR00T 415 that Ο0.5 does not (exact McNemar p = 1.6e-92). Paper split layout (train cells = eval_seen, novel = eval_novel; medium/hard = composed):
| policy | train seen | train easy | train medium | train hard | novel easy | novel medium | novel hard | all |
|---|---|---|---|---|---|---|---|---|
| Ο0.5 ck29999 | 39.6 | 37.8 | 30.2 | 14.6 | 36.7 | 24.3 | 9.6 | 28.2 |
| GR00T N1.7 ck190000 | 25.0 | 18.0 | 13.7 | 4.1 | 15.4 | 13.9 | 6.3 | 14.1 |
Full tables (Wilson CIs, SR with lift, failure breakdown, McNemar tests): eval/pi05_ck29999_full_summary.md,
eval/groot_n17_ck190000_full_summary.md.
pi05_gr1/ck29999/ β Ο0.5 full fine-tune
- Format: openpi checkpoint,
params/= orbax OCDBT with all 51 arrays (3.353 B params, EMA 0.999, bf16), no optimizer state;assets/spatialcasa_gr1_all12/norm_stats.json(quantile norm stats of state and delta actions);assets/overlay.json(our loader metadata);_CHECKPOINT_METADATA;rc365vlm_b256_4g_ck29999.md5(md5 per file). - Recipe: config
pi05_spatialcasa_gr1_full(robocasa/train/pi05/spatialcasa_pi05.py), full fine-tune, FSDP 4 on 4x A100 80GB, global batch 256, 30,000 steps = 7.68 M samples = 2.42 epochs, AdamW (b1 0.9, b2 0.95), peak LR 5e-5, linear warmup 1k then constant, grad clip 1.0, EMA 0.999, seed 42, 22.6 h. - Init: SigLIP + Gemma-2B VLM from RoboCasa365
pi05_pretrain_human300/multitask_learning/75000(robocasa/robocasa365_checkpoints); action expert / action projections / time MLP from openpipi05_base(REINIT_REGEX='(^PaliGemma/llm/.*_1/|^action_|^time_mlp)'). - I/O: one image (
ego_view->base_0_rgb, 224 resize-with-pad), 29-d state discretised into the prompt, prompt = plain task instruction; action chunk 16 x 29: arms + waist (dims 0:17) delta to the current state, 12 hand dims absolute 0/1 grip. The server returns absolute joint targets; the eval plays all 16 before the next query. - Load / serve (openpi checkout at
215abfb, unmodified; our config registers at import):
huggingface-cli download doanh25032004/SpatialCasa-GR1-checkpoints --include "pi05_gr1/ck29999/*" --local-dir ./ckpts
cd SpatialLIBERO # branch robocasa-spatial-vla
MODEL=pi05 VARIANT=full CKPT=$PWD/../ckpts/pi05_gr1/ck29999 PORT=5602 GPU=0 bash robocasa/tools/serve_vla_gr1.sh
# client: robocasa/tools/pi05_gr1_policy.py (Pi05Gr1Policy), wire = robocasa/tools/vla_wire.py (zmq + msgpack)
The loader starts from pi05_base (tree structure only) and overlays all 51 arrays from params/, so you get exactly the
fine-tuned model. Programmatic use: robocasa/tools/serve_pi05_gr1.py shows how to build the model + transforms.
groot_n17_gr1/ck190000/ β GR00T N1.7 fine-tune
- Format: Isaac-GR00T N1.7 checkpoint (HF
save_pretrained):model-0000{1,2}-of-00002.safetensors(bf16 weights),config.json,embodiment_id.json,processor_config.json,statistics.json(normalisation stats; the fine-tuned tag isrobocasa_gr1_tabletop),experiment_cfg/(training + modality config),trainer_state.json,wandb_config.json. No optimizer state.training_args.bin(pickle) is not uploaded. - Embodiment:
ROBOCASA_GR1_TABLETOP(slot 10), upstream RoboCasa-GR1 modality config: arms + hands RELATIVE, waist absolute, 8-step action chunk at 20 Hz (model action horizon 40, padded; the eval plays the whole chunk), oneego_viewframe (224x224), 29-d state; LLM and vision tower frozen, projector + DiT + VL-LN tuned. - Recipe (all 3x A100 DDP except stage 1; batch = global; samples cumulative):
| stage | run | from | steps | batch | LR (schedule) | samples |
|---|---|---|---|---|---|---|
| 1 | n17_all12_bs64_v2 |
nvidia/GR00T-N1.7-3B |
25k | 64 | 1e-4 cosine, warmup 5 % | 1.6 M |
| 2 | n17_rel_long_b192 |
stage 1 ck25000 | 100k | 192 | 1e-4 cosine, warmup 2 % | 20.8 M |
| 3 | n17_rel_long2_b192 |
stage 2 ck100000 | 60k | 192 | 5e-5 cosine, warmup 1k | 32.3 M |
| 4 | n17_rel_long3_b192 |
stage 3 ck60000 (= ck160000) | 30k | 192 | 1e-5 cosine to 0, warmup 500 | 38.1 M = 12.0 epochs |
Each continuation starts a fresh AdamW (wd 1e-5, grad clip 1.0), bf16, tf32. Cumulative name ck190000 = 100k + 60k + 30k steps of the batch-192 chain (after the 25k batch-64 warm start).
- Load / serve (Isaac-GR00T N1.7 checkout with its uv
.venv):
huggingface-cli download doanh25032004/SpatialCasa-GR1-checkpoints --include "groot_n17_gr1/ck190000/*" --local-dir ./ckpts
MODEL=$PWD/ckpts/groot_n17_gr1/ck190000 PORT=5555 GPU=0 bash robocasa/tools/serve_groot_n17.sh # BATCHED=1 for many clients
# or directly: python gr00t/eval/run_gr00t_server.py --model-path <dir> --embodiment-tag ROBOCASA_GR1_TABLETOP --use-sim-policy-wrapper
# client: robocasa/tools/gr00t_n17_policy.py
Eval protocol
robocasa/tools/eval_bench.py (harness), eval_worker.sh (one worker per shard), --max-worlds 2, 720 steps at 20 Hz, one start
state per item, ids = all 5,700 of eval/episodes.jsonl. Learning-curve checkpoints were selected on CL40 (40 fixed eval
episodes) + 47 replayed train scenes; the full 5,700 was run only for the reported checkpoints.
Licenses
These are derivative weights; each folder inherits the license of its base model, plus the dataset terms:
groot_n17_gr1/: fine-tuned fromnvidia/GR00T-N1.7-3B(which embedsnvidia/Cosmos-Reason2-2B): NVIDIA Open Model License. Isaac-GR00T code: Apache-2.0.pi05_gr1/: fine-tuned from openpipi05_base(Physical Intelligence, openpi weights terms; Apache-2.0 code) and the RoboCasa365 Ο0.5 checkpoint; the VLM is PaliGemma / Gemma, so the Gemma Terms of Use apply.- Dataset: see
twanghcmut/SpatialCasa-GR1.
Research use. No warranty. See LICENSE_NOTICE.md.
Model tree for doanh25032004/SpatialCasa-GR1-checkpoints
Base model
nvidia/GR00T-N1.7-3B