Robotics
LeRobot
Safetensors
groot
gr00t-n1.5
so101
imitation-learning
flow-matching
vpraise00 commited on
Commit
e4e6c77
·
verified ·
1 Parent(s): f0790aa

Upload GR00T N1.5 fine-tuned policy at step 110000

Browse files
README.md ADDED
@@ -0,0 +1,130 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ ---
2
+ library_name: lerobot
3
+ pipeline_tag: robotics
4
+ base_model: nvidia/GR00T-N1.5-3B
5
+ base_model_relation: finetune
6
+ datasets:
7
+ - CoRL2026-CSI/Isaaclab-so101_11task_baseCaP_3300epi
8
+ license: other
9
+ license_name: nvidia-license
10
+ license_link: https://developer.download.nvidia.com/licenses/NVIDIA-OneWay-Noncommercial-License-22Mar2022.pdf
11
+ tags:
12
+ - robotics
13
+ - lerobot
14
+ - groot
15
+ - gr00t-n1.5
16
+ - so101
17
+ - imitation-learning
18
+ - flow-matching
19
+ - safetensors
20
+ ---
21
+
22
+ # CoRL2026-CSI/IsaacLab-so101-multi-gr00t
23
+
24
+ This is a LeRobot GR00T N1.5 policy fine-tuned from
25
+ [`nvidia/GR00T-N1.5-3B`](https://huggingface.co/nvidia/GR00T-N1.5-3B) on
26
+ [`CoRL2026-CSI/Isaaclab-so101_11task_baseCaP_3300epi`](https://huggingface.co/datasets/CoRL2026-CSI/Isaaclab-so101_11task_baseCaP_3300epi).
27
+
28
+ The model is intended for SO-101 style manipulation experiments using RGB observations,
29
+ robot proprioception, language instructions, and continuous action chunks. It is uploaded
30
+ as a LeRobot policy checkpoint and should be loaded through the matching LeRobot GR00T
31
+ implementation used for training.
32
+
33
+ ## Model Details
34
+
35
+ - **Policy type:** GR00T N1.5
36
+ - **Base model:** `nvidia/GR00T-N1.5-3B`
37
+ - **Tokenizer assets:** `lerobot/eagle2hg-processor-groot-n1p5`
38
+ - **Embodiment tag:** `new_embodiment`
39
+ - **Observation steps:** `1`
40
+ - **Action chunk size:** `16`
41
+ - **Action steps:** `16`
42
+ - **Max state/action dims:** `64` / `32`
43
+
44
+ ## Fine-Tuning Setup
45
+
46
+ - **Training steps:** `110000`
47
+ - **Approx. epochs:** `7.99`
48
+ - **Final training samples:** `28160000`
49
+ - **Final training loss:** `0.010196`
50
+ - **Runtime:** `76.72 hours`
51
+ - **Micro batch size:** `64`
52
+ - **Gradient accumulation steps:** `2`
53
+ - **Effective batch size:** `256`
54
+ - **Optimizer:** `adamw`, lr `0.0001`, weight decay `1e-05`
55
+ - **Scheduler:** `cosine_decay_with_warmup`
56
+ - **Mixed precision:** bf16 policy weights/config enabled: `true`
57
+ - **VLM/LLM backbone fine-tuned:** `false`
58
+ - **Vision tower fine-tuned:** `false`
59
+ - **Action projector fine-tuned:** `true`
60
+ - **Action DiT fine-tuned:** `true`
61
+
62
+ The GR00T vision-language backbone was frozen for this run. The action head projector
63
+ and flow-matching diffusion transformer were fine-tuned.
64
+
65
+ ## Inputs
66
+
67
+ - `observation.ee_pos.robot_xyzrpy`: `STATE`, shape `[6]`
68
+ - `observation.gripper_binary`: `STATE`, shape `[1]`
69
+ - `observation.images.left_wrist`: `VISUAL`, shape `[3, 480, 640]`
70
+ - `observation.images.top`: `VISUAL`, shape `[3, 480, 640]`
71
+ - `observation.state`: `STATE`, shape `[6]`
72
+ - `observation.state.radian_urdf0`: `STATE`, shape `[6]`
73
+
74
+ ## Outputs
75
+
76
+ - `action`: `ACTION`, shape `[6]`
77
+ - `action.radian_urdf0`: `ACTION`, shape `[6]`
78
+
79
+ ## Usage
80
+
81
+ Install and use the same LeRobot checkout/environment that contains the GR00T policy
82
+ implementation, then point `policy.path` to this Hub repo.
83
+
84
+ ```bash
85
+ lerobot-record \
86
+ --robot.type=<your_robot> \
87
+ --dataset.repo_id=<your_eval_dataset_repo> \
88
+ --policy.path=CoRL2026-CSI/IsaacLab-so101-multi-gr00t \
89
+ --episodes=10
90
+ ```
91
+
92
+ For local Python usage, load the policy with LeRobot's policy factory or GR00T policy
93
+ loader from the training checkout.
94
+
95
+ ## Evaluation
96
+
97
+ This upload records the offline training run metrics only. No rollout success rate is
98
+ claimed here unless a separate real/sim evaluation is added later.
99
+
100
+ Final logged training metrics:
101
+
102
+ - loss: `0.010196`
103
+ - grad norm: `0.193945`
104
+ - update time: `1.2521 s/step`
105
+ - dataloading time: `0.0046 s/step`
106
+
107
+ ## Limitations and Safety
108
+
109
+ This model is a robot control policy and can produce unsafe actions if deployed on
110
+ hardware without appropriate validation, workspace limits, emergency stop handling, and
111
+ task-specific safety checks. Test in simulation or a constrained setup before any
112
+ physical deployment.
113
+
114
+ The model is specialized to the training dataset and embodiment configuration. It may
115
+ not transfer reliably to different cameras, calibration, action spaces, robot hardware,
116
+ or tasks without further validation or fine-tuning.
117
+
118
+ ## License and Terms
119
+
120
+ This model is a fine-tune of `nvidia/GR00T-N1.5-3B`; users are responsible for complying
121
+ with the NVIDIA model license and any dataset/license constraints. See the base model
122
+ card and NVIDIA license terms linked in the metadata.
123
+
124
+ ## Files
125
+
126
+ - `model.safetensors`: fine-tuned policy weights
127
+ - `config.json`: LeRobot GR00T policy config
128
+ - `train_config.json`: training configuration
129
+ - `policy_preprocessor.json` and `policy_postprocessor.json`: LeRobot processor pipelines
130
+ - `policy_*_step_*.safetensors`: normalization/statistics state used by processors
config.json ADDED
@@ -0,0 +1,113 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ {
2
+ "type": "groot",
3
+ "n_obs_steps": 1,
4
+ "input_features": {
5
+ "observation.state": {
6
+ "type": "STATE",
7
+ "shape": [
8
+ 6
9
+ ]
10
+ },
11
+ "observation.images.top": {
12
+ "type": "VISUAL",
13
+ "shape": [
14
+ 3,
15
+ 480,
16
+ 640
17
+ ]
18
+ },
19
+ "observation.images.left_wrist": {
20
+ "type": "VISUAL",
21
+ "shape": [
22
+ 3,
23
+ 480,
24
+ 640
25
+ ]
26
+ },
27
+ "observation.ee_pos.robot_xyzrpy": {
28
+ "type": "STATE",
29
+ "shape": [
30
+ 6
31
+ ]
32
+ },
33
+ "observation.gripper_binary": {
34
+ "type": "STATE",
35
+ "shape": [
36
+ 1
37
+ ]
38
+ },
39
+ "observation.state.radian_urdf0": {
40
+ "type": "STATE",
41
+ "shape": [
42
+ 6
43
+ ]
44
+ }
45
+ },
46
+ "output_features": {
47
+ "action": {
48
+ "type": "ACTION",
49
+ "shape": [
50
+ 6
51
+ ]
52
+ },
53
+ "action.radian_urdf0": {
54
+ "type": "ACTION",
55
+ "shape": [
56
+ 6
57
+ ]
58
+ }
59
+ },
60
+ "device": "cuda",
61
+ "use_amp": false,
62
+ "use_peft": false,
63
+ "push_to_hub": true,
64
+ "repo_id": "CoRL2026-CSI/IsaacLab-so101-multi-gr00t",
65
+ "private": null,
66
+ "tags": null,
67
+ "license": null,
68
+ "pretrained_path": null,
69
+ "chunk_size": 16,
70
+ "n_action_steps": 16,
71
+ "max_state_dim": 64,
72
+ "max_action_dim": 32,
73
+ "normalization_mapping": {
74
+ "VISUAL": "IDENTITY",
75
+ "STATE": "MEAN_STD",
76
+ "ACTION": "MEAN_STD"
77
+ },
78
+ "image_size": [
79
+ 224,
80
+ 224
81
+ ],
82
+ "base_model_path": "nvidia/GR00T-N1.5-3B",
83
+ "tokenizer_assets_repo": "lerobot/eagle2hg-processor-groot-n1p5",
84
+ "embodiment_tag": "new_embodiment",
85
+ "tune_llm": false,
86
+ "tune_visual": false,
87
+ "tune_projector": true,
88
+ "tune_diffusion_model": true,
89
+ "lora_rank": 0,
90
+ "lora_alpha": 16,
91
+ "lora_dropout": 0.1,
92
+ "lora_full_model": false,
93
+ "optimizer_lr": 0.0001,
94
+ "optimizer_betas": [
95
+ 0.95,
96
+ 0.999
97
+ ],
98
+ "optimizer_eps": 1e-08,
99
+ "optimizer_weight_decay": 1e-05,
100
+ "warmup_ratio": 0.05,
101
+ "use_bf16": true,
102
+ "video_backend": "decord",
103
+ "balance_dataset_weights": true,
104
+ "balance_trajectory_weights": true,
105
+ "dataset_paths": null,
106
+ "output_dir": "./tmp/gr00t",
107
+ "save_steps": 1000,
108
+ "max_steps": 10000,
109
+ "batch_size": 32,
110
+ "dataloader_num_workers": 8,
111
+ "report_to": "wandb",
112
+ "resume": false
113
+ }
model.safetensors ADDED
@@ -0,0 +1,3 @@
 
 
 
 
1
+ version https://git-lfs.github.com/spec/v1
2
+ oid sha256:f4fa283b77eed3cf2e41e0303fc2ea99b7ac226c049db5a35b5890055cc6ef17
3
+ size 5448472032
policy_postprocessor.json ADDED
@@ -0,0 +1,20 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ {
2
+ "name": "policy_postprocessor",
3
+ "steps": [
4
+ {
5
+ "registry_name": "groot_action_unpack_unnormalize_v1",
6
+ "config": {
7
+ "env_action_dim": 6,
8
+ "normalize_min_max": true
9
+ },
10
+ "state_file": "policy_postprocessor_step_0_groot_action_unpack_unnormalize_v1.safetensors"
11
+ },
12
+ {
13
+ "registry_name": "device_processor",
14
+ "config": {
15
+ "device": "cpu",
16
+ "float_dtype": null
17
+ }
18
+ }
19
+ ]
20
+ }
policy_postprocessor_step_0_groot_action_unpack_unnormalize_v1.safetensors ADDED
@@ -0,0 +1,3 @@
 
 
 
 
1
+ version https://git-lfs.github.com/spec/v1
2
+ oid sha256:8401150b9e477f4110fc4ba7e65d7e522b31fd33b6d0ce5a01bcda6e26ca0a95
3
+ size 19016
policy_preprocessor.json ADDED
@@ -0,0 +1,52 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ {
2
+ "name": "policy_preprocessor",
3
+ "steps": [
4
+ {
5
+ "registry_name": "rename_observations_processor",
6
+ "config": {
7
+ "rename_map": {}
8
+ }
9
+ },
10
+ {
11
+ "registry_name": "to_batch_processor",
12
+ "config": {}
13
+ },
14
+ {
15
+ "registry_name": "groot_pack_inputs_v3",
16
+ "config": {
17
+ "state_horizon": 1,
18
+ "action_horizon": 16,
19
+ "max_state_dim": 64,
20
+ "max_action_dim": 32,
21
+ "language_key": "task",
22
+ "formalize_language": false,
23
+ "embodiment_tag": "new_embodiment",
24
+ "embodiment_mapping": {
25
+ "new_embodiment": 31,
26
+ "oxe_droid": 17,
27
+ "agibot_genie1": 26,
28
+ "gr1": 24,
29
+ "so100": 2,
30
+ "unitree_g1": 3
31
+ },
32
+ "normalize_min_max": true
33
+ },
34
+ "state_file": "policy_preprocessor_step_2_groot_pack_inputs_v3.safetensors"
35
+ },
36
+ {
37
+ "registry_name": "groot_eagle_encode_v3",
38
+ "config": {}
39
+ },
40
+ {
41
+ "registry_name": "groot_eagle_collate_v3",
42
+ "config": {}
43
+ },
44
+ {
45
+ "registry_name": "device_processor",
46
+ "config": {
47
+ "device": "cuda",
48
+ "float_dtype": null
49
+ }
50
+ }
51
+ ]
52
+ }
policy_preprocessor_step_2_groot_pack_inputs_v3.safetensors ADDED
@@ -0,0 +1,3 @@
 
 
 
 
1
+ version https://git-lfs.github.com/spec/v1
2
+ oid sha256:8401150b9e477f4110fc4ba7e65d7e522b31fd33b6d0ce5a01bcda6e26ca0a95
3
+ size 19016
train_config.json ADDED
@@ -0,0 +1,257 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ {
2
+ "dataset": {
3
+ "repo_id": "CoRL2026-CSI/Isaaclab-so101_11task_baseCaP_3300epi",
4
+ "root": null,
5
+ "episodes": null,
6
+ "image_transforms": {
7
+ "enable": false,
8
+ "max_num_transforms": 3,
9
+ "random_order": false,
10
+ "tfs": {
11
+ "brightness": {
12
+ "weight": 1.0,
13
+ "type": "ColorJitter",
14
+ "kwargs": {
15
+ "brightness": [
16
+ 0.8,
17
+ 1.2
18
+ ]
19
+ }
20
+ },
21
+ "contrast": {
22
+ "weight": 1.0,
23
+ "type": "ColorJitter",
24
+ "kwargs": {
25
+ "contrast": [
26
+ 0.8,
27
+ 1.2
28
+ ]
29
+ }
30
+ },
31
+ "saturation": {
32
+ "weight": 1.0,
33
+ "type": "ColorJitter",
34
+ "kwargs": {
35
+ "saturation": [
36
+ 0.5,
37
+ 1.5
38
+ ]
39
+ }
40
+ },
41
+ "hue": {
42
+ "weight": 1.0,
43
+ "type": "ColorJitter",
44
+ "kwargs": {
45
+ "hue": [
46
+ -0.05,
47
+ 0.05
48
+ ]
49
+ }
50
+ },
51
+ "sharpness": {
52
+ "weight": 1.0,
53
+ "type": "SharpnessJitter",
54
+ "kwargs": {
55
+ "sharpness": [
56
+ 0.5,
57
+ 1.5
58
+ ]
59
+ }
60
+ },
61
+ "affine": {
62
+ "weight": 1.0,
63
+ "type": "RandomAffine",
64
+ "kwargs": {
65
+ "degrees": [
66
+ -5.0,
67
+ 5.0
68
+ ],
69
+ "translate": [
70
+ 0.05,
71
+ 0.05
72
+ ]
73
+ }
74
+ }
75
+ }
76
+ },
77
+ "revision": null,
78
+ "use_imagenet_stats": true,
79
+ "video_backend": "torchcodec",
80
+ "streaming": false
81
+ },
82
+ "env": null,
83
+ "policy": {
84
+ "type": "groot",
85
+ "n_obs_steps": 1,
86
+ "input_features": {
87
+ "observation.state": {
88
+ "type": "STATE",
89
+ "shape": [
90
+ 6
91
+ ]
92
+ },
93
+ "observation.images.top": {
94
+ "type": "VISUAL",
95
+ "shape": [
96
+ 3,
97
+ 480,
98
+ 640
99
+ ]
100
+ },
101
+ "observation.images.left_wrist": {
102
+ "type": "VISUAL",
103
+ "shape": [
104
+ 3,
105
+ 480,
106
+ 640
107
+ ]
108
+ },
109
+ "observation.ee_pos.robot_xyzrpy": {
110
+ "type": "STATE",
111
+ "shape": [
112
+ 6
113
+ ]
114
+ },
115
+ "observation.gripper_binary": {
116
+ "type": "STATE",
117
+ "shape": [
118
+ 1
119
+ ]
120
+ },
121
+ "observation.state.radian_urdf0": {
122
+ "type": "STATE",
123
+ "shape": [
124
+ 6
125
+ ]
126
+ }
127
+ },
128
+ "output_features": {
129
+ "action": {
130
+ "type": "ACTION",
131
+ "shape": [
132
+ 6
133
+ ]
134
+ },
135
+ "action.radian_urdf0": {
136
+ "type": "ACTION",
137
+ "shape": [
138
+ 6
139
+ ]
140
+ }
141
+ },
142
+ "device": "cuda",
143
+ "use_amp": false,
144
+ "use_peft": false,
145
+ "push_to_hub": true,
146
+ "repo_id": "CoRL2026-CSI/IsaacLab-so101-multi-gr00t",
147
+ "private": null,
148
+ "tags": null,
149
+ "license": null,
150
+ "pretrained_path": null,
151
+ "chunk_size": 16,
152
+ "n_action_steps": 16,
153
+ "max_state_dim": 64,
154
+ "max_action_dim": 32,
155
+ "normalization_mapping": {
156
+ "VISUAL": "IDENTITY",
157
+ "STATE": "MEAN_STD",
158
+ "ACTION": "MEAN_STD"
159
+ },
160
+ "image_size": [
161
+ 224,
162
+ 224
163
+ ],
164
+ "base_model_path": "nvidia/GR00T-N1.5-3B",
165
+ "tokenizer_assets_repo": "lerobot/eagle2hg-processor-groot-n1p5",
166
+ "embodiment_tag": "new_embodiment",
167
+ "tune_llm": false,
168
+ "tune_visual": false,
169
+ "tune_projector": true,
170
+ "tune_diffusion_model": true,
171
+ "lora_rank": 0,
172
+ "lora_alpha": 16,
173
+ "lora_dropout": 0.1,
174
+ "lora_full_model": false,
175
+ "optimizer_lr": 0.0001,
176
+ "optimizer_betas": [
177
+ 0.95,
178
+ 0.999
179
+ ],
180
+ "optimizer_eps": 1e-08,
181
+ "optimizer_weight_decay": 1e-05,
182
+ "warmup_ratio": 0.05,
183
+ "use_bf16": true,
184
+ "video_backend": "decord",
185
+ "balance_dataset_weights": true,
186
+ "balance_trajectory_weights": true,
187
+ "dataset_paths": null,
188
+ "output_dir": "./tmp/gr00t",
189
+ "save_steps": 1000,
190
+ "max_steps": 10000,
191
+ "batch_size": 32,
192
+ "dataloader_num_workers": 8,
193
+ "report_to": "wandb",
194
+ "resume": false
195
+ },
196
+ "output_dir": "/home/work/hscho/corl_2026/AutoDataCollector/lerobot/outputs/train/gr00tn15_20260508_160623",
197
+ "job_name": "gr00tn15_20260508_160623",
198
+ "resume": false,
199
+ "seed": 1000,
200
+ "cudnn_deterministic": false,
201
+ "num_workers": 4,
202
+ "dataloader_prefetch_factor": 1,
203
+ "dataloader_persistent_workers": true,
204
+ "dataloader_pin_memory": true,
205
+ "batch_size": 64,
206
+ "gradient_accumulation_steps": 2,
207
+ "ddp_find_unused_parameters": false,
208
+ "profile_timing": false,
209
+ "groot_preprocess_in_workers": true,
210
+ "steps": 110000,
211
+ "eval_freq": 0,
212
+ "log_freq": 10,
213
+ "tolerance_s": 0.0001,
214
+ "save_checkpoint": true,
215
+ "save_freq": 20000,
216
+ "use_policy_training_preset": true,
217
+ "optimizer": {
218
+ "type": "adamw",
219
+ "lr": 0.0001,
220
+ "weight_decay": 1e-05,
221
+ "grad_clip_norm": 10.0,
222
+ "betas": [
223
+ 0.95,
224
+ 0.999
225
+ ],
226
+ "eps": 1e-08
227
+ },
228
+ "scheduler": {
229
+ "type": "cosine_decay_with_warmup",
230
+ "num_warmup_steps": 500,
231
+ "num_decay_steps": 10000,
232
+ "peak_lr": 0.0001,
233
+ "decay_lr": 1e-05
234
+ },
235
+ "eval": {
236
+ "n_episodes": 50,
237
+ "batch_size": 50,
238
+ "use_async_envs": false
239
+ },
240
+ "wandb": {
241
+ "enable": true,
242
+ "disable_artifact": true,
243
+ "project": "lerobot-groot",
244
+ "entity": null,
245
+ "notes": null,
246
+ "run_id": "sz16gh68",
247
+ "mode": null
248
+ },
249
+ "peft": null,
250
+ "use_rabc": false,
251
+ "rabc_progress_path": null,
252
+ "rabc_kappa": 0.01,
253
+ "rabc_epsilon": 1e-06,
254
+ "rabc_head_mode": "sparse",
255
+ "rename_map": {},
256
+ "checkpoint_path": null
257
+ }