Open janEbert opened 1 year ago
Previously, I truncated sequences so the maximum amount of duplicated extra_id
tokens would fit in and still be accepted by the model, losing a bit of data most of the time. I now changed it so the program just errors out and asks the user to put in a longer sequence length for the model.
This is probably a worse/undesired solution, so I kept the other code in for now (but commented).
Note that erroring out is also how the T5Dataset
does it.
There were several issues still remaining in the UL2 implementation, most notably that I only tested for micro batch sizes of 1, which when increased made the decoder-only models fail. :p Also most notably in terms of the UL2 sampling, there was an issue regarding the S-denoisers, in which the mean was not correctly positioned, leading to shorter masks than desired.
The implementation also more closely follows the seqio
implementation in the UL2 paper now, which omits the single extra_id
token for the Prefix-LM task, which we previously added.
I can finally report results... Comparing standard T5 training vs training with UL2 or UL2R, results in lm-eval-harness were almost always better with UL2/UL2R. Which should mean this code does improve evaluation results. :)
This adds pretraining using UL2 for both encoder-decoder, non-causal decoder-only, and causal decoder-only models. I have not yet run large-scale tests to see if it yields the desired training improvements, but I wanted to give others the option to take a look at the code already.