index_new5.html
../../../zaker_core/zaker_tpl_static/wap/tpl_guoji1.html
![]()
上海交通大学和清华大学的研究团队开源了PFLlib,这是一个面向初学者的个性化联邦学习代码库。PFLlib旨在降低研究门槛,提供统一的实验环境,包含39种联邦学习算法、3种数据异质场景和24个数据集,支持快速模拟多达500个设备的训练场景,并提供隐私保护能力评估工具。该代码库易于上手,方便研究人员进行PFL算法的开发与测试,促进联邦学习领域的发展。
💡 PFLlib 囊括了39个联邦学习算法,其中包含27个个性化联邦学习算法,覆盖3大类数据异质场景,并提供24个数据集,方便研究人员进行多方面的实验和评估。
💻 PFLlib 易于上手和阅读,代码结构简单,工具函数存放在utils文件夹中,基础的设备和服务器操作分别存放在clientbase.py和serverbase.py,方便用户快速理解和修改。
⚙️ PFLlib 支持三种类型的场景,包括标签倾斜、特征偏移和真实世界场景,并配备了多个数据集,同时提供通用的数据集划分代码,方便后续扩展和定制化需求。
🛡️ PFLlib 提供了一种基于DLG的隐私攻击和隐私泄露度量指标,用于度量多数论文中没提及的PFL算法的隐私保护能力,有助于评估算法的隐私保护性能。
【新智元导读】上海交通大学和清华大学的研究人员开源了一个面向初学者的个性化联邦学习代码库PFLlib,旨在降低研究门槛并提供统一实验环境。PFLlib包含39种联邦学习算法、3种数据异质场景和24个数据集,支持快速模拟多达500个设备的训练场景,并提供隐私保护能力评估工具。2021年开始,作为新型分布式机器学习框架,联邦学习逐渐出现在人们视野。由于不同论文的实验设置(如数据集、模型结构、数据异质种类、客户机数量、超参数设定等)不同,导致PFL(个性化联邦学习算法)论文中的大部分实验数据不能复用。同时,有相当一部分的论文,其代码并不开源,使得我们无法通过在新场景下运行代码来获得实验数据。此外,在PFL领域逐渐火热起来后,对比实验往往需要比较十几个相关方法,即使每个方法有自己的开源代码,为这些具有不同风格、结构、规范的代码进行新实验设置的适配需要花费大量的精力和时间,使得刚入门PFL的研究者无法关注在PFL本身的研究上。最近,上海交通大学和清华大学的研究人员在GitHub上开源了一个可2小时快速入门的个联邦学习代码库PFLlib,最近中稿JMLR,目前已经获得1700+个Star和300+个Fork,在业内具有一定影响力。论文链接:https://www.jmlr.org/papers/v26/23-1634.html代码链接:https://github.com/TsingZ0/PFLlib项目官网:https://www.pfllib.com/截至目前,PFLlib囊括了39个联邦学习算法、3大类数据异质场景、24个数据集(3个模态)。开源该仓库的主要目的是:(1)降低初学者研究个性化联邦学习算法的门槛;(2)提供一个统一的实验环境,在多种场景和多个方面对不同个性化联邦学习算法进行评估,为个性化联邦学习算法在具体场景中应用时的选择提供参考;(3)为个性化联邦学习算法的研究者们提供一个可以交流的平台,在交流的过程中互相学习,碰撞出新的火花。
PFLlib简介
总的来说,PFLlib拥有以下几个特性:GPU资源需求较少。使用实验中最常用的4层CNN网络,可以在NVIDIA GeForce RTX 3090 GPU上,仅用5.08GB显存模拟500个设备同步训练的场景。提供了较为全面的联邦学习算法仓库和实验环境。PFLlib总共拥有34个联邦学习算法(其中包含27个个性化联邦学习算法)、3大类数据异质场景、20个数据集。代码结构简单,易于入手和阅读,易于添加新算法。工具函数存放在utils
文件夹中。基础的设备和服务器操作分别存放在clientbase.py
和serverbase.py
中。如图3,以在MNIST数据集上实现最基础的FedAvg[2]算法为例,只需要编写generate_MNIST.py
来生成实验场景,然后编写clientavg.py
和serveravg.py
来实现FedAvg训练流程,再将FedAvg在main.py
配置一下,即可通过命令行运行FedAvg算法。提供了一种基于DLG[3]的隐私攻击和隐私泄露度量指标,用于度量多数论文中没提及的PFL算法的隐私保护能力。
39个联邦学习算法
根据联邦学习算法中用到的技术,研究人员对37个PFL算法进行了分类,具体分类结果见下表。开源仓库中还包含了社区贡献的新算法,如FedAS(CVPR'24)、FedCross(ICDE'24)等。
3大场景和24个数据集(3个模态)
PFLlib支持三种类型的场景,并配备了多个数据集,同时将通用的数据集划分代码迁移至./dataset/utils
目录,方便后续扩展。如果需要其他数据集,只需编写下载代码,并调用这些工具函数即可。标签倾斜(label skew) 场景
研究人员引入了16个知名数据集:MNIST、EMNIST、FEMNIST、Fashion-MNISTCifar10、Cifar100AG News、Sogou NewsTiny-ImageNet、Country211、Flowers102、Stanford Cars、GTSRBShakespeareCOVIDx、kvasir这些数据集均可被轻松划分为IID(独立同分布) 和非IID(非独立同分布) 两种版本。在非IID情形下,区分两种分布方式:病态式非IID(Pathological non-IID):例如在MNIST数据集中,每个客户端仅拥有2类标签的数据,而整个数据集包含10类标签。这会导致客户端之间的数据极度倾斜。实际场景非IID(Practical non-IID):采用Dirichlet分布建模数据分布,生成更加真实且不极端的数据不平衡。此外,PFLlib提供balance
参数选项,可使每个客户端拥有相同数量的数据。特征偏移(feature shift)场景
研究人员使用了3个在领域自适应(Domain Adaptation)中广泛使用的数据集:Amazon ReviewDigit5DomainNet真实世界(real-world) 场景
在真实世界场景中,引入了5个天然划分好的数据集:Camelyon17(5家医院,2类标签)iWildCam(194个红外摄像头,158类标签)Omniglot(20个客户端,50类标签)HAR(人体活动识别)(30个客户端,6类标签)PAMAP2(9个客户端,12类标签)关于物联网场景(IoT)中的数据集和联邦学习算法的更多细节,请参考 FL-IoT 项目。代码链接:https://github.com/TsingZ0/FL-IoT
部分实验结果
出于验证PFLlib中附带实验平台的可用性,根据GPFL中的默认实验设置,研究人员对部分算法在部分常见场景中的表现进行了展示,如下表所示(实验结果仅供参考)。[1] Zhang, Jianqing, et al. "Fedala: Adaptive local aggregation for personalized federated learning." Proceedings of the AAAI Conference on Artificial Intelligence. Vol. 37. No. 9. 2023. [2] McMahan, Brendan, et al. "Communication-efficient learning of deep networks from decentralized data." Artificial intelligence and statistics. PMLR, 2017. [3] Zhu, Ligeng, Zhijian Liu, and Song Han. "Deep leakage from gradients." Advances in neural information processing systems 32 (2019). [4] Zhang, Jianqing, et al. "Gpfl: Simultaneously learning global and personalized feature information for personalized federated learning." Proceedings of the IEEE/CVF International Conference on Computer Vision. 2023. 文章原文