G1 VLA fine-tuned checkpoints

Final checkpoints of the 5 models x 5 Unitree G1 datasets fine-tuning sweep. Each run: 50,000 steps, global batch 256 on 8 GPUs (H100; some Galaxea/lingbot runs finished on B300 with the same global batch), otherwise the model's default fine-tuning config. Folder name = <model>_<dataset>_step<steps>_gbs<global batch>. Each folder holds the policy weights, config, pre/post-processors (incl. normalization stats) and train_config.json; optimizer state is not included.

Folder Model Dataset Steps Epochs
galaxea-g05_g1-carry-box_step50000_gbs256 galaxea-g05 (from OpenGalaxea/G05) aarontung/g1-carry-box 50,000 156
galaxea-g05_g1-fold-towel_step50000_gbs256 galaxea-g05 (from OpenGalaxea/G05) aarontung/g1-fold-towel 50,000 67
galaxea-g05_g1-hang-keys_step50000_gbs256 galaxea-g05 (from OpenGalaxea/G05) aarontung/g1-hang-keys 50,000 148
galaxea-g05_g1-load-clothes-washing-machine_step50000_gbs256 galaxea-g05 (from OpenGalaxea/G05) aarontung/g1-load-clothes-washing-machine 50,000 127
galaxea-g05_g1-plate-into-rack_step50000_gbs256 galaxea-g05 (from OpenGalaxea/G05) aarontung/g1-plate-into-rack 50,000 169
gr00t-n1.7-3b_g1-carry-box_step50000_gbs256 gr00t-n1.7-3b (from nvidia/GR00T-N1.7-3B) aarontung/g1-carry-box 50,000 156
gr00t-n1.7-3b_g1-fold-towel_step50000_gbs256 gr00t-n1.7-3b (from nvidia/GR00T-N1.7-3B) aarontung/g1-fold-towel 50,000 67
gr00t-n1.7-3b_g1-hang-keys_step50000_gbs256 gr00t-n1.7-3b (from nvidia/GR00T-N1.7-3B) aarontung/g1-hang-keys 50,000 148
gr00t-n1.7-3b_g1-load-clothes-washing-machine_step50000_gbs256 gr00t-n1.7-3b (from nvidia/GR00T-N1.7-3B) aarontung/g1-load-clothes-washing-machine 50,000 127
gr00t-n1.7-3b_g1-plate-into-rack_step50000_gbs256 gr00t-n1.7-3b (from nvidia/GR00T-N1.7-3B) aarontung/g1-plate-into-rack 50,000 169
lingbot-vla-v2_g1-carry-box_step50000_gbs256 lingbot-vla-v2 (from robbyant/lingbot-vla-v2-6b) aarontung/g1-carry-box 50,000 156
lingbot-vla-v2_g1-fold-towel_step50000_gbs256 lingbot-vla-v2 (from robbyant/lingbot-vla-v2-6b) aarontung/g1-fold-towel 50,000 67
lingbot-vla-v2_g1-hang-keys_step50000_gbs256 lingbot-vla-v2 (from robbyant/lingbot-vla-v2-6b) aarontung/g1-hang-keys 50,000 148
lingbot-vla-v2_g1-load-clothes-washing-machine_step50000_gbs256 lingbot-vla-v2 (from robbyant/lingbot-vla-v2-6b) aarontung/g1-load-clothes-washing-machine 50,000 127
lingbot-vla-v2_g1-plate-into-rack_step50000_gbs256 lingbot-vla-v2 (from robbyant/lingbot-vla-v2-6b) aarontung/g1-plate-into-rack 50,000 169
molmoact2_g1-carry-box_step50000_gbs256 molmoact2 (from allenai/MolmoAct2) aarontung/g1-carry-box 50,000 156
molmoact2_g1-fold-towel_step50000_gbs256 molmoact2 (from allenai/MolmoAct2) aarontung/g1-fold-towel 50,000 67
molmoact2_g1-hang-keys_step50000_gbs256 molmoact2 (from allenai/MolmoAct2) aarontung/g1-hang-keys 50,000 148
molmoact2_g1-load-clothes-washing-machine_step50000_gbs256 molmoact2 (from allenai/MolmoAct2) aarontung/g1-load-clothes-washing-machine 50,000 127
molmoact2_g1-plate-into-rack_step50000_gbs256 molmoact2 (from allenai/MolmoAct2) aarontung/g1-plate-into-rack 50,000 169
pi05-base_g1-carry-box_step50000_gbs256 pi05-base (from lerobot/pi05_base) aarontung/g1-carry-box 50,000 156
pi05-base_g1-fold-towel_step50000_gbs256 pi05-base (from lerobot/pi05_base) aarontung/g1-fold-towel 50,000 67
pi05-base_g1-hang-keys_step50000_gbs256 pi05-base (from lerobot/pi05_base) aarontung/g1-hang-keys 50,000 148
pi05-base_g1-load-clothes-washing-machine_step50000_gbs256 pi05-base (from lerobot/pi05_base) aarontung/g1-load-clothes-washing-machine 50,000 127
pi05-base_g1-plate-into-rack_step50000_gbs256 pi05-base (from lerobot/pi05_base) aarontung/g1-plate-into-rack 50,000 169

Load a LeRobot policy (pi05 / GR00T / MolmoAct2):

from huggingface_hub import snapshot_download
from lerobot.policies.factory import get_policy_class
path = snapshot_download("jasonren-ai2/g1-vla-finetune-checkpoints", allow_patterns="<folder>/*") + "/<folder>"
policy = get_policy_class("<pi05|groot|molmoact2>").from_pretrained(path)

lingbot-vla-v2 folders hold the Hugging Face checkpoint (sharded safetensors + tokenizer/processor) plus norm_stats.json, robot_config.yaml (G1 state/action mapping) and train_config.yaml; load them with the lingbot-vla-v2 code.

GalaxeaVLA folders hold model.pt (the G05 training checkpoint with optimizer state removed; weights under model_state_dict), dataset_stats.json (normalization), action_tokenizer.pt and the Hydra config.yaml / overrides.yaml; load them with the GalaxeaVLA code.

GalaxeaVLA G1 configs and patches. GalaxeaVLA has no Unitree G1 setup upstream, so each Galaxea folder also has a galaxea_g1/ subfolder with the files we added to the GalaxeaVLA repo, in the same layout (copy configs/ into a GalaxeaVLA checkout and apply the patches; see galaxea_g1/README.md):

  • configs/data/parts_meta/g1.yaml: G1 action/state layout inside G05's 27-wide vector (e.g. fold-towel copy)
  • configs/data/g1*.yaml, configs/task/g1*.yaml: data and training configs (change the local dataset path on line 135)
  • patches/g1_dataset_loader.patch (needed to read the G1 datasets) and an optional cluster-only finetune.py patch

Training loss

Training loss of all 25 runs (log scale; faint = raw every 200 steps, bold = 5-point moving average). Losses are not comparable across models (different objectives and normalization).

Training loss of all 25 runs

  • lingbot-vla-v2 carry-box diverged to NaN after a resume at ~29.5k; it was restarted from its clean 25k weights for 25k more steps (dashed line in the plot). The uploaded checkpoint is that restarted run, verified NaN-free.
  • GalaxeaVLA fold-towel / load-clothes-washing-machine moved from H100 to B300 at ~41k (32 per GPU, no accumulation, same global batch); the short loss bump there recovers within ~2k steps.

Notes: training loss only, no held-out validation. GR00T runs resize all cameras to 640x480 (head camera squashed).

Downloads last month
10
Safetensors
Model size
6B params
Tensor type
F32
·
BF16
·
Video Preview
loading

Collection including RoboColosseum/g1-hang-keys-molmoact2