自己怎样做网站平台,沈阳市建设工程质量检测中心网站,苏州网站建设布局,如何建设一免费的网站1.单节点训练 单节点训练也会转换为等价的并行训练#xff0c;如在GPU内同一wrap内的32个Thread执行同一指令#xff0c;但处理不同的数据。 训练程序往往实现了一个多层神经网络的执行过程。该神经网络的执行由一个计算图#xff08;Computational Graph#xff09;表示。…1.单节点训练 单节点训练也会转换为等价的并行训练如在GPU内同一wrap内的32个Thread执行同一指令但处理不同的数据。 训练程序往往实现了一个多层神经网络的执行过程。该神经网络的执行由一个计算图Computational Graph表示。这个图有多个相互连接的算子Operator每个算子会拥有计算参数。每个算子往往会实现一个神经网络层Neural Network Layer而参数则代表了这个层在训练中所更新的的权重Weights。 为了更新参数计算图的执行分为前向计算和反向计算两个阶段。前向计算的第一步会将数据读入第一个算子该算子会根据当前的参数计算出给下一个算子的数据。反向计算中每个算子依次计算出梯度并利用梯度更新本地的参数。反向计算的结束也标志本次数据小批次的结束系统随之读取下一个数据小批次继续更新模型。
2.分布式训练
2.1 数据并行DP
解决单卡算力不足
数据进行分区共享训练程序反向计算时不同设备根据各自的训练样本生成局部梯度Gi之后不同设备对应的局部梯度进行聚合得到平均梯度用平均梯度修正模型参数完成小批次的训练。这个聚合的过程往往由集合通信的AllReduce操作完成。
2.2 模型并行MP
解决单卡内存不足
2.2.1 算子内并行 、张量并行TP
场景假设某个算子具有个参数而系统拥有个设备那么可以将个参数平均分配给个设备每个设备分配/个参数从而让每个设备负责更少的计算量能够在内存容量的限制下完成前向计算和反向计算。也被称为算子内并行Intra-operator Parallelism。
将算子1的参数平均分区设备1和设备2各负责其中部分算子1的参数。
2.2.2 算子间并行
场景模型的总内存需求超过了单设备的内存容量。在这种场景下假设总共有个算子和个设备可以将算子平摊给这个设备让每个设备仅需负责/个算子的前向和反向计算降低设备的内存开销。这种并行方式是模型并行的另一种应用被称为算子间并行Inter-operator Parallelism
将算子进行分开设备1和设备2各负责一个算子。
2.3 流水线并行PP
2.3.1 并行气泡
大型模型并行采用算子内并行算子间并行解决单设备内存不足这种情况下计算中的下游设备Downstream Device需要长期持续处于空闲状态等待上游设备Upstream Device的计算完成才可以开始计算这极大降低了设备的平均使用率。这种现象称为模型并行气泡。因此采用流水线并行减少气泡可以类比CPU设计中的指令流水线提升设备使用率。
2.3.2 微批次 将训练数据中的每一个小批次划分为多个微批次Micro-Batch。假设一个小批次有个训练样本将其划分为个微批次那么一个微批次就有/个数据样本。每个微批次依次进入训练系统完成前向计算和反向计算计算出梯度。每个微批次对应的梯度将会缓存等到全部微批次完成缓存的梯度会被加和算出平均梯度等同于整个小批次的梯度完成模型参数的更新。
2.3.3流水线并行优化-1F1B模式
1F1BOne Forward pass followed by One Backward pass模式一种前向计算和反向计算交叉进行的方式。
如上图为字节万卡集群论文中的1F1B模式 在流水线并行中MegaScale使用交错1F1B调度方法以实现通信的重叠。在热身阶段前向传递仅依赖于其先前的接收。我们解耦了通常一起实现的发送和接收通过打破这种依赖关系使得发送操作能够与计算重叠。在张量/序列并行中介绍了融合通信和计算等优化策略以及将GEMM内核分成小块并与通信进行流水线执行。
2.3.4 流水线并行性能
在使用流水线训练系统中时常需要调试微批次的大小从而达到最优的系统性能。当设备完成前向计算后必须等到全部反向计算开始在此期间设备会处于空闲状态。在 图11.3.1中可以看到设备1在完成两个前向计算任务后要等很长时间才能开始两个反向计算任务。这其中的等待时间即被称为流水线气泡Pipeline Bubble。为了减少设备的等待时间一种常见的做法是尽可能地增加微批次的数量从而让反向计算尽可能早开始。然而使用非常小的微批次可能会造成微批次中的训练样本不足从而无法充分的利用起来硬件加速器中的海量计算核心。因此最优的微批次数量由多种因素如流水线深度、微批次大小和加速器计算核心数量等共同决定。
2.4 混合并行
2.4.1 数据并行算子间并行 2.4.2 3D并行DPPPTP 一般业界将数据并行模型张量并行流水线并行混合成为3D并行。由于每个维度至少需要 2 个 GPU因此在这里你至少需要 8 个 GPU 才能实现完整的 3D 并行。 如英伟达开源的Megatron-LM与字节的MegaScale都是3D并行
参考 https://openmlsys.github.io/chapter_distributed_training/index.html https://juejin.cn/post/7277799192966578176