当前位置:   article > 正文

联邦学习加速方法_联邦学习,服务器聚合端加权函数改进

联邦学习,服务器聚合端加权函数改进

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

一、引子

效率是指在保证模型性能不下降的前提下,有效提升联邦学习的训练效率,它是影响联邦学习落地的一个重要因素,其中模型计算和通信传输是影响联邦学习效率的主要原因。

对应的,联邦学习效率优化主要就是从算法层面和通信层面来着手,在算法计算和通信两大因素中,通信效率的优化要比计算性能的优化复杂和困难得多,因此,当前联邦学习效率的优化主要方向是尽可能多的将计算放在终端设备中进行,以此减少各终端之间的数据传输。

两种优化方法如下:

二、同步参数更新的加速方法

同步参数更新是指服务端会等待每一个客户端完成本地迭代并上传更新的模型参数,然后进行统一的聚合处理。同步参数更新的加速方法如下:

2.1、增加通信间隔

对于联邦学习,参与方都是跨地域分布的,而设备端之间的通信是非常大的开销,所以,增加参与方与协调方之间的通信间隔是一种非常简单且行之有效的加速联邦学习模型训练的方法。同时,增加本地迭代次数和减少全局通信次数,不仅不会降低全局模型的性能,还能有效缩短全局模型的收敛时间。

具体做法是将通信的频度从原来本地模型每次更新后(即每个SGD更新步骤)都通信一次,变成本地模型多次更新后(即多个SGD更新步骤)才通信一次,如图所示:

2.2、减少传输内容

在联邦学习的落地场景中,需要来来回回发送大量的数据才能将一个模型训练好,发送如此多的数据将给协调方产生巨大的通信开销,并且这样的通信开销会随着参与方数量和迭代轮次的增加而增加。

此外,如果联邦学习使用同态加密作为安全方案,那么加密后的密文数据在传输效率上将比明文数据慢。当存在大量参与方时,从参与方上传模型参数至协调方将成为联邦学习的一个巨大瓶颈。减少设备间传输的参数数据量,就是联邦学习提升性能的一个重要途径。

常见的优化方式如下:

● 轮廓更新:参与方在本地正常更新模型参数,之后以编码的方式对参数进行压缩并上传,服务端将压缩的模型参数进行解码,还原原始的模型参数。

● 模型参数压缩:首先是网络剪枝,去除冗余的网络权重参数,只保留最重要的连接部分;其次是使用量化、权重共享等方案,压缩每一个权重值的位数表示,例如整型量化将一个浮点数参数用其整数值近似表示,将原来每一个参数的值从8字节降低到4字节;最后对权重参数进行编码,例如使用哈夫曼编码等,以进一步降低模型权重的大小。

● 深度梯度压缩:深度梯度压缩方法包含四种压缩策略:动量修正、本地梯度截断、动量因子隐藏和预热训练。

2.3、非对称的推送和获取

联邦学习的通信操作主要包括下面两点:

● 向协调方推送(push)模型更新;
● 从协调方获取(pull)最新的全局模型。

可以对这两种操作采用不同的通信频度。与增加通信间隔类似,调整推送和获取的时间间隔也可能给联邦模型训练带来一定的精度损失。但是在很多实际系统中,通过设置合理的通信间隔,可以将对模型性能的影响控制在最小范围内。

这是因为,在训练过程中如果某个参与方的本地模型参数发生的变化不太大,实际上没有必要频繁地把很小的更新发送到协调方。同样的,也没有必要在每一步都对本地模型进行校准,通过调节推送间隔和获取间隔这两个参数,可以在系统性能和模型精度之间找到一个平衡点。

2.4、计算和传输重叠

在联邦学习模型训练过程中,可以将一次迭代分为计算和通信两个步骤。虽然相邻两次迭代之间存在依赖性(即先计算结果,再发送结果),但可以利用机器学习的容错性,适当打破这种依赖关系,从而让两次迭代之间的计算和通信以流水线的方式重叠。如图所示:

图中,模型训练线程完成计算的部分;通信线程完成网络通信的部分。系统中有两个模型缓存,假设是 buffer 1buffer 2本地训练过程基于buffer 1中的模型参数,产生本地模型的更新。

在训练的同时,通信线程先将上轮训练线程产生的更新发送出去,然后获取一份当下最新的全局模型,保存在buffer 2中。当计算和传输的线程都完成一轮操作后,交换两个缓存中的内容。这样一来,buffer 2中的新模型参数将被交换到本地训练线程中,作为下一轮训练迭代的初始值。与此同时,buffer 1中新产生的本地更新将被交换给通信线程,并发送给协调方。

以上,通信线程可以不用等待其他参与方,即采用异步的方式,加快联邦模型训练过程。

三、异步参数更新的加速方法

异步更新策略是指联邦系统中的每一个参与方完成本地模型训练迭代后,无须等待联邦学习系统中的其他参与方,就可以向服务端发送本地模型参数更新并请求当前的全局模型下发,以便继续进行后续训练。同时,服务端也会根据每一个客户端上传的最新模型参数进行聚合,而不需要考虑每一个参与方与服务端的通信次数是否相同。

由于在联邦学习系统中各个参与方之间通常是不需要相互通信的,因此它们可以完全按照自己的速度进行本地的模型训练。当参与方完成一次本地的模型参数更新之后,直接将更新推送到协调方的全局模型,随后就可以进行下一次本地的模型参数更新了,如图所示:

与同步更新相比,尽管异步更新策略的效率可以大大提高,但可能引发 “延迟” 问题,即各参与方的初始本地模型很可能不是当前最新的全局模型,这是因为全局模型不再由服务端进行统一的分发,每一个客户端都独立地从服务端申请获取全局模型,造成各个客户端获取的全局模型很可能不一致。同时,异步更新策略导致的另一个问题是模型的不稳定性。

四、基于模型集成的加速方法

4.1、针对横向联邦学习:One-Shot联邦学习

One-Shot联邦学习是指单轮通信联邦学习,即参与方与协调服务器之间只需要进行一轮通信就可以完成全局联邦学习模型的构建。One-Shot联邦学习主要包括基于有监督的集成学习方法和基于半监督及知识蒸馏的方法。

1、基于有监督的集成学习方法

联邦学习的一个参与者在其本地完成模型训练之后,将其获得的模型发送给协调者。在收到参与者发送的本地模型之后,协调服务器利用收到的本地模型来生成全局联邦模型。

由于不同参与者的本地模型的质量可能会有很大的不同,最佳的生成全局联邦模型的方法可能只需要考虑一部分参与者的本地模型,而非所有参与者的本地模型。对此,一般采用以下几种策略:

● 交叉验证选择:设备只有在其本地验证数据上达到某些基准性能时,才共享其本地模型,并且基准由协调服务器预先确定。

● 数据选择:参与者只有在拥有一定数量的本地培训数据时才共享其本地模型,并且该数据量由协调服务器预先确定。

● 随机选择:服务器从K个本地模型中随机选择N个本地模型(N≤K),将这N个本地模型聚合为新的全局模型。

2、基于半监督及知识蒸馏的方法

在传统的知识蒸馏方法中,利用教师模型输出的带有概率标记的数据对学生模型进行训练,从而将教师模型中的知识转移到学生模型中。

4.2、针对纵向联邦学习:基于学习的联邦模型集成

这里主要介绍特征分布的机器学习(FDML),FDML采用的是异步随机梯度下降算法。

该算法要求每个参与方可以使用任意的模型,例如逻辑回归、因子分解机、SVM和深度神经网络等,通过将数据输入每一个客户端模型中得到局部特征,进一步得到局部预测,将不同的局部预测汇总为最终预测。

FDML通过“超线性结构”进行集成,使用延时同步并行策略,并利用小批量随机梯度下降算法对整个模型进行端到端训练,即允许不同的参与者进行不同的迭代参数更新,直到有界延迟,如图所示:

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/小小林熬夜学编程/article/detail/190654
推荐阅读
相关标签
  

闽ICP备14008679号