Robotics
LeRobot
Safetensors
smolvla
xlerobot
jetson
Suyang99 commited on
Commit
c43ad06
·
verified ·
1 Parent(s): 8f1e312

ACT right-arm cup grasp, step 160001211111

Browse files
README.md ADDED
@@ -0,0 +1,33 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ ---
2
+ tags: [robotics, lerobot, act, xlerobot, bimanual]
3
+ library_name: lerobot
4
+ pipeline_tag: robotics
5
+ license: apache-2.0
6
+ ---
7
+
8
+ # ACT — right-arm cup grasp (XLeRobot)
9
+
10
+ Trained with [LeRobot](https://github.com/huggingface/lerobot) ACT on
11
+ [`Suyang99/xlerobot-cup-grasp-20260820-0230`](https://huggingface.co/datasets/Suyang99/xlerobot-cup-grasp-20260820-0230).
12
+
13
+ | | |
14
+ |---|---|
15
+ | Task | Pick up the cup and place it down — **right arm only** (`arms: 1.0`) |
16
+ | Dataset | 50 episodes / 19,453 frames / 30 fps, 5 cup positions |
17
+ | Policy | ACT, 51.6 M parameters |
18
+ | Checkpoint | **step 160001211111** of 20,000 |
19
+ | Trained on | Jetson Orin Nano Super (8 GB unified), torch 2.8.0, batch size 2 |
20
+ | Cameras | head, left_arm_wrist, right_arm_wrist |
21
+ | Action / state | 17-dim (left arm 6 · right arm 6 · head 2 · base 3) |
22
+
23
+ ## Important: the left arm is parked in this data
24
+
25
+ Dimensions 0–5 (the left arm) hold a single constant across every frame — the recording ran with
26
+ `arms: 1.0`, so the left arm never followed the operator. **This policy therefore cannot drive the
27
+ left arm**, and it will not transfer to a left-arm version of the task. A bimanual task needs its
28
+ own recording with `arms: 0.0`.
29
+
30
+ ## Hardware caveat
31
+
32
+ The gripper is being replaced (Fin-Ray blade 68 mm → 90 mm). Once that lands, the arm's dynamics
33
+ change and this checkpoint's real-world behaviour has to be re-measured.
config.json ADDED
@@ -0,0 +1,102 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ {
2
+ "type": "smolvla",
3
+ "n_obs_steps": 1,
4
+ "input_features": {
5
+ "observation.state": {
6
+ "type": "STATE",
7
+ "shape": [
8
+ 6
9
+ ]
10
+ },
11
+ "observation.images.camera1": {
12
+ "type": "VISUAL",
13
+ "shape": [
14
+ 3,
15
+ 256,
16
+ 256
17
+ ]
18
+ },
19
+ "observation.images.camera2": {
20
+ "type": "VISUAL",
21
+ "shape": [
22
+ 3,
23
+ 256,
24
+ 256
25
+ ]
26
+ },
27
+ "observation.images.camera3": {
28
+ "type": "VISUAL",
29
+ "shape": [
30
+ 3,
31
+ 256,
32
+ 256
33
+ ]
34
+ }
35
+ },
36
+ "output_features": {
37
+ "action": {
38
+ "type": "ACTION",
39
+ "shape": [
40
+ 17
41
+ ]
42
+ }
43
+ },
44
+ "device": "cuda",
45
+ "use_amp": false,
46
+ "use_peft": false,
47
+ "push_to_hub": false,
48
+ "repo_id": null,
49
+ "private": null,
50
+ "tags": null,
51
+ "license": null,
52
+ "pretrained_path": "lerobot/smolvla_base",
53
+ "pretrained_revision": null,
54
+ "chunk_size": 50,
55
+ "n_action_steps": 50,
56
+ "normalization_mapping": {
57
+ "VISUAL": "IDENTITY",
58
+ "STATE": "MEAN_STD",
59
+ "ACTION": "MEAN_STD"
60
+ },
61
+ "max_state_dim": 32,
62
+ "max_action_dim": 32,
63
+ "resize_imgs_with_padding": [
64
+ 512,
65
+ 512
66
+ ],
67
+ "empty_cameras": 0,
68
+ "adapt_to_pi_aloha": false,
69
+ "use_delta_joint_actions_aloha": false,
70
+ "tokenizer_max_length": 48,
71
+ "num_steps": 10,
72
+ "use_cache": true,
73
+ "freeze_vision_encoder": true,
74
+ "train_expert_only": true,
75
+ "train_state_proj": true,
76
+ "optimizer_lr": 0.0001,
77
+ "optimizer_betas": [
78
+ 0.9,
79
+ 0.95
80
+ ],
81
+ "optimizer_eps": 1e-08,
82
+ "optimizer_weight_decay": 1e-10,
83
+ "optimizer_grad_clip_norm": 10.0,
84
+ "scheduler_warmup_steps": 1000,
85
+ "scheduler_decay_steps": 30000,
86
+ "scheduler_decay_lr": 2.5e-06,
87
+ "vlm_model_name": "HuggingFaceTB/SmolVLM2-500M-Video-Instruct",
88
+ "load_vlm_weights": true,
89
+ "add_image_special_tokens": false,
90
+ "attention_mode": "cross_attn",
91
+ "prefix_length": 0,
92
+ "pad_language_to": "max_length",
93
+ "num_expert_layers": 0,
94
+ "num_vlm_layers": 16,
95
+ "self_attn_every_n_layers": 2,
96
+ "expert_width_multiplier": 0.75,
97
+ "min_period": 0.004,
98
+ "max_period": 4.0,
99
+ "rtc_config": null,
100
+ "compile_model": false,
101
+ "compile_mode": "max-autotune"
102
+ }
model.safetensors ADDED
@@ -0,0 +1,3 @@
 
 
 
 
1
+ version https://git-lfs.github.com/spec/v1
2
+ oid sha256:62741bb31447a775966492f5f06e05af16e6b9c3d8ed3c06475a54797afe41d1
3
+ size 906712552
policy_postprocessor.json ADDED
@@ -0,0 +1,32 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ {
2
+ "name": "policy_postprocessor",
3
+ "steps": [
4
+ {
5
+ "registry_name": "unnormalizer_processor",
6
+ "config": {
7
+ "eps": 1e-08,
8
+ "features": {
9
+ "action": {
10
+ "type": "ACTION",
11
+ "shape": [
12
+ 17
13
+ ]
14
+ }
15
+ },
16
+ "norm_map": {
17
+ "VISUAL": "IDENTITY",
18
+ "STATE": "MEAN_STD",
19
+ "ACTION": "MEAN_STD"
20
+ }
21
+ },
22
+ "state_file": "policy_postprocessor_step_0_unnormalizer_processor.safetensors"
23
+ },
24
+ {
25
+ "registry_name": "device_processor",
26
+ "config": {
27
+ "device": "cpu",
28
+ "float_dtype": null
29
+ }
30
+ }
31
+ ]
32
+ }
policy_postprocessor_step_0_unnormalizer_processor.safetensors ADDED
@@ -0,0 +1,3 @@
 
 
 
 
1
+ version https://git-lfs.github.com/spec/v1
2
+ oid sha256:76228b12797e83b471eca7f1543770265c661f81752355a30f826976a6867d61
3
+ size 9608
policy_preprocessor.json ADDED
@@ -0,0 +1,94 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ {
2
+ "name": "policy_preprocessor",
3
+ "steps": [
4
+ {
5
+ "registry_name": "rename_observations_processor",
6
+ "config": {
7
+ "rename_map": {
8
+ "observation.images.head": "observation.images.camera1",
9
+ "observation.images.right_arm_wrist": "observation.images.camera2",
10
+ "observation.images.left_arm_wrist": "observation.images.camera3"
11
+ }
12
+ }
13
+ },
14
+ {
15
+ "registry_name": "to_batch_processor",
16
+ "config": {}
17
+ },
18
+ {
19
+ "registry_name": "smolvla_new_line_processor",
20
+ "config": {}
21
+ },
22
+ {
23
+ "registry_name": "tokenizer_processor",
24
+ "config": {
25
+ "max_length": 48,
26
+ "task_key": "task",
27
+ "padding_side": "right",
28
+ "padding": "max_length",
29
+ "truncation": true,
30
+ "tokenizer_name": "tokenizer"
31
+ },
32
+ "artifacts": {
33
+ "tokenizer_name": "tokenizer"
34
+ }
35
+ },
36
+ {
37
+ "registry_name": "device_processor",
38
+ "config": {
39
+ "device": "cuda",
40
+ "float_dtype": null
41
+ }
42
+ },
43
+ {
44
+ "registry_name": "normalizer_processor",
45
+ "config": {
46
+ "eps": 1e-08,
47
+ "features": {
48
+ "observation.state": {
49
+ "type": "STATE",
50
+ "shape": [
51
+ 6
52
+ ]
53
+ },
54
+ "observation.images.camera1": {
55
+ "type": "VISUAL",
56
+ "shape": [
57
+ 3,
58
+ 256,
59
+ 256
60
+ ]
61
+ },
62
+ "observation.images.camera2": {
63
+ "type": "VISUAL",
64
+ "shape": [
65
+ 3,
66
+ 256,
67
+ 256
68
+ ]
69
+ },
70
+ "observation.images.camera3": {
71
+ "type": "VISUAL",
72
+ "shape": [
73
+ 3,
74
+ 256,
75
+ 256
76
+ ]
77
+ },
78
+ "action": {
79
+ "type": "ACTION",
80
+ "shape": [
81
+ 17
82
+ ]
83
+ }
84
+ },
85
+ "norm_map": {
86
+ "VISUAL": "IDENTITY",
87
+ "STATE": "MEAN_STD",
88
+ "ACTION": "MEAN_STD"
89
+ }
90
+ },
91
+ "state_file": "policy_preprocessor_step_5_normalizer_processor.safetensors"
92
+ }
93
+ ]
94
+ }
policy_preprocessor_step_5_normalizer_processor.safetensors ADDED
@@ -0,0 +1,3 @@
 
 
 
 
1
+ version https://git-lfs.github.com/spec/v1
2
+ oid sha256:76228b12797e83b471eca7f1543770265c661f81752355a30f826976a6867d61
3
+ size 9608
tokenizer/chat_template.jinja ADDED
@@ -0,0 +1,2 @@
 
 
 
1
+ <|im_start|>{% for message in messages %}{{message['role'] | capitalize}}{% if message['content'][0]['type'] == 'image' %}{{':'}}{% else %}{{': '}}{% endif %}{% for line in message['content'] %}{% if line['type'] == 'text' %}{{line['text']}}{% elif line['type'] == 'image' %}{{ '<image>' }}{% endif %}{% endfor %}<end_of_utterance>
2
+ {% endfor %}{% if add_generation_prompt %}{{ 'Assistant:' }}{% endif %}
tokenizer/tokenizer.json ADDED
The diff for this file is too large to render. See raw diff
 
tokenizer/tokenizer_config.json ADDED
@@ -0,0 +1,27 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ {
2
+ "add_prefix_space": false,
3
+ "backend": "tokenizers",
4
+ "bos_token": "<|im_start|>",
5
+ "clean_up_tokenization_spaces": false,
6
+ "end_of_utterance_token": "<end_of_utterance>",
7
+ "eos_token": "<end_of_utterance>",
8
+ "fake_image_token": "<fake_token_around_image>",
9
+ "global_image_token": "<global-img>",
10
+ "image_token": "<image>",
11
+ "is_local": false,
12
+ "legacy": false,
13
+ "local_files_only": false,
14
+ "model_max_length": 8192,
15
+ "model_specific_special_tokens": {
16
+ "end_of_utterance_token": "<end_of_utterance>",
17
+ "fake_image_token": "<fake_token_around_image>",
18
+ "global_image_token": "<global-img>",
19
+ "image_token": "<image>"
20
+ },
21
+ "pad_token": "<|im_end|>",
22
+ "processor_class": "SmolVLMProcessor",
23
+ "tokenizer_class": "TokenizersBackend",
24
+ "truncation_side": "left",
25
+ "unk_token": "<|endoftext|>",
26
+ "vocab_size": 49152
27
+ }
train_config.json ADDED
@@ -0,0 +1,309 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ {
2
+ "dataset": {
3
+ "repo_id": "Suyang99/xlerobot-cup-grasp-20260820-0230",
4
+ "repo_type": "dataset",
5
+ "root": null,
6
+ "episodes": null,
7
+ "exclude_episodes": null,
8
+ "image_transforms": {
9
+ "enable": false,
10
+ "max_num_transforms": 3,
11
+ "random_order": false,
12
+ "tfs": {
13
+ "brightness": {
14
+ "weight": 1.0,
15
+ "type": "ColorJitter",
16
+ "kwargs": {
17
+ "brightness": [
18
+ 0.8,
19
+ 1.2
20
+ ]
21
+ }
22
+ },
23
+ "contrast": {
24
+ "weight": 1.0,
25
+ "type": "ColorJitter",
26
+ "kwargs": {
27
+ "contrast": [
28
+ 0.8,
29
+ 1.2
30
+ ]
31
+ }
32
+ },
33
+ "saturation": {
34
+ "weight": 1.0,
35
+ "type": "ColorJitter",
36
+ "kwargs": {
37
+ "saturation": [
38
+ 0.5,
39
+ 1.5
40
+ ]
41
+ }
42
+ },
43
+ "hue": {
44
+ "weight": 1.0,
45
+ "type": "ColorJitter",
46
+ "kwargs": {
47
+ "hue": [
48
+ -0.05,
49
+ 0.05
50
+ ]
51
+ }
52
+ },
53
+ "sharpness": {
54
+ "weight": 1.0,
55
+ "type": "SharpnessJitter",
56
+ "kwargs": {
57
+ "sharpness": [
58
+ 0.5,
59
+ 1.5
60
+ ]
61
+ }
62
+ },
63
+ "affine": {
64
+ "weight": 1.0,
65
+ "type": "RandomAffine",
66
+ "kwargs": {
67
+ "degrees": [
68
+ -5.0,
69
+ 5.0
70
+ ],
71
+ "translate": [
72
+ 0.05,
73
+ 0.05
74
+ ]
75
+ }
76
+ }
77
+ }
78
+ },
79
+ "revision": null,
80
+ "use_imagenet_stats": true,
81
+ "video_backend": "pyav",
82
+ "return_uint8": false,
83
+ "depth_output_unit": "mm",
84
+ "streaming": false,
85
+ "eval_split": 0.2
86
+ },
87
+ "env": null,
88
+ "policy": {
89
+ "type": "smolvla",
90
+ "n_obs_steps": 1,
91
+ "input_features": {
92
+ "observation.state": {
93
+ "type": "STATE",
94
+ "shape": [
95
+ 6
96
+ ]
97
+ },
98
+ "observation.images.camera1": {
99
+ "type": "VISUAL",
100
+ "shape": [
101
+ 3,
102
+ 256,
103
+ 256
104
+ ]
105
+ },
106
+ "observation.images.camera2": {
107
+ "type": "VISUAL",
108
+ "shape": [
109
+ 3,
110
+ 256,
111
+ 256
112
+ ]
113
+ },
114
+ "observation.images.camera3": {
115
+ "type": "VISUAL",
116
+ "shape": [
117
+ 3,
118
+ 256,
119
+ 256
120
+ ]
121
+ }
122
+ },
123
+ "output_features": {
124
+ "action": {
125
+ "type": "ACTION",
126
+ "shape": [
127
+ 17
128
+ ]
129
+ }
130
+ },
131
+ "device": "cuda",
132
+ "use_amp": false,
133
+ "use_peft": false,
134
+ "push_to_hub": false,
135
+ "repo_id": null,
136
+ "private": null,
137
+ "tags": null,
138
+ "license": null,
139
+ "pretrained_path": "lerobot/smolvla_base",
140
+ "pretrained_revision": null,
141
+ "chunk_size": 50,
142
+ "n_action_steps": 50,
143
+ "normalization_mapping": {
144
+ "VISUAL": "IDENTITY",
145
+ "STATE": "MEAN_STD",
146
+ "ACTION": "MEAN_STD"
147
+ },
148
+ "max_state_dim": 32,
149
+ "max_action_dim": 32,
150
+ "resize_imgs_with_padding": [
151
+ 512,
152
+ 512
153
+ ],
154
+ "empty_cameras": 0,
155
+ "adapt_to_pi_aloha": false,
156
+ "use_delta_joint_actions_aloha": false,
157
+ "tokenizer_max_length": 48,
158
+ "num_steps": 10,
159
+ "use_cache": true,
160
+ "freeze_vision_encoder": true,
161
+ "train_expert_only": true,
162
+ "train_state_proj": true,
163
+ "optimizer_lr": 0.0001,
164
+ "optimizer_betas": [
165
+ 0.9,
166
+ 0.95
167
+ ],
168
+ "optimizer_eps": 1e-08,
169
+ "optimizer_weight_decay": 1e-10,
170
+ "optimizer_grad_clip_norm": 10.0,
171
+ "scheduler_warmup_steps": 1000,
172
+ "scheduler_decay_steps": 30000,
173
+ "scheduler_decay_lr": 2.5e-06,
174
+ "vlm_model_name": "HuggingFaceTB/SmolVLM2-500M-Video-Instruct",
175
+ "load_vlm_weights": true,
176
+ "add_image_special_tokens": false,
177
+ "attention_mode": "cross_attn",
178
+ "prefix_length": 0,
179
+ "pad_language_to": "max_length",
180
+ "num_expert_layers": 0,
181
+ "num_vlm_layers": 16,
182
+ "self_attn_every_n_layers": 2,
183
+ "expert_width_multiplier": 0.75,
184
+ "min_period": 0.004,
185
+ "max_period": 4.0,
186
+ "rtc_config": null,
187
+ "compile_model": false,
188
+ "compile_mode": "max-autotune"
189
+ },
190
+ "reward_model": null,
191
+ "output_dir": "/home/robomates/Robotic_challenge/05-training/runs/smolvla_20260820-1502",
192
+ "job_name": "smolvla_cup_grasp_right",
193
+ "resume": false,
194
+ "seed": 1000,
195
+ "cudnn_deterministic": false,
196
+ "num_workers": 2,
197
+ "batch_size": 2,
198
+ "prefetch_factor": 4,
199
+ "persistent_workers": true,
200
+ "dataloader_multiprocessing_context": "spawn",
201
+ "steps": 20000,
202
+ "env_eval_freq": 20000,
203
+ "log_freq": 100,
204
+ "eval_steps": 0,
205
+ "max_eval_samples": 0,
206
+ "tolerance_s": 0.0001,
207
+ "save_checkpoint": true,
208
+ "save_freq": 2000,
209
+ "checkpoint_format": "safetensors",
210
+ "use_policy_training_preset": true,
211
+ "optimizer": {
212
+ "type": "adamw",
213
+ "lr": 0.0001,
214
+ "weight_decay": 1e-10,
215
+ "grad_clip_norm": 10.0,
216
+ "betas": [
217
+ 0.9,
218
+ 0.95
219
+ ],
220
+ "eps": 1e-08
221
+ },
222
+ "scheduler": {
223
+ "type": "cosine_decay_with_warmup",
224
+ "num_warmup_steps": 1000,
225
+ "num_decay_steps": 30000,
226
+ "peak_lr": 0.0001,
227
+ "decay_lr": 2.5e-06
228
+ },
229
+ "parallelism": {
230
+ "dp_replicate": 1,
231
+ "dp_shard": 1,
232
+ "context_parallel": {
233
+ "ring_degree": 1,
234
+ "ulysses_degree": 1
235
+ },
236
+ "cfg_parallel": 1
237
+ },
238
+ "accelerator": {
239
+ "mixed_precision": "no",
240
+ "gradient_accumulation": {
241
+ "steps": 1
242
+ },
243
+ "fsdp": {
244
+ "reshard_after_forward": true,
245
+ "wrap_modules": null,
246
+ "min_num_params": null,
247
+ "cpu_offload": false,
248
+ "ignored_modules": null
249
+ },
250
+ "ddp": {
251
+ "find_unused_parameters": true,
252
+ "gradient_as_bucket_view": false,
253
+ "static_graph": false
254
+ },
255
+ "compile": {
256
+ "enabled": false,
257
+ "backend": "inductor",
258
+ "mode": null,
259
+ "regional": true
260
+ },
261
+ "activation_checkpointing": {
262
+ "mode": "none"
263
+ }
264
+ },
265
+ "eval": {
266
+ "n_episodes": 50,
267
+ "batch_size": 4,
268
+ "use_async_envs": true,
269
+ "recording": false,
270
+ "recording_repo_id": null,
271
+ "recording_private": false
272
+ },
273
+ "ema": {
274
+ "enable": false,
275
+ "decay": null,
276
+ "update_after_step": 0,
277
+ "inv_gamma": 1.0,
278
+ "power": 0.75,
279
+ "min_decay": 0.0,
280
+ "max_decay": 0.9999,
281
+ "use_for_eval": true
282
+ },
283
+ "wandb": {
284
+ "enable": false,
285
+ "disable_artifact": false,
286
+ "project": "lerobot",
287
+ "entity": null,
288
+ "notes": null,
289
+ "run_id": null,
290
+ "mode": null,
291
+ "add_tags": true
292
+ },
293
+ "peft": null,
294
+ "job": {
295
+ "target": null,
296
+ "image": "huggingface/lerobot-gpu:latest",
297
+ "timeout": "2d",
298
+ "detach": false,
299
+ "tags": []
300
+ },
301
+ "save_checkpoint_to_hub": false,
302
+ "sample_weighting": null,
303
+ "rename_map": {
304
+ "observation.images.head": "observation.images.camera1",
305
+ "observation.images.right_arm_wrist": "observation.images.camera2",
306
+ "observation.images.left_arm_wrist": "observation.images.camera3"
307
+ },
308
+ "checkpoint_path": null
309
+ }