当前位置: 首页 > news >正文

【记一次】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的大小来决定。否则训练速度会很慢。
在这里插入图片描述

相关文章:

  • 在使用 RabbitMQ 时,手动确认消息和死信队列
  • 告别命令行,我用图形界面畅玩 DeepSeek-R1 1.5B
  • Redis为什么用跳表实现有序集合?
  • 深入解析 Uniswap:自动做市商模型的数学推导与智能合约架构
  • vue有几个版本
  • 【IDEA】IDEA常用快捷键(适应包括xml所有类型文件)
  • Redis 知识点梳理
  • 宠物AI识别技术颠覆自助洗宠场景,解决4大难题
  • systemd-networkd 的 /etc/systemd/network/*.network 的配置属性名称是不是严格区分大小写?是
  • 设计模式之装饰器模式
  • 项目日记 -云备份 -服务器配置信息模块
  • 区块链项目价值跃迁:从技术叙事到资本共振的包装艺术
  • 【Text2reward】环境状态信息学习笔记
  • python __name__与__main__深刻理解(涵详细解释、应用场景、代码举例、高级用法)
  • 基于WebRtc,GB28181,Rtsp/Rtmp,SIP,JT1078,H265/WEB融合视频会议接入方案
  • 工单分类总结
  • Leetcode Hot 100 35.搜索插入位置
  • 体育直播模板nba英超直播欧洲杯直播模板手机自适应
  • 实时视频分析的破局之道:蓝耘 MaaS 如何与海螺 AI 视频实现高效协同
  • [leetcode]1631. 最小体力消耗路径(bool类型dfs+二分答案/记忆化剪枝/并查集Kruskal思想)
  • 警惕“全网最低价”等宣传,市监总局和中消协发布直播消费提示
  • 俄罗斯今日将举行“胜利日”阅兵,有何看点?
  • “80后”计算机专家唐金辉已任南京林业大学副校长
  • 商务部:中方愿同各国一道加强合作,促进跨境电商健康可持续发展
  • 印巴局势快速升级,外交部:呼吁印巴以和平稳定的大局为重
  • 马上评|从一个细节看今年五一档电影