Skip to content

pguijas/p2pfl

Repository files navigation

GitHub Logo

P2PFL - Federated Learning over P2P networks

GitHub license GitHub issues GitHub contributors GitHub forks GitHub stars GitHub activity

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.

✅ Features

  • 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

📥 Installation

Note We recommend using Python 3.9 or lower. We have found some compatibility issues with Python 3.10 and PyTorch.

👨🏼‍💻 For users

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).

👨🏼‍🔧 For developers

🐍 Python

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

🐳 Docker

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

📚 Documentation

🚀 TO DO

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

👫 Contributing

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).

💬 Google Group

If you have any questions, or you to be notified of any updates, you can join the Google Group here.

📜 License

GNU General Public License, Version 3.0

About

P2P Federated Learning (p2pfl) is a decentralized federated learning library, it allows creating basic federated learning systems on p2p networks using gossip protocols.

Topics

Resources

License

Code of conduct

Stars

Watchers

Forks

Packages

No packages published

Languages