大模型高效训练基础知识:梯度累积(Gradient Accumulationn)

news2024/11/16 23:51:40

梯度累积

梯度累积(Gradient Accumulation)的基本思想是将一次性的整批参数更新的梯度计算变为以一小步一小步的方式进行(如下图),具体而言该方法以小批次的方式进行模型前向传播和反向传播,过程中迭代计算多个小批次梯度并累加,当累积到足够多的梯度时,执行模型的优化步骤更新参数。这也是一种典型的时间换空间的做法,即我们可以实现在有限的GPU内存上更新大量参数,不过额外添加的小批次前向传播和后向传播会使得训练速度变慢一些。
在这里插入图片描述
参数更新方式可以使用随机梯度下降(Stochastic Gradient Descent)为例进行说明:

使用global batch(即全批次)训练时,参数更新公式为:
V t = V t − 1 − l r ∗ g r a d V_t=V_{t-1}-l_{r}*grad Vt=Vt1lrgrad
简化公式, V V V表示参数集, l r l_r lr表示学习率, g r a d grad grad表示全批次梯度。

使用梯度累积的mini-batch(即小批次)训练时,参数更新公式为:
V t = V t − 1 − l r ∗ ∑ i = 0 N g r a d i V_t=V_{t-1}-l_{r}*\sum_{i=0}^{N}grad_i Vt=Vt1lri=0Ngradi
g r a d i grad_i gradi表示第 i i i个批次反向传播时计算的梯度。

Transformers框架中开启梯度累积非常简单,仅需在TrainingArguments内指定累积步长即可:

training_args = TrainingArguments(
    per_device_train_batch_size=1, gradient_accumulation_steps=4, gradient_checkpointing=True, **default_args
)

trainer = Trainer(model=model, args=training_args, train_dataset=ds)
result = trainer.train()

参考文献

  1. Gradient Accumulation
  2. 聊聊梯度累加(Gradient Accumulation)
  3. 梯度累积算法

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

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

相关文章

变革管理中的几个不错的模型小结

其他的变革模型: 变革管理流程:

二、Java的变量

二、变量 2.1、关键字与保留字 关键字 定义:赋予特殊含义,用做专门用途的字符串 特点:关键字的所有字母都为小写 保留字(reserved word) 现有Java版本尚未使用,但以后版本可能会作为关键字使用。自己命名…

使用PYQT制作人才交流管理系统

利用使用PYQT制作一个人才交流管理系统,先使用QT designer.exe设计好人才交流管理系统的各个UI界面,然后利用pyuic把生成的ui界面编译为py文件,在主函数文件内创建一个类继承ui.py界面的类,即可完成数据库逻辑与 GUI 代码分离&…

小米不再忍耐,裁员三分之一强势反击印度,印度制造或因此梦破

就在小米公司表态继续投资印度之后不久,印度媒体报道指小米印度公司的员工数量从1500人减少到1000人左右,这显示出小米开始强势反击印度,业界人士指出此举的影响远不止于此,结果很可能是导致印度制造的梦想破灭。 1.小米为印度手机…

软件工程——第9章面向对象方法学引论知识点整理

本专栏是博主个人笔记,主要目的是利用碎片化的时间来记忆软工知识点,特此声明! 文章目录 1.当前最好的软件开发技术是? 2.面向对象的原则是什么? 3.人们把客观世界中的实体抽象为什么? 4.软件系统本质上…

主诉病程时长提取

编写Python函数 import re def structured_pro(original_text,keyword,out_unitNone):pattern_split_str[。,]pattern_splitre.compile(pattern_split_str,re.I|re.M)original_listpattern_split.split(original_text)pattern_keywordre.compile(keyword,re.I|re.M…

目前最好的MicrosoftProject替代方案

Microsoft Project是一个功能强大的项目管理工具。然而它可能是昂贵的,并且可能不适合所有的项目管理需求。幸运的是,有几个Microsoft Project的替代方案提供了类似的特性和功能。在本文中我们将探索目前可用的一些最好的Microsoft Project替代方案。 1、…

12.4 ARM异常处理

目录 ARM异常处理(一) 异常 概念 异常处理机制 ARM异常源 概念 ARM异常源 ARM异常模式 ARM异常处理(二) ARM异常响应 异常向量表 异常返回 IRQ异常举例​编辑 ARM异常处理(三 ) 异常优先级 …

自我介绍这样写?

已经帮小伙伴改了 500 多份简历了,也发现了一些大家写简历时的共性问题。其中让我印象比较深刻的一个点就是 自我介绍 ,基本上所有同学的自我介绍都是这么写的: 读这篇文章的朋友们,你是不是也是这么写自我介绍的呢? 这…

MySQL索引优化整合案例实现

目录 1 JOIN优化1.1 JOIN算法原理1.2 in和exists函数 2 order by优化2.1 索引排序2.2 额外排序2.3 排序优化 3 索引单表优化案例3.1. 建表3.2. 单表索引分析3.1.1 需求3.1.2 优化 4 索引多表优化案例 1 JOIN优化 1.1 JOIN算法原理 1) JOIN回顾 JOIN 是 MySQL 用来进行联表操作…

在 Jetpack Compose 中创建 BottomAppBar

Jetpack Compose 是 Android 的现代 UI 工具包,它使得构建美观且功能强大的应用变得更加简单。在本文中,我们将探讨如何使用 Jetpack Compose 创建一个 BottomAppBar。 开始之前 确保你的开发环境已经设置好了 Jetpack Compose。你需要使用 Android Stu…

矩阵Matrices

目录 矩阵的变换 向量和矩阵 矩阵的变换 房子图形的矩阵变换(wiggle动态变换) uicontrol的‘style’类型: X house dot2dot(X) theta1 wiggle(X) function dot2dot(X) % DOT2DOT Connect the points from a 2-by-n matrix. X(:,end1) X…

5 类数据,洞察游戏的秘密

数据犹如一扇扇窗户,透过它,我们可以洞察到游戏世界内部的诸多秘密。这些秘密,就像是隐藏在房间深处的宝藏,只有真正理解并善用它们,我们才能创造出更吸引人的游戏,形成更成功的商业模式。 一个关键的问题是…

【Linux】—— 浅谈进程优先级

本期,我们将来聊聊的是关于进程优先级的相关知识!!! 目录 序言 (一)基本概念 (二)查看系统进程 1、PRI and NI 2、PRI vs NI (三)设置优先级 序言 首先…

关于antdesign-vue的layout组件样式失效问题(#components-layout-demo-custom-trigger)

1.错误描述 使用antdesign vue 中的layout作为主要布局,https://www.antdv.com/components/layout-cn 正常引入后,跟期望的样子不一样 期望中的样子 实际的样子 logo没有了,而且此时也无法更改样式。 此时的样式是这样的 无论怎么修改都…

Grafana 使用Rest API 作为数据源的实践

本文使用最新版本的Grafana 10 进行操作。 如果要使用Rest API 作为grafana 的数据源,可以选择安装一个Infinity的数据源插件。 如果创建数据源时,搜不到infinity,点击find more 查找安装该数据源插件 1. 安装 Infinity 数据源插件&#xf…

IP 协议的相关特性

目录 IP协议有三大特点:无连接、无状态、不可靠。 四位版本号 四位头部长度 八位服务类型: 十六位总长度 16 位标识, 3 位标志, 13 位片偏移 八位生存时间 八位协议 十六位首部校验和 关于IP v4地址不够的问题 ip地址动态分配: ip地址转换(NAT) 数据传输…

一个空的Object在内存中占用几个字节

文章目录 一、对象在内存中的布局1. 对象头1.1. 哈希码(Hash Code):1.2. 对象所属的年代(Generation):1.3. 对象锁(Object Lock):1.4. 锁状态标志(Lock State…

POE级联蓝牙定位系统方案_蓝牙信标,蓝牙网关,级联蓝牙网关

近年来,随着新能源行业的快速发展,在化工厂,核电厂以及电力电厂等企业,对人员定位,人员导航,资产定位,生命体征监测的需求越来越大。传统的蓝牙室内定位方案中蓝牙信标为锂亚电池供电,需定期更换电池且有安全隐患,为更好的服务有蓝牙定位导航,被动人员定位,生命体征…

vue创建项目报错npm install --loglevel error --legacy-peer-deps

vue创建项目报错npm install --loglevel error --legacy-peer-deps 如图所示: 话不多说,直接上解决方法: 1、找到这两个文件(每个人的位置不一样,像我是安装在D盘) 2、分别点进去,右键—属性…