dongyoonkim/grootn17-lora-so101-eraser-tier1
grootn17-lora-so101-eraser-tier1
LoRA adapter for `nvidia/GR00T-N1.7-3B`, trained on a single SO-ARM101 manipulation task (90 episodes, "Place the white eraser on the red square"). Produced with the gr00t-n17-lora wrapper.
Status: demo / verification only. This adapter exists to demonstrate that the wrapper successfully restores LoRA support on GR00T N1.7. It is trained on a deliberately small, single-task dataset and is not a production-quality skill. See "Limitations" below.
Adapter configuration
Note on `adapter_config.json`. Thetask_typefield is intentionally absent. PEFT serialisestask_type=Noneby omitting the key, and the Hub's metadata validator displays a "Configuration Parsing Warning" because its schema expects a known string here. This is cosmetic:PeftModel.from_pretrainedloads a genericPeftModelwhentask_typeis unset, which is the correct path for GR00T'sdict-inputforward. Setting it to an NLP enum value such asFEATURE_EXTRACTIONwould force aninput_ids/attention_maskkeyword signature on the base model and break inference. See the wrapper's `docs/debugging_journey.md` § Blocker 2 for context.
Usage
Install the wrapper and run the four verification checks:
git clone https://github.com/jinnymo/gr00t-n17-lora
cd gr00t-n17-lora
pip install -r requirements.txt
huggingface-cli download nvidia/GR00T-N1.7-3B --local-dir models/GR00T-N1.7-3B
huggingface-cli download dongyoonkim/grootn17-lora-so101-eraser-tier1 \
--local-dir adapter
python verify_inference.py --base models/GR00T-N1.7-3B --adapter adapterExpected: all four checks pass (trainable percentage, non-zero LoRA-A weights, on-disk size, and a non-trivial forward output difference between adapter-on and adapter-off).
Training data
Single SO-ARM101 robot, single wrist camera (Innomaker U20CAM-1080P, 640x480 @ 30 fps), 90 demonstrations of placing a white eraser onto a red square. All trajectories are successful demonstrations; no recovery behavior is included.
Dataset: `dongyoonkim/so101-eraser-90ep-wrist`.
All 3D-printed parts use the official LeRobot STL files.
Training procedure
Open-loop evaluation
Mean absolute joint error (MAE), evaluated on three held-back trajectories from the same dataset:
For reference, on the same dataset and protocol:
- A full fine-tune of the same base reaches 1.30 deg MAE (model size ~15 GB).
- A LoRA-attention-only baseline (no
modules_to_save, no MLP targets) reaches 6.13 deg MAE.
Limitations
- Single-task, small-dataset baseline. Real-robot success rate is approximately 40% on this task. The same dataset caps a full fine-tune at ~46%, so most of the remaining gap is dataset-bound, not adapter-bound.
- Narrow training distribution. All 90 episodes are successful demonstrations; the policy has not been trained to recover from out-of-distribution states.
- Specific embodiment. SO-ARM101 with a single wrist camera. Other cameras / embodiments will require a different modality config and re-training.
- Demo / verification artifact, not a production skill.
License
Apache License 2.0.
