Flower - A Friendly Federated Learning Framework
Project description
Flower - A Friendly Federated Learning Framework
Website |
Blog |
Docs |
Conference |
Slack
Flower (flwr
) is a framework for building federated learning systems. The
design of Flower is based on a few guiding principles:
-
Customizable: Federated learning systems vary wildly from one use case to another. Flower allows for a wide range of different configurations depending on the needs of each individual use case.
-
Extendable: Flower originated from a research project at the Univerity of Oxford, so it was build with AI research in mind. Many components can be extended and overridden to build new state-of-the-art systems.
-
Framework-agnostic: Different machine learning frameworks have different strengths. Flower can be used with any machine learning framework, for example, PyTorch, TensorFlow, Hugging Face Transformers, PyTorch Lightning, MXNet, scikit-learn, JAX, TFLite, or even raw NumPy for users who enjoy computing gradients by hand.
-
Understandable: Flower is written with maintainability in mind. The community is encouraged to both read and contribute to the codebase.
Meet the Flower community on flower.dev!
Documentation
- Installation
- Quickstart (TensorFlow)
- Quickstart (PyTorch)
- Quickstart (Hugging Face [code example])
- Quickstart (PyTorch Lightning [code example])
- Quickstart (MXNet)
- Quickstart (JAX [code example])
- Quickstart (scikit-learn)
- Quickstart (TFLite on Android [code example])
Flower Baselines
Flower Baselines is a collection of community-contributed experiments that reproduce the experiments performed in popular federated learning publications. Researchers can build on Flower Baselines to quickly evaluate new ideas:
- FedBN: Federated Learning on non-IID Features via Local Batch Normalization:
- Adaptive Federated Optimization
Check the Flower documentation to learn more: Using Baselines
The Flower community loves contributions! Make your work more visible and enable others to build on it by contributing it as a baseline: Contributing Baselines
Flower Usage Examples
A number of examples show different usage scenarios of Flower (in combination with popular machine learning frameworks such as PyTorch or TensorFlow). To run an example, first install the necessary extras:
Quickstart examples:
- Quickstart (TensorFlow)
- Quickstart (PyTorch)
- Quickstart (Hugging Face)
- Quickstart (PyTorch Lightning)
- Quickstart (MXNet)
- Quickstart (scikit-learn)
- Quickstart (TFLite on Android)
Other examples:
- Raspberry Pi & Nvidia Jetson Tutorial
- Android & TFLite
- PyTorch: From Centralized to Federated
- MXNet: From Centralized to Federated
- JAX: From Centralized to Federated
- Advanced Flower with TensorFlow/Keras
- Single-Machine Simulation of Federated Learning Systems
Community
Flower is built by a wonderful community of researchers and engineers. Join Slack to meet them, contributions are welcome.
Citation
If you publish work that uses Flower, please cite Flower as follows:
@article{beutel2020flower,
title={Flower: A Friendly Federated Learning Research Framework},
author={Beutel, Daniel J and Topal, Taner and Mathur, Akhil and Qiu, Xinchi and Parcollet, Titouan and Lane, Nicholas D},
journal={arXiv preprint arXiv:2007.14390},
year={2020}
}
Please also consider adding your publication to the list of Flower-based publications in the docs, just open a Pull Request.
Contributing to Flower
We welcome contributions. Please see CONTRIBUTING.md to get started!
Project details
Release history Release notifications | RSS feed
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
Built Distribution
Hashes for flwr-nightly-0.19.0.dev20220330.tar.gz
Algorithm | Hash digest | |
---|---|---|
SHA256 | 2af697cb77082619f59aec479cf02070160b17bbbcdda17c9c23129f4d7f2b6a |
|
MD5 | 8ee59532c1ac617d6a5d02ae82438062 |
|
BLAKE2b-256 | eb9e28580a03b38ec61b8e0e8b09b13b1d7984a18c04f68dfcb015923fb49138 |
Hashes for flwr_nightly-0.19.0.dev20220330-py3-none-any.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | 8a043a5b0f9c7d533133dbc90869e85f3b728c7cdc4124b344570874a8d37b69 |
|
MD5 | b4a59f132b14224199c666dc5ae7e265 |
|
BLAKE2b-256 | de0ec78630954fd24fcebbff529980e23cb26734a130f7d6d50f19d4d1c383ec |