当前位置: 首页 > 科技观察

终于有人把分布式机器学习解释清楚了

时间:2023-03-21 01:27:11 科技观察

分布式机器学习也叫分布式学习,是指使用多个计算节点(也叫工作节点,Workers)进行机器学习或深度学习的算法和系统。它可以提高性能、保护隐私,并且可以扩展到更大的训练数据和更大的模型。联邦学习可以看作是分布式学习的一种特殊类型,可以进一步解决分布式机器学习中遇到的一些困难,从而构建面向隐私的人工智能应用和产品。一、分布式机器学习的发展历程近年来,新技术的迅猛发展导致数据量空前增长。机器学习算法越来越多地用于分析数据集和构建决策系统。由于控制自动驾驶汽车、识别语音或预测消费者行为等问题的复杂性(参见Khandani等人,2010年),算法解决方案并不可行。在某些情况下,模型训练在单机上运行时间长,促使解决方案设计人员使用分布式系统来提高并行度和I/O带宽总量,因为复杂应用程序所需的训练数据很容易达到结核病水平。在其他情况下,当数据本身是分布式的,或者数据量太大而无法在单台机器上存储时,集中式解决方案甚至不可取。例如,大型企业的交易数据存储在不同的位置,或者因为数据量太大而无法移动和集中。为了使这些类型的数据集能够作为机器学习问题的训练数据进行访问,必须选择和实施可以并行计算的算法,适应多种数据分布,并对故障具有弹性。近年来,机器学习技术得到广泛应用。尽管出现了各种相互竞争的方法和算法,但所使用的数据表示在结构上非常相似。机器学习工作中的大多数计算都涉及向量、矩阵或张量的基本变换,这些是线性代数中的常见问题。几十年来,优化此类操作的需求一直是高性能计算(HPC)中一个高度活跃的研究领域。因此,HPC社区的一些技术和库(例如,BLAS或MPI)已被机器学习社区成功采用并集成到系统中。同时,HPC社区将机器学习确定为新兴的高价值工作负载,并开始将HPC方法应用于机器学习。科茨等。在他们的商业高性能计算(COTSHPC)系统上仅用三天时间就训练了一个具有10亿个参数的网络。2017年,You等人。建议在英特尔的KnightsLanding上优化神经网络的训练,这是一种专为高性能计算应用而设计的芯片。库尔特等人。2017年展示了如何在大规模并行HPC系统上优化和扩展诸如提取天气模式等深度学习问题。严等。2016年提出,通过借用HPC的轻量级分析等技术对工作负载需求进行建模,可以解决在云计算基础设施上调度深度神经网络应用的挑战。2017年,李等人。研究了深度神经网络在加速器上运行时针对硬件错误的弹性特性(加速器通常部署在主要的高性能计算系统中)。与其他大规模计算挑战一样,我们有两种根本不同且互补的方式来加速工作负载:向机器添加更多资源(垂直扩展,例如增加GPU/TPU计算核心),以及向系统添加更多资源。多节点(横向扩展,低成本)。传统超级计算机、网格和云之间的界限越来越模糊,尤其是在涉及机器学习等要求苛刻的工作负载的最佳执行环境时。例如,GPU和加速器更常见于主要的云数据中心。因此,机器学习工作负载的并行化对于大规模实现可接受的性能至关重要。然而,分布式计算在从集中式解决方案过渡到分布式系统时,在性能、可扩展性、故障恢复或安全性方面面临着严峻的挑战。2.分布式机器学习概述由于每种算法都有独特的通信模式,因此设计一个能够有效地分布式通用机器学习的通用系统具有挑战性。尽管目前有各种分布式机器学习的概念和实现,但我们将介绍一个涵盖整个设计空间的通用架构。一般来说,机器学习问题可以分为训练阶段和预测阶段(见图1-5)。▲图1-5机器学习结构。在训练阶段,ML模型使用训练数据和调整超参数进行优化。然后,将经过训练的模型部署到系统中,为输入的新数据提供预测。)、基于规则的机器学习算法(Rule-basedMachineLearningalgorithm,如决策树和关联规则)、主题模型(TopicModel,TM)、矩阵分解(MatrixFactorization)和基于随机梯度下降(StochasticGradientDescent,SGD)算法等,来更新模型。除了为给定问题选择合适的算法外,我们还需要对所选算法进行超参数调优。训练阶段的最终结果是经过训练的模型。预测阶段是在实践中部署经过训练的模型。经过训练的模型接收新数据(作为输入)并生成预测(作为输出)。虽然模型的训练阶段通常是计算密集型的并且需要大型数据集,但可以使用较少的计算能力进行推理。训练阶段和预测阶段并不相互排斥。增量学习(Incrementallearning)结合了训练阶段和预测阶段,利用预测阶段的新数据不断训练模型。当涉及到分布时,我们可以用两种不同的方式在所有机器上划分问题,数据或模型并行(见图1-6)。这两种方法也可以同时应用。▲图1-6分布式机器学习中的并行性。数据并行是在训练数据集的不同子集上训练同一模型的多个实例,而模型并行是将单个模型的并行路径分布到多个节点。在数据并行(DataParallel)方法中,系统将数据按照工作节点的数量进行多次分区,然后所有工作节点对不同的数据集应用相同的算法。相同的模型可以用于所有工作节点(通过集中化或复制),因此可以自然地产生单个一致的输出。该方法可用于所有满足数据样本独立同分布假设的机器学习算法(即大多数机器学习算法)。在模型并行方法中,整个数据集的精确副本由工作节点处理,这些节点在模型的不同部分上运行。因此,模型是所有模型部分的集合。模型并行方法不能自动应用于每个机器学习算法,因为模型参数通常不能拆分。一种选择是训练相同或相似模型的不同实例,并使用类似集成(例如Bagging、Boosting等)的方法聚合所有训练模型的输出。最终的架构决策是分布式机器学习系统的拓扑结构。组成分布式系统的不同节点需要通过特定的架构模式连接起来,以实现丰富的功能。这是一项常见的任务。然而,模式的选择对节点可以扮演的角色、节点之间的通信程度以及整体部署的故障恢复能力有影响。图1-7显示了四种可能的拓扑结构,它们符合Baran对分布式通信网络的一般分类。集中式结构(图1-7a)采用严格的分层方法进行聚合,发生在单个中央位置。分散结构允许中间聚合在聚合被广播到所有节点时不断更新(如树形拓扑),具有复制模型(图1-7b)或使用跨多个参数服务器分片的分区模型(图1-7b)1-7b).1-7c).完全分布式架构(图1-7d)由集成解决方案的独立节点网络组成,每个节点未分配特定角色。▲图1-7分布式机器学习的拓扑结构3.分布式机器学习与联邦学习的共同发展分布式机器学习的发展也对隐私保护产生了一些需求,这就导致了与联邦学习交叉的一些内容差异。安全多方计算、同态计算、差分隐私等常用的加密方法也逐渐应用于分布式机器学习中。总的来说,联邦学习是一种利用分布式资源协同训练机器学习模型的有效方式。联合学习是一种分布式机器学习方法,其中多个用户协作训练模型,同时保持原始数据分散,而无需移动到单个服务器或数据中心。在联邦学习中,原始数据或基于原始数据安全处理生成的数据被用作训练数据。联邦学习只允许分布式计算资源之间传输中间数据,同时避免训练数据的传输。分布式计算资源是指跨多个组织的最终用户移动设备或服务器。联邦学习将代码引入数据,而不是将数据引入代码,从技术上解决了隐私、所有权和数据位置等基本问题。通过这种方式,联邦学习使多个用户能够在满足合法数据约束的同时协作训练模型。本文节选自《联邦学习:算法详解与系统实现》(ISBN:978-7-111-70349-5),经出版社授权发布。