视频教程在这:
3.2大规模异构集群,混合并行分布式系统,解释算力不均衡问题HETHUB_哔哩哔哩_bilibili
一、大规模异构集群出现的原因:
同一种GPU数量有限难以构建大规模集群:训练大规模模型依赖于大量的计算资源。例如,训练GPT-4模型(1.8万亿个参数)需要25000个A100 GPU。用一种GPU加速器构建大规模集群是一个挑战。使用多种类型的GPU加速器构建大规模集群是解决同构GPU加速器不足问题的有效方法。
然而,现有的大规模模型分布式训练系统只支持同构GPU加速器,不支持异构GPU加速器。
因此出现了大规模模型的混合并行分布式训练系统HETHUB,该系统支持异构集群,包括AMD、Nvidia GPU和其他类型的GPU加速器。它引入了一个分布式统一通信器来实现异构GPU加速器之间的通信,一个分布式性能预测器和一个自动并行规划器来使用异构GPU加速器高效地开发和训练模型。与具有同构GPU加速器的分布式训练系统相比,我们的系统可以支持异构GPU加速器的六种组合。我们在具有768个GPU加速器(128个AMD和640个GPU加速器a)的异构集群上训练Llama-140B模型。实验结果表明,我们的系统在异构集群中的最佳性能达到了理论上限性能的97.49%。
二、异构大规模集群的挑战
1) 通信挑战。不同类型的GPU加速器不能直接相互通信,因为不同类型的CPU加速器有不同的通信库,如Nvidia GPU使用NCCl,GPU加速器C使用HCCL。
2) 算力不均衡的分布式训练挑战。为异构集群中的大规模模型设计和实现最优的分布式训练策略非常困难。不同类型GPU加速器的计算和存储差异以及大规模模型的计算通信强耦合特性导致分布式策略的数量随着异构GPU加速器、层或模型运算符的数量呈指数级增长。
3) 准确性挑战。不同类型GPU加速器上算子的精度差异将使模型的精度难以达到齐次聚类的精度。
因此大规模模型的混合并行分布式训练系统HETHUB,做了如下工作。
1、异构通信:我们构建了一个分布式统一通信器来支持不同GPU加速器之间的通信。该通信器包括两个通信库,一个是基于CPU的以太网或IPoIB通信器;另一个是具有IB或RoCE的基于GPU的通信器,它定义了一个统一的通信接口以适应多种类型的GPU加速器。
2、分布式性能预测器,以帮助评估异构集群上模型的分布式训练策略。我们在一个小集群上进行自动分析,并构建性能评估模型。然后,该性能评估模型可用于进行性能预测,以指导大规模集群上分布式训练策略的决策。
3、自动并行规划器,它可以为给定的模型和异构集群拓扑自动搜索最优的分布式并行策略。它可以提高开发和模型计算效率。
异构通信请参考前面的博客和视频
GPU与国产芯片异构通信方案,异构万卡集群 初步调研-CSDN博客
3.1异构万卡集群,GPU与国产计算卡芯片异构通信_哔哩哔哩_bilibili
今天我们重点讲一下,算力不均衡的分布式训练挑战。
三、算力不均衡非均匀拆分策略
针对异构算力,不均衡算力,模型拆分的基本思路
3.1 基于流水线并行的非均匀拆分策略
在大语言模型的训练中,采用基于流水线并行的异构训练方案,通过非均匀拆分transformer层,可有效应对算力不均衡的难题。可以根据各芯片的实际算力,让算力较高的芯片处理更多的层,算力较低的芯片处理更少的层,从模型结构角度,每层的计算量是一致的,所以按算力比作为层拆分比例可以达到最好的效果。例如,假设芯片A的算力是芯片B的4倍,则可以让芯片A计算4层transformer模块,让芯片B计算1层transformer模块,以此达到资源的最优配置,理论上可实现最高的吞吐性能。
3.2 基于数据并行的异构训练
基于数据并行的异构训练,同样可通过调整不同芯片上的数据批处理规模,来应对算力差异。例如,在芯片A算力为芯片B的4倍情形下,可以让芯片A每轮迭代计算4个batch,而芯片B仅计算1个batch,以此平衡各芯片的工作负载,达到理论上的最优吞吐率。
添加图片注释,不超过 140 字(可选)
3.3 异构节点的流水线并行
考虑到异构gpu加速器之间的通信性能低于同构gpu加速器之间的通信性能,我们在
1、同构节点上采用数据并行
2、节点内张量并行
3、跨异构节点的流水线并行。
四、异构算力模型自动拆分过程
根据模型拆分的基本思路,构建检索空间,检索出模型最终拆分方式。
添加图片注释,不超过 140 字(可选)
4.1 构建搜索空间
构建了一个三级搜索树来表示模型分布式训练策略的搜索空间。其中根节点表示整个模型,其他节点表示拆分后的子模型。此外,叶节点表示在单个GPU加速器中执行的最终模型。
第一层:使用非均匀流水线并行拆分策略,根据变压器层的总数对模型进行拆分。拆分的目的是确保不同类型GPU加速器的计算负载平衡。
第二层:将子模型拆分为使用统一数据并行策略的同构节点。
第三层:使用统一张量并行策略将模型拆。
经过三层分割后,完整的模型可以映射到异构集群进行训练。
4.2 搜索分布式训练策略。
为了充分利用异构GPU加速器资源,我们给出了两条以负载平衡和最小端到端训练时间为目标的规则,以指导在构建的搜索树中进行分布式并行策略搜索。
1) 负载平衡。根据异构GPU加速器的计算资源和模型层的计算要求,我们不规则地划分模型层,以尽可能地平衡不同GPU加速器之间的计算任务。也就是说,具有高计算资源的GPU加速器执行更多层。
2) 最短的端到端训练时间。我们根据不同类型GPU加速器上阶段的执行时间和阶段之间的通信时间,将流水线并行中的阶段安排到不同类型的GPU加速器上,以优化端到端的训练时间。
参考资料:
GPU与国产芯片异构通信方案,异构万卡集群 初步调研-CSDN博客
HETHUB: A distributed training system with heterogeneous cluster for large-scale modelsA Heterogeneous distributed hybrid training system for large-scale models (arxiv.org)