分布式机器学习介绍

分布式机器学习也称为分布式学习,是指利用多个计算节点(也可称为工作者,worker)进行机器学习或者深度学习的算法和系统,旨在提高性能,保护隐私,并可扩展至更大规模的训练数据和更大的模型。如图所示。训练数据被分为不相交的数据分片并被发送给各个工作者,工作者将在本地执行随机梯度下降(Stochastic Gradient Descent,SGD)。工作者将梯度Wi\nabla W^i或者模型参数WiW^i发送至服务器。参数服务器对收到的梯度或者模型参数进行聚合,从而得到全局梯度W\nabla W或全局模型参数WW

img

面向扩展性的DML

大规模机器学习

在大数据时代,ML面临的主要问题是如何处理大规模的高纬度数据集,随着大趋势的变化,ML社区正面临着计算性能和好事与数据规模不匹配的挑战,这使得大规模的训练样本中耗费合理的计算代价和时间进行学习变得愈加不可能。

内存短缺

传统ML方法只在一块独立内存中对训练样本进行所有的操作,因此,可能出现:训练模型可能不能收敛或性能低下(低准确率和召回率)。

不合理的训练时间

ML算法中的一些优化过程可能不能匹配训练样本的规模。因此,当处理大规模训练样本时,在训练处理中耗费的时间可能过长,在模型训练过程中,如果需要尝试多种不同的参数设置,ML模型的超参调校也将耗费大量时间。

面向扩展性的DML方法

数据并行

将训练数据划分为多个子集,然后将各子集置于多个计算实体中,之后并行地训练同一个模型。目前,主要有两种基于数据并行的分布式训练方法,同步训练和异步训练。

模型并行

随着模型变得越来越大,我们可能会面临一个模型不能加载到单一计算节点内存中的问题。对于这种情况,我们需要分割模型,并将各部分置于不同的计算节点中。尽管将各个部分置于不同计算设备中确实能够改善执行时间,但模型并行的主要目的是避免内存容量限制。

任务并行

任务并行也叫做以任务为中心的方法,指的是计算机程序在同一台或多台机器上的多个处理器上执行,它着力并行执行不同的操作以最大化利用处理器或内存等计算单元。

面向隐私保护的DML

对于隐私保护的ML系统,它通常能保护下列的信息:训练数据输入,预测标签输出,模型信息(包括模型参数,结构和损失函数)和身份识别信息(如记录的数据来源站点,出处和拥有者)。

隐私保护方法

在面向隐私的DML中,常用的用于保护数据隐私的方法大概分为以下两类:

(1)模糊处理。随机化,添加噪声或修改数据使其拥有某一级别的隐私。

(2)密码学方法。通过不将输入值传给其他参与方的方式或者不以明文方式传输,使分布式计算过程安全话。