最近在做实验的过程中,总是会把epoch、batch_size和data_size搞混,为了彻底搞明白他们之间的联系,遂写出这个博客。
在实际训练中,一般对上述的术语定义为epoch、Training_batch_size、Training_data_size
1,什么是epoch、batch_size和data_size?
Training_data_size: 训练集大小,指训练过程中实际使用的训练样本数量。也即 "每个 epoch 会遍历的数据总量"。对于监督学习,它通常表示样本的数量;对于强化学习,它常常表示 task / query / prompt 的数量。
Epoch(全部数据集): 简单来说,Epoch 是指完整训练数据集被模型遍历一遍。 一个 epoch 通常包含多次参数更新 一个 epoch 通常包含多个 training step。也即通常多次参数更新,而不是只完成一次参数更新。
Batch(批数据大小): 这个词语的来源主要是为了解释模型更新参数时的单位,一个完整的数据集拿来更新太大了,要切分为几份分别喂给模型进行训练(计算loss和更新policy model,也就是模型),这每一份数据就是一个batch,模型在更新(比如均方误差损失MSE、交叉熵损失)时数据的最小更新单位就是batch。用来计算平均的均方损失或交叉熵损失,否则平均没法定义。**Training_batch_size:**指训练过程中,训练一步,即一次inference(推理)、训练和更新参数时需要的数据量。
**Training_step:**通常指一次 optimizer update,或者在某些 RL 框架中指一次"rollout + reward 计算 + policy update"的完整训练迭代。完成一次模型参数的更新,数值上等于
