not sure what a fixed precision transformer is?
not sure what a fixed precision transformer is?
A transformer N is a specific kind of a computation graph family over vectors of floating-point numbers with p precision. We work with fixed-precision transformers, i.e., we take p to be constant with respect to the input sequence length n. In practice, transformers typically use p = 32, and, several newer, larger transformer language models use p = 16 (Brown et al., 2020; Zhang et al., 2022), even while allowing larger context lengths n than their predecessors.
[1]: https://arxiv.org/pdf/2210.02671.pdf#page=7(Other than drastically slowing things down, of course)
- rounding errors in arithmetic between small and large numbers, large and large numbers, or small and small numbers
- unrepresentable numbers (eg 0.1)
- non-associativity of arithmetic making order of evaluation relevant
- residual connections can introduce, quite easily, arithmetic errors (heard this from research I can’t find atm): x + f(x) happens a lot in transformers, and the terms might be prone to cancellation or inadvertent rounding
- layernorm blocks introducing some error
- gradients might get added with error if too small or too big
On the bright side, some people have suggested that ieee float problems are usually not so terrible that you can see them instead as introducing slightly beneficial regularization