训练循环 · 可操作讲义

批大小不是“越大越好”

把一轮数据切成一批批送入模型。改变样本数与批大小,观察更新次数如何改变,也看看最后凑不满的一批究竟会怎样。

保留尾批次:steps = ⌈N ÷ B⌉
丢弃尾批次:steps = ⌊N ÷ B⌋

一轮数据的“切片尺”

完整批次 尾批次/被丢弃样本

相对梯度噪声 仅作直觉示意

示意采用 1/√B:批次增大时,单步梯度通常更稳定,但真实噪声仍取决于数据、模型与采样方式。

显存与吞吐的拉扯 仅作直觉示意

显存需求往往随 B 上升;吞吐可能先提高、后趋于饱和。曲线不是硬件基准,不能据此直接选参数。

micro-batch 微批次

显存一次真正容纳的样本组。使用梯度累积时,多个 micro-batch 的梯度合起来才执行一次参数更新。

step 更新步

通常指优化器执行一次 optimizer.step()。若累积 4 个微批次,它们合计才算 1 个更新 step。

epoch 训练轮

训练流程把计划使用的数据遍历一遍。尾批次是否丢弃,会改变每轮真正被模型看见的样本数。

停一下:你能算出来吗?

若 N=1000、B=128 且保留尾批次,一轮有几次更新?尾批次多大?

8 次更新;前 7 批各 128 个样本,尾批次有 104 个样本。

micro-batch=16,累积 4 次后更新参数,有效批大小是多少?

若只考虑单设备且不做其他并行,有效批大小为 16×4=64;4 个微批次对应 1 个优化器 step。