Robotics
LeRobot
Safetensors
pi05
franka
arkojit1 commited on
Commit
c04753c
·
verified ·
1 Parent(s): 63e2085

pi05 expert-only fine-tune, batch 32, step 4,800 (pi05_pickblockabs_baseline_bs32_4gpu_20k)

Browse files
README.md ADDED
@@ -0,0 +1,60 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ ---
2
+ library_name: lerobot
3
+ base_model: lerobot/pi05_base
4
+ datasets:
5
+ - Ameyapores/pick_block_eef_position_abs
6
+ tags:
7
+ - robotics
8
+ - pi05
9
+ - lerobot
10
+ - franka
11
+ ---
12
+
13
+ # π₀.₅ fine-tuned on `pick_block_eef_position_abs` (batch 32, step 4,800)
14
+
15
+ [`lerobot/pi05_base`](https://huggingface.co/lerobot/pi05_base) fine-tuned with LeRobot 0.6.1
16
+ (`--policy.type=pi05`) on
17
+ [`Ameyapores/pick_block_eef_position_abs`](https://huggingface.co/datasets/Ameyapores/pick_block_eef_position_abs)
18
+ (35 Franka episodes / 9,181 frames @ 25 fps, 1 task, two 224×224 cameras `cam0`/`cam2`; the
19
+ third π₀.₅ image slot is padded, `empty_cameras=1`; 4-D state).
20
+
21
+ This is a **full fine-tune of the action expert** (SigLIP and Gemma-2B frozen,
22
+ `--train_expert_only`, ~0.69B trainable parameters), not a LoRA adapter. The repo holds the
23
+ complete policy weights.
24
+
25
+ ## Action space — read this before deploying
26
+
27
+ Each action is `[x, y, z, gripper]`: the **absolute end-effector position to reach at the next
28
+ frame** (same frame and units as `observation.state[:3]`) plus a binary gripper target (0/1).
29
+ It is not interchangeable with delta-action models such as
30
+ [`arkojit1/pi05_pick_block_eef_delta`](https://huggingface.co/arkojit1/pi05_pick_block_eef_delta).
31
+ The dataset is byte-identical to the local build behind
32
+ [`arkojit1/pi05_pick_block_eef_abs`](https://huggingface.co/arkojit1/pi05_pick_block_eef_abs).
33
+
34
+ State and action use quantile (q01–q99) normalisation. The training region is narrow:
35
+ x 0.528–0.559, y 0.056–0.068, z 0.145–0.311, so targets outside it are extrapolation.
36
+
37
+ ## Training
38
+
39
+ | setting | value |
40
+ |---|---|
41
+ | trainable | action expert + projections (~0.69B); SigLIP and Gemma-2B frozen |
42
+ | batch | 32 global (4 GPUs × 8) |
43
+ | optimizer | AdamW, peak LR 2.5e-5, cosine to 2.5e-6, schedule pinned to 20,000 steps, 666 warmup |
44
+ | this checkpoint | step **4,800** (~19 epochs) of a 20,000-step run |
45
+ | other | bf16, gradient checkpointing, `torch.compile` (default mode), image augmentation on, chunk_size 50, n_action_steps 50 |
46
+
47
+ ## Evaluation
48
+
49
+ Flow-matching loss on 4 held-out episodes (31–34), **not** a task success rate:
50
+
51
+ - this checkpoint: eval **0.0576**, train 0.056. This is the best eval of the run and the
52
+ lowest of any run on this dataset.
53
+ - the run continued to 20,000 steps (79 epochs) and overfit: eval 0.0839, train 0.034.
54
+ - point-to-point eval scatter on this 4-episode holdout is about ±0.005–0.01.
55
+
56
+ ## Loading
57
+
58
+ ```bash
59
+ lerobot-eval --policy.path=arkojit1/pi05_pick_block_eef_abs_bs32_lr2.5e-5_4.8k ...
60
+ ```
config.json ADDED
@@ -0,0 +1,103 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ {
2
+ "type": "pi05",
3
+ "n_obs_steps": 1,
4
+ "input_features": {
5
+ "observation.images.cam0": {
6
+ "type": "VISUAL",
7
+ "shape": [
8
+ 3,
9
+ 224,
10
+ 224
11
+ ]
12
+ },
13
+ "observation.images.cam2": {
14
+ "type": "VISUAL",
15
+ "shape": [
16
+ 3,
17
+ 224,
18
+ 224
19
+ ]
20
+ },
21
+ "observation.state": {
22
+ "type": "STATE",
23
+ "shape": [
24
+ 4
25
+ ]
26
+ },
27
+ "observation.images.empty_camera_0": {
28
+ "type": "VISUAL",
29
+ "shape": [
30
+ 3,
31
+ 224,
32
+ 224
33
+ ]
34
+ }
35
+ },
36
+ "output_features": {
37
+ "action": {
38
+ "type": "ACTION",
39
+ "shape": [
40
+ 4
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": "runs/pi05_pickblockabs_baseline_bs32_4gpu_20k-20261006-191836/checkpoints/last/pretrained_model",
53
+ "pretrained_revision": null,
54
+ "paligemma_variant": "gemma_2b",
55
+ "action_expert_variant": "gemma_300m",
56
+ "dtype": "bfloat16",
57
+ "chunk_size": 50,
58
+ "n_action_steps": 50,
59
+ "max_state_dim": 32,
60
+ "max_action_dim": 32,
61
+ "num_inference_steps": 10,
62
+ "time_sampling_beta_alpha": 1.5,
63
+ "time_sampling_beta_beta": 1.0,
64
+ "time_sampling_scale": 0.999,
65
+ "time_sampling_offset": 0.001,
66
+ "min_period": 0.004,
67
+ "max_period": 4.0,
68
+ "use_relative_actions": false,
69
+ "relative_exclude_joints": [
70
+ "gripper"
71
+ ],
72
+ "action_feature_names": [
73
+ "axes"
74
+ ],
75
+ "rtc_config": null,
76
+ "image_resolution": [
77
+ 224,
78
+ 224
79
+ ],
80
+ "empty_cameras": 1,
81
+ "tokenizer_max_length": 200,
82
+ "normalization_mapping": {
83
+ "VISUAL": "IDENTITY",
84
+ "STATE": "QUANTILES",
85
+ "ACTION": "QUANTILES"
86
+ },
87
+ "gradient_checkpointing": true,
88
+ "compile_model": true,
89
+ "compile_mode": "default",
90
+ "freeze_vision_encoder": false,
91
+ "train_expert_only": true,
92
+ "optimizer_lr": 2.5e-05,
93
+ "optimizer_betas": [
94
+ 0.9,
95
+ 0.95
96
+ ],
97
+ "optimizer_eps": 1e-08,
98
+ "optimizer_weight_decay": 0.01,
99
+ "optimizer_grad_clip_norm": 1.0,
100
+ "scheduler_warmup_steps": 666,
101
+ "scheduler_decay_steps": 20000,
102
+ "scheduler_decay_lr": 2.5e-06
103
+ }
model.safetensors ADDED
@@ -0,0 +1,3 @@
 
 
 
 
1
+ version https://git-lfs.github.com/spec/v1
2
+ oid sha256:792a0d278b9323787757a3266766c1aecb61120b7c905ecf321397b1eb25a2b6
3
+ size 9354050752
policy_postprocessor.json ADDED
@@ -0,0 +1,38 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
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
+ 4
13
+ ]
14
+ }
15
+ },
16
+ "norm_map": {
17
+ "VISUAL": "IDENTITY",
18
+ "STATE": "QUANTILES",
19
+ "ACTION": "QUANTILES"
20
+ }
21
+ },
22
+ "state_file": "policy_postprocessor_step_0_unnormalizer_processor.safetensors"
23
+ },
24
+ {
25
+ "registry_name": "absolute_actions_processor",
26
+ "config": {
27
+ "enabled": false
28
+ }
29
+ },
30
+ {
31
+ "registry_name": "device_processor",
32
+ "config": {
33
+ "device": "cpu",
34
+ "float_dtype": null
35
+ }
36
+ }
37
+ ]
38
+ }
policy_postprocessor_step_0_unnormalizer_processor.safetensors ADDED
@@ -0,0 +1,3 @@
 
 
 
 
1
+ version https://git-lfs.github.com/spec/v1
2
+ oid sha256:4e44ccb252f706a61f8702be2474276b532a28010f88f50148cecdde906ac2ae
3
+ size 7384
policy_preprocessor.json ADDED
@@ -0,0 +1,97 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
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": "relative_actions_processor",
16
+ "config": {
17
+ "enabled": false,
18
+ "exclude_joints": [
19
+ "gripper"
20
+ ],
21
+ "action_names": null
22
+ }
23
+ },
24
+ {
25
+ "registry_name": "normalizer_processor",
26
+ "config": {
27
+ "eps": 1e-08,
28
+ "features": {
29
+ "observation.images.cam0": {
30
+ "type": "VISUAL",
31
+ "shape": [
32
+ 3,
33
+ 224,
34
+ 224
35
+ ]
36
+ },
37
+ "observation.images.cam2": {
38
+ "type": "VISUAL",
39
+ "shape": [
40
+ 3,
41
+ 224,
42
+ 224
43
+ ]
44
+ },
45
+ "observation.state": {
46
+ "type": "STATE",
47
+ "shape": [
48
+ 4
49
+ ]
50
+ },
51
+ "observation.images.empty_camera_0": {
52
+ "type": "VISUAL",
53
+ "shape": [
54
+ 3,
55
+ 224,
56
+ 224
57
+ ]
58
+ },
59
+ "action": {
60
+ "type": "ACTION",
61
+ "shape": [
62
+ 4
63
+ ]
64
+ }
65
+ },
66
+ "norm_map": {
67
+ "VISUAL": "IDENTITY",
68
+ "STATE": "QUANTILES",
69
+ "ACTION": "QUANTILES"
70
+ }
71
+ },
72
+ "state_file": "policy_preprocessor_step_3_normalizer_processor.safetensors"
73
+ },
74
+ {
75
+ "registry_name": "pi05_prepare_state_tokenizer_processor_step",
76
+ "config": {}
77
+ },
78
+ {
79
+ "registry_name": "tokenizer_processor",
80
+ "config": {
81
+ "max_length": 200,
82
+ "task_key": "task",
83
+ "padding_side": "right",
84
+ "padding": "max_length",
85
+ "truncation": true,
86
+ "tokenizer_name": "google/paligemma-3b-pt-224"
87
+ }
88
+ },
89
+ {
90
+ "registry_name": "device_processor",
91
+ "config": {
92
+ "device": "cuda",
93
+ "float_dtype": null
94
+ }
95
+ }
96
+ ]
97
+ }
policy_preprocessor_step_3_normalizer_processor.safetensors ADDED
@@ -0,0 +1,3 @@
 
 
 
 
1
+ version https://git-lfs.github.com/spec/v1
2
+ oid sha256:42453420ca049c1de5634a98f4c01a833325fa1c6a0ae87ffedd96e2dfbd09db
3
+ size 7328
train_config.json ADDED
@@ -0,0 +1,258 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ {
2
+ "dataset": {
3
+ "repo_id": "Ameyapores/pick_block_eef_position_abs",
4
+ "repo_type": "dataset",
5
+ "root": null,
6
+ "episodes": null,
7
+ "image_transforms": {
8
+ "enable": true,
9
+ "max_num_transforms": 3,
10
+ "random_order": false,
11
+ "tfs": {
12
+ "brightness": {
13
+ "weight": 1.0,
14
+ "type": "ColorJitter",
15
+ "kwargs": {
16
+ "brightness": [
17
+ 0.8,
18
+ 1.2
19
+ ]
20
+ }
21
+ },
22
+ "contrast": {
23
+ "weight": 1.0,
24
+ "type": "ColorJitter",
25
+ "kwargs": {
26
+ "contrast": [
27
+ 0.8,
28
+ 1.2
29
+ ]
30
+ }
31
+ },
32
+ "saturation": {
33
+ "weight": 1.0,
34
+ "type": "ColorJitter",
35
+ "kwargs": {
36
+ "saturation": [
37
+ 0.5,
38
+ 1.5
39
+ ]
40
+ }
41
+ },
42
+ "hue": {
43
+ "weight": 1.0,
44
+ "type": "ColorJitter",
45
+ "kwargs": {
46
+ "hue": [
47
+ -0.05,
48
+ 0.05
49
+ ]
50
+ }
51
+ },
52
+ "sharpness": {
53
+ "weight": 1.0,
54
+ "type": "SharpnessJitter",
55
+ "kwargs": {
56
+ "sharpness": [
57
+ 0.5,
58
+ 1.5
59
+ ]
60
+ }
61
+ },
62
+ "affine": {
63
+ "weight": 1.0,
64
+ "type": "RandomAffine",
65
+ "kwargs": {
66
+ "degrees": [
67
+ -5.0,
68
+ 5.0
69
+ ],
70
+ "translate": [
71
+ 0.05,
72
+ 0.05
73
+ ]
74
+ }
75
+ }
76
+ }
77
+ },
78
+ "revision": null,
79
+ "use_imagenet_stats": true,
80
+ "video_backend": "pyav",
81
+ "return_uint8": false,
82
+ "depth_output_unit": "mm",
83
+ "streaming": false,
84
+ "eval_split": 0.1
85
+ },
86
+ "env": null,
87
+ "policy": {
88
+ "type": "pi05",
89
+ "n_obs_steps": 1,
90
+ "input_features": {
91
+ "observation.images.cam0": {
92
+ "type": "VISUAL",
93
+ "shape": [
94
+ 3,
95
+ 224,
96
+ 224
97
+ ]
98
+ },
99
+ "observation.images.cam2": {
100
+ "type": "VISUAL",
101
+ "shape": [
102
+ 3,
103
+ 224,
104
+ 224
105
+ ]
106
+ },
107
+ "observation.state": {
108
+ "type": "STATE",
109
+ "shape": [
110
+ 4
111
+ ]
112
+ },
113
+ "observation.images.empty_camera_0": {
114
+ "type": "VISUAL",
115
+ "shape": [
116
+ 3,
117
+ 224,
118
+ 224
119
+ ]
120
+ }
121
+ },
122
+ "output_features": {
123
+ "action": {
124
+ "type": "ACTION",
125
+ "shape": [
126
+ 4
127
+ ]
128
+ }
129
+ },
130
+ "device": "cuda",
131
+ "use_amp": false,
132
+ "use_peft": false,
133
+ "push_to_hub": false,
134
+ "repo_id": null,
135
+ "private": null,
136
+ "tags": null,
137
+ "license": null,
138
+ "pretrained_path": "runs/pi05_pickblockabs_baseline_bs32_4gpu_20k-20261006-191836/checkpoints/last/pretrained_model",
139
+ "pretrained_revision": null,
140
+ "paligemma_variant": "gemma_2b",
141
+ "action_expert_variant": "gemma_300m",
142
+ "dtype": "bfloat16",
143
+ "chunk_size": 50,
144
+ "n_action_steps": 50,
145
+ "max_state_dim": 32,
146
+ "max_action_dim": 32,
147
+ "num_inference_steps": 10,
148
+ "time_sampling_beta_alpha": 1.5,
149
+ "time_sampling_beta_beta": 1.0,
150
+ "time_sampling_scale": 0.999,
151
+ "time_sampling_offset": 0.001,
152
+ "min_period": 0.004,
153
+ "max_period": 4.0,
154
+ "use_relative_actions": false,
155
+ "relative_exclude_joints": [
156
+ "gripper"
157
+ ],
158
+ "action_feature_names": [
159
+ "axes"
160
+ ],
161
+ "rtc_config": null,
162
+ "image_resolution": [
163
+ 224,
164
+ 224
165
+ ],
166
+ "empty_cameras": 1,
167
+ "tokenizer_max_length": 200,
168
+ "normalization_mapping": {
169
+ "VISUAL": "IDENTITY",
170
+ "STATE": "QUANTILES",
171
+ "ACTION": "QUANTILES"
172
+ },
173
+ "gradient_checkpointing": true,
174
+ "compile_model": true,
175
+ "compile_mode": "default",
176
+ "freeze_vision_encoder": false,
177
+ "train_expert_only": true,
178
+ "optimizer_lr": 2.5e-05,
179
+ "optimizer_betas": [
180
+ 0.9,
181
+ 0.95
182
+ ],
183
+ "optimizer_eps": 1e-08,
184
+ "optimizer_weight_decay": 0.01,
185
+ "optimizer_grad_clip_norm": 1.0,
186
+ "scheduler_warmup_steps": 666,
187
+ "scheduler_decay_steps": 20000,
188
+ "scheduler_decay_lr": 2.5e-06
189
+ },
190
+ "reward_model": null,
191
+ "output_dir": "runs/pi05_pickblockabs_baseline_bs32_4gpu_20k-20261006-191836",
192
+ "job_name": "pi05_pickblockabs_baseline_bs32_4gpu_20k-20261006-191836",
193
+ "resume": true,
194
+ "seed": 1000,
195
+ "cudnn_deterministic": false,
196
+ "num_workers": 2,
197
+ "batch_size": 8,
198
+ "prefetch_factor": 4,
199
+ "persistent_workers": true,
200
+ "dataloader_multiprocessing_context": "spawn",
201
+ "steps": 20000,
202
+ "env_eval_freq": 20000,
203
+ "log_freq": 200,
204
+ "eval_steps": 200,
205
+ "max_eval_samples": 0,
206
+ "tolerance_s": 0.0001,
207
+ "save_checkpoint": true,
208
+ "save_freq": 200,
209
+ "use_policy_training_preset": true,
210
+ "optimizer": {
211
+ "type": "adamw",
212
+ "lr": 2.5e-05,
213
+ "weight_decay": 0.01,
214
+ "grad_clip_norm": 1.0,
215
+ "betas": [
216
+ 0.9,
217
+ 0.95
218
+ ],
219
+ "eps": 1e-08
220
+ },
221
+ "scheduler": {
222
+ "type": "cosine_decay_with_warmup",
223
+ "num_warmup_steps": 666,
224
+ "num_decay_steps": 20000,
225
+ "peak_lr": 2.5e-05,
226
+ "decay_lr": 2.5e-06
227
+ },
228
+ "eval": {
229
+ "n_episodes": 50,
230
+ "batch_size": 50,
231
+ "use_async_envs": true,
232
+ "recording": false,
233
+ "recording_repo_id": null,
234
+ "recording_private": false
235
+ },
236
+ "wandb": {
237
+ "enable": false,
238
+ "disable_artifact": false,
239
+ "project": "lerobot",
240
+ "entity": null,
241
+ "notes": null,
242
+ "run_id": null,
243
+ "mode": null,
244
+ "add_tags": true
245
+ },
246
+ "peft": null,
247
+ "job": {
248
+ "target": null,
249
+ "image": "huggingface/lerobot-gpu:latest",
250
+ "timeout": "2d",
251
+ "detach": false,
252
+ "tags": []
253
+ },
254
+ "save_checkpoint_to_hub": false,
255
+ "sample_weighting": null,
256
+ "rename_map": {},
257
+ "checkpoint_path": "runs/pi05_pickblockabs_baseline_bs32_4gpu_20k-20261006-191836/checkpoints/last"
258
+ }