Robotics
LeRobot
Safetensors
cae_fastwam
libero
world-action-model
Viani commited on
Commit
7c8d07f
·
verified ·
1 Parent(s): 8ecb02e

Use FastWAM's processors; per-suite statistics in config.json; LIBERO 96.4%

Browse files

The checkpoint now uses FastWAM's standard LeRobot processors: in-model image resize and LeRobot's min/max (un)normalizer, given the statistics of --policy.task_suite from config.json (task_suite_stats). The two cae_fastwam_suite_* processor state files are removed. model.safetensors is unchanged. README: LIBERO success rate with this version, 96.4% (1928/2000; lerobot-eval, bf16, 10 denoising steps, 50 episodes per task, MuJoCo 3.3.1). SHA256SUMS regenerated.

README.md CHANGED
@@ -17,7 +17,7 @@ tags:
17
 
18
  [CAE-FastWAM](https://huggingface.co/amd/CAE-FastWAM) converted to the [LeRobot](https://github.com/huggingface/lerobot) checkpoint format. CAE-FastWAM is a [FastWAM](https://arxiv.org/abs/2603.16666) world action model with a Compact Action Expert: a small (32-wide) action expert denoises latent action tokens, and a LIBERO-suite-conditioned action decoder turns them into the action chunk, on top of FastWAM's Wan2.2-TI2V-5B video expert.
19
 
20
- The weights are the same as [amd/CAE-FastWAM](https://huggingface.co/amd/CAE-FastWAM); this repo only changes the layout (`config.json`, `model.safetensors`, and the LeRobot pre/post-processors with the per-suite normalisation statistics). It also carries the frozen action-VAE encoder, so the policy can be fine-tuned with the original CAE-FastWAM objective.
21
 
22
  > **Note:** loading this checkpoint needs the `cae_fastwam` policy type, which is not in a LeRobot release yet. This card will be updated with install instructions once it is available in LeRobot.
23
 
@@ -25,8 +25,8 @@ The weights are the same as [amd/CAE-FastWAM](https://huggingface.co/amd/CAE-Fas
25
 
26
  | Feature | Type | Shape |
27
  | --- | --- | --- |
28
- | `observation.images.image` (agent view) | visual | (3, 224, 224) |
29
- | `observation.images.image2` (wrist view) | visual | (3, 224, 224) |
30
  | `observation.state` | state | (8,) |
31
  | `action` | action | (7,) |
32
 
@@ -34,15 +34,17 @@ Select the LIBERO suite with `--policy.task_suite` (`libero_spatial`, `libero_ob
34
 
35
  ## Results
36
 
37
- LIBERO, bfloat16, 10 denoising steps, 50 episodes per task:
38
 
39
  | Suite | Success rate | Episodes |
40
  | --- | ---: | ---: |
41
- | libero_spatial | 97.0% | 500 |
42
- | libero_object | 99.8% | 500 |
43
- | libero_goal | 94.4% | 500 |
44
- | libero_10 | 95.6% | 500 |
45
- | **Average** | **96.7%** | 2000 |
 
 
46
 
47
  Reproduce (per suite; `--env.episode_length=700` for `libero_10`), on one AMD Instinct MI355X:
48
 
@@ -53,7 +55,7 @@ lerobot-eval --policy.path=amd/CAE-FastWAM-lerobot --policy.task_suite=libero_sp
53
  --eval.batch_size=5 --eval.n_episodes=50 --seed=42
54
  ```
55
 
56
- LIBERO stack: the one pinned by LeRobot's LIBERO benchmark image (hf-libero 0.1.4, robosuite 1.4.0, MuJoCo 3.3.1), CPU physics, OSMesa rendering. The MuJoCo version matters: with MuJoCo 3.8.1 the `libero_spatial` task 5 scene settles differently and the same evaluation scored 94.5% on average. Please report the MuJoCo version with LIBERO results.
57
 
58
  For reference, the [amd/CAE-FastWAM](https://huggingface.co/amd/CAE-FastWAM) card reports 97.28 ± 0.20% with GEAK-optimized inference and a GPU-simulated LIBERO (mean of 11 runs of 2000 episodes).
59
 
 
17
 
18
  [CAE-FastWAM](https://huggingface.co/amd/CAE-FastWAM) converted to the [LeRobot](https://github.com/huggingface/lerobot) checkpoint format. CAE-FastWAM is a [FastWAM](https://arxiv.org/abs/2603.16666) world action model with a Compact Action Expert: a small (32-wide) action expert denoises latent action tokens, and a LIBERO-suite-conditioned action decoder turns them into the action chunk, on top of FastWAM's Wan2.2-TI2V-5B video expert.
19
 
20
+ The weights are the same as [amd/CAE-FastWAM](https://huggingface.co/amd/CAE-FastWAM); this repo only changes the layout: `config.json` (including the per-suite min/max normalisation statistics, `task_suite_stats`), `model.safetensors`, and FastWAM's standard LeRobot pre/post-processors, which use the statistics of the selected suite. It also carries the frozen action-VAE encoder, so the policy can be fine-tuned with the original CAE-FastWAM objective.
21
 
22
  > **Note:** loading this checkpoint needs the `cae_fastwam` policy type, which is not in a LeRobot release yet. This card will be updated with install instructions once it is available in LeRobot.
23
 
 
25
 
26
  | Feature | Type | Shape |
27
  | --- | --- | --- |
28
+ | `observation.images.image` (agent view) | visual | (3, 224, 224), resized by the model as in FastWAM |
29
+ | `observation.images.image2` (wrist view) | visual | (3, 224, 224), resized by the model as in FastWAM |
30
  | `observation.state` | state | (8,) |
31
  | `action` | action | (7,) |
32
 
 
34
 
35
  ## Results
36
 
37
+ LIBERO with LeRobot's `lerobot-eval`: bfloat16, 10 denoising steps, 256 x 256 camera frames, seed 42, 50 episodes per task (10 tasks per suite), at most 400 steps per episode (700 for `libero_10`):
38
 
39
  | Suite | Success rate | Episodes |
40
  | --- | ---: | ---: |
41
+ | libero_spatial | 96.0% (480/500) | 500 |
42
+ | libero_object | 99.4% (497/500) | 500 |
43
+ | libero_goal | 94.4% (472/500) | 500 |
44
+ | libero_10 | 95.8% (479/500) | 500 |
45
+ | **Average** | **96.4% (1928/2000)** | 2000 |
46
+
47
+ This version processes observations with FastWAM's own path (in-model image resize, LeRobot's standard min/max normaliser). The previous version of this repo, with its own image resize step and normaliser, scored 96.7% (1934/2000) in an earlier run of this protocol. Run side by side on the same 2000 episodes, the previous version scored 96.3% (1926/2000) and this version 96.4%; no task differed significantly.
48
 
49
  Reproduce (per suite; `--env.episode_length=700` for `libero_10`), on one AMD Instinct MI355X:
50
 
 
55
  --eval.batch_size=5 --eval.n_episodes=50 --seed=42
56
  ```
57
 
58
+ LIBERO stack: the one pinned by LeRobot's LIBERO benchmark image (hf-libero 0.1.4, robosuite 1.4.0, MuJoCo 3.3.1), CPU physics, OSMesa rendering. The MuJoCo version matters: with MuJoCo 3.8.1 the `libero_spatial` task 5 scene settles differently, and the previous version of this repo scored 94.5% on average under it. Please report the MuJoCo version with LIBERO results.
59
 
60
  For reference, the [amd/CAE-FastWAM](https://huggingface.co/amd/CAE-FastWAM) card reports 97.28 ± 0.20% with GEAK-optimized inference and a GPU-simulated LIBERO (mean of 11 runs of 2000 episodes).
61
 
SHA256SUMS CHANGED
@@ -1,9 +1,7 @@
1
- d0eb115feb3471e0f1b98b4dfd49d559d98a0dab80f5e641615383b45b242443 config.json
2
  cfc7749b96f63bd31c3c42b5c471bf756814053e847c10f3eb003417bc523d30 LICENSE
3
- ce18712e4a1c6577dd7ec0970b4ebd61835763155149d8c9ec390529d7bf20f2 model.safetensors
4
  07b1f41737ff5020427958e08e62c07a176ae395e39d7e41e1f237defa38378a NOTICE
5
- 60c427e478f68f902bb019e50ffe9a0e55f71799faa7a24130cca31150f92161 policy_postprocessor.json
6
- d7eaf2818654f5f87424b23096096d437719d1a7e5f3dfa3ec5cbfd958c0829a policy_postprocessor_step_0_cae_fastwam_suite_unnormalizer.safetensors
7
- 8cdc442a212b6d414644dfdd130fdd291483282a9cad8b3db56dcda2ec5a8d57 policy_preprocessor.json
8
- 21d67e2e1a64200163b7ae04c08aecde9f451e7ed4f386d35be3116dc3d8cdba policy_preprocessor_step_4_cae_fastwam_suite_normalizer.safetensors
9
- 9e28a2b08d21e0ecd28d160841120da0a41b953607e59465e02f2558156628c3 README.md
 
1
+ 13c426f2b2b4b13e57f164c3cc85629955fb11e6b6a0daa0b471e96f8db2af9f config.json
2
  cfc7749b96f63bd31c3c42b5c471bf756814053e847c10f3eb003417bc523d30 LICENSE
 
3
  07b1f41737ff5020427958e08e62c07a176ae395e39d7e41e1f237defa38378a NOTICE
4
+ 8f8ce7bd200cf8aafa8480a255ded93a24353180185caffa68662dca53909f7b README.md
5
+ ce18712e4a1c6577dd7ec0970b4ebd61835763155149d8c9ec390529d7bf20f2 model.safetensors
6
+ 2e42c65ceb693e448f07687cf500a44cd4426ec1ed300af89fc0e168cae86d11 policy_postprocessor.json
7
+ e97371868054240c3d98d6672dff18ab1154ed21f719e3bdfd01f149b104ecae policy_preprocessor.json
 
config.json CHANGED
@@ -85,7 +85,6 @@
85
  "sigma_shift": null,
86
  "tiled": false,
87
  "fp32_attention": false,
88
- "fp32_upcast": false,
89
  "compile_action_infer": false,
90
  "use_gradient_checkpointing": false,
91
  "freeze_video_expert": false,
@@ -128,8 +127,7 @@
128
  "action_conditioned": false,
129
  "action_dim": 7,
130
  "action_group_causal_mask_mode": "group_diagonal",
131
- "fp32_attention": false,
132
- "fp32_upcast": false
133
  },
134
  "action_dit_config": {
135
  "action_dim": 16,
@@ -143,7 +141,6 @@
143
  "eps": 1e-06,
144
  "use_gradient_checkpointing": false,
145
  "fp32_attention": false,
146
- "fp32_upcast": false,
147
  "use_text_cross_attention": true
148
  },
149
  "normalization_mapping": {
@@ -158,19 +155,189 @@
158
  "action_decoder_hidden_dim": 128,
159
  "action_encoder_hidden_dim": 128,
160
  "action_encoder_variational": true,
161
- "delta_action_dims": [
162
- 0,
163
- 1,
164
- 2,
165
- 3,
166
- 4,
167
- 5
168
- ],
169
  "task_suites": [
170
  "libero_spatial",
171
  "libero_object",
172
  "libero_goal",
173
  "libero_10"
174
  ],
175
- "task_suite": null
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
176
  }
 
85
  "sigma_shift": null,
86
  "tiled": false,
87
  "fp32_attention": false,
 
88
  "compile_action_infer": false,
89
  "use_gradient_checkpointing": false,
90
  "freeze_video_expert": false,
 
127
  "action_conditioned": false,
128
  "action_dim": 7,
129
  "action_group_causal_mask_mode": "group_diagonal",
130
+ "fp32_attention": false
 
131
  },
132
  "action_dit_config": {
133
  "action_dim": 16,
 
141
  "eps": 1e-06,
142
  "use_gradient_checkpointing": false,
143
  "fp32_attention": false,
 
144
  "use_text_cross_attention": true
145
  },
146
  "normalization_mapping": {
 
155
  "action_decoder_hidden_dim": 128,
156
  "action_encoder_hidden_dim": 128,
157
  "action_encoder_variational": true,
 
 
 
 
 
 
 
 
158
  "task_suites": [
159
  "libero_spatial",
160
  "libero_object",
161
  "libero_goal",
162
  "libero_10"
163
  ],
164
+ "task_suite": null,
165
+ "task_suite_stats": {
166
+ "libero_spatial": {
167
+ "observation.state": {
168
+ "min": [
169
+ -0.4828203022480011,
170
+ -0.3255046010017395,
171
+ 0.008128181099891663,
172
+ 1.002794623374939,
173
+ -3.641430377960205,
174
+ -1.842738389968872,
175
+ -0.0021671096328645945,
176
+ -0.042015016078948975
177
+ ],
178
+ "max": [
179
+ 0.21031762659549713,
180
+ 0.39128610491752625,
181
+ 1.472778081893921,
182
+ 3.6714255809783936,
183
+ 3.560650587081909,
184
+ 1.386339545249939,
185
+ 0.04232141748070717,
186
+ 0.0013633022317662835
187
+ ]
188
+ },
189
+ "action": {
190
+ "min": [
191
+ -0.9374999403953552,
192
+ -0.9374999403953552,
193
+ -0.9374999403953552,
194
+ -0.18857142329216003,
195
+ -0.3675000071525574,
196
+ -0.36000001430511475,
197
+ 0.0
198
+ ],
199
+ "max": [
200
+ 0.9374999403953552,
201
+ 0.9374999403953552,
202
+ 0.9374999403953552,
203
+ 0.1971428543329239,
204
+ 0.33642858266830444,
205
+ 0.375,
206
+ 1.0
207
+ ]
208
+ }
209
+ },
210
+ "libero_object": {
211
+ "observation.state": {
212
+ "min": [
213
+ -0.4828203022480011,
214
+ -0.3255046010017395,
215
+ 0.008128181099891663,
216
+ 1.002794623374939,
217
+ -3.641430377960205,
218
+ -1.842738389968872,
219
+ -0.0021671096328645945,
220
+ -0.042015016078948975
221
+ ],
222
+ "max": [
223
+ 0.21031762659549713,
224
+ 0.39128610491752625,
225
+ 1.472778081893921,
226
+ 3.6714255809783936,
227
+ 3.560650587081909,
228
+ 1.386339545249939,
229
+ 0.04232141748070717,
230
+ 0.0013633022317662835
231
+ ]
232
+ },
233
+ "action": {
234
+ "min": [
235
+ -0.8839285969734192,
236
+ -0.9374999403953552,
237
+ -0.9374999403953552,
238
+ -0.15000000596046448,
239
+ -0.29035714268684387,
240
+ -0.32892856001853943,
241
+ 0.0
242
+ ],
243
+ "max": [
244
+ 0.9374999403953552,
245
+ 0.8919642567634583,
246
+ 0.9374999403953552,
247
+ 0.1767856925725937,
248
+ 0.35035714507102966,
249
+ 0.1810714304447174,
250
+ 1.0
251
+ ]
252
+ }
253
+ },
254
+ "libero_goal": {
255
+ "observation.state": {
256
+ "min": [
257
+ -0.4828203022480011,
258
+ -0.3255046010017395,
259
+ 0.008128181099891663,
260
+ 1.002794623374939,
261
+ -3.641430377960205,
262
+ -1.842738389968872,
263
+ -0.0021671096328645945,
264
+ -0.042015016078948975
265
+ ],
266
+ "max": [
267
+ 0.21031762659549713,
268
+ 0.39128610491752625,
269
+ 1.472778081893921,
270
+ 3.6714255809783936,
271
+ 3.560650587081909,
272
+ 1.386339545249939,
273
+ 0.04232141748070717,
274
+ 0.0013633022317662835
275
+ ]
276
+ },
277
+ "action": {
278
+ "min": [
279
+ -0.9374999403953552,
280
+ -0.9374999403953552,
281
+ -0.9374999403953552,
282
+ -0.24214285612106323,
283
+ -0.375,
284
+ -0.2871428430080414,
285
+ 0.0
286
+ ],
287
+ "max": [
288
+ 0.9374999403953552,
289
+ 0.9374999403953552,
290
+ 0.9374999403953552,
291
+ 0.35571423172950745,
292
+ 0.375,
293
+ 0.375,
294
+ 1.0
295
+ ]
296
+ }
297
+ },
298
+ "libero_10": {
299
+ "observation.state": {
300
+ "min": [
301
+ -0.4828203022480011,
302
+ -0.3255046010017395,
303
+ 0.008128181099891663,
304
+ 1.002794623374939,
305
+ -3.641430377960205,
306
+ -1.842738389968872,
307
+ -0.0021671096328645945,
308
+ -0.042015016078948975
309
+ ],
310
+ "max": [
311
+ 0.21031762659549713,
312
+ 0.39128610491752625,
313
+ 1.472778081893921,
314
+ 3.6714255809783936,
315
+ 3.560650587081909,
316
+ 1.386339545249939,
317
+ 0.04232141748070717,
318
+ 0.0013633022317662835
319
+ ]
320
+ },
321
+ "action": {
322
+ "min": [
323
+ -0.9374999403953552,
324
+ -0.9374999403953552,
325
+ -0.9374999403953552,
326
+ -0.23642855882644653,
327
+ -0.3053571283817291,
328
+ -0.3675000071525574,
329
+ 0.0
330
+ ],
331
+ "max": [
332
+ 0.9374999403953552,
333
+ 0.9374999403953552,
334
+ 0.9374999403953552,
335
+ 0.30000001192092896,
336
+ 0.29357144236564636,
337
+ 0.375,
338
+ 1.0
339
+ ]
340
+ }
341
+ }
342
+ }
343
  }
policy_postprocessor.json CHANGED
@@ -2,22 +2,29 @@
2
  "name": "policy_postprocessor",
3
  "steps": [
4
  {
5
- "registry_name": "cae_fastwam_suite_unnormalizer",
6
  "config": {
7
- "keys": [
8
- "action"
9
- ],
10
- "task_suites": [
11
- "libero_spatial",
12
- "libero_object",
13
- "libero_goal",
14
- "libero_10"
15
- ],
16
- "task_suite": null,
17
- "clamp": null,
18
- "range_tol": 0.0001
19
- },
20
- "state_file": "policy_postprocessor_step_0_cae_fastwam_suite_unnormalizer.safetensors"
 
 
 
 
 
 
 
21
  },
22
  {
23
  "registry_name": "fastwam_action_toggle_processor",
 
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
+ 7
13
+ ]
14
+ }
15
+ },
16
+ "norm_map": {
17
+ "VISUAL": "IDENTITY",
18
+ "STATE": "MIN_MAX",
19
+ "ACTION": "MIN_MAX"
20
+ }
21
+ }
22
+ },
23
+ {
24
+ "registry_name": "absolute_actions_processor",
25
+ "config": {
26
+ "enabled": false
27
+ }
28
  },
29
  {
30
  "registry_name": "fastwam_action_toggle_processor",
policy_postprocessor_step_0_cae_fastwam_suite_unnormalizer.safetensors DELETED
@@ -1,3 +0,0 @@
1
- version https://git-lfs.github.com/spec/v1
2
- oid sha256:d7eaf2818654f5f87424b23096096d437719d1a7e5f3dfa3ec5cbfd958c0829a
3
- size 856
 
 
 
 
policy_preprocessor.json CHANGED
@@ -11,15 +11,6 @@
11
  "registry_name": "to_batch_processor",
12
  "config": {}
13
  },
14
- {
15
- "registry_name": "cae_fastwam_image_processor",
16
- "config": {
17
- "camera_size": [
18
- 224,
19
- 224
20
- ]
21
- }
22
- },
23
  {
24
  "registry_name": "device_processor",
25
  "config": {
@@ -28,31 +19,55 @@
28
  }
29
  },
30
  {
31
- "registry_name": "cae_fastwam_suite_normalizer",
32
  "config": {
33
- "keys": [
34
- "observation.state",
35
- "action"
36
- ],
37
- "task_suites": [
38
- "libero_spatial",
39
- "libero_object",
40
- "libero_goal",
41
- "libero_10"
42
  ],
43
- "task_suite": null,
44
- "clamp": 5.0,
45
- "range_tol": 0.0001,
46
- "delta_action_dims": [
47
- 0,
48
- 1,
49
- 2,
50
- 3,
51
- 4,
52
- 5
53
- ]
54
- },
55
- "state_file": "policy_preprocessor_step_4_cae_fastwam_suite_normalizer.safetensors"
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
56
  }
57
  ]
58
  }
 
11
  "registry_name": "to_batch_processor",
12
  "config": {}
13
  },
 
 
 
 
 
 
 
 
 
14
  {
15
  "registry_name": "device_processor",
16
  "config": {
 
19
  }
20
  },
21
  {
22
+ "registry_name": "relative_actions_processor",
23
  "config": {
24
+ "enabled": false,
25
+ "exclude_joints": [
26
+ "gripper"
 
 
 
 
 
 
27
  ],
28
+ "action_names": null
29
+ }
30
+ },
31
+ {
32
+ "registry_name": "normalizer_processor",
33
+ "config": {
34
+ "eps": 1e-08,
35
+ "features": {
36
+ "observation.images.image": {
37
+ "type": "VISUAL",
38
+ "shape": [
39
+ 3,
40
+ 224,
41
+ 224
42
+ ]
43
+ },
44
+ "observation.images.image2": {
45
+ "type": "VISUAL",
46
+ "shape": [
47
+ 3,
48
+ 224,
49
+ 224
50
+ ]
51
+ },
52
+ "observation.state": {
53
+ "type": "STATE",
54
+ "shape": [
55
+ 8
56
+ ]
57
+ },
58
+ "action": {
59
+ "type": "ACTION",
60
+ "shape": [
61
+ 7
62
+ ]
63
+ }
64
+ },
65
+ "norm_map": {
66
+ "VISUAL": "IDENTITY",
67
+ "STATE": "MIN_MAX",
68
+ "ACTION": "MIN_MAX"
69
+ }
70
+ }
71
  }
72
  ]
73
  }
policy_preprocessor_step_4_cae_fastwam_suite_normalizer.safetensors DELETED
@@ -1,3 +0,0 @@
1
- version https://git-lfs.github.com/spec/v1
2
- oid sha256:21d67e2e1a64200163b7ae04c08aecde9f451e7ed4f386d35be3116dc3d8cdba
3
- size 1832