【GPT入门】第63课 XTuner 微调大模型必备:训练日志核心指标(iter/step/epoch)计算规则
1. 日志示例
08/31 18:18:16 - mmengine - INFO - Iter(train) [ 7730/910000] lr: 5.6626e-05 eta: 12 days, 1:34:05 time: 0.9080 data_time: 0.0093 memory: 10985 loss: 0.0950 grad_norm: 2.2010
08/31 18:18:27 - mmengine - INFO - Iter(train) [ 7740/910000] lr: 5.6699e-05 eta: 12 days, 1:32:13 time: 1.0687 data_time: 0.2093 memory: 10986 loss: 0.0903 grad_norm: 2.2010
08/31 18:18:36 - mmengine - INFO - Iter(train) [ 7750/910000] lr: 5.6773e-05 eta: 12 days, 1:27:17 time: 0.9109 data_time: 0.0094 memory: 10989 loss: 0.0852 grad_norm: 2.2419
08/31 18:18:45 - mmengine - INFO - Iter(train) [ 7760/910000] lr: 5.6846e-05 eta: 12 days, 1:22:21 time: 0.9103 data_time: 0.0093 memory: 10986 loss: 0.0871 grad_norm: 2.2176
08/31 18:18:54 - mmengine - INFO - Iter(train) [ 7770/910000] lr: 5.6919e-05 eta: 12 days, 1:17:24 time: 0.9094 data_time: 0.0098 memory: 10988 loss: 0.0874 grad_norm: 2.2176
2. (iter/step/epoch)计算规则
在XTuner(基于MMEngine框架)的训练日志中,iter、step和epoch的计算逻辑如下:
1. Iter (迭代)
- 定义:表示训练过程中参数更新的总次数(每处理一个batch并更新一次参数,记为1个iter)。
- 日志含义:日志中
[ 5110/910000]表示“当前已完成5110次迭代,总计划迭代次数为910000次”。 - 计算逻辑:
- 每次模型处理一个batch的数据并反向更新参数后,
iter计数+1。 - 总迭代次数由
max_iters配置参数指定(而非由数据集大小决定)。
- 每次模型处理一个batch的数据并反向更新参数后,
2. Step (步骤)
- 与Iter的关系:在单卡训练中,
step与iter完全等价,即1个step = 1个iter(每步参数更新对应一次迭代)。 - 分布式场景差异:在多卡数据并行训练中,
step通常指“全局步数”,而iter可能指单卡迭代次数(此时step = iter / 卡数)。 - 日志体现:XTuner日志中一般以
iter为主,step概念较少单独体现,可理解为与iter同义。
3. Epoch (轮次)
- 定义:表示完整遍历一次训练数据集的次数。
- 计算逻辑:
- 1个epoch = 训练数据集总样本数 / 每个batch的样本数(即
总batch数/epoch)。 - 例如:若数据集有10000个样本,batch_size=10,则1个epoch包含1000个iter。
- 1个epoch = 训练数据集总样本数 / 每个batch的样本数(即
- 与Iter的转换:
当前epoch = 当前iter数 / 每epoch的iter数(结果取整数部分)。
总结
iter是最核心的训练进度指标,直接对应参数更新次数,由max_iters控制训练总长度。epoch是相对概念,依赖于数据集大小和batch_size,可用于辅助判断模型对数据的遍历程度。step在单卡场景下与iter一致,仅在分布式训练中可能有差异。
日志中 5110/910000 直接反映了训练进度:当前完成5110次参数更新,距离目标910000次更新还有剩余迭代次数。
1209

被折叠的 条评论
为什么被折叠?



