预训练工程模块四 · 基于批次数据的训练方法计算约 13 分钟
epoch 与参数更新步数
一道必考计算题:到底 step 了多少次
学完这节你能:
- 区分 epoch、step、batch
- 会算总更新步数
- 把梯度累积算进去
- 1 个 step(参数更新)= 处理 1 个全局 batch 并更新一次参数。
- 1 个 epoch = 完整过一遍训练集。
- 每个 epoch 的步数 = 训练样本数 / 全局批大小。
- 总更新步数 = 每 epoch 步数 × epoch 数。
更新步数 = ⌈ 样本数 / 全局批大小 ⌉ × epoch 数
全局批大小 = 单卡批 × 梯度累积 × 卡数
全局批大小 = 单卡批 × 梯度累积 × 卡数
▪ 手算
样本数 = 100,000;单卡批 = 16;梯度累积 = 2;卡数 = 4;epoch = 3
全局批 = 16 × 2 × 4 = 128
每 epoch 步数 = 100000 / 128 ≈ 782
总步数 = 782 × 3 ≈ 2346 次参数更新
自测样本 8000、全局批 32、训练 5 个 epoch,总更新步数约为:
// 带走一句话
更新步数=(样本数/全局批)×epoch;全局批=单卡批×梯度累积×卡数。这是必考计算题。
独立练习
做到这些,才算完成本节
- 替换例题中的数值,从头独立算一遍。
- 用数量级、边界值或反向计算检查结果是否合理。
学习记录
记录本节阅读进度
建议先独立回答自测。读完记录不等于已经掌握。