众包训练:另类的分布式异构深度模型训练方法

众包训练:另类的分布式异构深度模型训练方法

  • 发布时间:2022-01-17 07:00
  • 访问量:

【概要描述】众包是互联网时代发展出来的一种任务工作模式。众包计算在科学研究中已经得到了广泛应用。本文介绍了将众包用于深度模型训练,特别是大模型训练的一些研究和实践,总结了众包训练面临的限制和不同的实现策略,并讨论了众包学习的应用。

众包训练:另类的分布式异构深度模型训练方法

【概要描述】众包是互联网时代发展出来的一种任务工作模式。众包计算在科学研究中已经得到了广泛应用。本文介绍了将众包用于深度模型训练,特别是大模型训练的一些研究和实践,总结了众包训练面临的限制和不同的实现策略,并讨论了众包学习的应用。

  • 分类:研究院
  • 作者:
  • 来源:
  • 发布时间:2022-01-17 07:00
  • 访问量:
详情

摘要

 

众包技术被广泛应用于互联网和计算机产业。事实上,深度学习技术的发展也得益于众包技术的应用。许多用于机器视觉训练的数据集都是以众包的方式来完成数据标记的。大的互联网厂商都提供了各自的数据众包平台。

 

近年来以transformer等为代表的深度模型在性能提升的同时,其自身规模也变得越来越大。我们常常需要大规模GPU集群才能进行模型训练,而完成一次训练需要的成本也变得越来越高昂。很自然地,人们会想到可否能充分利用互联网上闲置的海量个体显卡的计算能力来众包完成大模型的训练。

 

 

引言

 

众包是互联网时代发展出来的一种任务工作模式。它是一种多人参与的在线活动,发起者利用网络互联将传统由特定机构完成的任务以公开征集的方式分布式地外包给非特定个体来完成。众包技术被广泛应用于互联网和计算机产业。事实上,深度学习技术的发展也得益于众包技术的应用。许多用于机器视觉训练的数据集都是以众包的方式来完成数据标记的。大的互联网厂商都提供了各自的数据众包平台。

 

近年来以transformer等为代表的深度模型在性能提升的同时,其自身规模也变得越来越大。我们常常需要大规模GPU集群才能进行模型训练,而完成一次训练需要的成本也变得越来越高昂。很自然地,人们会想到可否能充分利用互联网上闲置的海量个体显卡的计算能力来众包完成大模型的训练。

 

众包计算与众包训练

 

事实上众包计算并不是一个新的概念。科学社区很早就利用互联网中广泛分布的电脑、手机和其它个人设备的闲置算力来共同解决科学计算的问题。一个著名的项目是folding@home,通过众包计算进行蛋白质分析等生物计算任务,包括对Covid-19病毒结构分析。通过整合网络上各种计算资源,其峰值算力甚至能超过2.5 ExaFLOPS,比Top10超算的总算力还高[1]。

 

不同于一般的数值计算任务,深度学习中大模型训练对计算资源的稳定性和数据连通性有很高的要求,训练过程中涉及大量中间参数的同步更新。众包计算环境中,不同设备可用时间不同,计算、存储规模各异,甚至各设备的数据带宽也不能保证。因此很难简单地复用以往科学计算中的经验来实现众包式大模型训练任务。

 

众包训练和当前流行的联邦学习尽管形式类似,但二者出发点不同[3]。众包训练是为了分享参与训练节点的计算与存储资源,而联邦学习是为了分享用于提升模型性能的优化信息,参与的节点不互通且各自的数据和模型是加密的。相应的,二者在实现策略上有着很大区别,本文不再赘述。

 

本质上,众包训练可以看作是一种分布式异构并行训练方法。训练任务以数据并行、模型的tensor和流水并行等方式[2],将不同部分分配到不同设备,计算结果同步后再更新参数。然而,众包训练中设备和连接性能差异巨大,很难按照常规计算集群的组织方式实现深度模型的训练任务。因此,众包训练需要考虑异构不稳定连接条件下的数据与任务交互,通过合理分布数据和学习策略实现异构的混合训练。

 

众包训练的任务分发

 

众包情况下各设备计算速度和连通情况均不一致,能处理的数据量也各不相同。我们需要采取一定方法来平衡任务负载。

 

DeDLOC[3]采用了超大batch更新策略。一个batch被切分为多个microbatch。不同的计算设备会处理不同的microbatch。其处理的数量根据其计算速度而不同。计算中各节点设备可能存在如下情况:

 

图1 众包训练节点连接的动态变化(Fig. 1 [3])

 

 

可以看到,众包训练的计算中不同设备可以处理不同数量的microbatch。即使出现部分节点中断连接计算结果丢失,仅仅只会对当前次参数更新产生影响。当batch足够大时,一个节点结果丢失的影响可以忽略。当一个batch中所有microbatch处理完成,众包设备间再同步梯度并执行更新。一次更新与常规集中设备的超大batch训练是等效的。

 

 这种大batch分布式计算的策略有很好的容错性。众包参与者数量的变化主要影响的是当前批次参数更新的计算速度,对计算精度影响不大。

 

Learn@home项目[4]采取了另外一种策略。它提出了Distributed Mixture of Expert(DMoE)方法。该项目的基础模块是DMoE层。一个DMoE层包含多个experts,这些experts分布于一组众包参加者(workers)上。每个worker都有一个gating函数来选择expert。众包网络包括多个DMoE模块。

 

图2 基于DMoE的众包及训练流程(Fig. 2 [4])

 

在DMoE架构中,每一个input都对应多个experts来实现计算。这样即使有部分节点计算或连接失败,DMoE可排除他们来计算均值。如果某个节点计算速度快于其它,则该节点立即开始处理下一batch而暂不更新梯度。

 

此外,Learn@home通过保存gradient checkpointing以实现逐层训练。单个节点只要能够处理单层训练参数就可以参与训练计算。因此整个众包项目可以实现对超大模型的训练。

 

 

数据聚合与参数更新

 

在常规的多节点训练时,我们会采用参数服务器、All-Reduce等不同的数据同步方式。这些方式有各自的优缺点。尽管ZeRO等优化策略可以降低对通信带宽的要求,Ring All-Reduce策略仍然更适合低延迟同构节点网络。而参数服务器则要求服务器与节点间有足够的数据带宽。

 

很显然,众包训练不能保证稳定的节点和通信连接,很难用一种固定的方式实现数据聚合。因此众包训练需要采用动态调整的方式来平衡连接情况的变化。与前述基于DMoE的实现不同,DeDLOC中的异构众包网络采用混合方式:部分节点与参数服务器中心连接,部分节点互联。不同的训练时刻,连接模式可以根据网络状态动态调整。网络连接速度最高的那部分节点聚合了大部分计算结果。

 

图3 众包训练的混合通信(Fig.2 [3])

 

为进一步提高众包网络训练效率,DeDLOC采用了延迟参数更新方法(DPU),梯度计算和数据通信并发进行。这样训练迭代的频率仅取决于梯度计算或数据聚合中耗时较长的那一部分,而非二者的叠加。

 

数据的传递包括设备间的聚合与回传,而整体的参数更新时间取决于网络各参与设备聚合和回传的平均时间。因此我们可以据此定义优化目标来调整每个设备上处理的样本数量。

 

当图3中failed 节点的情况较多时,可以采用Group All-Reduce的策略,通过合理分配所有参加者为多个groups,控制整体的完成一次更新所需的聚合次数。

 

系统实施

 

众包训练的实施要求整个系统能够根据参与者接入情况动态调整架构。现有的策略多采用了类似BitTorrent的蚁群结构,通过构建分布式哈希表实现每个参与者的标定。参与者利用这样一个去中心化的键值表来获得训练进展的状态及信息。如果一个参与者错过了之前的训练步骤,它也可以根据哈希表来获得其它参与者最新状态并得到最新的参数。

 

尽管整体上众包训练可以采用去中心化的架构,但为了保证训练过程哈希表的完整性,DeDLOC征集了几台联网稳定的节点作为其它参与设备接入的backbone。由于这些功能无需参与训练,这几个节点可以是无GPU的电脑。这样也可以降低整体的训练成本。

 

实践

 

众包训练还是一个相对小众的研究。各个项目主要以仿真实验为主。DeDLOC项目组织了一次实际的众包训练实验。实验的目标是训练一个孟加拉语的语言模型。具体的模型是ALBERT,数据集是维基和OSCAR的孟加拉语部分。ALBERT是BERT模型的变形,参数量相对少,从而简化了实验。考虑到带宽限制,数据集被分割为多个小块。每个参与节点只要下载一部分就可以开始训练计算,从而并发地执行下载和计算任务。

 

整个实验持续了10天,共有40位参与者,91个设备参加。每个用户平均每次连线时间为4小时。所有参与设备累积运行时间是234设备•天。模型在众包训练8天后收敛。作为对比,这个收敛速度是用8个V100训练的1.8倍。

 

图4 众包训练与常规8卡集群训练的收敛速度对比(Fig.7 [3])

 

同预训练的其它模型对比,众包训练好的ALBERT模型在下游任务命名实体识别(NER)和新闻分类(NGC)上取得了和更大参数的XLM-R模型近似的性能。有兴趣的读者可进一步查看实验的细节[5]。

 

结论与思考

 

由于硬件和网络限制,我们很难用常规的超算集群的策略实现众包形式的大模型训练。但是通过合理的调度与参数更新管理,我们可以通过众包来训练深度模型,并得到不亚于集群超算的训练结果。得益于合理的数据同步方式,即使算力低下的老旧设备也可以参与计算。因此众包训练可以充分利用网络中闲置的计算资源。当然在真正用于实践前,作为一种去中心化的任务方式,众包训练还需要解决信息安全、资源管理、众包策略等方面的一系列问题。

 

众包训练可以作为主流的用于大模型训练的计算集群的一种补充。事实上,通过合理的调配,我们甚至可以将联网的多个超算组成更大尺度的众包训练网络,从而实现远超当前最大超算能力的超大深度模型的训练。众包训练的探索也可以为时下流行的联邦学习等深度学习应用领域提供有益的补充。

 

参考文献

[1] Folding@home exascale supercomputer finds potential targets for covid-19 cure, https://www.networkworld.com/article/3587388/foldinghome-exascale-supercomputer-finds-potential-targets-for-covid-19-cure.html/

[2] D. Narayanan, et.al., Memory-Efficient Pipeline-Parallel DNN Training, PMLR 139, 2021.

[3] M.Diskin, et.al., Distributed Deep Learning In Open Collaborations,NeurIPS2021.

[4]M. Ryabinin, A. Gusev, Towards Crowdsourced Training of Large Neural Networks using Decentralized Mixture-of-Experts, NeurIPS2020.

[5] Deep Learning over the Internet: Training Language Models Collaboratively, https://huggingface.co/blog/collaborative-training

 

 

近期文章

由简入繁探究机器视觉中的数据增强(上)

由简入繁探究机器视觉中的数据增强(上)

本文探讨图像数据增强的两大主流方法各自的优劣势,针对目前图像数据增强面临的挑战及未来思考可研究的技术方向。
2022-05-09
Kubric:高效地合成视觉数据集

Kubric:高效地合成视觉数据集

随着机器学习的发展,数据集的重要性越来越凸显。然而收集大量带标注的图像或者视频数据成本高昂。而使用合成的数据集则具有成本更低,且由于收集方便,标注信息准确,高度可控,使得其成为一种训练大规模深度学习模型的有效手段。
2022-05-02

联系我们

这是描述信息

招贤纳士

公众号二维码
这是描述信息

 版权所有   ©   上海壁仞科技有限公司   |    沪ICP备19047354号