maskjp commited on
Commit
5360036
·
verified ·
1 Parent(s): c69758b

MTDiT-Spatial multi-task spatial_mask @ 100,000 steps

Browse files
README.md ADDED
@@ -0,0 +1,107 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ ---
2
+ library_name: lerobot
3
+ pipeline_tag: robotics
4
+ tags:
5
+ - robotics
6
+ - lerobot
7
+ - diffusion-policy
8
+ - multi-task
9
+ - negative-result
10
+ license: apache-2.0
11
+ base_model:
12
+ - openai/clip-vit-base-patch16
13
+ ---
14
+
15
+ # MTDiT-Spatial — multi-task, `spatial_mask`
16
+
17
+ A 450M-parameter multi-task diffusion transformer trained on 949 real-robot episodes.
18
+ Vision path `spatial_softmax`, state dropout `0.15`, absolute joint actions.
19
+
20
+ ## Read this before using the weights
21
+
22
+ **These checkpoints are published as a negative result.** They fit their data well and
23
+ largely **ignore their scene cameras**, predicting joint targets from proprioception instead.
24
+ **Arm camera sensitivity is 0.272** against a null-test floor of 0.000 and a grounded reference of ~1.0.
25
+
26
+ Do not deploy this as a vision-conditioned policy. It is useful as a reproduction target, a
27
+ baseline for work on visual grounding, or a test case for sensitivity metrics.
28
+
29
+ ## Measurements
30
+
31
+ | Metric | Value |
32
+ |---|---:|
33
+ | Validation loss @ 100,000 | 0.0019 |
34
+ | **Arm camera sensitivity** | **0.272** |
35
+ | Gripper camera sensitivity | 0.930 |
36
+ | Arm prediction error (held-out) | 0.102 |
37
+ | Null test (own cameras) | 0.000 |
38
+
39
+ Camera sensitivity holds the proprioceptive state fixed, swaps all three camera streams for
40
+ matched-phase frames from a different held-out episode, and reports the mean change in predicted
41
+ joints over the natural cross-episode spread of the ground truth. A policy that tracks the scene
42
+ scores ~1.0; one that ignores it scores ~0.
43
+
44
+ Two controls make the number trustworthy. Every variant is sampled from an identical noise
45
+ sequence (common random numbers), without which diffusion sampling noise alone contributes 0.077.
46
+ And the null test — feed the anchor its own cameras — returns 0.000 here, so the reported value is
47
+ signal, not floor.
48
+
49
+ For reference under the same evaluator: stock `multi_task_dit` on LIBERO scores 0.92–1.10, and
50
+ π₀.₅ on LIBERO scores 1.19–1.31.
51
+
52
+ ## The sweep
53
+
54
+ Ranking by loss is the inverse of ranking by grounding. The best-fitting arms are the blindest,
55
+ and the two arms that withhold proprioception 15% of the time recover 2.5–3.5× the camera
56
+ sensitivity for a ~12% loss penalty. That inversion is the result, so all five arms are published
57
+ together.
58
+
59
+ | Arm | Vision path | State dropout | Val loss | Arm sensitivity | Gripper sensitivity |
60
+ |---|---|---:|---:|---:|---:|
61
+ | [`cls_nodrop`](https://huggingface.co/maskjp/mtdit-spatial-multitask-cls-nodrop) | `cls` | 0.00 | **0.0017** | 0.077 | 0.706 |
62
+ | [`spatial_nodrop`](https://huggingface.co/maskjp/mtdit-spatial-multitask-spatial-nodrop) | `spatial_softmax` | 0.00 | **0.0017** | 0.089 | 0.693 |
63
+ | [`patch_tokens`](https://huggingface.co/maskjp/mtdit-spatial-multitask-patch-tokens) | `patch_tokens` | 0.00 | 0.0018* | * | * |
64
+ | [`spatial_mask`](https://huggingface.co/maskjp/mtdit-spatial-multitask-spatial-mask) | `spatial_softmax` | 0.15 | 0.0019 | **0.272** | **0.930** |
65
+ | [`cls_mask`](https://huggingface.co/maskjp/mtdit-spatial-multitask-cls-mask) | `cls` | 0.15 | 0.0020 | 0.198 | 0.922 |
66
+
67
+ <sub>* `patch_tokens` is ~1.8× slower per step and was still training at publication; its 0.0018
68
+ is at 75K and it tracks `cls_nodrop` to within 0.0001 at every shared checkpoint.</sub>
69
+
70
+ ## Training
71
+
72
+ | | |
73
+ |---|---|
74
+ | Dataset | `l5vel-peng/base4-multitask-eef-merged-v30` — 7 tasks, 949 episodes, 1,524,905 frames, 50 Hz |
75
+ | Held out | `eval_split=0.05`, applied per task |
76
+ | Action space | absolute joints, 10-dim |
77
+ | Steps | 100,000, batch 64, seed 1000 |
78
+ | Architecture | 4 layers, hidden 512, 8 heads, dropout 0.1, RoPE |
79
+ | Objective | DDPM, 100 train timesteps, horizon 32, 24 executed steps, 2 observation steps |
80
+ | Encoders | `openai/clip-vit-base-patch16` for vision and text, vision LR × 0.1 |
81
+ | Images | 3 cameras, 480×640 → resize 240×320 → random crop 224×224 |
82
+ | Optimizer | 3e-4, weight decay 0, no warmup, cosine decay |
83
+ | Normalization | visual MEAN_STD, state MIN_MAX, action MIN_MAX |
84
+
85
+ The 30K checkpoint was extended to 100K by resuming, which re-stretched the cosine schedule; loss
86
+ bumps at 35K and recovers by ~65K. The floor was already reached at 30K — 3.3× more compute moved
87
+ it by 0.0001.
88
+
89
+ ## Usage
90
+
91
+ ```python
92
+ from lerobot.policies.factory import make_policy
93
+
94
+ policy = make_policy("maskjp/mtdit-spatial-multitask-spatial-mask")
95
+ ```
96
+
97
+ Requires the `mtdit_spatial` plugin from
98
+ [`maskjp/lerobot_policy_mtdit_spatial`](https://github.com/maskjp/lerobot_policy_mtdit_spatial),
99
+ which also contains `scripts/vision_sensitivity.py` used for every number above.
100
+
101
+ ## Known limitations
102
+
103
+ - Ignores the scene cameras for arm motion; the left and right cameras contribute least.
104
+ - Trained on absolute joint targets, which correlate 0.96 with the current state — the shortcut
105
+ this failure runs on. Datasets with per-step deltas (LIBERO, −0.14) do not show it.
106
+ - Single robot, single embodiment, 3 fixed camera poses. No environment-rollout success rate is
107
+ reported; only offline metrics.
config.json ADDED
@@ -0,0 +1,143 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ {
2
+ "type": "mtdit_spatial",
3
+ "n_obs_steps": 2,
4
+ "input_features": {
5
+ "observation.state": {
6
+ "type": "STATE",
7
+ "shape": [
8
+ 10
9
+ ]
10
+ },
11
+ "observation.images.left": {
12
+ "type": "VISUAL",
13
+ "shape": [
14
+ 3,
15
+ 480,
16
+ 640
17
+ ]
18
+ },
19
+ "observation.images.right": {
20
+ "type": "VISUAL",
21
+ "shape": [
22
+ 3,
23
+ 480,
24
+ 640
25
+ ]
26
+ },
27
+ "observation.images.wrist": {
28
+ "type": "VISUAL",
29
+ "shape": [
30
+ 3,
31
+ 480,
32
+ 640
33
+ ]
34
+ },
35
+ "observation.base_pose": {
36
+ "type": "STATE",
37
+ "shape": [
38
+ 3
39
+ ]
40
+ },
41
+ "observation.eef_state": {
42
+ "type": "STATE",
43
+ "shape": [
44
+ 13
45
+ ]
46
+ }
47
+ },
48
+ "output_features": {
49
+ "action": {
50
+ "type": "ACTION",
51
+ "shape": [
52
+ 10
53
+ ]
54
+ },
55
+ "action.eef": {
56
+ "type": "ACTION",
57
+ "shape": [
58
+ 13
59
+ ]
60
+ }
61
+ },
62
+ "device": "cuda",
63
+ "use_amp": false,
64
+ "use_peft": false,
65
+ "push_to_hub": false,
66
+ "repo_id": null,
67
+ "private": null,
68
+ "tags": null,
69
+ "license": null,
70
+ "pretrained_path": "/home/data/pej3435/Code/dev/lerobot_policy_mtdit_spatial/outputs/multitask/spatial_mask/checkpoints/last/pretrained_model",
71
+ "pretrained_revision": null,
72
+ "horizon": 32,
73
+ "n_action_steps": 24,
74
+ "objective": "diffusion",
75
+ "noise_scheduler_type": "DDPM",
76
+ "num_train_timesteps": 100,
77
+ "beta_schedule": "squaredcos_cap_v2",
78
+ "beta_start": 0.0001,
79
+ "beta_end": 0.02,
80
+ "prediction_type": "epsilon",
81
+ "clip_sample": true,
82
+ "clip_sample_range": 1.0,
83
+ "num_inference_steps": null,
84
+ "sigma_min": 0.0,
85
+ "num_integration_steps": 100,
86
+ "integration_method": "euler",
87
+ "timestep_sampling_strategy": "beta",
88
+ "timestep_sampling_s": 0.999,
89
+ "timestep_sampling_alpha": 1.5,
90
+ "timestep_sampling_beta": 1.0,
91
+ "hidden_dim": 512,
92
+ "num_layers": 4,
93
+ "num_heads": 8,
94
+ "dropout": 0.1,
95
+ "use_positional_encoding": false,
96
+ "timestep_embed_dim": 256,
97
+ "use_rope": true,
98
+ "rope_base": 10000.0,
99
+ "vision_encoder_name": "openai/clip-vit-base-patch16",
100
+ "use_separate_rgb_encoder_per_camera": false,
101
+ "vision_encoder_lr_multiplier": 0.1,
102
+ "image_resize_shape": [
103
+ 240,
104
+ 320
105
+ ],
106
+ "image_crop_shape": [
107
+ 224,
108
+ 224
109
+ ],
110
+ "image_crop_is_random": true,
111
+ "vision_feature_mode": "spatial_softmax",
112
+ "num_spatial_keypoints": 32,
113
+ "spatial_softmax_keep_cls": true,
114
+ "spatial_softmax_learnable_temperature": true,
115
+ "cross_attention_heads": null,
116
+ "state_dropout_prob": 0.15,
117
+ "use_relative_actions": false,
118
+ "relative_exclude_joints": [],
119
+ "action_feature_names": [
120
+ "motors"
121
+ ],
122
+ "text_encoder_name": "openai/clip-vit-base-patch16",
123
+ "tokenizer_max_length": 77,
124
+ "tokenizer_padding": "max_length",
125
+ "tokenizer_padding_side": "right",
126
+ "tokenizer_truncation": true,
127
+ "normalization_mapping": {
128
+ "VISUAL": "MEAN_STD",
129
+ "STATE": "MIN_MAX",
130
+ "ACTION": "MIN_MAX"
131
+ },
132
+ "optimizer_lr": 0.0003,
133
+ "optimizer_betas": [
134
+ 0.95,
135
+ 0.999
136
+ ],
137
+ "optimizer_eps": 1e-08,
138
+ "optimizer_weight_decay": 0.0,
139
+ "scheduler_name": "cosine",
140
+ "scheduler_warmup_steps": 0,
141
+ "do_mask_loss_for_padding": false,
142
+ "drop_n_last_frames": 7
143
+ }
model.safetensors ADDED
@@ -0,0 +1,3 @@
 
 
 
 
1
+ version https://git-lfs.github.com/spec/v1
2
+ oid sha256:915f198e294e5cce73c66c73153710db602c93d9b50eb3a9642ff3f78e107002
3
+ size 957895124
policy_postprocessor.json ADDED
@@ -0,0 +1,44 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
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
+ 10
13
+ ]
14
+ },
15
+ "action.eef": {
16
+ "type": "ACTION",
17
+ "shape": [
18
+ 13
19
+ ]
20
+ }
21
+ },
22
+ "norm_map": {
23
+ "VISUAL": "MEAN_STD",
24
+ "STATE": "MIN_MAX",
25
+ "ACTION": "MIN_MAX"
26
+ }
27
+ },
28
+ "state_file": "policy_postprocessor_step_0_unnormalizer_processor.safetensors"
29
+ },
30
+ {
31
+ "registry_name": "absolute_actions_processor",
32
+ "config": {
33
+ "enabled": false
34
+ }
35
+ },
36
+ {
37
+ "registry_name": "device_processor",
38
+ "config": {
39
+ "device": "cpu",
40
+ "float_dtype": null
41
+ }
42
+ }
43
+ ]
44
+ }
policy_postprocessor_step_0_unnormalizer_processor.safetensors ADDED
@@ -0,0 +1,3 @@
 
 
 
 
1
+ version https://git-lfs.github.com/spec/v1
2
+ oid sha256:d99c485cf8015380852991f5d951535ee5c5c718882a5140a7aea0d687990d7d
3
+ size 6796
policy_preprocessor.json ADDED
@@ -0,0 +1,114 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
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": "tokenizer_processor",
16
+ "config": {
17
+ "max_length": 77,
18
+ "task_key": "task",
19
+ "padding_side": "right",
20
+ "padding": "max_length",
21
+ "truncation": true,
22
+ "tokenizer_name": "tokenizer"
23
+ },
24
+ "artifacts": {
25
+ "tokenizer_name": "tokenizer"
26
+ }
27
+ },
28
+ {
29
+ "registry_name": "device_processor",
30
+ "config": {
31
+ "device": "cuda",
32
+ "float_dtype": null
33
+ }
34
+ },
35
+ {
36
+ "registry_name": "mtdit_spatial_relative_actions_processor",
37
+ "config": {
38
+ "enabled": false,
39
+ "exclude_joints": [],
40
+ "action_names": [
41
+ "motors"
42
+ ]
43
+ }
44
+ },
45
+ {
46
+ "registry_name": "normalizer_processor",
47
+ "config": {
48
+ "eps": 1e-08,
49
+ "features": {
50
+ "observation.state": {
51
+ "type": "STATE",
52
+ "shape": [
53
+ 10
54
+ ]
55
+ },
56
+ "observation.images.left": {
57
+ "type": "VISUAL",
58
+ "shape": [
59
+ 3,
60
+ 480,
61
+ 640
62
+ ]
63
+ },
64
+ "observation.images.right": {
65
+ "type": "VISUAL",
66
+ "shape": [
67
+ 3,
68
+ 480,
69
+ 640
70
+ ]
71
+ },
72
+ "observation.images.wrist": {
73
+ "type": "VISUAL",
74
+ "shape": [
75
+ 3,
76
+ 480,
77
+ 640
78
+ ]
79
+ },
80
+ "observation.base_pose": {
81
+ "type": "STATE",
82
+ "shape": [
83
+ 3
84
+ ]
85
+ },
86
+ "observation.eef_state": {
87
+ "type": "STATE",
88
+ "shape": [
89
+ 13
90
+ ]
91
+ },
92
+ "action": {
93
+ "type": "ACTION",
94
+ "shape": [
95
+ 10
96
+ ]
97
+ },
98
+ "action.eef": {
99
+ "type": "ACTION",
100
+ "shape": [
101
+ 13
102
+ ]
103
+ }
104
+ },
105
+ "norm_map": {
106
+ "VISUAL": "MEAN_STD",
107
+ "STATE": "MIN_MAX",
108
+ "ACTION": "MIN_MAX"
109
+ }
110
+ },
111
+ "state_file": "policy_preprocessor_step_5_normalizer_processor.safetensors"
112
+ }
113
+ ]
114
+ }
policy_preprocessor_step_5_normalizer_processor.safetensors ADDED
@@ -0,0 +1,3 @@
 
 
 
 
1
+ version https://git-lfs.github.com/spec/v1
2
+ oid sha256:7b5a2f5ec520d64a11bccfbff17d59499ec884abf2a9ae90b8b5f0d9a4293ba9
3
+ size 6756
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,20 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ {
2
+ "add_prefix_space": false,
3
+ "backend": "tokenizers",
4
+ "bos_token": "<|startoftext|>",
5
+ "do_lower_case": true,
6
+ "eos_token": "<|endoftext|>",
7
+ "errors": "replace",
8
+ "is_local": true,
9
+ "max_length": 77,
10
+ "model_max_length": 77,
11
+ "pad_to_multiple_of": null,
12
+ "pad_token": "<|endoftext|>",
13
+ "pad_token_type_id": 0,
14
+ "padding_side": "right",
15
+ "stride": 0,
16
+ "tokenizer_class": "CLIPTokenizer",
17
+ "truncation_side": "right",
18
+ "truncation_strategy": "longest_first",
19
+ "unk_token": "<|endoftext|>"
20
+ }
train_config.json ADDED
@@ -0,0 +1,344 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ {
2
+ "dataset": {
3
+ "repo_id": "l5vel-peng/base4-multitask-eef-merged-v30",
4
+ "repo_type": "dataset",
5
+ "root": "/home/data/pej3435/.cache/l5vel_eef_merge/outputs/base4-multitask-eef-merged-v30",
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": "torchcodec",
82
+ "return_uint8": false,
83
+ "depth_output_unit": "mm",
84
+ "streaming": false,
85
+ "eval_split": 0.05
86
+ },
87
+ "env": null,
88
+ "policy": {
89
+ "type": "mtdit_spatial",
90
+ "n_obs_steps": 2,
91
+ "input_features": {
92
+ "observation.state": {
93
+ "type": "STATE",
94
+ "shape": [
95
+ 10
96
+ ]
97
+ },
98
+ "observation.images.left": {
99
+ "type": "VISUAL",
100
+ "shape": [
101
+ 3,
102
+ 480,
103
+ 640
104
+ ]
105
+ },
106
+ "observation.images.right": {
107
+ "type": "VISUAL",
108
+ "shape": [
109
+ 3,
110
+ 480,
111
+ 640
112
+ ]
113
+ },
114
+ "observation.images.wrist": {
115
+ "type": "VISUAL",
116
+ "shape": [
117
+ 3,
118
+ 480,
119
+ 640
120
+ ]
121
+ },
122
+ "observation.base_pose": {
123
+ "type": "STATE",
124
+ "shape": [
125
+ 3
126
+ ]
127
+ },
128
+ "observation.eef_state": {
129
+ "type": "STATE",
130
+ "shape": [
131
+ 13
132
+ ]
133
+ }
134
+ },
135
+ "output_features": {
136
+ "action": {
137
+ "type": "ACTION",
138
+ "shape": [
139
+ 10
140
+ ]
141
+ },
142
+ "action.eef": {
143
+ "type": "ACTION",
144
+ "shape": [
145
+ 13
146
+ ]
147
+ }
148
+ },
149
+ "device": "cuda",
150
+ "use_amp": false,
151
+ "use_peft": false,
152
+ "push_to_hub": false,
153
+ "repo_id": null,
154
+ "private": null,
155
+ "tags": null,
156
+ "license": null,
157
+ "pretrained_path": "/home/data/pej3435/Code/dev/lerobot_policy_mtdit_spatial/outputs/multitask/spatial_mask/checkpoints/last/pretrained_model",
158
+ "pretrained_revision": null,
159
+ "horizon": 32,
160
+ "n_action_steps": 24,
161
+ "objective": "diffusion",
162
+ "noise_scheduler_type": "DDPM",
163
+ "num_train_timesteps": 100,
164
+ "beta_schedule": "squaredcos_cap_v2",
165
+ "beta_start": 0.0001,
166
+ "beta_end": 0.02,
167
+ "prediction_type": "epsilon",
168
+ "clip_sample": true,
169
+ "clip_sample_range": 1.0,
170
+ "num_inference_steps": null,
171
+ "sigma_min": 0.0,
172
+ "num_integration_steps": 100,
173
+ "integration_method": "euler",
174
+ "timestep_sampling_strategy": "beta",
175
+ "timestep_sampling_s": 0.999,
176
+ "timestep_sampling_alpha": 1.5,
177
+ "timestep_sampling_beta": 1.0,
178
+ "hidden_dim": 512,
179
+ "num_layers": 4,
180
+ "num_heads": 8,
181
+ "dropout": 0.1,
182
+ "use_positional_encoding": false,
183
+ "timestep_embed_dim": 256,
184
+ "use_rope": true,
185
+ "rope_base": 10000.0,
186
+ "vision_encoder_name": "openai/clip-vit-base-patch16",
187
+ "use_separate_rgb_encoder_per_camera": false,
188
+ "vision_encoder_lr_multiplier": 0.1,
189
+ "image_resize_shape": [
190
+ 240,
191
+ 320
192
+ ],
193
+ "image_crop_shape": [
194
+ 224,
195
+ 224
196
+ ],
197
+ "image_crop_is_random": true,
198
+ "vision_feature_mode": "spatial_softmax",
199
+ "num_spatial_keypoints": 32,
200
+ "spatial_softmax_keep_cls": true,
201
+ "spatial_softmax_learnable_temperature": true,
202
+ "cross_attention_heads": null,
203
+ "state_dropout_prob": 0.15,
204
+ "use_relative_actions": false,
205
+ "relative_exclude_joints": [],
206
+ "action_feature_names": [
207
+ "motors"
208
+ ],
209
+ "text_encoder_name": "openai/clip-vit-base-patch16",
210
+ "tokenizer_max_length": 77,
211
+ "tokenizer_padding": "max_length",
212
+ "tokenizer_padding_side": "right",
213
+ "tokenizer_truncation": true,
214
+ "normalization_mapping": {
215
+ "VISUAL": "MEAN_STD",
216
+ "STATE": "MIN_MAX",
217
+ "ACTION": "MIN_MAX"
218
+ },
219
+ "optimizer_lr": 0.0003,
220
+ "optimizer_betas": [
221
+ 0.95,
222
+ 0.999
223
+ ],
224
+ "optimizer_eps": 1e-08,
225
+ "optimizer_weight_decay": 0.0,
226
+ "scheduler_name": "cosine",
227
+ "scheduler_warmup_steps": 0,
228
+ "do_mask_loss_for_padding": false,
229
+ "drop_n_last_frames": 7
230
+ },
231
+ "reward_model": null,
232
+ "output_dir": "/home/data/pej3435/Code/dev/lerobot_policy_mtdit_spatial/outputs/multitask/spatial_mask",
233
+ "job_name": "mtdit_multitask_spatial_mask",
234
+ "resume": true,
235
+ "seed": 1000,
236
+ "cudnn_deterministic": false,
237
+ "num_workers": 12,
238
+ "batch_size": 64,
239
+ "prefetch_factor": 4,
240
+ "persistent_workers": true,
241
+ "dataloader_multiprocessing_context": "spawn",
242
+ "steps": 100000,
243
+ "env_eval_freq": 0,
244
+ "log_freq": 200,
245
+ "eval_steps": 5000,
246
+ "max_eval_samples": 0,
247
+ "tolerance_s": 0.0001,
248
+ "save_checkpoint": true,
249
+ "save_freq": 10000,
250
+ "checkpoint_format": "safetensors",
251
+ "use_policy_training_preset": true,
252
+ "optimizer": {
253
+ "type": "adam",
254
+ "lr": 0.0003,
255
+ "weight_decay": 0.0,
256
+ "grad_clip_norm": 10.0,
257
+ "betas": [
258
+ 0.95,
259
+ 0.999
260
+ ],
261
+ "eps": 1e-08
262
+ },
263
+ "scheduler": {
264
+ "type": "diffuser",
265
+ "num_warmup_steps": 0,
266
+ "name": "cosine"
267
+ },
268
+ "parallelism": {
269
+ "dp_replicate": 1,
270
+ "dp_shard": 1,
271
+ "context_parallel": {
272
+ "ring_degree": 1,
273
+ "ulysses_degree": 1
274
+ },
275
+ "cfg_parallel": 1
276
+ },
277
+ "accelerator": {
278
+ "mixed_precision": "bf16",
279
+ "gradient_accumulation": {
280
+ "steps": 1
281
+ },
282
+ "fsdp": {
283
+ "reshard_after_forward": true,
284
+ "wrap_modules": null,
285
+ "min_num_params": null,
286
+ "cpu_offload": false,
287
+ "ignored_modules": null
288
+ },
289
+ "ddp": {
290
+ "find_unused_parameters": true,
291
+ "gradient_as_bucket_view": false,
292
+ "static_graph": false
293
+ },
294
+ "compile": {
295
+ "enabled": false,
296
+ "backend": "inductor",
297
+ "mode": null,
298
+ "regional": true
299
+ },
300
+ "activation_checkpointing": {
301
+ "mode": "none"
302
+ }
303
+ },
304
+ "eval": {
305
+ "n_episodes": 50,
306
+ "batch_size": 50,
307
+ "use_async_envs": true,
308
+ "recording": false,
309
+ "recording_repo_id": null,
310
+ "recording_private": false
311
+ },
312
+ "ema": {
313
+ "enable": false,
314
+ "decay": null,
315
+ "update_after_step": 0,
316
+ "inv_gamma": 1.0,
317
+ "power": 0.75,
318
+ "min_decay": 0.0,
319
+ "max_decay": 0.9999,
320
+ "use_for_eval": true
321
+ },
322
+ "wandb": {
323
+ "enable": true,
324
+ "disable_artifact": true,
325
+ "project": "mtdit-croissant-multitask",
326
+ "entity": null,
327
+ "notes": null,
328
+ "run_id": "vrg2t4v1",
329
+ "mode": null,
330
+ "add_tags": true
331
+ },
332
+ "peft": null,
333
+ "job": {
334
+ "target": null,
335
+ "image": "huggingface/lerobot-gpu:latest",
336
+ "timeout": "2d",
337
+ "detach": false,
338
+ "tags": []
339
+ },
340
+ "save_checkpoint_to_hub": false,
341
+ "sample_weighting": null,
342
+ "rename_map": {},
343
+ "checkpoint_path": "/home/data/pej3435/Code/dev/lerobot_policy_mtdit_spatial/outputs/multitask/spatial_mask/checkpoints/last"
344
+ }