在AI浪潮中,无论是企业还是国家,对算力的需求与日俱增。近期启动的“东算西算”项目,从宏观层面大力建设人工智能基础设施。然而,位于不同地理位置的计算机之间的通信延迟相对较高。如何协调和高效利用不同区域的计算能力是亟待解决的重大问题。“东方数字,西方计算”项目布局与此同时,在大数据时代背景下,如何保护隐私数据成为社会热点。国家出台了一系列关于数据安全和隐私保护的规定。针对以上困难,开源项目SkyComputing成功利用空间异构分布式计算的特点,在保证用户数据隐私的情况下,将联邦学习加速55%。地址:https://github.com/hpcaitech/SkyComputing空间异构分布式计算随着深度学习的不断发展,模型的规模越来越大。目前的主流模型,如BERT、GPT-3等,都有上亿级的参数。这些模型虽然在预测精度和性能提升方面取得了很大进步,但也给存储和计算带来了巨大压力。为了加快AI模型训练的速度,分布式机器学习应运而生,它通常使用大量同类型的高速互连处理器,例如超级计算机。超级计算机和空间异构分布式计算进一步将具有不同计算能力和通信能力的计算资源组合起来,作为一个大集群来完成大规模的计算任务。计算所涉及的硬件资源可以是大型专业计算服务器,也可以是小型智能设备。目前,空间异构分布式计算作为一种新的异构计算形式,越来越受到人们的关注。以我国为例,随着“东数西数”工作的实施,越来越多的计算资源将广泛分布到西部各个地区。如何协调这样的混合计算集群高效协同工作,也将成为高性能计算的一个重要方面。应用研究热点。近年来,云服务的规模、范围和对象不断扩大,越来越多的企业选择将数据存储和数据计算相关业务部署在云端。但所有服务依赖云环境的缺点是数据迁移成本极高;同时,难以保证数据的隐私性和可靠性;此外,分布在不同区域的云计算能力之间的高额通信成本也使得它们难以有效地共同完成高计算任务。云计算联邦学习为了保护数据的隐私,谷歌在2016年提出了联邦学习,这是一种加密的分布式机器学习技术。顾名思义,它通过建立一个虚拟的“联邦”将大大小小的数据孤岛联合起来。每个数据孤岛就像这个“联邦”中的一个国家,既保持一定程度的独立性(如商业秘密、用户隐私),又可以在不对外共享数据的情况下联合建模,提高AI模型的效果.目前,联邦学习广泛应用于智能终端的模型训练,如Siri、Alex等各种语音助手。在现有的联邦学习模型并行中,模型被平均分配到每个训练设备。但是,如上文所述,由于联邦学习的训练设备往往是用户的智能终端,性能参差不齐,采用均匀分布往往会造成通信时间瓶颈。众所周知木桶效应:木桶的水容量由最短的木头决定。在传统的联邦学习中,存在类似的现象:训练速度由最慢的设备决定。例如,在使用模型并行性的同一联合学习任务中,智能手机和RaspberryPi将被分配相同数量的工作。然而,由于智能手机的计算能力远超树莓派,智能手机被迫闲置,等待树莓派完成任务。Cask效应SkyComputingSkyComputing针对以上痛点,通过负载均衡将不同规模和能力的云服务器智能互联,满足大规模计算的算力需求,同时通过联邦学习,只访问云服务器中的用户数据,避免数据迁移和隐私泄露。负载均衡要解决负载均衡问题,首先要了解什么是“负载”。在计算机中,无论??进行何种操作,从本质上讲,负载都可以理解为“完成任务所需的时间”。由于在联邦学习中,训练模型的总计算量是固定的,如果能够自适应地智能分配计算任务,就可以让每个设备花费相同的时间来完成计算任务,保证整体训练时间是最短的极品。为了得到一个好的分配方式,我们需要先得到机型和设备的相关信息,然后再进行实际合适的分配操作。因此,为了训练模型,我们需要分为两个阶段:基准测试和分发。TrainingProcessBenchmarking在benchmarking阶段,SkyComputing需要收集模型和设备两个维度的数据。在模型维度上,需要知道模型每一层所需要的内存占用和计算量。通过将模型的估计内存占用与设备的可用内存相结合,可以避免内存溢出;所需的计算越多,同一设备完成任务所需的时间就越长。在设备维度上,需要了解设备的通信时延、计算能力、可用内存等,受网络环境、当前运行负载等因素的影响。对于计算能力强、通信良好但可用内存较少的设备,在内存不溢出的前提下,应分配尽可能多的模型层(计算任务)。由于SkyComputing是一个负载均衡的联邦学习系统,我们只关心设备在基准测试阶段的机器学习能力。通过在每台设备上运行小型机器学习测试任务来测试设备的AI计算能力。当整体流程分配决定任务分配方式时,通过数学分析可知,分配方式本质上是一个NP-hard混合整数线性规划问题。因此,在多项式时间内,我们无法得到最优解。随着模型规模的不断增长和设备数量的不断增加,计算最优解的代价显然是无法接受的。因此,在实际情况下,我们不是直接计算最优解,而是尝试使用启发式算法来获得近似解。在SkyComputing,我们设计了一个两阶段的启发式算法:第一阶段是预分配,根据设备实际可用内存大小分配模型,计算每个设备的实际工作量;第二阶段是分配调整,根据设备的负载动态调整,迭代降低整个系统的负载。同时,为了验证SkyComputing的优越性,我们还在实验中设置了最优分配作为对比。实现架构性能性能在集群环境下,我们通过控制关键因素变量,以联邦学习AI任务的前向和后向时间为指标,验证了SkyComputing的性能。实验结果我们测试了三种分布方式(even:均匀分布,heuristic:启发式算法,optimal:最优分布)。不同规模的计算资源数量和不同模型规模下的表现,并记录完成每次迭代所花费的时间。可以看出,随着设备数量的增加和模型深度的增加,我们的启发式算法的效果是非常显着的。在具有64个节点和160个隐藏层的实验环境中,SkyComputing比当前的均匀分布模型实现了55%的并行加速。实验结果中,由于最优分配的计算成本极高,难以在64个节点进行计算,不适合实际应用,仅作为小规模的参考值。SkyComputing的开源共建是我们利用空间异构分布式计算的特性加速联邦学习的一次成功尝试,性能提升高达55%。目前,该项目仍处于开发阶段。未来我们将进行更充分的实验,尽快部署到实际应用中,并提供动态冗余等功能。论文地址:https://arxiv.org/abs/2202.11836项目地址:https://github.com/hpcaitech/SkyComputing
