albus2024 commited on
Commit
3be9ef3
·
verified ·
1 Parent(s): 81d1979

Update Dita training configuration and bundled runtime to 2.1.0

Browse files

Enable full-backbone fine-tuning and inference checkpoint bypass; add native LoRA support. Align optimizer groups and the warmup/cosine schedule with the upstream LIBERO recipe, including LIBERO-Long's higher learning rate. Preserve all model weights and processors. Bundle the tested 2.1.0 wheel, source hashes, validation reports, and archived 2.0.1 metadata.

.gitattributes CHANGED
@@ -36,3 +36,4 @@ saved_model/**/* filter=lfs diff=lfs merge=lfs -text
36
  lerobot_policy_dita-1.0.5-py3-none-any.whl filter=lfs diff=lfs merge=lfs -text
37
  lerobot_policy_dita-2.0.0-py3-none-any.whl filter=lfs diff=lfs merge=lfs -text
38
  lerobot_policy_dita-2.0.1-py3-none-any.whl filter=lfs diff=lfs merge=lfs -text
 
 
36
  lerobot_policy_dita-1.0.5-py3-none-any.whl filter=lfs diff=lfs merge=lfs -text
37
  lerobot_policy_dita-2.0.0-py3-none-any.whl filter=lfs diff=lfs merge=lfs -text
38
  lerobot_policy_dita-2.0.1-py3-none-any.whl filter=lfs diff=lfs merge=lfs -text
39
+ lerobot_policy_dita-2.1.0-py3-none-any.whl filter=lfs diff=lfs merge=lfs -text
GRIPPER_MODES.md CHANGED
@@ -1,6 +1,6 @@
1
  # DITA gripper modes
2
 
3
- Runtime **2.0.1** supports `policy.gripper_mode=binary` and `continuous`. The mode is
4
  saved in `config.json` and both processor JSON files. The public LeRobot processor
5
  factory applies the active policy mode when loading pretrained templates, including
6
  CLI overrides. Conflicting explicit processor modes fail. New fine-tuning binds the
@@ -8,7 +8,7 @@ target dataset statistics; resume keeps the saved statistics.
8
 
9
  The config schema replaces the serialized `action_normalization_mask` and
10
  `gripper_sign_flip` fields with `gripper_mode`. Old policy and processor configs are
11
- not supported. Use the updated Hub revisions and their 2.0.1 wheel together.
12
 
13
  | Contract | `binary` | `continuous` |
14
  | --- | --- | --- |
@@ -40,7 +40,7 @@ all converted LIBERO inference outputs unchanged.
40
  Install the runtime bundled with the updated initialization:
41
 
42
  ```bash
43
- pip install 'lerobot_policy_dita[training] @ https://huggingface.co/albus2024/dita_droid_pretrain/resolve/main/lerobot_policy_dita-2.0.1-py3-none-any.whl'
44
  ```
45
 
46
  LIBERO:
 
1
  # DITA gripper modes
2
 
3
+ Runtime **2.1.0** supports `policy.gripper_mode=binary` and `continuous`. The mode is
4
  saved in `config.json` and both processor JSON files. The public LeRobot processor
5
  factory applies the active policy mode when loading pretrained templates, including
6
  CLI overrides. Conflicting explicit processor modes fail. New fine-tuning binds the
 
8
 
9
  The config schema replaces the serialized `action_normalization_mask` and
10
  `gripper_sign_flip` fields with `gripper_mode`. Old policy and processor configs are
11
+ not supported. Use the updated Hub revisions and their 2.1.0 wheel together.
12
 
13
  | Contract | `binary` | `continuous` |
14
  | --- | --- | --- |
 
40
  Install the runtime bundled with the updated initialization:
41
 
42
  ```bash
43
+ pip install 'lerobot_policy_dita[training] @ https://huggingface.co/albus2024/dita_droid_pretrain/resolve/main/lerobot_policy_dita-2.1.0-py3-none-any.whl'
44
  ```
45
 
46
  LIBERO:
README.md CHANGED
@@ -38,7 +38,7 @@ This repository is a strict LeRobot conversion of `libero_object.pth` from the o
38
  ## Install
39
 
40
  ```bash
41
- pip install "lerobot_policy_dita[libero] @ https://huggingface.co/albus2024/dita_object/resolve/main/lerobot_policy_dita-2.0.1-py3-none-any.whl"
42
  ```
43
 
44
  ## Evaluate
@@ -65,34 +65,68 @@ The converter checks all parameter names and shapes, loads with `strict=True`, a
65
  saved artifact files. Run the project's parity and converted-checkpoint verification scripts
66
  separately before using the policy; conversion alone does not establish rollout parity.
67
 
68
- ## Runtime 2.0.0 gripper contract
69
-
70
- `gripper_mode` replaces the serialized action mask and gripper sign fields. Old
71
- policy/processor configs are not supported. Install the 2.0.1 wheel with this
72
- revision. See [gripper modes](GRIPPER_MODES.md) for training and SO101 EEF use.
73
-
74
- The four LIBERO models default to `binary`; the DROID initialization defaults to
75
- `continuous` and has no target-dataset statistics. For LIBERO fine-tuning from
76
- DROID, pass `--policy.gripper_mode=binary`. Both saved processors follow that
77
- override. Binary labels are -1=open/+1=closed; continuous gripper uses dataset
78
- min/max while pose uses quantiles.
79
-
80
- The archived [2.0.0 validation report](history/runtime-2.0.0/runtime_validation_report.json) covers real LIBERO and SO101 training (10 steps plus
81
- one resumed update), offline inference, wheel verification, four LIBERO checkpoint
82
- action parity, and three LIBERO Spatial simulator steps. These checks do not
83
- establish convergence, task success, or a physical SO101 rollout. Model weights
84
- and existing LIBERO statistics are unchanged in this update.
85
-
86
- ## Runtime 2.0.1 precision configuration
87
-
88
- `policy.dtype` is the only precision setting: `float16` (default), `bfloat16`,
89
- or `float32`. `null` is invalid. `use_amp` is omitted from model `config.json`;
90
- the inherited LeRobot runtime flag is derived from dtype and does not select
91
- precision. Use `--policy.dtype=float32` to disable AMP, or
92
- `--policy.dtype=bfloat16` for BF16 mixed precision. Parameters remain FP32.
93
-
94
- This refresh removes only `use_amp` from the model configuration and packages
95
- the updated runtime. Model weights, processor files, action statistics and
96
- existing binary/continuous gripper modes are unchanged. See
97
- [runtime validation](runtime_validation_report.json) for the checks run with
98
- 2.0.1; previous validation reports are historical.
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
38
  ## Install
39
 
40
  ```bash
41
+ pip install "lerobot_policy_dita[libero] @ https://huggingface.co/albus2024/dita_object/resolve/main/lerobot_policy_dita-2.1.0-py3-none-any.whl"
42
  ```
43
 
44
  ## Evaluate
 
65
  saved artifact files. Run the project's parity and converted-checkpoint verification scripts
66
  separately before using the policy; conversion alone does not establish rollout parity.
67
 
68
+ ## Runtime 2.1.0 training configuration
69
+
70
+ Install the **2.1.0 wheel above** for this revision. The new training fields
71
+ require this runtime. The policy weights, processor files and action statistics
72
+ are preserved; this is a configuration/runtime update, not a newly trained model.
73
+
74
+ | Setting | Value |
75
+ | --- | --- |
76
+ | `freeze_backbone` | `false` |
77
+ | `gradient_checkpointing` | `true`, only during gradient-enabled training |
78
+ | `optimizer_lr` | `0.0001` |
79
+ | `optimizer_backbone_lr_scale` | `0.1` |
80
+ | AdamW betas / epsilon | `[0.9, 0.95]` / `1e-8` |
81
+ | Weight decay | `0.05`; bias and one-dimensional parameters use `0` |
82
+ | Gradient clipping | Disabled (`optimizer_grad_clip_norm=0`) |
83
+ | LR schedule | 1000-step warmup, cosine to 100000 steps, minimum scale `0.01` |
84
+ | `lora_dropout` | `0.0` |
85
+
86
+ Inference automatically skips ViT and QFormer activation-checkpoint wrappers.
87
+ `policy.dtype` remains `float16` by default; BF16 and FP32 are also supported.
88
+ CLIP text encoding remains frozen. The gripper mode remains
89
+ `binary`; see [gripper modes](GRIPPER_MODES.md).
90
+
91
+ ### Fine-tuning and LoRA
92
+
93
+ Use the following for full fine-tuning (choose an appropriate target dataset):
94
+
95
+ ```bash
96
+ lerobot-train \
97
+ --policy.path=albus2024/dita_object \
98
+ --policy.device=cuda \
99
+ --policy.dtype=bfloat16 \
100
+ --policy.input_features=null \
101
+ --policy.push_to_hub=false \
102
+ --dataset.repo_id=YOUR_USERNAME/YOUR_DATASET \
103
+ --output_dir=outputs/train/dita_object_full \
104
+ --steps=100000
105
+ ```
106
+
107
+ For LoRA, install the optional dependency and add the adapter arguments:
108
+
109
+ ```bash
110
+ pip install "lerobot_policy_dita[lora] @ https://huggingface.co/albus2024/dita_object/resolve/main/lerobot_policy_dita-2.1.0-py3-none-any.whl"
111
+ # Add to lerobot-train and choose a fresh output directory:
112
+ # --peft.method_type=LORA --peft.r=32
113
+ ```
114
+
115
+ LoRA targets every Dita linear layer, including the ViT, QFormer/FiLM and action
116
+ head. Only adapter weights are trained. The default alpha is twice the rank;
117
+ initialization is Gaussian for A and zero for B. Use LeRobot's native policy
118
+ factory/evaluation entry points to load saved adapters together with their base
119
+ model. Do not set `policy.use_peft=true` when starting from a base checkpoint.
120
+
121
+ The LR schedule keeps its configured 100000-step period even in shorter runs;
122
+ the first update has zero LR. Set `policy.scheduler_decay_steps` explicitly for
123
+ a different period. These defaults follow the upstream LIBERO recipe, including
124
+ the higher `5e-4` peak LR for LIBERO-Long; DROID uses `1e-4` as a fine-tuning
125
+ starting point and can be overridden for the target task. When adapting DROID
126
+ to LIBERO, pass `--policy.gripper_mode=binary`.
127
+
128
+ See [runtime validation](runtime_validation_report.json) for the checks performed
129
+ with this release and [source hashes](runtime_source_manifest.json) for the exact
130
+ packaged code. The previous [runtime 2.0.1 report](history/runtime-2.0.1/runtime_validation_report.json)
131
+ is archived. Short training/inference checks do not establish convergence or
132
+ robot task success.
artifact_sha256.json CHANGED
@@ -1,21 +1,28 @@
1
  {
2
- "GRIPPER_MODES.md": "8abbf9d35fcaef99b2ec536fb48dd304655332d4009faf89086b59c5dafd5461",
3
- "README.md": "b36cb5100a3459339bb25ac556b779f0c1f6b5326bc90b7bb8e438992d9a86aa",
4
- "config.json": "a7a815e98874d262a98d506a6b32d99d3b206cca377627ec7ae611f184358dea",
5
  "conversion_metadata.json": "b71fe2f657baf6cce196475da00a16f8938d4ad4d12d9e7a2f1368fa6822f5d5",
6
  "history/runtime-2.0.0/runtime_metadata.json": "bfd305faf2fd9a108cbbf2d6030bab3034e6177f5fbf32cc85fb1161746df324",
7
  "history/runtime-2.0.0/runtime_source_manifest.json": "9da1a65a4edc8a1fe56a580fe4ace28358b42393fb8a6d0170e6bb6a2df9af04",
8
  "history/runtime-2.0.0/runtime_validation_report.json": "1872e9a2560ff916960b55aa70b26f98ac328b2c1c16c7724b191bff69b81792",
 
 
 
 
 
 
9
  "lerobot_policy_dita-1.0.5-py3-none-any.whl": "8e4a6c5bf9d52a636751b97237305c13454d8091a9eb900fabcac875a7ae809e",
10
  "lerobot_policy_dita-2.0.0-py3-none-any.whl": "b948a1e1b2f2fb22ab1f952195ccae3006e08ad3f2695825533262296395ce01",
11
  "lerobot_policy_dita-2.0.1-py3-none-any.whl": "85b9d092f9b2ad072b0d53aa2b197d9694116ad5a9677ee7620dbbc1fab53854",
 
12
  "local_verification.json": "7421ef531e16b3d15d3d4a0f9d57f29d52b5b646790163090f14fec15efbd044",
13
  "model.safetensors": "941a7189946392390540e36cd8c4e9bd8b0813cc93af8acb8b6a5a0ecb4808d5",
14
  "policy_postprocessor.json": "2668a59651f8fc638914065f71d7efebc48addca535891e38d75d4c2ba5e924c",
15
  "policy_postprocessor_step_0_dita_masked_unnormalizer_processor.safetensors": "5a696aedec9ccfbcb3aa5977f827023ccefd1c85dc8e176e3e3dc82f9c2bd90b",
16
  "policy_preprocessor.json": "ead05cc569fedb9f4ad5bc1338af09cd2174a1b83ac324be56f5c48049286a01",
17
  "policy_preprocessor_step_4_dita_masked_normalizer_processor.safetensors": "5a696aedec9ccfbcb3aa5977f827023ccefd1c85dc8e176e3e3dc82f9c2bd90b",
18
- "runtime_metadata.json": "321ad1e01b2b7af799257b9731f57b553afd44cedae336c8b0f21696ce9ff306",
19
- "runtime_source_manifest.json": "0960d128de0ee20e9379e83f67be8242124cf57d189633f17c426786d9c8d32e",
20
- "runtime_validation_report.json": "2abb4b4a61c465a27ffecad8401cca1abed459aa6c35acaf7ddd1bcce2a3a5af"
21
  }
 
1
  {
2
+ "GRIPPER_MODES.md": "a5c18991f3540c5ae338742d3650c6eace179d6ffb8a283ee352bdc95c246c06",
3
+ "README.md": "2b05bed04b404b7b2152659f6f64bc3c27025c2a8a1cf1446efd8c64c24cf3a6",
4
+ "config.json": "f62e186ccca501f429443ae002594919b3b933c7274a78f2cbedbb62e4c03905",
5
  "conversion_metadata.json": "b71fe2f657baf6cce196475da00a16f8938d4ad4d12d9e7a2f1368fa6822f5d5",
6
  "history/runtime-2.0.0/runtime_metadata.json": "bfd305faf2fd9a108cbbf2d6030bab3034e6177f5fbf32cc85fb1161746df324",
7
  "history/runtime-2.0.0/runtime_source_manifest.json": "9da1a65a4edc8a1fe56a580fe4ace28358b42393fb8a6d0170e6bb6a2df9af04",
8
  "history/runtime-2.0.0/runtime_validation_report.json": "1872e9a2560ff916960b55aa70b26f98ac328b2c1c16c7724b191bff69b81792",
9
+ "history/runtime-2.0.1/README.md": "b36cb5100a3459339bb25ac556b779f0c1f6b5326bc90b7bb8e438992d9a86aa",
10
+ "history/runtime-2.0.1/artifact_sha256.json": "7fa61b8bcf3e5c91dd81f5ee9054cca146a1c90b6a4c4851e16a7b6e027d3601",
11
+ "history/runtime-2.0.1/config.json": "a7a815e98874d262a98d506a6b32d99d3b206cca377627ec7ae611f184358dea",
12
+ "history/runtime-2.0.1/runtime_metadata.json": "321ad1e01b2b7af799257b9731f57b553afd44cedae336c8b0f21696ce9ff306",
13
+ "history/runtime-2.0.1/runtime_source_manifest.json": "0960d128de0ee20e9379e83f67be8242124cf57d189633f17c426786d9c8d32e",
14
+ "history/runtime-2.0.1/runtime_validation_report.json": "2abb4b4a61c465a27ffecad8401cca1abed459aa6c35acaf7ddd1bcce2a3a5af",
15
  "lerobot_policy_dita-1.0.5-py3-none-any.whl": "8e4a6c5bf9d52a636751b97237305c13454d8091a9eb900fabcac875a7ae809e",
16
  "lerobot_policy_dita-2.0.0-py3-none-any.whl": "b948a1e1b2f2fb22ab1f952195ccae3006e08ad3f2695825533262296395ce01",
17
  "lerobot_policy_dita-2.0.1-py3-none-any.whl": "85b9d092f9b2ad072b0d53aa2b197d9694116ad5a9677ee7620dbbc1fab53854",
18
+ "lerobot_policy_dita-2.1.0-py3-none-any.whl": "745162bb849fbbcd85507627df813757a33b0664b8d517d0befe6706f47e9f0f",
19
  "local_verification.json": "7421ef531e16b3d15d3d4a0f9d57f29d52b5b646790163090f14fec15efbd044",
20
  "model.safetensors": "941a7189946392390540e36cd8c4e9bd8b0813cc93af8acb8b6a5a0ecb4808d5",
21
  "policy_postprocessor.json": "2668a59651f8fc638914065f71d7efebc48addca535891e38d75d4c2ba5e924c",
22
  "policy_postprocessor_step_0_dita_masked_unnormalizer_processor.safetensors": "5a696aedec9ccfbcb3aa5977f827023ccefd1c85dc8e176e3e3dc82f9c2bd90b",
23
  "policy_preprocessor.json": "ead05cc569fedb9f4ad5bc1338af09cd2174a1b83ac324be56f5c48049286a01",
24
  "policy_preprocessor_step_4_dita_masked_normalizer_processor.safetensors": "5a696aedec9ccfbcb3aa5977f827023ccefd1c85dc8e176e3e3dc82f9c2bd90b",
25
+ "runtime_metadata.json": "44886d6c9ba0d362edcfde5236085a7f35d6215ebfb7c8c8a212bcbe295a3453",
26
+ "runtime_source_manifest.json": "4b670906b4013a2e8dc17fb8c019b65df59d01fef53c8434193aeb38c78a9421",
27
+ "runtime_validation_report.json": "24da1087a545f1cad803c1e72e22e226cc39a08930b1bf3528def9fe498e22a8"
28
  }
config.json CHANGED
@@ -31,7 +31,7 @@
31
  "num_layers": 12,
32
  "traj_length": 11,
33
  "dropout_rate": 0.0,
34
- "freeze_backbone": true,
35
  "use_qformer": true,
36
  "prediction_type": "epsilon",
37
  "attn_implementation": "eager",
@@ -50,14 +50,20 @@
50
  "ACTION": "QUANTILES",
51
  "LANGUAGE": "IDENTITY"
52
  },
53
- "optimizer_lr": 0.0002,
54
  "optimizer_betas": [
55
  0.9,
56
  0.95
57
  ],
58
  "optimizer_eps": 1e-08,
59
- "optimizer_weight_decay": 0.01,
60
- "optimizer_grad_clip_norm": 1.0,
61
  "dtype": "float16",
62
- "gripper_mode": "binary"
 
 
 
 
 
 
63
  }
 
31
  "num_layers": 12,
32
  "traj_length": 11,
33
  "dropout_rate": 0.0,
34
+ "freeze_backbone": false,
35
  "use_qformer": true,
36
  "prediction_type": "epsilon",
37
  "attn_implementation": "eager",
 
50
  "ACTION": "QUANTILES",
51
  "LANGUAGE": "IDENTITY"
52
  },
53
+ "optimizer_lr": 0.0001,
54
  "optimizer_betas": [
55
  0.9,
56
  0.95
57
  ],
58
  "optimizer_eps": 1e-08,
59
+ "optimizer_weight_decay": 0.05,
60
+ "optimizer_grad_clip_norm": 0.0,
61
  "dtype": "float16",
62
+ "gripper_mode": "binary",
63
+ "gradient_checkpointing": true,
64
+ "optimizer_backbone_lr_scale": 0.1,
65
+ "scheduler_warmup_steps": 1000,
66
+ "scheduler_decay_steps": 100000,
67
+ "scheduler_min_lr_scale": 0.01,
68
+ "lora_dropout": 0.0
69
  }
history/runtime-2.0.1/README.md ADDED
@@ -0,0 +1,98 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ ---
2
+ library_name: lerobot
3
+ pipeline_tag: robotics
4
+ tags:
5
+ - lerobot
6
+ - dita
7
+ - libero
8
+ ---
9
+
10
+ # Dita — libero_object_no_noops
11
+
12
+ This repository is a strict LeRobot conversion of `libero_object.pth` from the original
13
+ [Dita](https://github.com/RoboDita/Dita) implementation. It is configured for the
14
+ `libero_object_no_noops` action distribution and is not interchangeable with another LIBERO suite.
15
+
16
+ ## Provenance and compatibility contract
17
+
18
+ - Source checkpoint: `model_ckpt/libero_object.pth`
19
+ - Source checkpoint SHA256: `96572a9468599abdc3c064cd64d41ad215aa16a85121866d90fa3a48155736d3`
20
+ - Conversion code commit: `f506ceccb9b2816ffebb024b14aeaa2b34fbd46b`
21
+ - Dataset statistics: `/home/shared/lyanam/huggingface/hub/datasets--openvla--modified_libero_rlds/snapshots/6ce6aaaaabdbe590b1eef5cd29c0d33f14a08551/libero_object_no_noops/1.0.0/dataset_statistics_42700def7a889694fac2f7b5feaab0e8752c9352c8a25b034d5353eb4e572459.json`
22
+ - Dataset statistics SHA256: `718875b12d371e6d76be4efef946ef9436d69b84adc8a4105a9b34b354059d28`
23
+ - Image processing: one RGB primary/agentview camera, resized to 224×224, followed once by
24
+ ImageNet mean `(0.485, 0.456, 0.406)` and std `(0.229, 0.224, 0.225)`.
25
+ - Action processing: dimensions 0–5 use this suite's `q01`/`q99`; dimension 6 is not normalized.
26
+ - Action mask: `[true, true, true, true, true, true, false]`.
27
+ - q01: `[-0.5383928418159485, -0.8758928775787354, -0.9375, -0.06964285671710968, -0.11678571254014969, -0.15964286029338837, 0.0]`
28
+ - q99: `[0.8464285731315613, 0.84375, 0.9375, 0.08142857253551483, 0.14892856776714325, 0.0867857113480568, 1.0]`
29
+ - Gripper: normalized output is thresholded with `> 0.5`, then the Cartesian dimensions are
30
+ unnormalized, then the original Dita gripper sign flip is applied.
31
+ - Rollout: `traj_length=11`, two-frame history, `chunk_size=10`, `n_action_steps=1`,
32
+ `num_inference_steps=10`, DDIM `prediction_type=epsilon`, and CUDA AMP by default.
33
+ - `policy.dtype` controls compute precision (`float32`, `float16`, `bfloat16`);
34
+ parameters remain FP32. `dtype` is the sole precision setting; `use_amp` is derived internally.
35
+ - LIBERO's LeRobot environment processor performs the 180° image rotation. The policy does not
36
+ rotate the image a second time.
37
+
38
+ ## Install
39
+
40
+ ```bash
41
+ pip install "lerobot_policy_dita[libero] @ https://huggingface.co/albus2024/dita_object/resolve/main/lerobot_policy_dita-2.0.1-py3-none-any.whl"
42
+ ```
43
+
44
+ ## Evaluate
45
+
46
+ ```bash
47
+ lerobot-eval \
48
+ --policy.path=albus2024/dita_object \
49
+ --policy.gripper_mode=binary \
50
+ --policy.device=cuda \
51
+ --env.type=libero \
52
+ --env.task=libero_object \
53
+ --env.max_parallel_tasks=1 \
54
+ --eval.batch_size=1 \
55
+ --eval.n_episodes=10 \
56
+ --output_dir=./outputs/dita_object
57
+ ```
58
+
59
+ The processor state in this repository contains the required statistics; no source `.pth` file or
60
+ local dataset metadata is needed at evaluation time.
61
+
62
+ ## Validation
63
+
64
+ The converter checks all parameter names and shapes, loads with `strict=True`, and checks the
65
+ saved artifact files. Run the project's parity and converted-checkpoint verification scripts
66
+ separately before using the policy; conversion alone does not establish rollout parity.
67
+
68
+ ## Runtime 2.0.0 gripper contract
69
+
70
+ `gripper_mode` replaces the serialized action mask and gripper sign fields. Old
71
+ policy/processor configs are not supported. Install the 2.0.1 wheel with this
72
+ revision. See [gripper modes](GRIPPER_MODES.md) for training and SO101 EEF use.
73
+
74
+ The four LIBERO models default to `binary`; the DROID initialization defaults to
75
+ `continuous` and has no target-dataset statistics. For LIBERO fine-tuning from
76
+ DROID, pass `--policy.gripper_mode=binary`. Both saved processors follow that
77
+ override. Binary labels are -1=open/+1=closed; continuous gripper uses dataset
78
+ min/max while pose uses quantiles.
79
+
80
+ The archived [2.0.0 validation report](history/runtime-2.0.0/runtime_validation_report.json) covers real LIBERO and SO101 training (10 steps plus
81
+ one resumed update), offline inference, wheel verification, four LIBERO checkpoint
82
+ action parity, and three LIBERO Spatial simulator steps. These checks do not
83
+ establish convergence, task success, or a physical SO101 rollout. Model weights
84
+ and existing LIBERO statistics are unchanged in this update.
85
+
86
+ ## Runtime 2.0.1 precision configuration
87
+
88
+ `policy.dtype` is the only precision setting: `float16` (default), `bfloat16`,
89
+ or `float32`. `null` is invalid. `use_amp` is omitted from model `config.json`;
90
+ the inherited LeRobot runtime flag is derived from dtype and does not select
91
+ precision. Use `--policy.dtype=float32` to disable AMP, or
92
+ `--policy.dtype=bfloat16` for BF16 mixed precision. Parameters remain FP32.
93
+
94
+ This refresh removes only `use_amp` from the model configuration and packages
95
+ the updated runtime. Model weights, processor files, action statistics and
96
+ existing binary/continuous gripper modes are unchanged. See
97
+ [runtime validation](runtime_validation_report.json) for the checks run with
98
+ 2.0.1; previous validation reports are historical.
history/runtime-2.0.1/artifact_sha256.json ADDED
@@ -0,0 +1,21 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ {
2
+ "GRIPPER_MODES.md": "8abbf9d35fcaef99b2ec536fb48dd304655332d4009faf89086b59c5dafd5461",
3
+ "README.md": "b36cb5100a3459339bb25ac556b779f0c1f6b5326bc90b7bb8e438992d9a86aa",
4
+ "config.json": "a7a815e98874d262a98d506a6b32d99d3b206cca377627ec7ae611f184358dea",
5
+ "conversion_metadata.json": "b71fe2f657baf6cce196475da00a16f8938d4ad4d12d9e7a2f1368fa6822f5d5",
6
+ "history/runtime-2.0.0/runtime_metadata.json": "bfd305faf2fd9a108cbbf2d6030bab3034e6177f5fbf32cc85fb1161746df324",
7
+ "history/runtime-2.0.0/runtime_source_manifest.json": "9da1a65a4edc8a1fe56a580fe4ace28358b42393fb8a6d0170e6bb6a2df9af04",
8
+ "history/runtime-2.0.0/runtime_validation_report.json": "1872e9a2560ff916960b55aa70b26f98ac328b2c1c16c7724b191bff69b81792",
9
+ "lerobot_policy_dita-1.0.5-py3-none-any.whl": "8e4a6c5bf9d52a636751b97237305c13454d8091a9eb900fabcac875a7ae809e",
10
+ "lerobot_policy_dita-2.0.0-py3-none-any.whl": "b948a1e1b2f2fb22ab1f952195ccae3006e08ad3f2695825533262296395ce01",
11
+ "lerobot_policy_dita-2.0.1-py3-none-any.whl": "85b9d092f9b2ad072b0d53aa2b197d9694116ad5a9677ee7620dbbc1fab53854",
12
+ "local_verification.json": "7421ef531e16b3d15d3d4a0f9d57f29d52b5b646790163090f14fec15efbd044",
13
+ "model.safetensors": "941a7189946392390540e36cd8c4e9bd8b0813cc93af8acb8b6a5a0ecb4808d5",
14
+ "policy_postprocessor.json": "2668a59651f8fc638914065f71d7efebc48addca535891e38d75d4c2ba5e924c",
15
+ "policy_postprocessor_step_0_dita_masked_unnormalizer_processor.safetensors": "5a696aedec9ccfbcb3aa5977f827023ccefd1c85dc8e176e3e3dc82f9c2bd90b",
16
+ "policy_preprocessor.json": "ead05cc569fedb9f4ad5bc1338af09cd2174a1b83ac324be56f5c48049286a01",
17
+ "policy_preprocessor_step_4_dita_masked_normalizer_processor.safetensors": "5a696aedec9ccfbcb3aa5977f827023ccefd1c85dc8e176e3e3dc82f9c2bd90b",
18
+ "runtime_metadata.json": "321ad1e01b2b7af799257b9731f57b553afd44cedae336c8b0f21696ce9ff306",
19
+ "runtime_source_manifest.json": "0960d128de0ee20e9379e83f67be8242124cf57d189633f17c426786d9c8d32e",
20
+ "runtime_validation_report.json": "2abb4b4a61c465a27ffecad8401cca1abed459aa6c35acaf7ddd1bcce2a3a5af"
21
+ }
history/runtime-2.0.1/config.json ADDED
@@ -0,0 +1,63 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ {
2
+ "type": "dita",
3
+ "n_obs_steps": 1,
4
+ "input_features": {
5
+ "observation.images.image": {
6
+ "type": "VISUAL",
7
+ "shape": [
8
+ 3,
9
+ 256,
10
+ 256
11
+ ]
12
+ }
13
+ },
14
+ "output_features": {
15
+ "action": {
16
+ "type": "ACTION",
17
+ "shape": [
18
+ 7
19
+ ]
20
+ }
21
+ },
22
+ "device": "cuda",
23
+ "use_peft": false,
24
+ "push_to_hub": false,
25
+ "repo_id": null,
26
+ "private": null,
27
+ "tags": null,
28
+ "license": null,
29
+ "pretrained_path": null,
30
+ "dataset_suite": "libero_object_no_noops",
31
+ "num_layers": 12,
32
+ "traj_length": 11,
33
+ "dropout_rate": 0.0,
34
+ "freeze_backbone": true,
35
+ "use_qformer": true,
36
+ "prediction_type": "epsilon",
37
+ "attn_implementation": "eager",
38
+ "num_inference_steps": 10,
39
+ "tokenizer_max_length": 77,
40
+ "image_resolution": [
41
+ 224,
42
+ 224
43
+ ],
44
+ "chunk_size": 10,
45
+ "n_action_steps": 1,
46
+ "history_frames": 2,
47
+ "gripper_threshold": 0.5,
48
+ "normalization_mapping": {
49
+ "VISUAL": "IDENTITY",
50
+ "ACTION": "QUANTILES",
51
+ "LANGUAGE": "IDENTITY"
52
+ },
53
+ "optimizer_lr": 0.0002,
54
+ "optimizer_betas": [
55
+ 0.9,
56
+ 0.95
57
+ ],
58
+ "optimizer_eps": 1e-08,
59
+ "optimizer_weight_decay": 0.01,
60
+ "optimizer_grad_clip_norm": 1.0,
61
+ "dtype": "float16",
62
+ "gripper_mode": "binary"
63
+ }
history/runtime-2.0.1/runtime_metadata.json ADDED
@@ -0,0 +1,28 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ {
2
+ "updated_at_utc": "2026-09-14T11:02:40.266967+00:00",
3
+ "runtime_version": "2.0.1",
4
+ "runtime_wheel": "lerobot_policy_dita-2.0.1-py3-none-any.whl",
5
+ "runtime_wheel_sha256": "85b9d092f9b2ad072b0d53aa2b197d9694116ad5a9677ee7620dbbc1fab53854",
6
+ "source_git_head": "fcca4f20c77503155e82518262a347176f737192",
7
+ "source_git_dirty": true,
8
+ "source_manifest": "runtime_source_manifest.json",
9
+ "previous_hub_revision": "108698b2b03333642fb838515a233c68ee2d146d",
10
+ "model_sha256": "941a7189946392390540e36cd8c4e9bd8b0813cc93af8acb8b6a5a0ecb4808d5",
11
+ "model_weights_changed": false,
12
+ "processor_configs_changed": false,
13
+ "processor_statistics_changed": false,
14
+ "processor_sha256": {
15
+ "policy_postprocessor_step_0_dita_masked_unnormalizer_processor.safetensors": "5a696aedec9ccfbcb3aa5977f827023ccefd1c85dc8e176e3e3dc82f9c2bd90b",
16
+ "policy_preprocessor_step_4_dita_masked_normalizer_processor.safetensors": "5a696aedec9ccfbcb3aa5977f827023ccefd1c85dc8e176e3e3dc82f9c2bd90b",
17
+ "policy_preprocessor.json": "ead05cc569fedb9f4ad5bc1338af09cd2174a1b83ac324be56f5c48049286a01",
18
+ "policy_postprocessor.json": "2668a59651f8fc638914065f71d7efebc48addca535891e38d75d4c2ba5e924c"
19
+ },
20
+ "configuration_change": {
21
+ "removed": [
22
+ "use_amp"
23
+ ],
24
+ "dtype": "float16"
25
+ },
26
+ "gripper_mode": "binary",
27
+ "validation_report": "runtime_validation_report.json"
28
+ }
history/runtime-2.0.1/runtime_source_manifest.json ADDED
@@ -0,0 +1,87 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ {
2
+ "wheel": "lerobot_policy_dita-2.0.1-py3-none-any.whl",
3
+ "sha256": "85b9d092f9b2ad072b0d53aa2b197d9694116ad5a9677ee7620dbbc1fab53854",
4
+ "source_python_files": 79,
5
+ "all_source_files_match": true,
6
+ "source_sha256": {
7
+ "lerobot_policy_dita/__init__.py": "1d66ff4033566f53629f7e6c5f9f38f79d9790fd5e46bd46cb3e8566bc3caf7d",
8
+ "lerobot_policy_dita/_loading.py": "325e7c57a422f2cc5827c6d95ad19df4b51acae4af0a9b70b0c98a37852e6689",
9
+ "lerobot_policy_dita/approximation/__init__.py": "b0646b441737d19c58ce395dd402fa0c1dcb0e8531e4df8d8be251de20b11d5e",
10
+ "lerobot_policy_dita/approximation/adapters/__init__.py": "e0b5bf1a2a01a82af6b1ab03954aa039f396096b8b3a67d17483a7f054fd98c5",
11
+ "lerobot_policy_dita/approximation/adapters/base.py": "4acb6cea075925f00ba2bff356e0cafc798458c18b19790ae17fd3c53fe86811",
12
+ "lerobot_policy_dita/approximation/backends/__init__.py": "c398254ffabafa0b73c50d7f59e2c838aeb5a6c99d195ef22701f3c7bc89d6c1",
13
+ "lerobot_policy_dita/approximation/backends/torch.py": "fc61e6bcaa7d571c13048a0f8b329e5118b99a870ed6e4600eedadd9e1cfb62f",
14
+ "lerobot_policy_dita/approximation/operators/__init__.py": "fe875d6ddc6f5160428dcef4ba253b12f445906070aa57dddff6e3dd71932bdd",
15
+ "lerobot_policy_dita/approximation/operators/ddim.py": "d453de05452c9a7297e971800416cfbe8dbded0482c2ff49c05e9e6a213a038d",
16
+ "lerobot_policy_dita/approximation/operators/precision.py": "a19c5045814278929aaa181e637b32e8a578146801c4a9d29b822ea99635c7ee",
17
+ "lerobot_policy_dita/approximation/operators/rmsnorm.py": "89edadb7872af468f0a8b56a8dc1d48fb51f3ffda1b76c4ec5108d4c71f66bb5",
18
+ "lerobot_policy_dita/approximation/operators/silu.py": "06ac4a8e519eadb01695026d2a2149195e1d7e1136df65e7d7e0e2b3eb17f287",
19
+ "lerobot_policy_dita/approximation/operators/softmax.py": "407e4adebaa4d94ce4360915d6e3df66d85c74c27fc4b030cd234286a2c0d22f",
20
+ "lerobot_policy_dita/approximation/runtime/__init__.py": "aa53dcaadd7d11e2427d902fb6c70cca7985ce87cc91bfec0232b04fbe2e3307",
21
+ "lerobot_policy_dita/approximation/runtime/configuration.py": "4ba580d67c078ed4ff3b5a3f71cf9eaa87f29f1fc08bc6fd6ff831f4dc2c18de",
22
+ "lerobot_policy_dita/approximation/spec.py": "0ed50dc74f1abeb2d19819e3bec1ae852ff2ebfe179da5832e36590ee4c4560a",
23
+ "lerobot_policy_dita/benchmarking/__init__.py": "87e434eb6b29bff4b14b701fc85c9293bfe12e93726c72edaa893be2d47cafc4",
24
+ "lerobot_policy_dita/benchmarking/dataset_sampler.py": "db3d1f49d604bc882db38e48f32d0d48af0f1699d3bc95ae2359d67a1b70dbe5",
25
+ "lerobot_policy_dita/evaluation/__init__.py": "3adb7eff2a3bea441a95726cca157b9502555afab6bf4062e97b62bb1bb53419",
26
+ "lerobot_policy_dita/evaluation/cli/__init__.py": "5a7fb6106f531d483e0795d3d52f95ab33ccef955ea4e54ef344da7e6806d503",
27
+ "lerobot_policy_dita/evaluation/cli/_workload.py": "c62648d67766d8831c08729551532b6aa962a2b513afd17dee9534119b53531a",
28
+ "lerobot_policy_dita/evaluation/cli/compare_dynamic.py": "44b467e1955eda66541391abb6733cae9a78c86d060ef41a5a2e6156287ccb04",
29
+ "lerobot_policy_dita/evaluation/cli/evaluate_dynamic.py": "e92fd7f8a6b724ff80a8b61905a4498cbb472faa2b6f419d8ef0381a59755db6",
30
+ "lerobot_policy_dita/evaluation/cli/evaluate_static.py": "0fb864387dad74ec09fc7fe9d6cb57bd9cc9014094de904179c74bf54af9d11c",
31
+ "lerobot_policy_dita/evaluation/cli/trace.py": "b78981d14701f11d6bed3bdad84cf2ae444e08d1aa32e0aa3dfd16b6e2700365",
32
+ "lerobot_policy_dita/evaluation/dynamic.py": "3379df73f478ba5b5959ef340e1d9ce88e96418b131f804a24315b55b93f7215",
33
+ "lerobot_policy_dita/evaluation/static.py": "758ea97ef6b68c0a32197d962d9ff9af62b2aeb337c248bc72d8d960cdeba712",
34
+ "lerobot_policy_dita/evaluation/trace.py": "a4399277a49e412589df69529d952e5931d87742f0a6dd16832d39cba113e1d3",
35
+ "lerobot_policy_dita/policy/__init__.py": "9785f8e7279dc6760b4b7dbbe587ed6c6f467daa1dbbdf2ea095a645c1c52a57",
36
+ "lerobot_policy_dita/policy/_lerobot_compat.py": "d3434f59edf9d1dbb5616b874d0d6babf67a254f0b48196559e06d0dae1c6214",
37
+ "lerobot_policy_dita/policy/approximation/__init__.py": "0632173bd9a1595a72c9741e6bb5538f644c0f448c8caca606542ae3d2cb3b5a",
38
+ "lerobot_policy_dita/policy/approximation/adapter.py": "d603f444c2237a76a23f44dd8b2df734b66525d3522695f200478b3c055152a4",
39
+ "lerobot_policy_dita/policy/approximation/configuration.py": "8fa1f0f24624352b691d73c71f9fc75c0196c8f81e888e6b77a9f11eba7926af",
40
+ "lerobot_policy_dita/policy/approximation/ddim.py": "d32a16f85aa670bd07375ce2691498c47b9f9e700160fde12eea33e6a56f09fa",
41
+ "lerobot_policy_dita/policy/attention.py": "3253866b5ea0bdf24a85b2047d813573e24588a4294adc9b72d01488d236909e",
42
+ "lerobot_policy_dita/policy/configuration_dita.py": "edc19d5e348270b9bebf22a0bc48d6dd1a56b084099544513e02c4d724f954ac",
43
+ "lerobot_policy_dita/policy/evaluation/__init__.py": "8c0ca0bbd994637ce95307daec7647082fdb3e8e982073ab6c60ba7f9a16745f",
44
+ "lerobot_policy_dita/policy/evaluation/adapter.py": "fdbfadfbfa13772eef20a513c74a06cda0e6cea456a4b2197cb314af42c2dbec",
45
+ "lerobot_policy_dita/policy/evaluation/static.py": "d5d2cb5c86b774eb7215b0b36c565888a6fc620da430a212a79b278a6c2d9f31",
46
+ "lerobot_policy_dita/policy/modeling_dita.py": "1fb98b081deb3c47f51180e31874abdf342b2fb9e5b8d5d8d7bef5e60a0c7a1d",
47
+ "lerobot_policy_dita/policy/processor_dita.py": "3173c16c7be81bdb5f86cce305eee8f96a16235acfb45586f874e80324f8257b",
48
+ "lerobot_policy_dita/policy/quantization/__init__.py": "8b130b24c8c2a6e5b585c1e5c80e37ba317578ded5bfc624b68a9548d82fcd67",
49
+ "lerobot_policy_dita/policy/quantization/adapter.py": "1633d4eb613972afe14d0de3138ec45391764702449e1b7f6312cfeb209d2068",
50
+ "lerobot_policy_dita/policy/quantization/attention.py": "e54d5105cb5930050b268d53e098bfcde6303908884f3d909e83bb50e740ec5e",
51
+ "lerobot_policy_dita/policy/quantization/configuration.py": "f567c8cc1c12a6d11792e11d9b514234ad45f668ee3c602aa57778fae8d485a8",
52
+ "lerobot_policy_dita/policy/quantization/export.py": "ee6d4a9d97fd2b865c9db192cf844d16a5db4134a2e6ac1810d7574c2f1836f1",
53
+ "lerobot_policy_dita/policy/quantization/factory.py": "59cd054211f2654e0f1d25dc5ad97f317f85e16088e529f2e6ab46ada4102949",
54
+ "lerobot_policy_dita/policy/quantization/spec.py": "1261fc33bf61aede0794066ad521b05df7ed3b39be5001bdaafc724a2f19663f",
55
+ "lerobot_policy_dita/policy/runtime.py": "87c21f4d58c9345acb8d4e54408987b00d2cc0e105fb14d233b75fbd8b331ff1",
56
+ "lerobot_policy_dita/policy/workflow.py": "c64442c65115237a5c67d96c6bd8b425e1b1c2094f4470bd3b9c053d1afdce7d",
57
+ "lerobot_policy_dita/quantization/__init__.py": "ebb9b9fd422b62ce670ddb74e4b257d32754297b9d8e20bc57bfbad6de16544d",
58
+ "lerobot_policy_dita/quantization/adapters/__init__.py": "da73ba087d9c60cfa06f067f7cf6f2b345683dd93a15916515e3b2cdcd57268b",
59
+ "lerobot_policy_dita/quantization/adapters/base.py": "9afbad7b3d27498384d8a9f39a04da88351799e243757dd4bf19ca41190c7fdc",
60
+ "lerobot_policy_dita/quantization/artifacts.py": "2b1da7433310adef900fbec56b45ea777ec67044e5cc121db0dc04bec3819904",
61
+ "lerobot_policy_dita/quantization/attention.py": "d46ed81671de87d338c6092a8f1dc0037de1d1c5d2ecb79da10cfe66aa592dce",
62
+ "lerobot_policy_dita/quantization/backends/__init__.py": "5fdd47d2e09eef5aac8f91724e6c6c69fe46fd02c3b4c4820ac5e61e3d073f25",
63
+ "lerobot_policy_dita/quantization/backends/fake_quant.py": "3c3cdebcd256bf5d65d0a56bf0fa34ad1c2142f068f1762d752754ec21c9f42a",
64
+ "lerobot_policy_dita/quantization/calibration.py": "242df70e46ccb59070a23da1b8617805e86027859caae18f05bc6501ae44498d",
65
+ "lerobot_policy_dita/quantization/cli/__init__.py": "0dac1165b80f8eb27606f2786549f17527787ad5383433dc8bfd1f1e64d191cd",
66
+ "lerobot_policy_dita/quantization/cli/_workload.py": "7324ec6b3818cf869d6cd28b24bc38c028717f59373b95b0be9c86f50985a900",
67
+ "lerobot_policy_dita/quantization/cli/calibrate.py": "34d709f49e0fe7fe4155aba842528b212eaa10be61b4f62d025d373bbde834b4",
68
+ "lerobot_policy_dita/quantization/cli/export_onnx_qdq.py": "b7e46aa84490f167906c8ee6e1babae0dcef166d229c3aa2bedc3bcb84400e35",
69
+ "lerobot_policy_dita/quantization/cli/inspect_artifact.py": "e3a815325e1d475efd082bf16e0f6f5f2f3f6ef093d81a2719352fda346d344c",
70
+ "lerobot_policy_dita/quantization/evaluation/__init__.py": "51870904f114404daf5e5a68fe260ebcb07c22c4b80f979be4ff33f0eefcd46c",
71
+ "lerobot_policy_dita/quantization/evaluation/saturation.py": "1caf177485695c9b797b798d41c4ec3de025372b854b18c867aa15fda3851d2e",
72
+ "lerobot_policy_dita/quantization/export/__init__.py": "a1d612b846eb72502d49fefb826316a107f87fbd0176021bfb22afe8f11b9aae",
73
+ "lerobot_policy_dita/quantization/export/onnx_qdq.py": "fecd53764a6cd0c375565951adb4265d13dbd2e889ec27e380f06dbc15bdaa68",
74
+ "lerobot_policy_dita/quantization/math.py": "fc6f78a03eca538b27074dd6872ee0977f898c79f2f1acc4e6f9dc3710855eb8",
75
+ "lerobot_policy_dita/quantization/observers.py": "13ec75c6e09eadb86f621fb14a309e6e80414ba6439c42ceb65ac8426f1d116b",
76
+ "lerobot_policy_dita/quantization/runtime/__init__.py": "4b2d994863700e986860834d9b328b72eb0a8fecdc6a07cad2b9a2c101e3371b",
77
+ "lerobot_policy_dita/quantization/runtime/configuration.py": "c09e263598dc058bc1b4a0d9c27846f20c737a37dcaae67063ef96c3de5d2652",
78
+ "lerobot_policy_dita/quantization/spec.py": "4cd8766b6ad9bb8c4f64e4735dce32c089802acb0cf95a05f402bd2a0b397071",
79
+ "lerobot_policy_dita/scripts/__init__.py": "08089d9d38c1f9a32032e18f218b5d517705c34c67aa1f9d34839c7a12e85389",
80
+ "lerobot_policy_dita/scripts/calibrate_libero_dataset.py": "731e960fce5c9eefe48ec878cf8e86d1ccc7a1931ea4083d84ed6f2b464151b9",
81
+ "lerobot_policy_dita/scripts/evaluate_workflow.py": "38da1221a985fbbcabd82cf86c3179509cf2732f0d96a6e12861f9bd0073be83",
82
+ "lerobot_policy_dita/scripts/trace_libero_dataset.py": "cbfaec59e385d23bf669cd675eabfb59ae246ef28f86e9c738023accdf3f1de0",
83
+ "lerobot_policy_dita/workflows/__init__.py": "1d34c52aa0e51861c390f50cb70b0f5feda49ef87ad23b919ffeace5279e2ca8",
84
+ "lerobot_policy_dita/workflows/configuration.py": "ccb63b5dad8da24b56359ea605bb088fda516df4465f6de93e603ca4ebd7de26",
85
+ "lerobot_policy_dita/workflows/runtime.py": "b83f86a5df4ef4f8852ee375a41b48037d7f68a1d32cc19dd1130e17b7861b89"
86
+ }
87
+ }
history/runtime-2.0.1/runtime_validation_report.json ADDED
@@ -0,0 +1,36 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ {
2
+ "source": "albus2024/dita_object",
3
+ "dataset_suite": "libero_object_no_noops",
4
+ "strict_from_pretrained": true,
5
+ "processor_stats_roundtrip": true,
6
+ "model_roundtrip_max_abs_diff": 0.0,
7
+ "inference_steps": 3,
8
+ "actions_finite": true,
9
+ "action_shape": [
10
+ 1,
11
+ 7
12
+ ],
13
+ "gripper_values": [
14
+ -1.0,
15
+ -1.0,
16
+ -1.0
17
+ ],
18
+ "history_lengths": [
19
+ 1,
20
+ 2,
21
+ 2
22
+ ],
23
+ "result": "passed",
24
+ "runtime_version": "2.0.1",
25
+ "runtime_from_bundled_wheel": true,
26
+ "dtype_cli_overrides": [
27
+ "float32",
28
+ "float16",
29
+ "bfloat16"
30
+ ],
31
+ "serialized_use_amp_absent": true,
32
+ "dtype_and_derived_amp_roundtrip": true,
33
+ "weights_and_processor_files_unchanged": true,
34
+ "pytest_passed": 309,
35
+ "full_task_benchmark_run": false
36
+ }
lerobot_policy_dita-2.1.0-py3-none-any.whl ADDED
@@ -0,0 +1,3 @@
 
 
 
 
1
+ version https://git-lfs.github.com/spec/v1
2
+ oid sha256:745162bb849fbbcd85507627df813757a33b0664b8d517d0befe6706f47e9f0f
3
+ size 118699
runtime_metadata.json CHANGED
@@ -1,27 +1,63 @@
1
  {
2
- "updated_at_utc": "2026-09-14T11:02:40.266967+00:00",
3
- "runtime_version": "2.0.1",
4
- "runtime_wheel": "lerobot_policy_dita-2.0.1-py3-none-any.whl",
5
- "runtime_wheel_sha256": "85b9d092f9b2ad072b0d53aa2b197d9694116ad5a9677ee7620dbbc1fab53854",
6
- "source_git_head": "fcca4f20c77503155e82518262a347176f737192",
7
  "source_git_dirty": true,
8
  "source_manifest": "runtime_source_manifest.json",
9
- "previous_hub_revision": "108698b2b03333642fb838515a233c68ee2d146d",
10
  "model_sha256": "941a7189946392390540e36cd8c4e9bd8b0813cc93af8acb8b6a5a0ecb4808d5",
11
  "model_weights_changed": false,
12
  "processor_configs_changed": false,
13
  "processor_statistics_changed": false,
14
  "processor_sha256": {
 
15
  "policy_postprocessor_step_0_dita_masked_unnormalizer_processor.safetensors": "5a696aedec9ccfbcb3aa5977f827023ccefd1c85dc8e176e3e3dc82f9c2bd90b",
16
- "policy_preprocessor_step_4_dita_masked_normalizer_processor.safetensors": "5a696aedec9ccfbcb3aa5977f827023ccefd1c85dc8e176e3e3dc82f9c2bd90b",
17
  "policy_preprocessor.json": "ead05cc569fedb9f4ad5bc1338af09cd2174a1b83ac324be56f5c48049286a01",
18
- "policy_postprocessor.json": "2668a59651f8fc638914065f71d7efebc48addca535891e38d75d4c2ba5e924c"
19
  },
20
  "configuration_change": {
21
- "removed": [
22
- "use_amp"
23
- ],
24
- "dtype": "float16"
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
25
  },
26
  "gripper_mode": "binary",
27
  "validation_report": "runtime_validation_report.json"
 
1
  {
2
+ "updated_at_utc": "2026-09-15T02:22:48.008083+00:00",
3
+ "runtime_version": "2.1.0",
4
+ "runtime_wheel": "lerobot_policy_dita-2.1.0-py3-none-any.whl",
5
+ "runtime_wheel_sha256": "745162bb849fbbcd85507627df813757a33b0664b8d517d0befe6706f47e9f0f",
6
+ "source_git_head": "67e68060fa3c51923dc1ab1332604b266c1e2b1d",
7
  "source_git_dirty": true,
8
  "source_manifest": "runtime_source_manifest.json",
9
+ "previous_hub_revision": "81d19798426d81a857b983831051454a3a134b12",
10
  "model_sha256": "941a7189946392390540e36cd8c4e9bd8b0813cc93af8acb8b6a5a0ecb4808d5",
11
  "model_weights_changed": false,
12
  "processor_configs_changed": false,
13
  "processor_statistics_changed": false,
14
  "processor_sha256": {
15
+ "policy_postprocessor.json": "2668a59651f8fc638914065f71d7efebc48addca535891e38d75d4c2ba5e924c",
16
  "policy_postprocessor_step_0_dita_masked_unnormalizer_processor.safetensors": "5a696aedec9ccfbcb3aa5977f827023ccefd1c85dc8e176e3e3dc82f9c2bd90b",
 
17
  "policy_preprocessor.json": "ead05cc569fedb9f4ad5bc1338af09cd2174a1b83ac324be56f5c48049286a01",
18
+ "policy_preprocessor_step_4_dita_masked_normalizer_processor.safetensors": "5a696aedec9ccfbcb3aa5977f827023ccefd1c85dc8e176e3e3dc82f9c2bd90b"
19
  },
20
  "configuration_change": {
21
+ "freeze_backbone": {
22
+ "previous": true,
23
+ "current": false
24
+ },
25
+ "optimizer_lr": {
26
+ "previous": 0.0002,
27
+ "current": 0.0001
28
+ },
29
+ "optimizer_weight_decay": {
30
+ "previous": 0.01,
31
+ "current": 0.05
32
+ },
33
+ "optimizer_grad_clip_norm": {
34
+ "previous": 1.0,
35
+ "current": 0.0
36
+ },
37
+ "gradient_checkpointing": {
38
+ "previous": null,
39
+ "current": true
40
+ },
41
+ "optimizer_backbone_lr_scale": {
42
+ "previous": null,
43
+ "current": 0.1
44
+ },
45
+ "scheduler_warmup_steps": {
46
+ "previous": null,
47
+ "current": 1000
48
+ },
49
+ "scheduler_decay_steps": {
50
+ "previous": null,
51
+ "current": 100000
52
+ },
53
+ "scheduler_min_lr_scale": {
54
+ "previous": null,
55
+ "current": 0.01
56
+ },
57
+ "lora_dropout": {
58
+ "previous": null,
59
+ "current": 0.0
60
+ }
61
  },
62
  "gripper_mode": "binary",
63
  "validation_report": "runtime_validation_report.json"
runtime_source_manifest.json CHANGED
@@ -1,10 +1,10 @@
1
  {
2
- "wheel": "lerobot_policy_dita-2.0.1-py3-none-any.whl",
3
- "sha256": "85b9d092f9b2ad072b0d53aa2b197d9694116ad5a9677ee7620dbbc1fab53854",
4
- "source_python_files": 79,
5
  "all_source_files_match": true,
6
  "source_sha256": {
7
- "lerobot_policy_dita/__init__.py": "1d66ff4033566f53629f7e6c5f9f38f79d9790fd5e46bd46cb3e8566bc3caf7d",
8
  "lerobot_policy_dita/_loading.py": "325e7c57a422f2cc5827c6d95ad19df4b51acae4af0a9b70b0c98a37852e6689",
9
  "lerobot_policy_dita/approximation/__init__.py": "b0646b441737d19c58ce395dd402fa0c1dcb0e8531e4df8d8be251de20b11d5e",
10
  "lerobot_policy_dita/approximation/adapters/__init__.py": "e0b5bf1a2a01a82af6b1ab03954aa039f396096b8b3a67d17483a7f054fd98c5",
@@ -39,11 +39,12 @@
39
  "lerobot_policy_dita/policy/approximation/configuration.py": "8fa1f0f24624352b691d73c71f9fc75c0196c8f81e888e6b77a9f11eba7926af",
40
  "lerobot_policy_dita/policy/approximation/ddim.py": "d32a16f85aa670bd07375ce2691498c47b9f9e700160fde12eea33e6a56f09fa",
41
  "lerobot_policy_dita/policy/attention.py": "3253866b5ea0bdf24a85b2047d813573e24588a4294adc9b72d01488d236909e",
42
- "lerobot_policy_dita/policy/configuration_dita.py": "edc19d5e348270b9bebf22a0bc48d6dd1a56b084099544513e02c4d724f954ac",
43
  "lerobot_policy_dita/policy/evaluation/__init__.py": "8c0ca0bbd994637ce95307daec7647082fdb3e8e982073ab6c60ba7f9a16745f",
44
  "lerobot_policy_dita/policy/evaluation/adapter.py": "fdbfadfbfa13772eef20a513c74a06cda0e6cea456a4b2197cb314af42c2dbec",
45
  "lerobot_policy_dita/policy/evaluation/static.py": "d5d2cb5c86b774eb7215b0b36c565888a6fc620da430a212a79b278a6c2d9f31",
46
- "lerobot_policy_dita/policy/modeling_dita.py": "1fb98b081deb3c47f51180e31874abdf342b2fb9e5b8d5d8d7bef5e60a0c7a1d",
 
47
  "lerobot_policy_dita/policy/processor_dita.py": "3173c16c7be81bdb5f86cce305eee8f96a16235acfb45586f874e80324f8257b",
48
  "lerobot_policy_dita/policy/quantization/__init__.py": "8b130b24c8c2a6e5b585c1e5c80e37ba317578ded5bfc624b68a9548d82fcd67",
49
  "lerobot_policy_dita/policy/quantization/adapter.py": "1633d4eb613972afe14d0de3138ec45391764702449e1b7f6312cfeb209d2068",
 
1
  {
2
+ "wheel": "lerobot_policy_dita-2.1.0-py3-none-any.whl",
3
+ "sha256": "745162bb849fbbcd85507627df813757a33b0664b8d517d0befe6706f47e9f0f",
4
+ "source_python_files": 80,
5
  "all_source_files_match": true,
6
  "source_sha256": {
7
+ "lerobot_policy_dita/__init__.py": "54728aea71d40c0ba779ac4d0cadaa5d00a6c0aab686f38129774d786d93756e",
8
  "lerobot_policy_dita/_loading.py": "325e7c57a422f2cc5827c6d95ad19df4b51acae4af0a9b70b0c98a37852e6689",
9
  "lerobot_policy_dita/approximation/__init__.py": "b0646b441737d19c58ce395dd402fa0c1dcb0e8531e4df8d8be251de20b11d5e",
10
  "lerobot_policy_dita/approximation/adapters/__init__.py": "e0b5bf1a2a01a82af6b1ab03954aa039f396096b8b3a67d17483a7f054fd98c5",
 
39
  "lerobot_policy_dita/policy/approximation/configuration.py": "8fa1f0f24624352b691d73c71f9fc75c0196c8f81e888e6b77a9f11eba7926af",
40
  "lerobot_policy_dita/policy/approximation/ddim.py": "d32a16f85aa670bd07375ce2691498c47b9f9e700160fde12eea33e6a56f09fa",
41
  "lerobot_policy_dita/policy/attention.py": "3253866b5ea0bdf24a85b2047d813573e24588a4294adc9b72d01488d236909e",
42
+ "lerobot_policy_dita/policy/configuration_dita.py": "c202b51d2dabea0b111d342c3ab62e3ecec8ef5bfa75c9a6995da43aedb2ec9c",
43
  "lerobot_policy_dita/policy/evaluation/__init__.py": "8c0ca0bbd994637ce95307daec7647082fdb3e8e982073ab6c60ba7f9a16745f",
44
  "lerobot_policy_dita/policy/evaluation/adapter.py": "fdbfadfbfa13772eef20a513c74a06cda0e6cea456a4b2197cb314af42c2dbec",
45
  "lerobot_policy_dita/policy/evaluation/static.py": "d5d2cb5c86b774eb7215b0b36c565888a6fc620da430a212a79b278a6c2d9f31",
46
+ "lerobot_policy_dita/policy/modeling_dita.py": "84ca6d1e4e7aefddb2758385c61be7ff11fa836a835807bcba944a9b7f924f20",
47
+ "lerobot_policy_dita/policy/optimization.py": "26af1c104eb8f247cd13918b4d27b367803abd96425539b1dbeb362a7a653fe2",
48
  "lerobot_policy_dita/policy/processor_dita.py": "3173c16c7be81bdb5f86cce305eee8f96a16235acfb45586f874e80324f8257b",
49
  "lerobot_policy_dita/policy/quantization/__init__.py": "8b130b24c8c2a6e5b585c1e5c80e37ba317578ded5bfc624b68a9548d82fcd67",
50
  "lerobot_policy_dita/policy/quantization/adapter.py": "1633d4eb613972afe14d0de3138ec45391764702449e1b7f6312cfeb209d2068",
runtime_validation_report.json CHANGED
@@ -1,36 +1,40 @@
1
  {
2
- "source": "albus2024/dita_object",
3
- "dataset_suite": "libero_object_no_noops",
4
- "strict_from_pretrained": true,
5
- "processor_stats_roundtrip": true,
6
- "model_roundtrip_max_abs_diff": 0.0,
7
- "inference_steps": 3,
8
- "actions_finite": true,
9
- "action_shape": [
10
- 1,
11
- 7
12
- ],
13
- "gripper_values": [
14
- -1.0,
15
- -1.0,
16
- -1.0
17
- ],
18
- "history_lengths": [
19
- 1,
20
- 2,
21
- 2
22
- ],
23
- "result": "passed",
24
- "runtime_version": "2.0.1",
25
  "runtime_from_bundled_wheel": true,
26
- "dtype_cli_overrides": [
27
- "float32",
28
- "float16",
29
- "bfloat16"
30
- ],
31
- "serialized_use_amp_absent": true,
32
- "dtype_and_derived_amp_roundtrip": true,
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
33
  "weights_and_processor_files_unchanged": true,
34
- "pytest_passed": 309,
35
  "full_task_benchmark_run": false
36
  }
 
1
  {
2
+ "runtime_version": "2.1.0",
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
3
  "runtime_from_bundled_wheel": true,
4
+ "torch_version": "2.9.1+cu128",
5
+ "lerobot_version": "0.6.1",
6
+ "source": "albus2024/dita_object",
7
+ "previous_hub_revision": "81d19798426d81a857b983831051454a3a134b12",
8
+ "pytest_passed": 321,
9
+ "inference": {
10
+ "strict_reload": true,
11
+ "parameter_tensors": 373,
12
+ "checkpoint_calls_during_inference": 0,
13
+ "normalized_actions": [
14
+ [
15
+ -0.17592374980449677,
16
+ -0.18163743615150452,
17
+ -0.35942649841308594,
18
+ -0.06041604280471802,
19
+ -0.09618508070707321,
20
+ 0.26031768321990967,
21
+ 1.0
22
+ ]
23
+ ],
24
+ "gripper_mode": "binary",
25
+ "actions": [
26
+ [
27
+ 0.03220635652542114,
28
+ -0.17224717140197754,
29
+ -0.33696234226226807,
30
+ 0.0013292878866195679,
31
+ 0.003292553126811981,
32
+ -0.004353716969490051,
33
+ -1.0
34
+ ]
35
+ ],
36
+ "previous_runtime_action_parity": "exact"
37
+ },
38
  "weights_and_processor_files_unchanged": true,
 
39
  "full_task_benchmark_run": false
40
  }