Minibatch persistency, eight years later: what batch reuse costs in steps and joules, and what it saves in data
Organizations: Department of Information Engineering University of Padova, Italy
Abstract
Minibatch persistency reuses data instead of reading it: rather than drawing a fresh minibatch at every optimizer step, it takes K consecutive steps on the same one. Absorbed into data echoing in 2019, it has carried one objection -- that reuse merely imitates a larger learning rate -- and no baseline tuned as carefully as the method itself. This paper runs the missing test. A pre-registered study trains a 49M-parameter Transformer on FineWeb-Edu at minibatch size B in {32, 128, 512}, 8 seeds per cell, tuning the learning rate separately for every batch size and every arm, against a reuse-free control that changes the sampling and nothing else. Each headline claim is a cost to reach a fixed loss, read on four axes: optimizer steps, fresh tokens, seconds, and joules at the socket. We then replicate on new seeds and a newer GPU generation, and put the three arms on one schedule in steps. The outcome of our study is that what minibatch reuse buys is neither speed nor energy but data, and only at large minibatch size: at B = 32 it reads more fresh tokens than the baseline, not fewer. On steps, seconds and joules it is at best free; and at B = 512, where it looks best, a registered control cannot separate the effect of reuse from the position on the learning-rate schedule at n = 8 seeds. The technique is therefore worth using where fresh data rather than compute is the binding cost: a corpus that runs out, a pipeline that pays per sample, a stream that cannot be rewound. Where the data can simply be read again, spaced epochs do as well or better.
Figures & tables
| card | what ran on it: stage, runs, card-hours | driver | torch (CUDA) | precision | micro-batch | energy method |
|---|---|---|---|---|---|---|
| Kaggle T4 | coarse sweep, 31 runs, 14.3 h; confirmatory stage, 138 runs, 234.7 h; learning-rate-matched arm, 9 runs, 30.4 h | not recorded | 2.10.0+cu128 (12.8) | fp16 autocast, dynamic loss scaling | 8 | NVML total-energy counter |
| Modal L4 | coarse sweep, 5 runs, 1.0 h | not recorded | not recorded | bf16 | 8 | NVML total-energy counter |
| RTX PRO 6000 Blackwell (university HPC) | confirmatory group , 6 runs, 1.0 h; bridge, 24 runs, 2.0 h; E1 coarse pass, 24 runs, 0.5 h; E1, 96 runs, 8.0 h; E2, 144 runs, 25.0 h; E3, 48 runs, 16.8 h; E3-lr, 12 runs, 2.1 h | 610.57.04 | 2.13.0+cu130 (13.0) | bf16 | 32 | NVML total-energy counter |
| instrument | where | scope | what we found |
|---|---|---|---|
| NVML total-energy counter | Kaggle T4 (the confirmatory study); university HPC (RTX PRO 6000 Blackwell, server edition: one confirmatory group, the bridge, the extensions) | one card, integrated in hardware | present; the source of every joule in Section 6 ; no sampling, no coverage clause |
| NVML power sampling | departmental cluster (A40, RTX 3090) | one card, sampled | the only per-device instrument on these cards; used once, on the exclusive-node run of the last row, and no run of the confirmatory study or of an extension contributed a joule from it |
| IPMI, shared node | university HPC | whole node | overstates the job by about ; the differential reading does not recover it while other jobs hold the remaining cards; exclusive allocation not grantable |
| IPMI, exclusive node | departmental cluster | whole node, attributable | kJ at the node against kJ sampled on the card over one run ( ); differential W against W, i.e. about W of host-side power NVML cannot see; about sixteen hours of queueing per data point |
| grid argmin | reading (thresholds fixed before the data) | ||
| : not explained by a larger learning rate | |||
| : not explained by a larger learning rate | |||
| between and : indeterminate | |||
| / / , E2 | / / | — | two-point grid at , majority of 8 seeds (Section 6.5 ) |
| , E3-lr | — | extension card, , one seed, argmins at (Section 6.6 ) |
| adjusted | floor-check adjustments | ||
|---|---|---|---|
| none | |||
| (nats) | registered | replication | 95% interval | joules | ||
|---|---|---|---|---|---|---|
| 0.25 | 6.909 | 1.19 | 1.018 | 8 | 1.023 | |
| 0.375 | 6.498 | 1.01 | 0.952 | 8 | 0.953 | |
| 0.5 | 6.266 | 0.93 | 0.923 | 8 | 0.926 | |
| 0.625 | 6.087 | 0.88 | 0.878 | 8 | 0.879 | |
| 0.75 | 5.960 | 0.82 | 0.812 | 8 | 0.812 |
| arm | fresh tokens | steps (= compute) | seconds | joules | |
|---|---|---|---|---|---|
| persistency | |||||
| persistency | |||||
| persistency | |||||
| arm | seconds | kJ | mean W | |
|---|---|---|---|---|
| baseline | 174 | 72.0 | 413 | |
| persistency | 974 | 406.9 | 418 | |
| A/A | 175 | 72.5 | 415 | |
| baseline | 177 | 74.0 | 417 | |
| persistency | 251 | 105.4 | 419 | |
| A/A | 178 | 74.4 | 419 |
| arm | fresh tokens | steps (= compute) | seconds | joules | |
|---|---|---|---|---|---|
| persistency | |||||
| persistency | |||||
| persistency | |||||
| arm | fresh tokens | steps (= compute) | seconds | joules | |
|---|---|---|---|---|---|
| persistency | |||||
| persistency | |||||
| persistency | |||||
Appendix figures & tables7 assets
Supplementary material from the paper’s appendix.
Appendix
| arm | steps per run | evals per run | first eval. (step) | steps to | seeds reached | at first eval. | |
|---|---|---|---|---|---|---|---|
| baseline | 3052 | 16 | 191 | 408–435 | 8/8 | 0/8 | |
| persistency | 12205 | 16 | 761 | 1570–1689 | 8/8 | 0/8 | |
| A/A | 3049 | 16 | 189 | 414–433 | 8/8 | 0/8 | |
| baseline | 763 | 16 | 48 | 112–129 | 8/8 | 0/8 | |
| persistency | 3049 | 16 | 189 | 189 | 8/8 | 8/8 | |
| A/A | 761 | 16 | 45 | 112–127 | 8/8 | 0/8 |
| arm | |||
|---|---|---|---|
| baseline | 8.96e-04, 2.68e-03 | 3.00e-04, 8.96e-04 | 8.96e-04, 2.68e-03 |
| persistency | 8.96e-04, 2.68e-03 | 8.96e-04, 2.68e-03 | 3.00e-04, 8.96e-04 |
| A/A | 8.96e-04, 2.68e-03 | 8.96e-04, 2.68e-03 | 8.96e-04, 2.68e-03 |
| arm | steps per run | evals per run | first eval. (step) | steps to horizon rule | steps to 2-eval. rule | seeds reached | at first eval. | |
|---|---|---|---|---|---|---|---|---|
| baseline | 3052 | 64 | 47 | 1722–1782 | 1722–1782 | 8/8 | 0/8 | |
| persistency | 12205 | 259 | 47 | 9600–10113 | 9600–10113 | 8/8 | 0/8 | |
| A/A | 3049 | 64 | 47 | 1703–1825 | 1703–1825 | 8/8 | 0/8 | |
| baseline | 763 | 69 | 11 | 430–475 | 430–475 | 8/8 | 0/8 | |
| persistency | 3049 | 277 | 11 | 608–673 | 608–673 | 8/8 | 0/8 | |
| A/A | 761 | 69 | 11 | 431–480 | 431–480 | 8/8 | 0/8 |
Data Repetition in Language Model Training
Data repetition in language model training studies how reusing examples affects learning, efficiency, memorization, and generalization.
See all 34 papers