分布式机器学习

本博客地址:https://security.blog.csdn.net/article/details/123347022

一、分布式机器学习定义

分布式机器学习(DML)是指利用多个计算节点进行机器学习或者深度学习的算法和系统,旨在提高性能、保护隐私,并可扩展至更大规模的训练数据和更大的模型。

举个例子,一个由三个计算节点和一个参数服务器组成的分布式机器学习系统如下,训练数据被分为不相交的数据分片并被发送给各个计算节点,计算节点将在本地执行随机梯度下降(SGD)。计算节点将梯度或者模型参数发送至参数服务器。参数服务器对收到的梯度或者模型参数进行聚合(如计算加权平均之类的),从而得到全局梯度或全局模型参数。

在这里插入图片描述

一般分布式机器学习可以分为两类:面向扩展性的分布式机器学习面向隐私保护的分布式机器学习

面向扩展性的DML:主要用来解决不断增长的扩展性和计算需求问题的机器学习系统,即主要解决性能问题;
面向隐私保护的DML:主要用来保护用户隐私和数据安全,适用于具有纵向划分数据集的场景。

主流的机器学习平台:

Apache Spark MLlib:MLlib是Apache Spark的扩展机器学习库,是一个基于内存的DML框架,其提供了传统机器学习算法的分布式实现,例如分类、回归和聚类等。
GraphLab:是一个图并行计算平台,其提供了可扩展的机器学习工具包,并实现了一些基础算法如随机梯度下降和高性能梯度下降。
Apache Spark GraphX:也是一个图并行计算平台,是Spark中的一个新组件,实现了Pregel-like的块同步消息传递,其中Pregel是来自谷歌的基于块同步处理模型的并行图计算库。
DMTK:是微软发布的DML工具包,DMTK支持数据并行化的统一接口、大型模型存储的混合数据结构、大型模型训练的模型调度,以及实现高训练效率的自动化流水线。

二、面向扩展性的分布式机器学习

面向扩展性的分布式机器学习方案主要包括数据并行模型并行图并行任务并行混合并行交叉并行

2.1、数据并行

数据并行是先将训练数据划分为多个子集(也称为分片或者切片),然后将各子集置于多个计算实体中,之后并行地训练同一个模型。也就是说,数据并行方案可以利用不同的计算设备,通过使用同一个模型的多个副本,对多个训练数据分块(也称为分片或者切片)进行处理,并定期通信交换最新的模型训练结果,这种方法能够很好地适配快速增长的训练数据规模。

目前,主要有两种基于数据并行的分布式训练方法,即同步训练异步训练

在同步训练中,所有的计算节点在训练数据的不同分片上同步地训练同一个模型的副本,在各计算节点每执行完一个模型更新步骤后,每个计算节点产生的梯度就会被发送给服务器,服务器在收到所有计算节点的结果后再进行聚合操作。
在异步训练中,所有计算节点独立地使用其本地的训练数据集来训练同一个模型的副本,并将本地获得的模型梯度及时地推送给服务器,以便服务器更新全局模型。

数据并行能用于解决训练数据过大以至于不能存于单一计算节点中的问题,或者用于满足使用并行计算节点实现更快速的计算的要求。

2.2、模型并行

模型并行方案指的是一个模型(如深度神经网络模型)被分割为若干部分,然后将它们置于不同的计算节点中。该方案主要是为了解决深度神经网络模型不能加载到单一计算节点内存中的问题。

尽管将各个部分置于不同计算设备中确实能够改善执行时间(如使用数据的异步处理),但模型并行的主要目的是避免内存容量限制。拥有大量参数的模型由于对内存有很高的要求,所以不能放于单一计算设备中,但通过使用这种模型并行策略,内存容量限制也就不复存在了。

例如,深度神经网络模型的一个层可以被放入单一设备的内存中,且前向和后向传播意味着一台计算设备的输出以串行方式传输至另一台计算设备。在实践中,只有当模型不能放入单一设备中,且不需要将训练过程加速很多时,才会采用模型并行方法。

2.3、图并行

图并行方法,也称为以图为中心的方法,是一种用于划分和分配训练数据和执行机器学习算法的新技术,其执行速度比基于数据并行的方法要快几个数量级。

2.4、任务并行

任务并行也叫作以任务为中心的方法,指的是计算机程序在同一台或多台机器上的多个处理器上执行。它着力并行执行不同的操作以最大化利用处理器或内存等计算资源。任务并行的一个例子是一个应用程序创建多个线程进行并行处理,每个线程负责不同的操作。使用了任务并行的大数据计算框架有Apache Storm和Apache YARN。

2.5、混合并行与交叉并行

混合并行是指结合不同类型的并行方法,从而形成混合并行的方案,例如使用了数据并行和任务并行的Apache YARN和SystemML。在实践中,将数据并行和模型并行结合起来使用也是很常见的,例如谷歌的Downpour SGD中提出的分布式深度学习框架。

混合并行的覆盖范围可以进一步扩展,形成更加灵活的交叉并行,例如按层选择并行方式。这种交叉并行方法有时适用于训练大规模深度神经网络模型,例如对一些层使用数据并行,对另外一些层使用模型并行方法。

三、面向隐私保护的分布式机器学习

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

3.1、隐私保护决策树

决策树是一种重要的监督机器学习算法,被广泛使用于分类和回归任务中。决策树的推理过程是找到满足一个样本的属性的叶节点。在分布式决策树算法中,根据数据的分布类型,可以被正式分为两类:

横向划分数据集
纵向划分数据集

在横向划分数据集中,DML系统中的每个计算节点拥有不同的样本,所有计算节点中的样本都具有相同的特征属性类别。例如,由于不同可穿戴设备的传感器是相同的,所以这些设备采集的数据具有相同的属性类别。然而,由于设备工作的环境不同,由不同计算节点收集的数据样本通常都是不同的。

在纵向划分数据集中,不同计算节点拥有的数据集的特征集是不同的,但这些样本可能来自同一个计算节点。例如,同一位患者在不同医疗机构的记录可以有不同的生理指标或疾病检测结果。

对于横向划分的DML,样本的聚集等价于数据集的扩大;而在纵向划分的场景下,类似于增加样本的特征类别数量。

3.2、隐私保护方法

在面向隐私的分布式机器学习中,常用的用于保护数据隐私的方法分为以下两个类别:

模糊处理。随机化、添加噪声或修改数据使其拥有某一级别的隐私,如差分隐私方法。
密码学方法。通过不将输入值传给其他参与方的方式或者不以明文方式传输,使分布式计算过程安全化,如安全多方计算,包括不经意传输、秘密共享、混淆电路和同态加密。

四、面向隐私保护的梯度下降方法

梯度下降方法需要在效率、精度、隐私之间做出权衡。例如,梯度值以明文形式被发送给协调方,并以梯度平均方法更新模型,从而在不降低全局学习精度的情况下用隐私换取效率。

典型的面向隐私保护的梯度下降方法包括朴素联邦学习代数方法稀疏梯度更新方法模糊处理方法密码学方法

4.1、朴素联邦学习

联邦平均方法是为了使朴素联邦学习能在水平划分数据集上使用而提出的一种方法。在联邦平均方法中,每一方给一个协调方(或是受信任的处理方,或是一个参数服务器)独立地上传明文形式的梯度或模型参数,最后,协调方将明文形式的更新模型发送给每一方。

当数据集是纵向划分的时,模型在各方间分配。在梯度下降方法里,目标函数能被分解为一个可微函数和一个线性可分函数。为了进行梯度下降,每一方将自己的数据用于各自的局部模型,从而获得中间结果,并将其正常发送给协调方。协调方将所有中间结果积累起来,并评估可微函数以计算损失和梯度。最后,协调方更新整个模型,并将更新后的局部模型发送给每个相关方。

这里的假设是上述协调方是诚实的和无好奇心的,且不与任何方有所勾结。假如协调方不满足前述条件,则每一方的梯度信息都有可能被泄露。

4.2、隐私保护方法

4.2.1、代数方法

代数方法旨在利用传输数据的代数特性保护原始训练数据。它通过保证每个诚实方对敌对方的输入和输出存在内部有效的输入输出对,即受保护的原始输入数据形式,提供了对隐私的保护。

4.2.2、稀疏梯度更新方法

稀疏梯度更新方法通过只更新梯度的子集的方式来保护隐私。这类方法用精度来换取效率,并且保护隐私程度较低。梯度是以明文方式传输的,所以这类方法是用隐私换取效率。

改善交流效率的方法包括结构更新和概要更新。结构更新方法只会更新一个稀疏梯度矩阵或一个低级梯度矩阵,而概要更新利用分段抽样和分层方法以消去梯度的值。

4.2.3、模糊处理方法

模糊处理方法通过随机化、泛化和压缩来使得数据模糊,虽然可以改善隐私性,但会降低准确度。在联邦学习中,本地差分隐私也可以用于给每一方的梯度加上噪声。

4.2.4、密码学方法

上述方法将每一方的明文梯度信息都暴露给了协调方或其他方。与此相反,密码学方法利用了同态加密和安全多方计算,在梯度下降过程中,保护每一方的梯度信息隐私。

安全模型有很多种类型,从针对诚实的但好奇的对抗方的模型,到针对恶意敌对方的模型,对于堕落变坏的假设也有很大不同,除了安全模型,每种方法公开的信息也是不同的。

在安全集中方法中,一个参与方只被允许学习被给予的一组明文梯度平均值。安全集中方法通过Shamir阈值秘密共享方法保护每一方的梯度信息,因此协调方只能公开一组梯度的平均值。然而,当协调方和n-1个其他方在一个n方组里相勾结时,输入的梯度就会被轻易地得知并暴露。因为上述安全集中是匿名的,所以可能会遭受到严重的投毒攻击。

另一种密码学方法介绍了存在一个或多个协作方,但所有协作方都不被允许学习任何关于梯度和模型信息的情况。对于基于同态加密的方法,以上约束能通过加入一个随机掩码来给数值解密。对于基于安全多方计算的方法,被信任的处理方能按要求生成独立材料。若有多个非勾结的协调方,每一方将生成自己的隐私数据的秘密共享信息,并将其分享给每一个协调方。之后,梯度下降过程将会在协调方之间进行。

当不能设定任何协调方时,可以使用一些不需要协调方的密码学方法,即进行安全多方梯度下降,其中每一方都只能学习自己的输入和输出。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

武天旭

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值