目录
[1. drop_last_batch 是什么?](#1. drop_last_batch 是什么?)
[2. drop_last_batch有什么用?](#2. drop_last_batch有什么用?)
这是我们做tokenizer时,经常会遇到的代码,那这里的drop_last_batch
为什么要设置:
finetuning_dataset_loaded = datasets.load_dataset("json", data_files=filename, split="train")
tokenized_dataset = finetuning_dataset_loaded.map(
tokenize_function,
batched=True,
batch_size=1,
drop_last_batch=True
)
print(tokenized_dataset)
1. drop_last_batch 是什么?
drop_last_batch=True
是一个常见的数据加载/预处理选项,用于在处理最后一批样本时丢弃不完整的批次(batch)。
2. drop_last_batch有什么用?
-
训练神经网络模型:
大多数神经网络模型在训练时使用批量梯度下降(mini-batch gradient descent)优化算法,这需要将数据分成若干个批次。如果最后一个批次的样本数量不足一个完整批次的大小,可能会导致计算不一致或效率低下。通过设置
drop_last_batch=True
,可以确保每个批次的大小都是一致的,有利于模型的稳定性和收敛性。 -
数据并行处理:
在数据并行处理的场景下,例如使用多个GPU或多个进程/线程进行数据预处理,需要保证每个处理单元获得的数据批次大小相同,以平衡计算负载。丢弃最后一个不完整的批次可以确保数据的均匀分布。
-
统一批次大小:
某些操作(如数据增强、数据编码等)可能需要固定的批次大小,以便有效地利用向量化计算或内存缓存。在这种情况下,丢弃最后一个不完整的批次可以确保批次大小的一致性。
-
模型并行处理:
在模型并行处理的场景下,多个模型组件可能需要接收相同大小的批次输入,以确保同步和一致性。丢弃最后一个不完整的批次可以实现这一点。