1Why must prompt tokens be masked with label `-100` during SFT, and what severe degradation occurs if loss is computed on prompts?
2How does FlashAttention's variable-length API (`cu_seqlens`) prevent cross-document attention contamination in packed sequences?
3How to construct token masks in multi-turn dialogues so that loss is computed solely on the final (or all) Assistant turns while conditioning on previous history?
4Quantify the 3-5x speedup and memory efficiency gains of Data Packing over conventional batched padding?
5How do Jinja2 Chat Templates standardize special token delimiters across Llama-3, Qwen-2.5, and Mistral in production SFT data pipelines?