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 Gossip protocol.
P2PFL offers a range of features designed to make decentralized federated learning accessible and efficient. For detailed information, please refer to our documentation.
Feature | Description |
---|---|
๐ Easy to Use | Get started quickly with our intuitive API. |
๐ก๏ธ Reliable | Built for fault tolerance and resilience. |
๐ Scalable | Leverages the power of peer-to-peer networks. |
๐งช Versatile | Experiment in simulated or real-world environments. |
๐ Private | Prioritizes data privacy with decentralized architecture. |
๐งฉ Flexible | Integrate with PyTorch and TensorFlow (coming soon!). |
๐ Real-time Monitoring | Manage and track experiment through P2PFL Web Services. |
๐ง Model Agnostic | Use any machine learning model you prefer (e.g., PyTorch models). |
๐ก Communication Protocol Agnostic | Choose the communication protocol that best suits your needs (e.g., gRPC). |
Note: We recommend using Python 3.9 or lower. We have found some compatibility issues with Python 3.10 and PyTorch.
pip install "p2pfl[torch]"
git clone https://github.com/pguijas/p2pfl.git
cd p2pfl
poetry install -E torch
Note: Use the extras (
-E
) flag to install specific dependencies (e.g.,-E torch
). Use--no-dev
to exclude development dependencies.
docker build -t p2pfl .
docker run -it --rm p2pfl bash
To start using P2PFL, follow our quickstart guide in the documentation.
- Documentation: https://pguijas.github.io/p2pfl/
- End-of-Degree Project Report: other/memoria.pdf
- Open Source Project Award Report: other/memoria-open-source.pdf
We welcome contributions! See CONTRIBUTING.md
for guidelines. Please adhere to the project's code of conduct in CODE_OF_CONDUCT.md
.
Connect with us and stay updated:
- GitHub Discussions: - For general discussions, questions, and ideas.
- GitHub Issues: - For reporting bugs and requesting features.
- Google Group: - For discussions and announcements.
- Slack: - For real-time conversations and support.
A big thank you to the community for your interest in P2PFL! We appreciate your support and contributions.