FLoX (Federated Learning on funcX) is a Python library for serverless Federated Learning experiments. FLoX makes it easy and fast to set up your FL infrastructure, allowing you to start running FL workflows in under 5 minutes. Follow our Quickstart tutorial and examples to get started! You can read the associated paper here.
To get started with FLoX, check out this Google Colab tutorial.
Controller is a device from which Federated Learning is facilitated, such as your laptop. Endpoints are devices that participate in Federated Learning, such as Raspberry Pis.
Use the package manager pip to install flox on the Controller:
(.venv) $ pip install pyflox
To be able to include your endpoints into the Federated Learning process, you need to install funcx-endpoint on the endpoints:
(.endpoint_venv) $ python3 -m pipx install funcx_endpoint
Finally, install compatible versions of PyTorch
or Tensorflow on both the Controller and endpoints.
As of now, FLoX supports Tensorflow and PyTorch, although you can add support for your frameworks by creating a new
ModelTrainer. See flox.logic
and examples of ModelTrainers in flox.model_trainers
.
Note: funcX-endpoint
is only supported on Linux.
FLoX Controller functionality is supported on MacOS, Linux and Windows.
Contributions are welcome. Please see CONTRIBUTING.md.
Complete documentation for FLoX is available here.
If you publish work that uses FLoX, please cite FLoX as follows:
- @INPROCEEDINGS{kotsehub_flox_2022,
- author={Kotsehub, Nikita and Baughman, Matt and Chard, Ryan and Hudson, Nathaniel and Patros, Panos and Rana, Omer and Foster, Ian and Chard, Kyle}, booktitle={2022 IEEE 18th International Conference on e-Science (e-Science)}, title={FLoX: Federated Learning with FaaS at the Edge}, year={2022}, volume={}, number={}, pages={11-20}, doi={10.1109/eScience55777.2022.00016}}