近日密西根大学安娜堡分校的SymbioticLab 在ICML 2022上发布了机器学习顶会上第一篇关于联邦学习基准测试的文章。通过提供不同规模、任务类别和客户端系统性能的真实数据集,整合部分主流联邦学习算法的实现(例如 Oort [OSDI'21],HeteroFL[ICLR'21],FedProx[MLSys'20]),支持更具扩展性的评估平台,FedScale(论文/ 代码见文末)解决了目前联邦学习基准系统中难以真实地、大规模地评估算法和系统性能的问题。在发布的大半年里,已有不少顶会论文(如CVPR和MobiCom)采用此基准测试系统。
作者丨SymbioticLab
FedScale是一个大规模联邦学习基准系统,它提供了海量具有挑战性和真实的数据集,以促进大规模,全⾯的和可重复的联邦学习 (Federated Learning,FL) 落地和研究。其数据集包含广泛的联邦学习任务,例如图像分类、对象检测、单词预测、语⾳识别和视频流中的序列预测。同时,FedScale提供了⼀个高效的系统FedScale Runtime,以实现和标准化联邦学习真实的终端部署(如通过FedScale移动后端)和云端实验评估。其提供的API可以让用户用极少量的代码来实现并在真实数据集上测试自己算法的性能。
1
背景
联邦学习(Federated Learning,FL)系统是面向多客户端的模型训练系统,各个客户端在参与训练时,数据保留在本地,不会被发送给其他客户端或中心服务器。中心服务器再通过对客户端发送的本地模型更新进行整合,最终完成共享模型的训练。
在存在客⼾端设备的异构执行速度以及⾮ IID 数据分布的情况下,联邦学习存在以下三种挑战:
(1)系统效率:如何减少计算负载,以实现更短的回合持续时间;
(2) 统计效率:如何设计数据异构感知算法(例如,客⼾端聚类)以更少的训练轮次获得更好的训练精度;
(3) 隐私和安全:如何制定可靠的策略(例如,差分隐私训练)以使 FL 更加隐私保护和对潜在攻击的鲁棒性。这些挑战也使得联邦学习的评估实验相较于传统ML更为复杂。
表 1:FedScale与现有框架的比较,具体区别请参考论文。
基于上述的挑战,我们认为这些用于评估联邦学习系统和算法的基准系统必须考察 (1) 数据异质性 (2) 设备异质性 (3) 异构网络连接 (4) 可⽤性条件在 (5) 不同训练规模下 (6) 不同机器学习任务 的表现。然而现有的 联邦学习基准系统通常在多个维度上都达不到要求(表 1)。
首先它们缺少足够的数据异质性。事实上,尽管它们可能有相当多的数据集和 FL 训练任务(例如,FedEval 和 LEAF),但他们的数据集通常包含从传统数据集人为⽣成的数据分区(例如,CIFAR)并且不代表现实特征。这是因为这些基准主要是从传统的 ML 基准(例如,MLPerf)中借⽤的,或者是为模拟联邦学习环境设计的,例如 TensorFlow Federated或PySyft。其次,现有的基准测试经常忽略客⼾端的系统异构性(系统速度、连接性和可⽤性)(例如,FedML 和 Flower)并导致过于乐观的统计效率。
再者,他们的实验环境⽆法模拟⼤规模的联邦学习部署。真正的联邦学习每轮训练通常涉及数以千计的参与者,但在计算资源有限的情况下,现有的基准测试平台大多只能⽀持每轮训练数⼗名参与者;最后,它们中的⼤多数都缺乏方便使用的 API,导致在⼤规模基准测试⽅⾯需要巨⼤的代码工程。更多的区别请参照论文。
表 2:FedScale的联邦学习数据集以及联邦学习任务。在此非常感谢原数据集的贡献者。
图 1:客户计算和通信速度的分布。客户端设备系统速度是异构的,我们模拟的训练和推理速度覆盖各种模型以及各种设备型号(例如,华为 P40 和三星 Galaxy S20)。
图 2:客户动态的的可⽤性状态。我们合并大约136k 的大规模用户行为数据集来模仿客户的行为。它包括 1.8 亿个客户端设备约一周的活动(例如,电池充电或屏幕锁定)。
为了满⾜⼤规模真实的 FL实验需求,我们构建了⼀个⾼效的⼤规模联邦学习基准系统FedScale,以简化和标准化联邦学习实验设置和模型评估的过程。
- FedScale提供海量具有挑战性和现实的数据集。据我们所知,我们整合了最全⾯的联邦学习数据集,⽤于评估不同的实际部署。FedScale ⽬前有 20 个真实的联邦学习数据集(表 2),跨越⼩、 中、⼤规模,⽤于各种任务类别,例如图像分类、对象检测、单词预测、语⾳识别和强化学习。为了考虑实际的客⼾行为,我们包括对移动设备的真实世界测量,并将每个客⼾与他的计算和通信速度 以及动态的可⽤性状态相关联(图 1,2)。
- 我们构建了⼀个⾃动化评估平台(FedScale Runtime),以在更现实的环境中简化和标准化 FL 评估。FedScale提供集群后端来使⽤真实联邦学习统计和系统数据集在 GPU/CPU 上对各种实际联邦学习指标(例如,真实客⼾端训练回合运行时间)进行基准测试。不同于其他基准系统,FedScale 集群后端可以在⼏块 GPU 上⾼效地执行每轮数千个客⼾端的训练(图 4),并允许使⽤灵活的 API (表 3)轻松部署新算法(图 5)。与此同时,我们即将开源FedScale的移动端以支持真实移动设备上的联邦学习。
- 我们进行系统实验以展⽰ FedScale 如何促进当今的联邦学习基准测试,并强调协同优化系统和统计效率的迫切需求,特别是在解决有偏差的模型精度(biased model accuracy)和设备能源(device energy)之间的权衡。
图 4:用相同的计算资源(10块GPU),FedScale能支持更大规模的联邦学习模拟。经过测试,FedScale也能在70块GPU的部署中高效运行。
表 3:FedScale示例API。用户可通过重载API来实现自己的新算法,FedScale之后会自动测试新算法。
图 5:用户自定义算法实现。
2
FedScale Runtime介绍
由于缺乏真实的数据集并且系统设计上的不足,现有的联邦学习评估平台很难实现大规模的联邦学习模拟与评估。更糟糕的是,它们通常缺乏用户友好的 API,需要开发人员付出巨大的努力来部署新的插件。因此,我们引入了 FedScale Runtime,一个自动化且易于部署的评估平台,以在实际设置下简化和标准化联邦学习评估。后续随着移动后段的开源,会继续补充对FedScale移动后段的介绍。
FedScale Runtime 主要由三个组件组成(图 6):
- Aggregator Simulator: 它选择参与者、分配执行配置文件(例如,模型权重)并处理结果。在每一轮联邦学习训练中,其客户端管理器(client manager)使用客户端的行为跟踪来监控客户端是否可用;然后它选择指定数量的客户参与该轮。一旦接收到新事件,事件监视器(event monitor)就会激活处理程序(例如,aggregator handler以执行模型聚合)或 gRPC 通信器以发送/接收消息。通信器记录每个网络记录流量的大小(成本),此后根据真实设备的数据来统计出联邦学习真实部署中的运行延迟。
- Client Simulator: 它作为联邦学习客户端工作。FedScale数据加载器(FedScale dataloader)加载该客户端的联合数据集,并将此数据提供给计算引擎以运行联邦训练和测试。计算延迟由下式确定(#processed_sample × latency_per_sample)。通信器(communicator)将会管理网络流量和记录通信延迟(traffic_size / client_bendwidth)。根据FedScale的用户行为数据集,如果当前某个客户不可用(例如,客户端退出),则设备监视器(device monitor)将终止客户端的模拟。
- Resource Manager: 它协调可用的物理资源进行评估,以最大限度地利用资源。例如,当参与者/轮次的数量超过资源容量时(例如,在几个 GPU 上模拟数千个客户端),资源管理器将客户端的过度提交任务放入队列,并在有可用资源时,从该队列中调度新的客户端进行模拟。值得注意的是,加入此队列不会影响联邦学习的模拟,因为FedScale Runtime由全局虚拟时钟控制,并且事件监视器将以正确的联邦学习运行时顺序管理事件。
图 6:FedScale runtime 架构图。
3
结论和未来工作
为了实现可扩展和可重复的联邦学习研究,我们推出了FedScale。FedScale提供不同规模、不同任务类别和客户端系统行为方面的真实数据集,以及比现有的更具可扩展性的评估平台 FedScale Runtime。
FedScale Runtime 能对当今工作所需的联邦学习运行时指标进行快速评估,同时它也提供了灵活的 API,以允许更多的联邦学习应用程序,例如基准测试在联邦学习下的Neural Architecture Search、模型推理以及更广泛的联邦计算。
我们一直在推进FedScale的开源,也诚挚的欢迎大家的参与和贡献以打造出更便捷,拥有众多算法的测试平台,这也可以让更多人了解你的新工作!
后续我们也将推出更多的内容,比如关于FedScale的文档和教程,FedScale移动端的开源与介绍。
非常欢迎大家follow/star我们的工作!如果大家有任何想要交流的技术问题,欢迎留言多多交流。
最后附上FedScale的相关链接:
SymbioticLab:https://symbioticlab.org/
论文链接:https://arxiv.org/abs/2105.11367
Github链接:https://github.com/symbioticlab/fedscale
Slack:https://fedscale.slack.com/join/shared_invite/zt-uzouv5wh-ON8ONCGIzwjXwMYDC2fiKw#/shared-invite/email