Fine-Tuning#

In this lesson, we’ll fine-tune GR00T 1.7 on the converted LeRobot dataset and prepare artifacts for policy export and deployment.

To do that, we’ll:

  • Validate dataset metadata and modality configuration before launch.

  • Fine-tune GR00T 1.7 on the real-world LeRobot dataset.

  • Locate the resulting checkpoint for downstream LEAPP export.

Fine-Tune GR00T 1.7 on Real Data#

Run this tutorial on an x86_64 workstation with an L40-class GPU or better (40+ GB VRAM).

Use the nvidia-isaac/gr00t-leapp-export repository and the gr00t_workflow_0.1 tag for Unitree G1 fine-tuning and downstream export compatibility.

Tip

If you want to skip fine-tuning, use the provided real robot model, nvidia/GR00T-N1.7-ApplePnP-V1.

  1. Clone and install gr00t-leapp-export:

    git clone --branch gr00t_workflow_0.1 --recurse-submodules https://github.com/nvidia-isaac/gr00t-leapp-export.git
    cd gr00t-leapp-export
    uv sync --python 3.10
    
  2. Accept model access terms for nvidia/GR00T-N1.7-3B and nvidia/Cosmos-Reason2-2B, then authenticate:

    uv run hf auth login
    

    Note

    <dataset-dir> refers to the converter output directory. With default conversion settings, this is ${ISAAC_ROS_WS}/recordings/lerobot_output.

Configuration#

Parameter

Description

Value

--base-model-path

Pretrained GR00T weights

nvidia/GR00T-N1.7-3B

--dataset-path

Path to real-world LeRobot dataset

<dataset-dir>

--embodiment-tag

Robot embodiment identifier

NEW_EMBODIMENT

--max-steps

Total training steps

10000

--save-steps

Checkpoint frequency

2000

--global-batch-size

Effective batch size

32

Validate the Dataset#

  1. Before training, validate <dataset-dir>/meta/info.json:

    • fps matches the recorder sync_rate (30 Hz by default).

    • total_episodes and total_frames reflect the expected recording volume.

    Note

    For the apple-to-plate task, collect at least 200 episodes before fine-tuning.

Modality Config#

For G1 datasets, the converter writes a default modality config file:

<dataset-dir>/new_embodiment_config_defaults.py

Use this file directly in the fine-tuning command.

It includes:

  • Seven G1 state keys from left_leg through right_hand.

  • RELATIVE action representation for arms.

  • ABSOLUTE action representation for hands, waist, and optional locomotion or effort keys.

  • The model-default 16-step action prediction horizon.

  • Per-body-part effort_<group> action keys only when the recorder observed non-zero feed-forward torques.

Note

For the default apple-to-plate dataset, no additional modality edits are required.

Launch Training#

  1. Run fine-tuning from the root of gr00t-leapp-export:

    CUDA_HOME=/usr/local/cuda \
    CUDA_VISIBLE_DEVICES=0 \
    PYTORCH_CUDA_ALLOC_CONF=expandable_segments:True \
    uv run python gr00t/experiment/launch_finetune.py \
        --base-model-path nvidia/GR00T-N1.7-3B \
        --dataset-path <dataset-dir> \
        --embodiment-tag NEW_EMBODIMENT \
        --modality-config-path <dataset-dir>/new_embodiment_config_defaults.py \
        --num-gpus 1 \
        --output-dir <output-dir> \
        --max-steps 10000 \
        --save-steps 2000 \
        --global-batch-size 32 \
        --dataloader-num-workers 4
    

The training script saves checkpoints to <output-dir>/checkpoint-<step>/.

The --max-steps, --save-steps, and --global-batch-size values are starting points. Tune them for dataset size and available hardware.

Hardware Requirement#

Note

Fine-tuning GR00T requires at least 40 GB of VRAM (for example, L40, A100, H100, RTX 6000 Ada, or RTX PRO 6000 Blackwell). Refer to the Hardware Recommendation page for full requirements.

See also

Refer to the following resources for additional detail:

Key Takeaways#

You fine-tuned GR00T 1.7 on real-world demonstrations and produced checkpoints ready for LEAPP export.