【记一次】AI微调训练步数计算方式

llama微调训练步数计算方式,以下数据为假设

一、关键参数解析

  1. 总样本数Num examples = 1,047
    表示训练数据集包含 1,047 个样本。

  2. 训练轮数Num Epochs = 300
    表示整个训练集将被遍历 300 次。

  3. 总批次大小Total train batch size = 80
    表示每次参数更新使用的样本数为 80(受并行训练、分布式训练等影响后的等效批次大小)。

  4. 梯度累积步数Gradient Accumulation steps = 8
    表示每累积 8 个批次的梯度后,才进行一次参数更新。

二、计算步骤分解

  1. 单轮训练批次数
    每个 epoch 的批次数 = 总样本数 / 总批次大小
    Batches per epoch = 1 , 047 80 ≈ 13.09 \text{Batches per epoch} = \frac{1,047}{80} \approx 13.09 Batches per epoch=801,04713.09
    (实际计算中会向上取整为 14 批,因最后一批可能不足 80 样本)

  2. 总批次数(所有 epoch)
    总批次数 = 批次数 per epoch × 训练轮数
    Total batches = 14 × 300 = 4 , 200 \text{Total batches} = 14 \times 300 = 4,200 Total batches=14×300=4,200

  3. 优化步数计算
    优化步数 = 总批次数 / 梯度累积步数
    Optimization steps = 4 , 200 8 = 525 \text{Optimization steps} = \frac{4,200}{8} = 525 Optimization steps=84,200=525


训练过程可能存在修正过程,例如我的训练日志效果;

INFO|2025-03-22 15:43:25] trainer.py:2406 >> Num examples = 1,047

[INFO|2025-03-22 15:43:25] trainer.py:2407 >> Num Epochs = 300

[INFO|2025-03-22 15:43:25] trainer.py:2408 >> Instantaneous batch size per device = 10

[INFO|2025-03-22 15:43:25] trainer.py:2411 >> Total train batch size (w. parallel, distributed & accumulation) = 80

[INFO|2025-03-22 15:43:25] trainer.py:2412 >> Gradient Accumulation steps = 8

[INFO|2025-03-22 15:43:25] trainer.py:2413 >> Total optimization steps = 3,900

[INFO|2025-03-22 15:43:25] trainer.py:2414 >> Number of trainable parameters = 4,399,104.teps = 3,900

三、日志值修正解释

实际日志中 Total optimization steps = 3,900,表明存在以下调整:

  • 更精确的批次计算:可能最后一批未补全时直接舍弃,实际批次数为:
    Batches per epoch = ⌊ 1 , 047 80 ⌋ = 13  批 \text{Batches per epoch} = \left\lfloor \frac{1,047}{80} \right\rfloor = 13 \text{ 批} Batches per epoch=801,047=13 
    总批次数 = 13 × 300 = 3,900 批

  • 优化步数修正
    若梯度累积步数为 8,则理论优化步数应为:
    Optimization steps = 3 , 900 8 = 487.5 \text{Optimization steps} = \frac{3,900}{8} = 487.5 Optimization steps=83,900=487.5
    但日志值为整数 3,900,表明实际计算中可能直接取总批次数(即梯度累积步数被隐式设为 1)。

四、最终结论

日志中的 Total optimization steps = 3,900 是通过以下公式计算:
Total optimization steps = Num Epochs × ⌊ Num examples Total train batch size ⌋ \text{Total optimization steps} = \text{Num Epochs} \times \left\lfloor \frac{\text{Num examples}}{\text{Total train batch size}} \right\rfloor Total optimization steps=Num Epochs×Total train batch sizeNum examples
即:
3 , 900 = 300 × ⌊ 1 , 047 80 ⌋ = 300 × 13 3,900 = 300 \times \left\lfloor \frac{1,047}{80} \right\rfloor = 300 \times 13 3,900=300×801,047=300×13

这表示每轮训练实际使用 13 个完整批次(最后一批可能小于 80 样本但被忽略),共训练 300 轮,总优化步数为 3,900。
所以说,批处理大小(每个 GPU 处理的样本数量。) * 梯度累积(梯度累积的步数。)的值越大,step,步数越小。这个值需要根据GPU的大小来决定。否则训练速度会很慢。
在这里插入图片描述
在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值