fluke
Federated learning framework made by researchers for researchers!
fluke: federated learning utility framework for experimentation and research
fluke is a Python package that provides a framework for federated learning research. It is designed to be modular and extensible, allowing researchers to easily implement and test new federated learning algorithms. fluke provides a set of pre-implemented state-of-the-art federated learning algorithms that can be used as a starting point for research or as a benchmark for comparison.
Installation
fluke is a Python package that can be installed via pip. To install it, you can run the following command:
pip install fluke-fl
Run a federated algorithm
To run an algorithm in fluke you need to create two configuration files:
-
EXP_CONFIG: the experiment configuration file (independent from the algorithm); -
ALG_CONFIG: the algorithm configuration file;
Then, you can run the following command:
fluke --config=EXP_CONFIG federation ALG_CONFIG
You can find some examples of these files in the configs folder of the repository.
Example
Let say you want to run the classic FedAvg algorithm on the MNIST dataset. Then, using the configuration files exp.yaml and fedavg.yaml, you can run the following command:
fluke --config=path_to_folder/exp.yaml federation path_to_folder/fedavg.yaml
where path_to_folder is the path to the folder containing the configuration files.
Documentation
The documentation for fluke can be found here. It contains detailed information about the package, including how to install it, how to run an experiment, and how to implement new algorithms.
Tutorials
Tutorials on how to use fluke can be found here. In the following, you can find some quick tutorials to get started with fluke:
- Getting started with
flukeAPI - Run your algorithm in
fluke - Use your own model with
fluke - Add your dataset and use it with
fluke
fluke has been presented at the WAFL workshop hosted in ECML PKDD 2024. These are the slides.
Contributing
If you have suggestions for how fluke could be improved, or want to report a bug, open an issue! We’d love all and any contributions.
For more, check out the Contributing Guide.
Authors
- Mirko Polato - Idealization, Design, Development, Testing, and Documentation
- Roberto Esposito - Testing
- Samuele Fonio - Testing