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

Megatron系列——流水线并行

内容总结自:bilibili zomi 视频大模型流水线并行 

注:这里PipeDream 1F1B对应时PP,Interleaved 1F1B对应的是VPP

1、朴素流水线并行

备注:

(1)红色三个圈都为空泡时间,GPU没有做任何计算

(2)共有4张卡,大batch size下,F0为第1次前向,依次流水线执行。所有stage完成后,再执行第1次反向B0。

(3)所有stage反向传播完计算好梯度后,所有stage同时更新参数

GPU利用率非常低。

2、Gpipe 流水线并行

解决办法:

(1)将大的batch size拆分为多个小的micro batch size,如数据1计算完了后,直接进入下一个stage device2计算,无需等待数据8执行完。

空泡率:

(1)micro  batch_size越高,空泡率越低

(2)m个micro-batch前向结束时,内存达到峰值,不断增加m可能导致内存不够。解决办法为重计算,即部分层不存储中间结果,在计算梯度时再重新计算中间结果。

(3)MFU 模型利用率提高

3、1F1B PP(非交错式)

备注:

(1)在最后一个stage,即NPU4上可以看到,1次前向1次反向,交替进行,因此叫做1F1B。这个NPU上只保存了1份激活值,即前向中间结果,及时反向后释放。而NPU1最多有4份

4、1F1B interleaving VPP(交错式)

要持续降低bubble占比,有上图两种方式,第二种方式为将每张卡上搞多个stage。

(1)如NPU1负责第1层和第5层。按照原来的1F1B的方法,若有4张卡,分4个stage,则每张卡负责连续的2层,如NPU1负责1-2层,当数据1过来,需要在NPU1上经过2层计算后才到第二张卡。反而通过本方案,数据1过来后,只要经过1层计算,马上到第二张卡,第二张卡及以后的等待时间变短了。这时第一张卡可以做数据2的计算。

完整的图如下:

(1)这里横坐标为时间线,如第1时刻,只有NPU1在做数据1的计算,第4时刻NPU1在做数据4计算,NPU4在做数据1的计算。

(2)第5时刻,NPU4已经完成数据1的计算了,按照上一张图的说法,意味着数据1已经完成了第4层的计算,这时候可以回到第一张卡做数据1的第5层前向计算了。这时NPU2还在做数据4的第一层前向计算。其他的可以见图所示。

(3)第9时刻,数据1已经完成完整的8层前向计算,在NPU4上可以做反向传播,执行1F1B了。其他的类似。

空泡率:

5、其他的流水线并行 

6、分布式PP实现方案

是所有并行中最难的,分为以下两种实现方式:

7、PP 代码实现

(1)模型实例化构建

(2)每个NPU只构建对应offset的layers

  • 每个rank的层数为:总层数//pp数,若只有一层,如何分配?
  • embedding和output layer如何分配到第一个NPU和最后一个NPU的,代码在哪里?

(3)确定执行交错式或非交错式的前向反向函数

 

这里面num_microbatches_remaining为对应rank还有多少个micro batchs没有执行完。

(3)3个步骤,接收、前向计算、发送

(4)反向传播

 

NPU0和NPU1在不断通讯,NPU1完成B1反向传播时,会将结果发给NPU0,同时等待数据2前向计算的结果。 

 

http://www.xdnf.cn/news/5713.html

相关文章:

  • KUKA机器人安装包选项KUKA.PLC mxAutomation软件
  • 产品功能更新迭代后需要重做算法备案吗?
  • Linux系统管理与编程20:Apache
  • 关于mac配置hdc(鸿蒙)
  • Nginx部署前端项目深度解析
  • 使用 Syncthing 在两台电脑之间同步文件:简单教程
  • 用drawdb.app可视化创建mysql关系表
  • 开源 RPA 工具深度解析与官网指引
  • 学习黑客Windows 病毒与威胁防护
  • Clickhouse 迁移到 Doris 的最佳实践
  • PyTorch 中的 Autograd 实现细节解析和应用
  • TCPIP详解 卷1协议 九 广播和本地组播(IGMP 和 MLD)
  • 力扣算法ing(69 / 100)
  • MongoDB使用x.509证书认证
  • 单片机Day10
  • 【Mysql基础】二、函数和约束
  • 职坐标IT培训:互联网行业核心技能精讲
  • Model.eval() 与 torch.no_grad() PyTorch 中的区别与应用
  • Scala和Spark的介绍
  • window server 2012安装sql server2008 r2
  • 每日c/c++题 备战蓝桥杯(洛谷P1387 最大正方形)
  • 工业协议跨界实录:零基础玩转PROFINET转EtherCAT主站智能网关
  • 网张实验操作-防火墙+NAT
  • 软考教材重点内容 信息安全工程师 第24章 工控安全需求分析与安全保护工程
  • 如何禁止chrome自动更新
  • 2025年Energy SCI1区TOP,改进雪消融优化算法ISAO+电池健康状态估计,深度解析+性能实测
  • 小白入手搭建本地部署的Dify平台(基于Windows)
  • C++ 跨平台开发挑战与深度解决方案:从架构设计到实战优化
  • 韩国直邮新纪元:Coupang多语言支持覆盖38国市场
  • Spring Data Elasticsearch 中 ElasticsearchOperations 构建查询条件的详解