现有工作随机选择FL参与者,这导致模型和效率较差。这篇文章提出了Oort,通过引导参与者选择来提高联合训练和测试的性能。
为了提高模型训练中的准确率性能,Oort优先使用那些同时拥有数据的客户,这些数据在提高模型准确率和快速运行训练方面具有很大作用。为了使FL开发人员能够在模型测试中解释他们的结果,Oort强制要求参与者数据的分布。
并非所有客户都可以同时进行FL训练或测试,可能具有异构的数据分布和系统能力,并且可能会导致工作浪费和性能不佳。因此,实际FL中的一个基本问题是选择一个“好”的客户子集作为参与者,每个参与者在本地处理自己的数据,只有他们的结果才在(逻辑上)集中的协调器中收集和汇总。
尽管随机参与者选择很容易部署,但不幸的是,由于设备速度和/或数据特性的巨大异质性,它导致联合训练的性能较差。更糟糕的是,随机选择参与者可能会导致测试集有偏差,对结果失去信心。因此,开发人员往往需要更多的参与者。
作者已经将Oort与PySyft集成,并在各种FL任务中使用真实工作负载对其进行了评估。
文章的主要贡献如下:
由于中间有综述内容,详细写了目前联邦学习的挑战和研究现状,所以就略读,直到文章的主要内容部分。
上图显示:
本节概述了Oort如何适合FL生命周期,以帮助读者了解后续章节。
上图显示了Oort如何与开发人员交互:
Oort使用了两个不同的选择器,开发人员可以在FL训练和测试期间通过客户端库访问它们。分别是训练选择器和测试选择器。
前者旨在提高联合训练的时间准确性性能。为此,它捕获了客户机在训练中的效用,并在运行时高效地探索和选择高效用客户机。
后者支持两种类型的选择条件。当未提供单个客户数据特征(例如,分类分布)时,测试选择器确定所需的参与者数量,以限制参与者与全局的数据偏差。否则,它会挑选参与者来满足开发人员对数据的确切要求,同时尽量缩短测试时间。
同样的,Oort也有以下的技术挑战:
首先作者定义了一个公式,以说明一个客户的“效用”:
该公式假设客户的所有样本都在该训练轮中处理。 是每个客户端 都有本地存储的训练样本, 是每一轮的开发人员首选持续时间, 是客户端 训练所需的时间,该时间已由目前的协调器从过去几轮中收集。是一个指标函数,如果 为真,则取值为1,否则取值为0。那些可能成为当前轮所需速度瓶颈的客户的效用将受到开发商指定的因子 的惩罚。
我们需要解决一些实际问题,以便在每一轮训练中选择效用最高的参与者:
然后文章展示了参与者选择的程序伪代码和“勘探开发”部分:
从众多客户中选择参与者可以被建模为多武装强盗问题,其中每个客户都是强盗的“武器”,获得的效用是“奖励”。与复杂的设计(例如,强化学习)相比,即使解决方案空间(例如,客户机数量)随着时间的推移发生了巨大变化,强盗模型也具有可扩展性和灵活性。
(从这里开始我不是很明白,估计还得看看强盗问题是怎么回事)。
第6行:在每一轮选拔开始时,Oort都会收到上一轮训练的反馈,并更新客户的统计效用和系统性能。为了鲁棒性,Oort(i) 在经过给定轮数的挑选后,在选择中删除客户,这有助于消除参与方面的异常值。
第9-16行:对于探索的客户,Oort计算他们的客户效用,并通过利用高效用参与者缩小选择范围。同时,奥尔特样本 一部分参与者探索之前未被选中的潜在参与者(第16行),这将使得 。
注意到,受用于衡量强盗奖励不确定性的置信区间的激励,代码引入了一个激励项,该激励项与强盗解决方案的置信度大小相同,以说明其陈旧性(第10行),从而如果客户长期被忽视,我们会逐渐增加其效用。因此,那些自上一次试用以来积累了高效用的客户仍然可以重新利用。通过在高效用客户池中进行概率参与者选择,在FL中的客户规模下,选择异常值的机会显著降低。
文章在四个CV和NLP数据集上评估了Oort对四个不同ML模型的有效性。