论文详解丨联邦学习开源框架
摘要
近年来,联邦学习作为破解数据共享壁垒的有效解决方案被广泛关注,并被逐步应用于医疗、金融和智慧城市等领域.联邦学习框架是联邦学习学术研究和工业应用的基石.虽然Google、OpenMined、微众银行和百度等企业开源了各自的联邦学习框架和系统,然而,目前缺少对这些联邦学习开源框架的技术原理、适用场景、存在问题等的深入研究和比较.
为此,根据各开源框架在业界的受众程度,本文选取了目前应用较广和影响较大的联邦学习开源框架进行深入研究.针对不同类型的联邦学习框架,首先分别从系统架构和系统功能2个层次对各框架进行剖析;其次从隐私机制、机器学习算法、计算范式、学习类型、训练架构、通信协议、可视化等多个维度对各框架进行深入对比分析.而且,为了帮助读者更好地选择和使用开源框架实现联邦学习应用,给出了面向2个不同应用场景的联邦学习实验.最后,基于目前框架存在的开放性问题,从隐私安全、激励机制、跨框架交互等方面讨论了未来可能的研究发展方向,旨在为开源框架的开发创新、架构优化、安全改进以及算法优化等提供参考和思路.
内容简介
1.首先分别从系统架构和系统功能2个层次对各框架进行剖析
2.其次从隐私机制、机器学习算法、计算范式、学习类型、训练架构、通信协议、可视化等方面对比总结了各框架的优劣势.
3.最后,基于目前框架存在的开放性问题,从隐私安全、激励机制、跨框架交互等方面讨论了未来可能的研究发展方向.
主要内容
联邦学习常用的框架包含2种:中心化架构和去中心化架构. 中心化架构也被称作客户端-服务器架构,在该架构中,各参与客户端利用自己的本地数据和本地资源进行本地训练,待训练完成后再将脱敏参数上传到服务器进行整合,其具体架构如图1所示.
不同于中心化架构,在去中心化的联邦学习架构中,由于各参与客户端可以直接通信,不需要借助第三方(服务器),因此也被称作对等网络架构,其架构如图2所示.
从系统架构上看,联邦学习与传统分布式学习都是由服务器和多个分布式节点组成,具有较高的相似性. 但是相比于传统分布式学习,联邦学习在数据、通信以及系统构成上又具有自己的特点,其与传统分布式学习的主要区别如表1所示.
FATE系统架构主要包括离线训练和在线预测2部分,其系统架构如图8所示. 其中,FATE Flow为学习任务流水线管理模块,负责联邦学习的作业调度;Federation为联邦网络中数据通信模块,用于在不同功能单元之间传输消息;Proxy作为网络通信模块承担路由功能;元服务为集群元数据服务模块;MySQL为元服务和FATE-Flow的基础组件,用于存放系统数据和工作日志;FATE服务(FATE serving)为在线联合预测模块,提供联邦在线推理功能;FATE-Board为联邦学习过程可视化模块;Egg和Roll分别为分布式计算处理器管理模块和运算结果汇聚模块,负责计算和存储数据.
离线训练框架如图9所示,其架构主要分成基础设施层、计算存储层、核心组件层、任务执行层、任务调度层、可视化面板层以及跨网络交互层.
FATE服务是针对联邦学习模型的高性能工业化服务系统. 在离线建模后,FATE-Flow将模型推送至FATE服务,FATE服务通过加载训练模型实现在线预测功能,主要支持动态加载联合学习模型、多级缓存、生产部署的预/后处理、联邦学习在线批量预测、各方并行预测等. 其具体部署架构如图10所示.
如图14所示,FL API包括模型、联合计算构建器、数据集3个部分. 模型部分提供封装完成的tff. learning函数,研究人员可以直接调用该函数实现各种联邦学习算法而无需自行构建,如可以使用FedAvg和Fed-SGD进行模型训练. 联邦计算构建器的主要目的是使用现有模型为训练或评估构造联邦计算,主要用于辅助联邦学习的训练和计算过程. 在数据集模块,通过TensorFlow API中提供的LEAF生成联邦学习特定训练数据集,给出了用于TFF仿真和模型训练的可直接下载和访问的罐装数据集. 除了高级接口外,FC API提供了底层联邦学习接口,它是联邦学习流程的基础,研究人员可以通过它方便地构建自定义联邦学习算法.
PaddleFL架构的整体设计可以参考图15. 如图所示,PaddleFL可以支持横向联邦和纵向联邦2种策略. 对于横向联邦学习,其主要支持FedAvg,DPSGD, SECAGG等策略;对于纵向联邦学习,其主要支持LR with PrivC和NN with MPC的神经网络. PaddleFL底层的编程模型采用的是飞桨训练框架,结合飞桨的参数服务器功能,其可以实现在 Kubernetes 集群中联邦学习系统的部署. 训练策略方面,PaddleFL可进行多任务学习、迁移学习、主动学习等训练.
FedML主要包含FedML-core和FedML-API这2个组件,分别对应低级别接口(low-level API)和高级别接口(high-level API),系统架构如图17所示.FedML-core将分布式通信和模型训练分为2个单独的模块. 分布式通信模块负责不同客户端之间的底层通信,并使用统一的通信管理来完成算法通信协议. 目前,FedML-core支持MPI,RPC,MQTT通信后端. 其中MPI主要用于满足单个集群中的分布式训练需求;RPC主要用于满足跨数据中心的通信需求(例如cross-silo FL);MQTT主要用于满足移动设备的联邦学习训练.
在FedML中,MPI通信主要由通信管理和其维护的发送线程和接收线程实现. 其中发送线程和接收线程各自维护一个缓冲队列,发送线程每隔0.003 s轮询一次自己的队列,如果有新消息放入,就将其发送. 对于收到的消息,通信管理每隔0.3 s进行1次对其自身的轮询,有新消息收到则通知观察者,观察者利用回调机制处理信息.
具体通信过程如图18所示:①服务器启动,发送初始化信息给客户端;②客户端收到服务器端发送的消息,触发handler函数;③训练方进行本地模型的训练;④每轮训练结束后,将训练好的参数放入发送队列;⑤发送线程将队列中的数据传回服务器;⑥服务器收到客户端端发送的消息,触发handler函数;⑦更新全局模型参数;⑧将更新后的全局参数传入发送队列进行下发,开始下一轮迭代训练. 此外,FedML还支持用户自定义通信协议. 如果需要使用不同的通信协议,用户只需替换底层的通信管理即可.
图19为服务器和设备之间的工作流程. 在步骤1~3中,服务器和设备与代理建立连接,然后由代理进行通信. 同时,服务器为自己订阅一个特定的主题,以便从设备端接收状态更新. 步骤4和步骤5将训练模型发送到设备. 在模型发送之前,服务器分配并准备所有对通信阶段有用的参数(资源分配、模型序列化等). 在步骤6和步骤7中,参与训练的设备开始训练并返回模型更新.
除了工业界,南加州大学Lin等人也开源了首个以研究为导向的自然语言处理联邦学习框架(federated learning natural language processing, FedNLP). 其具体框架如图25所示,主要由应用程序层、算法层和基础架构层这3层组成.
从图30和图31表明,横向联邦学习和纵向联邦学习都可以有效提高模型的训练效果,同时,联邦学习的计算范式保证了用户本地数据的隐私安全. 此外,在开展联邦学习时,需要根据场景选择合适的联邦学习模式,缺少样本数据可以选择横向联邦学习,缺少样本特征可以选择纵向联邦学习.
挑战与展望
总结
本文参考: 计算机研究与发展
分享仅供学习参考,若有不当,请联系我们处理。
END
1.论文合集|2023 PETS会议 (CCF-C) 论文名单
文2.论文详解丨基于错误学习难度实现联邦学习的高效差分隐私安全聚合
推3.SPDZ 学习笔记-基于Somewhat的全同态加密构造的安全多方计算(1)
荐