Search papers, labs, and topics across Lattice.
This paper argues that the backward-state policy, specifically how low-precision training rounds tensors reused by the backward pass, is an integral part of the learning algorithm, not merely a precision detail. Empirical evidence shows that training outcomes diverge based on whether the backward pass reuses the forward's rounded output or a new rounding, even when copy accuracy and final loss appear satisfactory. The authors derive per-use requirements for tensor reads in the backward pass and validate these against independent copies, demonstrating their predictive power for gradient computation.
A single backward pass can fundamentally alter training outcomes based on how it reuses low-precision forward-pass tensors, defying standard accuracy checks.
Low-precision training rounds tensors that the backward pass reads again, often for several gradients; each use can read the forward's rounded value, the original, or a new random rounding. This backward-state policy looks like a memory and precision detail, settled by copy accuracy and final loss. We argue that it is part of the learning algorithm, and that neither check shows whether it is right. Copy accuracy does not decide the outcome: in three pairs of 390M runs with an emulated FP8 backward, training fails when attention's backward reuses the forward's rounded output and succeeds with a new rounding from the same distribution. Even the most accurate copy, the original itself, can be wrong by our reference: the gradient of the forward pass as it actually ran, with gradients passed through rounding unchanged. For example, a normalization output stored in low precision feeds two gradients: the gain's gradient needs the original, but the next layer's weight gradient needs the rounded value that layer multiplied. Final loss, the other check, does not rule out the error of reading the original for both: it persists in models trained with such a store, while planned loss comparisons stay within a margin fixed in advance. We therefore derive from this reference which value each use must read, or which substitute gives the same gradient on average with the forward held fixed, and check these per-use requirements on single operators, without training. In three tests using PyTorch and Transformer Engine, the requirements predicted beforehand whether reuse changes what the backward computes on average relative to an independent copy, and every prediction held. Backward-state policy is thus part of the learning algorithm: it should be specified and checked use by use, not settled by copy accuracy and final loss.