File size: 10,922 Bytes
8101696
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
# ReTime for StarVLA

ReTime is an opt-in temporal-sampling extension for the accompanying StarVLA
backend. It preserves the dataset/trajectory distribution and changes the
within-trajectory temporal proposal:

```text
q(t | e) = (1 - alpha) p(t | e) + alpha r(t | e)
training loss = mean((p / q) * per_sample_loss)
```

The weights are ordinary importance weights, not batch-normalized weights.
`K` controls the frozen-policy scoring grid. `shuffle` permutes the residual
masses within each trajectory; `uniform` uses the baseline draw stream.

## Install

Use Linux, Python 3.11, a CUDA driver compatible with PyTorch 2.7.1, and the
dependencies in `requirements.txt`. The core training packages are pinned to
the versions used in the GPU integration test. From this source tree:

```bash
python -m pip install -r requirements.txt
python -m pip install -e .
retime --help
```

The supplied Qwen-GR00T configurations additionally use `AdamW8bit` and
`flash_attention_2`. Install their optional dependencies after the base
environment and select a Flash Attention build compatible with your CUDA and
PyTorch installation:

```bash
python -m pip install -r requirements-qwen.txt
python -m pip install flash-attn==2.7.4.post1 --no-build-isolation
```

Flash Attention may require a local CUDA toolkit and build tools. The version
above was present in the GPU validation environments. Both production Qwen
continuation configurations use Flash Attention 2. The bounded Qwen Bridge
integration run used PyTorch SDPA on the same model/data path.

This release supports the supplied Florence/Qwen GR00T configurations and
LeRobot data layouts. The backend includes the per-example loss and sampler
integration required by ReTime; it is not a claim of compatibility with every
unmodified StarVLA release or arbitrary policy architecture.

## Training

The trained common-start checkpoints used in the paper are not redistributed
with this anonymous artifact. Reviewers should either train their own
common-start policy using `retime-pretrain` or provide a compatible complete
checkpoint. The backbone, dataset, and benchmark assets must also be provided
locally.

Select a configuration matching the policy architecture, action dimensions,
dataset mixture, and training budget. Matching supplied pairs are:

| Setting | Policy configuration | Start → stop | Global batch | Accelerate configuration |
| --- | --- | ---: | ---: | --- |
| Florence × Bridge/RT-1 | `configs/florence_bridge_20k_plus500.yaml` | 20K → 20.5K | 64 | `configs/deepspeed_florence_2gpu.yaml` |
| Qwen × Bridge/RT-1 | `configs/qwen_bridge_29k_plus500.yaml` | 29K → 29.5K | 48 | `configs/qwen_single_1gpu.yaml` |
| Florence × RoboTwin | `configs/florence_robotwin_10k_plus500.yaml` | 10K → 10.5K | 64 | `configs/deepspeed_florence_robotwin_2gpu.yaml` |
| Qwen × RoboTwin | `configs/qwen_robotwin_11k_plus500.yaml` | 11K → 11.5K | 40 | `configs/deepspeed_qwen_robotwin_2gpu.yaml` |

These are the four main simulation continuation contracts. Every arm restores
the complete shared starting state and performs exactly 500 optimizer updates.
Bridge runs additionally require `--statistics-path`.

### Train the base policy locally

Reviewers do not need the authors' original common-start checkpoint.
`retime-pretrain` can train a reviewer-owned common-start policy with the same
architecture, optimizer, scheduler, batch geometry, and dataset-sampling
contract as the selected continuation configuration. For Florence Bridge:

```bash
retime-pretrain \
  --config configs/florence_bridge_20k_plus500.yaml \
  --accelerate-config configs/deepspeed_florence_2gpu.yaml \
  --base-steps 20000 \
  --vlm-path /path/to/Florence-2-large \
  --data-root /path/to/OXE_LEROBOT_DATASET \
  --statistics-path /path/to/dataset_statistics.json \
  --omit-data-identity-files \
  --output /path/to/florence-bridge-base
```

Use `--base-steps 29000`, `10000`, or `11000` with the other three configuration
pairs. The command builds and saves `manifest.json` before training. Two-process
configurations produce `checkpoints/steps_<N>_accelerate`; Qwen Bridge produces
`checkpoints/steps_29000_pytorch_model.pt` with adjacent training-state and
commit files. Both formats contain the model, optimizer, scheduler, RNG state,
sampling position, and completed-update counter required by exact continuation.

`--omit-data-identity-files` stores the computed dataset inventory inside the
manifest. Use the same option for continuation. This avoids requiring separate
provenance and fingerprint files while still checking the dataset inventory
against the frozen manifest.

For the Florence Bridge configuration:

```bash
retime \
  --config configs/florence_bridge_20k_plus500.yaml \
  --accelerate-config configs/deepspeed_florence_2gpu.yaml \
  --base-policy /path/to/steps_20000_accelerate \
  --start resume \
  --manifest /path/to/florence-bridge-base/manifest.json \
  --vlm-path /path/to/Florence-2-large \
  --data-root /path/to/OXE_LEROBOT_DATASET \
  --statistics-path /path/to/dataset_statistics.json \
  --omit-data-identity-files \
  --alpha 0.2 --K 8 \
  --mode retime uniform shuffle \
  --output /path/to/new-run
```

Choose one mode or several. The command prepares valid-anchor support from the
dataset, generates the residual proposal once, constructs Shuffle when selected,
and trains each selected arm sequentially from the same base policy. A
uniform-only run does not score a proposal. Invalid probabilities,
incompatible tensor shapes, incomplete
checkpoint files, and mismatched data support still produce errors.

`--base-policy` denotes the reviewer-provided common-start VLA checkpoint.
It is not bundled with this anonymous artifact and is not downloaded
automatically. `--vlm-path` denotes its Florence/Qwen backbone. They are
distinct inputs. The main configurations use
`--start resume`, which is required for the reported +500 continuation.
Florence Bridge and both RoboTwin settings accept a complete Accelerate
checkpoint directory. Qwen Bridge accepts its committed single-process model
file together with the adjacent training-state and commit files.

Exact resume restores model, optimizer, scheduler, RNG, sampler position/data
order, and completed-update counter. Supply the `manifest.json` produced by
the base-policy run and keep its `config.full.yaml` in the original run layout.
When separate provenance/fingerprint files are available, omit
`--omit-data-identity-files` and set the corresponding environment variables in
both commands. A single-process model file is accepted only when its adjacent
`*_training_state.pt` and `*_checkpoint.json` files form a complete committed
checkpoint.

`--start weights` remains available for a deliberate fresh optimizer/scheduler
run from model weights. It starts at update zero, so it does not reproduce any
of the four +500 experiments even when a continuation configuration is selected.

The launcher never changes microbatch, world size, accumulation, optimizer,
schedule, or random seeds to select an arm. The supplied Bridge pairing remains
`4 x 2 x 8 = 64`. The table above supplies matching Accelerate configurations
for the other three settings. Select a smaller dataset mixture with `--data-mix`
when checking a subset; the default RoboTwin configurations cover all 50 tasks.

Add `--dry-run` to validate inputs and print the command plan without writing or
launching. Successful runs produce `config.yaml`, `plan.json`, a proposal/cache,
and separate `runs/retime`, `runs/uniform`, and `runs/shuffle` directories. Use a
fresh output directory for each experiment. Existing proposal caches are bound
to the checkpoint content and support; incompatible caches cannot be reused.

## Layout

```text
retime/                  method implementation and command-line entrypoint
  pretrain.py            reviewer-owned common-start policy training
  objective.py           ordinary p/q correction
  sampler.py             deterministic hierarchical draw stream
  proposal.py            full-support temporal proposal
  scoring/               frozen-policy scoring and Shuffle control
  commands/              proposal generation
starVLA/                 attributed compatible training/model/data backend
scripts/                 legacy entrypoints and optional analysis utilities
configs/                 model, data, and training settings
licenses/                third-party license texts
```

Legacy `starVLA.*` method imports forward to `retime.*` for compatibility.
Analysis utilities are optional research tools and are not training prerequisites.

## Compatibility

| Interface | Support |
| --- | --- |
| StarVLA training | The original `starVLA/training/train_starvla.py` entrypoint is retained. |
| Legacy Python imports | Objective, sampler, proposal, and scoring modules forward to ReTime implementations. |
| Proposal and manifest files | Existing schemas and probability semantics are preserved. |
| Model initialization | Full model weights initialize a fresh optimizer and scheduler. |
| Full-state continuation | `--start resume` restores a complete Accelerate directory or committed single-process checkpoint. |
| Distributed training | Matching one- and two-GPU configurations are supplied for all four settings. |

Florence-GR00T and Qwen-GR00T were exercised on GPUs with both Bridge/RT-1 and
RoboTwin data. Other policy architectures require a compatible per-sample loss
and dataset adapter.
Historical `OPTR_*` environment variables and `InfoFlow` module names in
example configurations are compatibility identifiers for existing datasets and
checkpoints. The supported command-line entrypoint for this artifact is `retime`.

## Tests and scope

```bash
python -m pip install pytest
python -m pytest tests/test_retime_plugin.py -q
```

These CPU tests check proposal generation, objective correction, deterministic
sampling, Shuffle invariants, legacy imports, CLI dispatch, and error propagation.
A separate GPU integration test completed proposal generation, two optimizer
updates, checkpoint saving, and strict model reload for each of the three modes
in all four settings. See `VALIDATION.md` for details.
Datasets, trained weights, checkpoints, and benchmark repositories are not
redistributed in the working source tree.

## Attribution and anonymous review

Built on [StarVLA](https://github.com/starVLA/starVLA), pinned to
`3422b9f2387b6f682cf02802904a77b23ab13afd`. See `UPSTREAM.md`, `LICENSE`, and
`NOTICE`. Retain the complete license, source copyright notices, and the
separate original upstream commits in the accompanying Git history.

Third-party attribution is intentionally visible. The anonymous additions have
no author-account remote or personal development history. Publish through an
anonymous review endpoint, not an author's personal repository URL. Avoid
uploading local training outputs: they can contain machine paths and metadata.