大模型分布式训练之DeepSpeed优化器并行(ZeRO)原理
创作时间:
作者:
@小白创作中心
大模型分布式训练之DeepSpeed优化器并行(ZeRO)原理
引用
CSDN
1.
https://blog.csdn.net/David_house/article/details/140721572
由于大模型参数量非常庞大,所以我们常常需要用到分布式训练来解决训练过程中计算资源不足的问题,现在也出现了很多大模型相关的分布式训练框架,但是使用的比较多的还是deepspeed的数据并行,那么deepspeed是怎么实现数据并行的呢
DeepSpeed是一个开源的深度学习优化库,它由微软开发并维护,旨在提高大规模模型训练的效率和可扩展性。通过创新的算法和技术,DeepSpeed能够降低训练超大规模模型的复杂性和资源需求,让深度学习训练变得更快、更高效。
DeepSpeed特点和优势:
- 高效的并行化策略:DeepSpeed支持多种并行化方法,包括数据并行、模型并行和流水线并行。这些方法可以灵活组合,以适应不同规模和复杂度的深度学习模型。通过并行化,DeepSpeed能够显著提高训练速度和可扩展性。
- 内存优化技术:为了降低内存占用和提高训练效率,DeepSpeed引入了ZeRO(Zero Redundancy Optimizer)技术。ZeRO通过将优化器的状态、梯度和参数在分布式环境中进行分割,从而减少了冗余的内存占用。这使得在有限的内存资源下训练更大的模型成为可能。
- 混合精度训练支持:DeepSpeed支持混合精度训练,即同时使用单精度和半精度浮点数进行训练。这种方法可以在保持模型性能的同时,减少内存占用和计算时间,降低能耗。
- 易用性和兼容性:DeepSpeed与PyTorch等主流深度学习框架紧密集成,提供了易用的API和丰富的文档支持。这使得用户能够轻松地将DeepSpeed集成到他们的项目中,并充分利用其提供的优化功能。此外,DeepSpeed还提供了高度优化的数据加载和网络通信工具,以减少通信量并提高多GPU和多节点环境下的训练效率。
DeepSpeed实现数据并行主要是通过ZeRO(Zero Redundancy Optimizer)技术和混合进度训练,混合进度训练这里不再过多介绍,ZeRO原理到底是什么呢?小编花了一个晚上终于搞懂了!
优化器数据并行有三种方式,即ZeRO-1/23
ZeRO-1原理
只对optimizer状态进行切分
具体步骤:
- 把batch分成N份,每张卡(GPU)一份
- 执行一步前向和反向传播计算后,每个GPU各得一份梯度
- 对梯度执行all-reduce操作,得到完整梯度,这里all-reduce操作是将每个节点上的部分梯度累加起来,并将结果广播到所有节点,这样所有节点都拥有一份完整的梯度
- 每个 GPU 得到完整的梯度 G后,对各自的权重进行更新,权重的更新由优化器状态和梯度共同决定
- 每个GPU维护各自优化器里面更新的权重,最后执行all-gather,使得每个GPU都有更新后的权重,all-gather 操作将更新后的权重同步到所有节点
ZeRO-2原理
在optimizer状态划分的基础上,再对梯度也进行划分,每个GPU各自维护一块自己的梯度
具体步骤:
- 把batch分成N份,每张卡(GPU)一份
- 执行一步前向和反向传播计算后,每个GPU各得一份梯度
- 对梯度执行all-reduce,保证每个GPU所维护的梯度是聚合梯度(即各节点汇总之后的梯度),聚合之后对梯度进行切分
具体是怎么切分梯度的呢?举个栗子——
eg:① 比如GPU1只负责维护梯度G1,其他GPU只需要把对应位置梯度发给GPU1即可
② 汇总完毕后,其他不是GPU1维护的梯度会从GPU1中移除,即更新后马上释放 - 每个GPU用所维护的优化器和梯度更新相应的权重,即每块GPU维护独立的权重
- 最后对权重执行all-gather,将其他GPU的权重同步一份完整的到自己节点上来
ZeRO-3原理
ZeRO-3在ZeRO-1和ZeRO-2的基础上,对权重进行各自的维护,即不再维护一整份权重了
具体步骤:
- 把batch分成N份,每张卡(GPU)一份
- 这个时候模型的权重参数(张量)也被分成N份
- 在进行前向计算之前,对权重执行all-gather操作取回分布在各GPU上的权重,组成完整的参数进行前向计算,计算完成后,把不属于自身维护的权重抛弃
- 在进行反向传播计算之前,对权重执行all-gather操作取回分布在各GPU上的权重,组成完整的参数进行反向传播计算,计算完成后,把不属于自身维护的权重抛弃
- backward之后得到各自的梯度,对梯度执行all-reduce,得到聚合的梯度之后更新其自身维护的权重,然后立刻把不是自己维护的梯度抛弃
- 由于每个GPU只保存其自身维护的权重参数,因为无需对权重进行all-reduce
注:
- ZeRO-3其实是增加了通信开销,来减少每张GPU的显存占用,以通信换显存
- 可能有人会问,ZeRO-3对权重参数进行了切分,应该算张量并行吧???其实不是,因为ZeRO-3在前向和反向的时候,还是用的完整的权重来计算的(张量并行在前向和反向的时候也只用一部分权重)
ZeRO-Offload
把占用显存多的部分卸载到cpu上,计算和激活值部分放到gpu上,这样比起跨机,更能节省内存,也能减少跨机跨通信域的通信压力
原理:
- 高计算:前向传播和反向传播计算量高,相关的权重参数计算和激活值计算仍然在gpu
- 低计算:权重更新部分计算量低,以通信为主,且需要的显存较大,放入到cpu中
deepspeed的使用
官方教程
感觉官网说的挺明白的,这里不再过多赘述~~~
有任何说的不对的地方,欢迎大家指正!!!
参考
热门推荐
阴阳八字命理:如何解读个人命运
南阳台适合种什么植物?室内南向阳台适合栽的花
家里养乌龟,原来有这么多好处,那么多人竟然还不知道?
去丽江旅行的省钱攻略:住宿、交通、美食全方位省钱指南
女娲星座第三批卫星发射成功,在轨雷达卫星数量创我国商业新高
内分泌失调是怎么引起的
铜排安装要点 提升配电柜性能与安全性
孩子爱打人的原因及对策
汽车胎压监测系统:工作原理、分类与发展趋势
科学家研究了5万人后证实,啥都不用干也不用花钱,就能延长寿命
新手父母身陷母婴消费困局
接口文档责任人:如何确保API文档的准确性与一致性?
巴厘岛小纹身:讲故事的细节
口腔溃疡的形成3D动画:揭示疾病背后的原因和治疗方法
盘点NBA历史上最好的五位二当家,科比上榜,第一辅佐乔丹封神
沉香手串的保养知识,沉香最怕什么?
河南省应对人口老龄化:构建普惠型养老服务体系的实践与探索
在线质谱仪的组成部分及其作用
长期用电脑眼睛干涩疼怎么办
温泉景观设计的本土化:融入当地文化特色
征地补偿款发放指南:流程、影响因素及赔偿标准详解
超详细的项目复盘!附7种常用方法
如何选择好消化的外卖饭菜
河北工业大学专业设置及学校简介
APP插件开发,如何确保APP插件跨版本兼容
抖音知识科普无人问津?掌握爆款文案公式,助你逆风翻盘
马赫数的概念及其在航空航天领域的重要性与应用解析
速算扣除数详解:个税计算中的关键概念与应用
如何深入理解市场波动并制定合理投资策略?
明英宗朱祁镇二次登基:南宫复辟始末