NIID-Bench:非独立同分布数据场景下的联邦学习基准
项目介绍
NIID-Bench 是一个专注于非独立同分布(Non-IID)数据场景下的联邦学习算法基准测试项目。该项目基于论文《Federated Learning on Non-IID Data Silos: An Experimental Study》开发,旨在为研究人员提供一个全面的平台,用于评估和比较不同联邦学习算法在非独立同分布数据环境下的性能。
NIID-Bench 实现了四种联邦学习算法(FedAvg、FedProx、SCAFFOLD 和 FedNova),并涵盖了三种非独立同分布设置(标签分布偏斜、特征分布偏斜和数量偏斜)以及九个数据集(MNIST、Cifar-10、Fashion-MNIST、SVHN、生成的3D数据集、FEMNIST、adult、rcv1、covtype)。此外,NIID-Bench 还支持多种数据分割策略,如基于数量的标签不平衡、基于分布的标签不平衡、基于噪声的特征不平衡等。
项目技术分析
NIID-Bench 的核心技术在于其对非独立同分布数据场景的模拟和处理。项目通过 partition.py
脚本实现了对表格数据集的非独立同分布分割,并提供了多种分割策略。对于图像数据集,项目提供了 partition_data
函数,用户可以根据需要自定义数据加载器。
此外,NIID-Bench 还集成了 MOON 算法,并增加了 CIFAR-100 和 Tiny-ImageNet 数据集的支持,进一步扩展了其应用范围。项目通过 experiments.py
脚本提供了丰富的参数配置选项,用户可以根据需要调整模型架构、数据集、算法、学习率等参数,进行灵活的实验配置。
项目及技术应用场景
NIID-Bench 适用于以下应用场景:
-
联邦学习研究:研究人员可以使用 NIID-Bench 来评估和比较不同联邦学习算法在非独立同分布数据场景下的性能,从而推动联邦学习技术的发展。
-
数据隐私保护:在数据隐私保护要求较高的场景中,联邦学习可以在不共享原始数据的情况下进行模型训练。NIID-Bench 可以帮助研究人员探索如何在非独立同分布数据环境下实现高效的联邦学习。
-
多源数据融合:在多源数据融合的场景中,不同数据源的数据分布可能存在显著差异。NIID-Bench 提供了一种有效的工具,帮助研究人员在非独立同分布数据环境下进行模型训练和评估。
项目特点
-
全面的非独立同分布设置:NIID-Bench 涵盖了多种非独立同分布设置,包括标签分布偏斜、特征分布偏斜和数量偏斜,能够全面评估联邦学习算法在不同数据分布下的性能。
-
丰富的数据集支持:项目支持九个常用数据集,并提供了对 CIFAR-100 和 Tiny-ImageNet 的支持,满足不同研究需求。
-
灵活的实验配置:NIID-Bench 提供了丰富的参数配置选项,用户可以根据需要调整模型架构、数据集、算法、学习率等参数,进行灵活的实验配置。
-
开源社区支持:NIID-Bench 是一个开源项目,研究人员可以在 NIID-Bench 挑战 上测试他们的算法,上传代码并参与排行榜,促进社区的交流与合作。
总结
NIID-Bench 是一个功能强大且灵活的联邦学习基准测试工具,特别适用于非独立同分布数据场景下的算法评估和研究。无论你是联邦学习领域的研究人员,还是对数据隐私保护和多源数据融合感兴趣的开发者,NIID-Bench 都将成为你不可或缺的工具。立即访问 NIID-Bench GitHub 仓库,开始你的联邦学习探索之旅吧!