![GitHub Logo](other/logo.png)
# P2PFL - Federated Learning over P2P networks
[![GitHub license](https://img.shields.io/github/license/pguijas/federated_learning_p2p)](https://github.com/pguijas/federated_learning_p2p/blob/main/LICENSE.md)
[![GitHub issues](https://img.shields.io/github/issues/pguijas/federated_learning_p2p)](https://github.com/pguijas/federated_learning_p2p/issues)
![GitHub contributors](https://img.shields.io/github/contributors/pguijas/federated_learning_p2p)
![GitHub forks](https://img.shields.io/github/forks/pguijas/federated_learning_p2p)
![GitHub stars](https://img.shields.io/github/stars/pguijas/federated_learning_p2p)
![GitHub activity](https://img.shields.io/github/commit-activity/m/pguijas/federated_learning_p2p)
[![Coverage badge](https://img.shields.io/badge/dynamic/json?color=brightgreen&label=coverage&query=%24.message&url=https%3A%2F%2Fraw.githubusercontent.com%2Fpguijas%2Fp2pfl%2Fpython-coverage-comment-action-data%2Fendpoint.json)](https://htmlpreview.github.io/?https://github.com/pguijas/p2pfl/blob/python-coverage-comment-action-data/htmlcov/index.html)
[![Slack](https://img.shields.io/badge/Chat-Slack-red)](https://join.slack.com/t/p2pfl/shared_invite/zt-2lbqvfeqt-FkutD1LCZ86yK5tP3Duztw)
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.
## โจ Key Features
P2PFL offers a range of features designed to make decentralized federated learning accessible and efficient. For detailed information, please refer to our [documentation](https://pguijas.github.io/p2pfl/).
| 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](p2pfl.com). |
| ๐ง 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). |
## ๐ฅ Installation
> **Note:** We recommend using Python 3.9 or lower. We have found some compatibility issues with Python 3.10 and PyTorch.
### ๐จ๐ผโ๐ป For Users
```bash
pip install p2pfl
```
### ๐จ๐ผโ๐ง For Developers
#### ๐ Python (using Poetry)
```bash
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
```bash
docker build -t p2pfl .
docker run -it --rm p2pfl bash
```
## ๐ฌ Quickstart
To start using P2PFL, follow our [quickstart guide](https://pguijas.github.io/p2pfl/quickstart.html/) in the documentation.
## ๐ Documentation & Resources
* **Documentation:** [https://pguijas.github.io/p2pfl/](https://pguijas.github.io/p2pfl)
* **End-of-Degree Project Report:** [other/memoria.pdf](other/memoria.pdf)
* **Open Source Project Award Report:** [other/memoria-open-source.pdf](other/memoria-open-source.pdf)
## ๐ค Contributing
We welcome contributions! See `CONTRIBUTING.md` for guidelines. Please adhere to the project's code of conduct in `CODE_OF_CONDUCT.md`.
## ๐ฌ Community
Connect with us and stay updated:
* [**GitHub Discussions:**](https://github.com/pguijas/p2pfl/discussions) - For general discussions, questions, and ideas.
* [**GitHub Issues:**](https://github.com/pguijas/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.
## โญ Star History
A big thank you to the community for your interest in P2PFL! We appreciate your support and contributions.
[![Star History Chart](https://api.star-history.com/svg?repos=pguijas/p2pfl&type=Date)](https://star-history.com/#pguijas/p2pfl&Date)
## ๐ License
[GNU General Public License, Version 3.0](https://www.gnu.org/licenses/gpl-3.0.en.html)
Raw data
{
"_id": null,
"home_page": "https://pguijas.github.io/p2pfl/",
"name": "p2pfl",
"maintainer": null,
"docs_url": null,
"requires_python": "<4.0,>=3.9",
"maintainer_email": null,
"keywords": "federated learning, fl, peer to peer, p2p, decentralized, data privacy, data security, pytorch",
"author": "Pedro Guijas",
"author_email": "pguijas@gmail.com",
"download_url": "https://files.pythonhosted.org/packages/db/f4/84cfffed73606da542bfa4568ab181119f5244d22d7a1a05ff1cb367b346/p2pfl-0.3.0.tar.gz",
"platform": null,
"description": "![GitHub Logo](other/logo.png)\n\n# P2PFL - Federated Learning over P2P networks\n\n[![GitHub license](https://img.shields.io/github/license/pguijas/federated_learning_p2p)](https://github.com/pguijas/federated_learning_p2p/blob/main/LICENSE.md)\n[![GitHub issues](https://img.shields.io/github/issues/pguijas/federated_learning_p2p)](https://github.com/pguijas/federated_learning_p2p/issues)\n![GitHub contributors](https://img.shields.io/github/contributors/pguijas/federated_learning_p2p)\n![GitHub forks](https://img.shields.io/github/forks/pguijas/federated_learning_p2p)\n![GitHub stars](https://img.shields.io/github/stars/pguijas/federated_learning_p2p)\n![GitHub activity](https://img.shields.io/github/commit-activity/m/pguijas/federated_learning_p2p)\n[![Coverage badge](https://img.shields.io/badge/dynamic/json?color=brightgreen&label=coverage&query=%24.message&url=https%3A%2F%2Fraw.githubusercontent.com%2Fpguijas%2Fp2pfl%2Fpython-coverage-comment-action-data%2Fendpoint.json)](https://htmlpreview.github.io/?https://github.com/pguijas/p2pfl/blob/python-coverage-comment-action-data/htmlcov/index.html)\n[![Slack](https://img.shields.io/badge/Chat-Slack-red)](https://join.slack.com/t/p2pfl/shared_invite/zt-2lbqvfeqt-FkutD1LCZ86yK5tP3Duztw)\n\nP2PFL 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.\n\n## \u2728 Key Features\n\nP2PFL offers a range of features designed to make decentralized federated learning accessible and efficient. For detailed information, please refer to our [documentation](https://pguijas.github.io/p2pfl/).\n\n| Feature | Description |\n|-------------------|--------------------------------------------------|\n| \ud83d\ude80 Easy to Use | Get started quickly with our intuitive API. |\n| \ud83d\udee1\ufe0f Reliable | Built for fault tolerance and resilience. |\n| \ud83c\udf10 Scalable | Leverages the power of peer-to-peer networks. |\n| \ud83e\uddea Versatile | Experiment in simulated or real-world environments.|\n| \ud83d\udd12 Private | Prioritizes data privacy with decentralized architecture.|\n| \ud83e\udde9 Flexible | Integrate with PyTorch and TensorFlow (coming soon!).|\n| \ud83d\udcc8 Real-time Monitoring | Manage and track experiment through [P2PFL Web Services](p2pfl.com). | \n| \ud83e\udde0 Model Agnostic | Use any machine learning model you prefer (e.g., PyTorch models). |\n| \ud83d\udce1 Communication Protocol Agnostic | Choose the communication protocol that best suits your needs (e.g., gRPC). |\n## \ud83d\udce5 Installation\n\n> **Note:** We recommend using Python 3.9 or lower. We have found some compatibility issues with Python 3.10 and PyTorch.\n\n### \ud83d\udc68\ud83c\udffc\u200d\ud83d\udcbb For Users\n\n```bash\npip install p2pfl\n```\n\n### \ud83d\udc68\ud83c\udffc\u200d\ud83d\udd27 For Developers\n\n#### \ud83d\udc0d Python (using Poetry)\n\n```bash\ngit clone https://github.com/pguijas/p2pfl.git\ncd p2pfl\npoetry install -E torch \n```\n\n> **Note:** Use the extras (`-E`) flag to install specific dependencies (e.g., `-E torch`). Use `--no-dev` to exclude development dependencies.\n\n#### \ud83d\udc33 Docker\n\n```bash\ndocker build -t p2pfl .\ndocker run -it --rm p2pfl bash\n```\n\n## \ud83c\udfac Quickstart\n\nTo start using P2PFL, follow our [quickstart guide](https://pguijas.github.io/p2pfl/quickstart.html/) in the documentation.\n\n## \ud83d\udcda Documentation & Resources\n\n* **Documentation:** [https://pguijas.github.io/p2pfl/](https://pguijas.github.io/p2pfl)\n* **End-of-Degree Project Report:** [other/memoria.pdf](other/memoria.pdf)\n* **Open Source Project Award Report:** [other/memoria-open-source.pdf](other/memoria-open-source.pdf)\n\n## \ud83e\udd1d Contributing\n\nWe welcome contributions! See `CONTRIBUTING.md` for guidelines. Please adhere to the project's code of conduct in `CODE_OF_CONDUCT.md`.\n\n## \ud83d\udcac Community\n\nConnect with us and stay updated:\n\n* [**GitHub Discussions:**](https://github.com/pguijas/p2pfl/discussions) - For general discussions, questions, and ideas.\n* [**GitHub Issues:**](https://github.com/pguijas/p2pfl/issues) - For reporting bugs and requesting features.\n* [**Google Group:**](https://groups.google.com/g/p2pfl) - For discussions and announcements.\n* [**Slack:**](https://join.slack.com/t/p2pfl/shared_invite/zt-2lbqvfeqt-FkutD1LCZ86yK5tP3Duztw) - For real-time conversations and support.\n\n\n## \u2b50 Star History\n\nA big thank you to the community for your interest in P2PFL! We appreciate your support and contributions.\n\n[![Star History Chart](https://api.star-history.com/svg?repos=pguijas/p2pfl&type=Date)](https://star-history.com/#pguijas/p2pfl&Date)\n\n## \ud83d\udcdc License\n\n[GNU General Public License, Version 3.0](https://www.gnu.org/licenses/gpl-3.0.en.html)\n",
"bugtrack_url": null,
"license": "GPL-3.0-only",
"summary": "A p2p federated learning framework",
"version": "0.3.0",
"project_urls": {
"Documentation": "https://pguijas.github.io/p2pfl",
"Homepage": "https://pguijas.github.io/p2pfl/",
"Repository": "https://github.com/pguijas/p2pfl"
},
"split_keywords": [
"federated learning",
" fl",
" peer to peer",
" p2p",
" decentralized",
" data privacy",
" data security",
" pytorch"
],
"urls": [
{
"comment_text": "",
"digests": {
"blake2b_256": "a6589c9c7cd9c2ef1d05aab8c9e1bee00692a038ba63d34391a007b1a5fdabb9",
"md5": "4e712bcb5e8f47a8a7a4847a58813460",
"sha256": "6c0a8a830acf6b6a4a921f9f345ad3a8f054e30654dcf2af208e5741ea2a4318"
},
"downloads": -1,
"filename": "p2pfl-0.3.0-py3-none-any.whl",
"has_sig": false,
"md5_digest": "4e712bcb5e8f47a8a7a4847a58813460",
"packagetype": "bdist_wheel",
"python_version": "py3",
"requires_python": "<4.0,>=3.9",
"size": 120735,
"upload_time": "2024-08-04T23:24:43",
"upload_time_iso_8601": "2024-08-04T23:24:43.506873Z",
"url": "https://files.pythonhosted.org/packages/a6/58/9c9c7cd9c2ef1d05aab8c9e1bee00692a038ba63d34391a007b1a5fdabb9/p2pfl-0.3.0-py3-none-any.whl",
"yanked": false,
"yanked_reason": null
},
{
"comment_text": "",
"digests": {
"blake2b_256": "dbf484cfffed73606da542bfa4568ab181119f5244d22d7a1a05ff1cb367b346",
"md5": "fa161dc00fa741eb9f04966841c6f3fe",
"sha256": "99971e211ae6ea055fe85cd0adac2a7106f973bb856e95495703f5bcca976865"
},
"downloads": -1,
"filename": "p2pfl-0.3.0.tar.gz",
"has_sig": false,
"md5_digest": "fa161dc00fa741eb9f04966841c6f3fe",
"packagetype": "sdist",
"python_version": "source",
"requires_python": "<4.0,>=3.9",
"size": 66338,
"upload_time": "2024-08-04T23:24:45",
"upload_time_iso_8601": "2024-08-04T23:24:45.102560Z",
"url": "https://files.pythonhosted.org/packages/db/f4/84cfffed73606da542bfa4568ab181119f5244d22d7a1a05ff1cb367b346/p2pfl-0.3.0.tar.gz",
"yanked": false,
"yanked_reason": null
}
],
"upload_time": "2024-08-04 23:24:45",
"github": true,
"gitlab": false,
"bitbucket": false,
"codeberg": false,
"github_user": "pguijas",
"github_project": "p2pfl",
"travis_ci": false,
"coveralls": false,
"github_actions": true,
"lcname": "p2pfl"
}