Skip to content

⚙️ Simplifying the development of privacy-preserving distributed ML models.

License

Notifications You must be signed in to change notification settings

camille-004/nanofed

Repository files navigation

🚀 NanoFed

GitHub Actions Workflow Status PyPI - Python Version Read the Docs GitHub License PyPI - Status

NanoFed: Simplifying the development of privacy-preserving distributed ML models.


🌍 What is Federated Learning?

Federated Learning (FL) is a distributed machine learning paradigm that trains a global model across multiple clients (devices or organizations) without sharing their data. Instead, clients send model updates to a central server for aggregation.

Key Benefits

🌟 Feature Description
🔒 Privacy Preservation Data stays securely on devices.
🚀 Resource Efficiency Decentralized training reduces transfer overhead.
🌐 Scalable AI Enables collaborative training environments.

📦 Installation

Requirements

  • Python 3.10+
  • Dependencies installed automatically

Install with Pip

pip install nanofed

Development Installation

git clone https://github.com/camille-004/nanofed.git
cd nanofed
make install

📖 Documentation

📚 Learn how to use NanoFed in our guides and API references. 👉 Read the Docs


✨ Key Features

  • 🔒 Privacy-First: Keep data on devices while training.
  • 🚀 Easy-to-Use: Simple APIs with seamless PyTorch integration.
  • 🔧 Flexible: Customizable aggregation strategies and extensible architecture.
  • 💻 Production Ready: Robust error handling and logging.

Feature Overview

Feature Description
🔒 Privacy-First Data never leaves devices.
🚀 Intuitive API Built for developers with PyTorch support.
🔧 Flexible Aggregation Supports custom strategies.
💻 Production Ready Async communication, robust error handling.

🔧 Quick Start

Train a model using federated learning in just a few lines of code. Follow the tutorial notebook here.


🛠️ Getting Help

Need assistance? Here are some helpful resources:

Resource Description
📚 Documentation Learn how to use NanoFed effectively.
🐛 Issue Tracker Report bugs or request features.
🛠️ Source Code Browse the NanoFed repository on GitHub.

⚖️ License

NanoFed is licensed under the GNU General Public License (GPL-3.0). See the LICENSE file for details.


👩‍💻 Contributing

Contributions are welcome! We follow the Conventional Commits specification. See our contribution guidelines for detailed instructions.

Example commit message:

feat(client): add retry mechanism

🛠️ Development Roadmap

✅ Completed

Core Features for V1

  • Basic client-server architecture with HTTP communication
  • Simple global model management
  • Basic FedAvg implementation
  • Local training support
  • Support for PyTorch models
  • Synchronous training (all clients must complete before aggregation)
  • Basic error handling and logging

🚀 Future Enhancements

Planned Features

  • Advanced privacy features: Differential Privacy (DP), Secure Multiparty Computation (MPC), Homomorphic Encryption (HE)
  • Asynchronous updates for faster and more flexible training
  • Non-IID data handling for diverse client datasets
  • Custom aggregation strategies for specific use cases
  • gRPC implementation for high-performance communication
  • Model compression techniques to reduce bandwidth usage
  • Fault tolerance mechanisms for unreliable clients or servers

Made with ❤️ and 🧠 by Camille Dunning.

About

⚙️ Simplifying the development of privacy-preserving distributed ML models.

Topics

Resources

License

Stars

Watchers

Forks

Packages

No packages published

Languages