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

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/pingmian/73165.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

python-selenium 爬虫 由易到难

本质 python第三方库 selenium 控制 浏览器驱动 浏览器驱动控制浏览器 推荐 edge 浏览器驱动(不容易遇到版本或者兼容性的问题) 驱动下载网址:链接: link 1、实战1 (1)安装 selenium 库 pip install selenium&#…

yaffs

YAFFS(Yet Another Flash File System)是专为NAND闪存设计的日志结构文件系统,其核心原理围绕NAND闪存的特性优化数据管理。以下是其关键原理的详细说明: 1. NAND闪存适配 写入限制:NAND闪存需按页写入(通…

git的底层原理

git的底层原理 三段话总结git, 1. 工作原理:git管理是一个DAG有向无环图,HEAD指针指向branch或直接指向commit,branch指向commit,commit指向tree,tree指向别的tree或直接指向blob。 2. git所管理的一个目录…

【计算机网络原理】选择题+简答题

文章目录 选择题网络基础IP网络拓扑 OSI七层模型协议HDLCTCP/IP 交换技术网络安全数字签名 算法与策略 简答题UDPTCP 选择题 网络基础 下列域名中,属于国际顶级域名的是() A. us B. tom C. edu D. int 下列关于光纤传输介质的叙述中错误的是…

Android数据加密方案

Android数据加密方案 前言 在移动应用开发中,数据安全是一个永恒的话题。Android应用中往往需要存储和传输敏感数据,如用户密码、支付信息、个人隐私等。本文将深入介绍Android平台上的数据加密方案,帮助开发者构建安全可靠的数据保护机制。 基础知识 1. 加密算法分类 …

神聖的綫性代數速成例題13. 非齊次方程組解的性質、非齊次方程組解的討論

綫性空間的維數: 若綫性空間中存在一組綫性無關的矢量,使得中的任意矢量 都可以由綫性表示,則稱為綫性空間的維數,記作,稱為的一組基。 基與座標變換: 設和是維綫性空間的兩組基,且,…

github代理 | 快速clone项目

代理网址: https://ghproxy.com/ https://ghproxy.com/代理网址: https://ghproxy.com/ 比如需要克隆的项目git地址为:https://github.com/AUTOMATIC1111/stable-diffusion-webui.git git clone https://ghproxy.com/https://github.com/AUTO…

Kafka集成Debezium监听postgresql变更

下载postgres的插件:https://debezium.io/documentation/reference/2.7/install.html 2.7版本支持postgresql12数据库。 debezium-connector-postgres-2.7.4.Final-plugin.tar.gz 上传插件并解压 mkdir /usr/local/kafka/kafka_2.12-2.2.1/connector cd /usr/local…

『uniapp』简单文本复制文字 富文本内容复制文字(详细图文注释)

目录 text组件错误代码示例成功代码总结 欢迎关注 『uniapp』 专栏,持续更新中 欢迎关注 『uniapp』 专栏,持续更新中 text组件 官方文档可知app端用selectable可实现文本选中进而可复制,也就是说text标签内部的文本就可以复制了 https://uniapp.dclou…

RestTemplate和RPC区别

RestTemplate是Spring框架中用于进行RESTful风格的HTTP请求的模板类,通常用于与外部服务进行通信。它基于HTTP协议,使用GET、POST、PUT、DELETE等HTTP方法来进行通信,传输的数据通常使用JSON或XML格式。它是一种基于资源的通信方式&#xff0…

算法模型从入门到起飞系列——背包问题(探索最大价值的掘金之旅)

文章目录 前言一、背包问题溯源(动态规划)1.1 动态规划的概念1.2 动态规划的基本步骤1.3 动态规划的实际应用 二、背包问题2.1 背包问题衍生2.2 0-1背包2.2.1 0-1背包描述2.2.2 0-1背包图解2.2.3 0-1背包代码刨析 2.3 完全背包2.3.1 完全背包描述2.3.2 完…

Python实现爬虫:天气数据抓取(+折线图)

一、基本架构 1、URL管理器:爬虫的调度中枢 核心职责 功能说明URL去重防止重复抓取URL优先级管理控制抓取顺序(广度优先/深度优先)断点续爬支持持久化存储抓取状态分布式协同多节点共享URL队列 2、网页下载器:数据获取的引擎 功…

DFS刷题

洛谷P2089烤鸡 #include<iostream> using namespace std; const int N 20, M 1000010; int ans[N]; int dp[M][N]; int n, count; void dfs(int x, int sum){if(sum > n)return;if(x > 10){if(sum n){count;for(int i 1; i < n; i)dp[count][i] ans[i];}r…

《Operating System Concepts》阅读笔记:p460-p4470

《Operating System Concepts》学习第 36 天&#xff0c;p460-p4470 总结&#xff0c;总计 11 页。 一、技术总结 无。 二、英语总结(生词&#xff1a;3) 1.lifespan (1)lifespan: life span(“the period of time that sth exists or happens”) c. 也写作 life-span, …

stratis,容器podman

一、stratis 1.stratis可以实现动态的在线扩容&#xff0c;lvm虽然也可以实现在线扩容&#xff0c;但是是需要人为的手动扩容。 2.stratis不需要手动格式化&#xff0c;自动会创建文件系统&#xff08;默认是xfs&#xff09; 1. 安装stratis软件包 yum list | grep stratis…

音频焦点 Android Audio Focus

Android 音频焦点详解 音频焦点&#xff08;Audio Focus&#xff09;是 Android 系统用于协调多个应用同时访问音频输出的机制。当多个应用需要播放音频时&#xff0c;音频焦点确保用户听到的内容不会混乱&#xff08;如多个音乐应用同时播放&#xff09;。以下从核心概念、使…

【用 Trace读源码】PlanAgent 执行流程

前提条件 在 Trae 中打开 OpenManus 工程&#xff0c;使用 build 模式&#xff0c;模型选择 claude-sonnet-3.7 提示词 分析 agent/planning.py 中 main 方法及相关类的执行流程&#xff0c;以流程图的方式展示PlanningAgent 执行流程图 以下流程图展示了 PlanningAgent 类…

1、双指针法

关于每个知识点的例题 可以自己看力扣标准题解。也可以在哔哩哔哩上看。想看我的&#xff0c;就到github 看 - 库 &#xff0c;介绍里写的算法讲解那些&#xff0c;里面有知识点&#xff0c;有题库。题库&#xff0c;每天都发题&#xff0c;可能跟博客的进度不一样。因为我上传…

LangChain 基础

一、LangChain 模块和体系 LangChain 是一个用于开发由大型语言模型&#xff08;LLMs&#xff09;驱动的应用程序的框架。 官方文档&#xff1a;https://python.langchain.com/docs/introduction/ LangChain 简化了LLM应用程序生命周期的每个阶段&#xff1a; 开发&#xf…

#echarts#折线图#饼图

<!DOCTYPE html> <html lang"en"> <head><meta charset"UTF-8"><title>折线图</title> </head> <body><div id"app" style"width:100%;height:100%;"><div id"chart-c…