联邦学习:算法详解与系统实现
上QQ阅读APP看书,第一时间看更新

1.3.2 分布式机器学习概述

由于每种算法都有独特的通信模式,因此设计一个能够有效分布常规机器学习的通用系统是一项挑战。尽管目前分布式机器学习有各种不同的概念和实现,但我们将介绍一个覆盖整个设计空间的公共架构。一般来说,机器学习问题可以分为训练阶段和预测阶段(见图1-5)。训练阶段包括训练一个机器学习模型,通过输入大量的训练数据,并使用常用的ML算法,如进化算法(Evolutionary Algorithm,EA)、基于规则的机器学习算法(Rule-based Machine Learning algorithm,比如决策树和关联规则)、主题模型(Topic Model,TM)、矩阵分解(Matrix Factorization)和基于随机梯度下降(Stochastic Gradient Descent,SGD)的算法等,进行模型更新。除了为给定的问题选择一个合适的算法之外,我们还需要为所选择的算法进行超参数调优。训练阶段的最终结果是获得一个训练模型。预测阶段是在实践中部署经过训练的模型。经过训练的模型接收新数据(作为输入),并生成预测(作为输出)。虽然模型的训练阶段通常需要大量的计算,并且需要大量的数据集,但是可以用较少的计算能力来执行推理。训练阶段和预测阶段不是相互排斥的。增量学习(Incremental learning)将训练阶段和预测阶段相结合,利用预测阶段的新数据对模型进行连续训练。

图1-5 机器学习结构。在训练阶段,使用训练数据和调整超参数对ML模型进行优化。然后,将训练好的模型部署到系统中,为输入的新数据提供预测

当涉及分布式时,我们可以用两种不同的方法将问题划分到所有机器上,即数据或模型并行(见图1-6)。这两种方法也可以同时应用。在数据并行(Data Parallel)方法中,系统中有多少工作节点,数据就被分区多少次,然后所有工作节点都会对不同的数据集应用相同的算法。相同的模型可用于所有工作节点(通过集中化或复制),因此可以自然地产生单个一致的输出。该方法可用于在数据样本上满足独立同分布假设的每个ML算法(即大多数ML算法)。在模型并行(Model Parallel)方法中,整个数据集的精确副本由工作节点处理,工作节点操作模型的不同部分。因此,模型是所有模型部件的聚合。模型并行方法不能自动应用于每一种机器学习算法,因为模型参数通常不能被分割。

图1-6 分布式机器学习中的并行性。数据并行性是在训练数据集的不同子集上训练同一模型的多个实例,而模型并行性是将单个模型的并行路径分布到多个节点上

一种选择是训练相同或相似模型的不同实例,并使用集成之类的方法(如Bagging、Boosting等)聚合所有训练过的模型的输出。最终的架构决策是分布式机器学习系统的拓扑结构。组成分布式系统的不同节点需要通过特定的体系结构模式进行连接,以实现丰富的功能。这是一个常见的任务。然而,模式的选择对节点可以扮演的角色、节点之间的通信程度以及整个部署的故障恢复能力都有影响。图1-7显示了4种可能的拓扑,符合Baran对分布式通信网络的一般分类。集中式结构(图1-7a)采用一种严格的分层方法进行聚合,它发生在单个中心位置。去中心化的结构允许中间聚合,当聚合被广播到所有节点时(如树拓扑),复制模型会不断更新(图1-7b),或者使用在多个参数服务器上分片的分区模型(图1-7c)。完全分布式结构(图1-7d)由独立的节点网络组成,这些节点将解决方案集成在一起,并且每个节点没有被分配特定的角色。

图1-7 分布式机器学习拓扑结构