来自谷歌、亚马逊网络服务、加州大学伯克利分校、上海交通大学、杜克大学和卡耐基梅隆大学的研究人员在OSDI 2022上发表了一篇题为 "Alpa:自动化分布式深度学习的操作间和操作内并行性 "的论文,发表在OSDI 2022上。该论文介绍了一种新的方法,只用一行代码就能将复杂的模型并行化过程自动化。那么Alpa是如何工作的呢?
模型并行化
数据并行是一种技术,模型的权重在不同的加速器上重复,同时只对训练数据进行分割和分配。在数据并行中,数据集被分成 "N "个部分,"N "是GPU的数量。这些部分被分配到并行的计算机器上,之后为模型的每个副本计算梯度,然后由所有模型进行交换。因此,这些梯度的值被平均化了。
在模型并行中,一个单一的模型被划分到不同的设备上。在这里,每个模型被分割成'N'个部分,代表着GPU的数量。每个模型被放置在一个单独的GPU上。然后,按顺序计算GPU的批次。
虽然模型并行化允许训练大型模型,但它们更加复杂。例如,它们需要为目标神经网络和计算集群专门设计。此外,该技术往往需要系统专家付出巨大努力,为特定的模型确定一个最佳的并行计划。然而,这对于那些主要关注运行模型而性能是次要的研究人员来说是 "太繁重了"。这就为研究人员提供了一个机会,使模型并行化自动化,从而可以很容易地应用于大型模型。
阿尔帕
研究人员提出了一种方法,用一行代码来自动实现模型的并行化。Alpa可以 "将任何JAX神经网络转化为具有最佳并行化策略的分布式版本,可以在用户提供的设备集群上执行。"
这一切都始于将现有的ML并行化策略分为两类,即运算器间并行和运算器内并行。运算器间并行将不同的运算器分配到不同的设备上,这些设备通过流水线执行计划进行加速。运算器内并行包括数据并行、运算器并行和专家并行。在这里,单个运算符被分割并在多个设备上执行。集体通信也被用于跨设备同步结果。
"论文 解释说:"通过这种分类,这两种并行发生在DL计算的不同粒度上,并有不同的通信要求,这恰好与今天典型的计算集群的结构相匹配。该团队利用这些特性设计了分层算法和编译通道来自动生成执行计划。
"该团队说:"这两种方法之间的差异自然地映射到典型计算集群的异质性。操作员之间的并行性在不同加速器上的操作员之间传输激活,降低了通信带宽要求。然而,鉴于它对管道数据的依赖性,它受到了设备利用率不足的影响。虽然运算器内并行不依赖数据,但它需要更多的设备间通信。例如,在一个给定的GPU集群中,一个节点内的GPU具有较高的通信带宽,可以满足操作器内部的并行性。然而,鉴于不同节点上的GPU的连接带宽要低得多,操作者之间的并行性是首选。
该团队利用这种异构映射来设计Alpa。它成为一个编译器,当从用户那里得到一个计算图和一个设备集群时,会进行各种处理。在第一步,操作者之间的传递将计算图切成子图,将设备集群切成子网格。接下来,它确定了将一个子图分配给一个子网格的有效方法。接下来,操作者内部通道跟随它,为操作者之间通道的每个管道阶段确定最佳的操作者内部并行计划。最后,运行时协调通道生成一个静态计划,以排序计算和通信,并在实际设备集群上执行分布式计算图。
Alpa在AWS p3.16xlarge实例上进行了测试,该实例有8个16GB V100 GPU,每个GPU总数为64个。它还进一步检验了在增加三个模型的GPU数量的同时,增长模型大小的弱扩展结果。例如,通过GPT,Alpa输出的并行化策略与现有最好的框架Megatron-ML计算的策略相似,并且与它的性能相符。
The postAutomating model parallelism with just one line of codeappeared first onAnalytics India Magazine.