P2PFL is a general-purpose open-source library for the execution (simulated and in real environments) of Decentralized Federated Learning systems, specifically making use of P2P networks and the Gossisp protocol.
- Easy to use and extend
- Fault tolerant
- Decentralized and Scalable
- Simulated (to-do, changed in 0.2.0) and real environments
- Privacy-preserving
- Framework agnostic
Note We recommend using Python 3.9 or lower. We have found some compatibility issues with Python 3.10 and PyTorch.
To install the library, you can simply run:
pip install p2pfl
Or you can install it from source. This installation method is recommended for developers (detailed in the next section).
To install the library for development we recommend using a virtual environment. We use Poetry for this purpose.
git clone https://github.com/pguijas/p2pfl.git
cd p2pfl
poetry install
You can also use the library with Docker. We provide a Docker image with the library installed. You can use it as follows:
docker ... # TODO
Note Don't be shy, share your ideas with us!
- Agnostic installation with variants for different frameworks (include TensorFlow)
- Add secure channels and node authentication
- Improved simulation environment
- Control panel
- add FEMNIST example
- add typing
- New aggregation methods
- Hot node inclusion
- Secure aggregation
- Non trainable nodes (gossip nodes) to increase the efficiency of the network
- gossip learning option
Contributions are always welcome!
See CONTRIBUTING.md
(CONTRIBUTING) for ways to get started.
Please adhere to this project's code of conduct specified in CODE_OF_CONDUCT.md
(CODE_OF_CONDUCT).
If you have any questions, or you to be notified of any updates, you can join the Google Group here.