Flower:一个友好的联邦学习框架
Flower (flwr
) 是一个用于构建联邦学习系统的框架。Flower 的设计基于几个指导原则:
-
可定制性:联邦学习系统在不同的使用案例中差异很大。Flower 允许根据每个单独用例的需求进行各种不同配置。
-
可扩展性:Flower 起源于牛津大学的一个研究项目,因此它的设计考虑了人工智能研究。许多组件可以扩展和覆盖,以构建新的最先进的系统。
-
框架无关性:不同的机器学习框架有不同的优势。Flower 可以与任何机器学习框架一起使用,例如 PyTorch、TensorFlow、Hugging Face Transformers、PyTorch Lightning、scikit-learn、JAX、TFLite、MONAI、fastai、MLX、XGBoost、Pandas 用于联邦分析,甚至对于喜欢手动计算梯度的用户来说,NumPy 也可以使用。
-
易于理解:Flower 的代码编写考虑了可维护性。社区鼓励阅读和贡献代码库。
在 flower.ai 与 Flower 社区见面!
联邦学习教程
Flower 的目标是让联邦学习对所有人都易于访问。这一系列教程介绍了联邦学习的基本原理以及如何在 Flower 中实现它们。
-
什么是联邦学习?
(或打开 Jupyter Notebook)
-
联邦学习简介
(或打开 Jupyter Notebook)
-
在联邦学习中使用策略
(或打开 Jupyter Notebook)
-
构建联邦学习策略
(或打开 Jupyter Notebook)
-
联邦学习的定制客户端
(或打开 Jupyter Notebook)
敬请期待,更多教程即将上线。主题包括联邦学习中的隐私和安全,以及扩展联邦学习。
30 分钟联邦学习教程
(或打开 Jupyter Notebook)
文档
- 安装
- 快速入门(TensorFlow)
- 快速入门(PyTorch)
- 快速入门(Hugging Face)
- 快速入门(PyTorch Lightning)
- 快速入门(Pandas)
- 快速入门(fastai)
- 快速入门(JAX)
- 快速入门(scikit-learn)
- 快速入门(Android [TFLite])
- 快速入门(iOS [CoreML])
Flower 基准
Flower 基准是一系列由社区贡献的项目,重现了流行的联邦学习论文中的实验。研究人员可以基于 Flower 基准快速评估新想法。Flower 社区欢迎贡献!通过将您的工作作为基准贡献,使其更加可见并让他人能够在此基础上进行构建!
- DASHA
- DepthFL
- FedBN
- FedMeta
- FedMLB
- FedPer
- FedProx
- FedNova
- HeteroFL
- FedAvgM
- FedStar
- FedWav2vec2
- FjORD
- MOON
- niid-Bench
- TAMUNA
- FedVSSL
- FedXGBoost
- FedPara
- FedAvg
- FedOpt
请参阅Flower基线文档以获取基线的详细分类和附加信息,包括:
Flower使用示例
几个代码示例展示了Flower在不同场景下的使用(结合流行的机器学习框架如PyTorch或TensorFlow)。
快速入门示例:
- 快速入门(TensorFlow)
- 快速入门(PyTorch)
- 快速入门(Hugging Face)
- 快速入门(PyTorch Lightning)
- 快速入门(fastai)
- 快速入门(Pandas)
- 快速入门(JAX)
- 快速入门(MONAI)
- 快速入门(scikit-learn)
- 快速入门(Android [TFLite])
- 快速入门(iOS [CoreML])
- 快速入门(MLX)
- 快速入门(XGBoost)
其他示例:
- 树莓派和Nvidia Jetson教程
- PyTorch:从集中式到联邦式
- 纵向联邦学习
- OpenAI的Whisper的联邦微调
- 大型语言模型的联邦微调
- 视觉Transformer的联邦微调
- TensorFlow/Keras高级Flower应用
- PyTorch高级Flower应用
- 联邦学习系统的单机模拟(PyTorch) (TensorFlow)
- 全面的Flower+XGBoost
- 通过Docker Compose和Grafana仪表板使用Flower
- 使用lifelines库中的KaplanMeierFitter与Flower
- 使用Opacus实现样本级隐私
- 使用TensorFlow-Privacy实现样本级隐私
- 使用表格数据集与Flower
社区
Flower是由一个出色的研究人员和工程师社区构建的。加入Slack与他们会面,欢迎贡献。
引用
如果您发布使用Flower的作品,请按如下方式引用Flower:
@article{beutel2020flower,
title={Flower: A Friendly Federated Learning Research Framework},
author={Beutel, Daniel J and Topal, Taner and Mathur, Akhil and Qiu, Xinchi and Fernandez-Marques, Javier and Gao, Yan and Sani, Lorenzo and Kwing, Hei Li and Parcollet, Titouan and Gusmão, Pedro PB de and Lane, Nicholas D},
journal={arXiv preprint arXiv:2007.14390},
year={2020}
}
也请考虑将您的出版物添加到文档中的基于Flower的出版物列表中,只需打开一个Pull Request。
贡献Flower
我们欢迎贡献。请参阅CONTRIBUTING.md开始!