Llama-recipes 中支持两种批处理策略,用于在训练过程中将请求一起批处理。具体来说,这两种策略分别是 packing
和 padding
,它们各有优缺点,并适用于不同的训练数据情况和需求。
批处理策略概述
批处理策略 是在训练过程中将多个样本组合成一个批次,以便更有效地利用计算资源。Llama-recipes 支持两种主要的批处理策略:
- Packing(打包)策略
- Padding(填充)策略
1. Packing(打包)策略
概述
- 打包策略 将多个标记化的样本连接成一个长序列,填满模型的上下文长度。
- 效率:这是计算最有效的变体,因为它避免了任何填充(padding),所有序列的长度相同。
- 处理方式:样本在上下文长度边界处被截断,截断后的剩余部分作为下一个长序列的开头。
优点
- 计算效率高:因为不需要填充,每个标记都对计算有贡献。
- 没有浪费:所有序列的长度相同,避免了由于填充导致的计算资源浪费。
缺点
- 引入噪声:如果训练数据量小,这种方法可能引入大量噪声,因为截断样本的部分可能与下一个样本的开头内容不相关。
- 影响性能:这种噪声可能会损害微调模型的预测性能。
2. Padding(填充)策略
概述
- 填充策略 不会因截断序列而引入额外的噪声。
- 处理方式:通过将长度相似的样本分组在一起,尽量减少填充量。
优点
- 减少噪声:避免了由于截断序列而引入的额外噪声。
- 更适合小数据集:对小数据集更加友好,因为它不引入不相关的序列部分。
缺点
- 效率损失:由于填充的存在,计算效率比打包策略低,因为某些位置的填充值不对模型训练产生直接贡献。
批处理策略选择
- 命令行参数:可以通过命令行参数
--batching_strategy [packing]/[padding]
来选择批处理策略。- 使用
--batching_strategy packing
选择打包策略。 - 使用
--batching_strategy padding
选择填充策略。
- 使用
总结
- 打包策略:适用于大规模训练数据,能够充分利用计算资源,避免填充浪费,但可能引入噪声。
- 填充策略:适用于小规模训练数据,避免了噪声的引入,通过分组长度相似的样本来减少填充,保持较高的数据质量,但计算效率相对较低。
根据训练数据的规模和质量需求,选择合适的批处理策略,可以在效率和模型性能之间取得平衡。