项目简介
FedScale 是一个可扩展的、开源的联邦学习(Federated Learning,简称FL)引擎和基准测试平台。该平台为实现FL算法提供了高级API,可以在各种不同的硬件和软件环境中大规模部署和评估这些算法。此外,FedScale 还包含一个大型联邦学习基准,涵盖了从图像分类、物体检测到语言建模和语音识别的一系列任务。同时,FedScale 提供了数据集,以便在实际部署FL时,能够真实地模拟FL训练环境。
快速开始
快速安装(Linux)
只需运行 install.sh
脚本:
source install.sh # 如果需要CUDA,请添加`--cuda`
pip install -e .
如果对conda/CUDA的不同版本有偏好,可以修改 install.sh
。
源码安装(Linux/MacOS)
如果已经安装 Anaconda 并克隆了 FedScale 项目,可以按照以下步骤:
cd FedScale
# MacOS 用户需将 ~/.bashrc 替换为 ~/.bash_profile
FEDSCALE_HOME=$(pwd)
echo export FEDSCALE_HOME=$(pwd) >> ~/.bashrc
echo alias fedscale=\'bash $FEDSCALE_HOME/fedscale.sh\' >> ~/.bashrc
conda init bash
. ~/.bashrc
conda env create -f environment.yml
conda activate fedscale
pip install -e .
如需使用GPU支持,请安装 NVIDIA 的 CUDA 10.2 或更高版本。
学习指南
安装好 FedScale 后,可以通过以下教程开始你的探索:
- 探索 FedScale 数据集
- 部署你的FL实验
- 实现一个FL算法
- 在智能手机上部署FL
FedScale 数据集
FedScale 包含超过20个大规模、异构的FL数据集,以及超过70种不同的模型,涵盖计算机视觉(CV)、自然语言处理(NLP)和其他任务。每个数据集都包含训练、验证和测试数据集。我们感谢这些原始数据集的贡献者。有关详细信息,请参阅 ./benchmark/dataset
目录和数据集的README文件。
FedScale 运行时
FedScale 运行时是一个可扩展的部署和评估平台,简化并标准化FL实验设置和模型评估。它是从我们之前的系统 Oort 演变而来的,该系统在每一轮中能够很好地扩展以模拟数千个客户端的FL训练。
请到 ./fedscale/cloud
目录,并按照README文件设置FL训练脚本,以及用于实际设备部署的 README。
项目结构
项目根目录
|---- fedscale # FedScale 源代码
|---- cloud # FedScale服务的核心
|---- utils # 辅助功能(例如,模型库和FL优化器)
|---- edge # 实际部署的后端(例如,移动设备)
|---- dataloaders # 基准数据集的数据加载器
|---- docker # FedScale Docker和容器部署(例如,Kubernetes)
|---- benchmark # FedScale 数据集和配置
|---- dataset # 基准数据集
|---- configs # 示例配置
|---- scripts # 安装依赖项的脚本
|---- examples # 实现新FL设计的示例
|---- docs # FedScale 教程和API
参考文献
使用FedScale代码或数据学习更多信息时,请阅读或引用相关文献。
@inproceedings{fedscale-icml22,
title={{FedScale}: Benchmarking Model and System Performance of Federated Learning at Scale},
author={Fan Lai and Yinwei Dai and Sanjay S. Singapuram and Jiachen Liu and Xiangfeng Zhu and Harsha V. Madhyastha and Mosharaf Chowdhury},
booktitle={International Conference on Machine Learning (ICML)},
year={2022}
}
和
@inproceedings{oort-osdi21,
title={Oort: Efficient Federated Learning via Guided Participant Selection},
author={Fan Lai and Xiangfeng Zhu and Harsha V. Madhyastha and Mosharaf Chowdhury},
booktitle={USENIX Symposium on Operating Systems Design and Implementation (OSDI)},
year={2021}
}
贡献与沟通
如发现Bug或改善FedScale,欢迎提交问题或拉取请求。对于每次提交,请添加相应更改的单元测试,并确保通过运行 pytest fedscale/tests
的所有单元测试。如果有任何问题或建议,请加入我们的Slack频道或给我们发送电子邮件。