摘要
在预训练阶段首次使用的打包是一种优化技术,旨在通过组合不同的训练序列来适应模型的最大输入长度,从而最大限度地提高硬件资源效率。尽管它在预训练阶段已被证明有效,但在监督微调 (SFT) 阶段仍缺乏对以下方面的全面分析:(1)打包是否能够在保持性能的同时有效地提高训练效率,(2)使用打包方法进行微调的模型和数据集的合适大小,以及(3)打包不相关或相关的训练样本是否会导致模型过度忽视或过度依赖上下文。
本文对使用填充和打包的 SFT 方法进行了广泛的比较,涵盖了从 69K 到 120 万的 SFT 数据集和从 80 亿到 700 亿的模型。这提供了对打包与填充的优缺点以及在各种训练场景中实施打包的实际考虑因素的首次全面分析。我们的分析涵盖了各种基准,包括知识、推理和编码,以及基于 GPT 的评估、时间效率和其他微调参数。我们还开源了我们的微调和评估代码,并提供了在不同大小的数据集上微调的检查点,旨在推动未来对打包方法的研究。代码可在以下地址获取:https://github.com/ShuheWang1998/Packing-Analysis?tab=readme-ov-file。