# ๐Ÿ“˜ Introduction **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. It empowers researchers and developers to build and experiment with federated learning models without relying on centralized servers, looking towards a more democratized and descentralized future for the ML community. ## ๐Ÿค” Why P2PFL? Traditional federated learning often depends on a central server to orchestrate training and manage communication between participants. This approach introduces several limitations and delegates too many responsabilities to the central server. P2PFL allows nodes to communicate directly with each other, thus **reducing the dependence on an external server**. ## โœจ Key Features P2PFL offers a range of features designed to make decentralized federated learning accessible and efficient. For detailed information, please refer to our [components](components/comp-index.md). | Feature | Description | |-------------------|--------------------------------------------------| | ๐Ÿš€ Easy to Use | [Get started](https://p2pfl.github.io/p2pfl/quickstart.html) 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 | Designed to be easy to modify.| | ๐Ÿ“ˆ Real-time Monitoring | Manage and track experiment through [P2PFL Web Services platform](https://p2pfl.com). | | ๐Ÿง  ML Frameworks | Seamlessly integrate [PyTorch](https://pytorch.org/), [TensorFlow/Keras](https://www.tensorflow.org/), and [JAX](https://github.com/google/jax) models. | | ๐Ÿ“ก Communication Protocol Agnostic | Choose the communication protocol that best suits your needs (e.g., [gRPC](https://grpc.io/)). | | ๐Ÿ”Œ Integrations | Enhanced capabilities through integrations: [Hugging Face Datasets](https://huggingface.co/datasets), ML frameworks, communication protocols, and [Ray](https://www.ray.io/) for large-scale simulations. | ## ๐Ÿซ‚ Who Should Use P2PFL? In an era where decentralized AI and privacy-preserving technologies are gaining prominence, P2PFL emerges as a general-purpose tool designed for users aligned with the goals of federated learning, particularly those focusing on decentralized setups. It's a valuable resource for researching, developing, and deploying solutions in this evolving landscape. Specifically, P2PFL caters to: - **๐Ÿงช Researchers** Exploring novel decentralized algorithms and protocols. A flexible platform for testing hypotheses and validating research in federated learning. - **๐Ÿ’ป Developers** Create machine learning based applications that are scalable, privacy-aware and allow for decentralized data management. - **๐ŸŽ“ Educators** Teaching and learning about decentralized systems and federated learning. A hands-on tool for exploring concepts, conducting experiments, and showcasing real-world use cases. ## ๐ŸŒ Getting started P2PFL is designed to simplify the journey to federated learning. A set of resources is provided to familiarize users with the framework. Start by referring to the simple [installation guide](installation.md). Once the environment is set up, it is suggested to continue with the [quickstart](quickstart.md) and the various [tutorials](tutorials/index.md) to get an overview of the library's functionality. For a deeper dive, review the [components](components/comp-index.md) to understand the underlying architecture. If you need further clarification, the implementation documentation provides detailed information. If you still have questions, feel free to open an [issue](https://github.com/p2pfl/p2pfl/issues) or contact the development team directly. Help is at your disposal. ## ๐Ÿค Contributing We are compromised with the community to develop a more democratic AI ecosystem. so feel free to contribute! See [contributing](contributing.md) for guidelines on how to start. Please, adhere to the project's code of conduct that you can find on [code of conduct](https://github.com/p2pfl/p2pfl/blob/main/CODE_OF_CONDUCT.md). ## ๐Ÿ’ฌ Community Connect with us and stay updated: - [**GitHub Issues:**](https://github.com/p2pfl/p2pfl/issues) - For reporting bugs and requesting features. - [**Google Group:**](https://groups.google.com/g/p2pfl) - For discussions and announcements. - [**Slack:**](https://join.slack.com/t/p2pfl/shared_invite/zt-2lbqvfeqt-FkutD1LCZ86yK5tP3Duztw) - For real-time conversations and support.