Skip to main content

A lightweight federated learning library

Project description

🚀 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:

import asyncio
from nanofed import HTTPClient, TorchTrainer, TrainingConfig

async def run_client(client_id: str, server_url: str):
    training_config = TrainingConfig(epochs=1, batch_size=256, learning_rate=0.1)
    async with HTTPClient(server_url, client_id) as client:
        model_state, _ = await client.fetch_global_model()
        await client.submit_update(model_state)

if __name__ == "__main__":
    asyncio.run(run_client("client1", "http://localhost:8080"))

🛠️ 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.

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

nanofed-0.1.4.tar.gz (34.2 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

nanofed-0.1.4-py3-none-any.whl (41.5 kB view details)

Uploaded Python 3

File details

Details for the file nanofed-0.1.4.tar.gz.

File metadata

  • Download URL: nanofed-0.1.4.tar.gz
  • Upload date:
  • Size: 34.2 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: poetry/1.8.5 CPython/3.12.7 Linux/6.5.0-1025-azure

File hashes

Hashes for nanofed-0.1.4.tar.gz
Algorithm Hash digest
SHA256 4ffa1daf4cd98f1e60a3bdeab5b99152386e7c31e68df651ed661480ad87ff41
MD5 af71d9d2dda872e2659746711a6d5448
BLAKE2b-256 ac2ee961c448a58cc3ba07e6bfa19096fe2b66bd3d4ca1b36a3b91c89125d630

See more details on using hashes here.

File details

Details for the file nanofed-0.1.4-py3-none-any.whl.

File metadata

  • Download URL: nanofed-0.1.4-py3-none-any.whl
  • Upload date:
  • Size: 41.5 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: poetry/1.8.5 CPython/3.12.7 Linux/6.5.0-1025-azure

File hashes

Hashes for nanofed-0.1.4-py3-none-any.whl
Algorithm Hash digest
SHA256 383900cb02e44d62a882e248771c9ba54d7dc48cc11846a189d9949f251b976c
MD5 e82a723fd351c59c4a29f5023c8098a5
BLAKE2b-256 759ea44f349e82dc653f8770e319026dc54475fe6aec2a7e2538ad04b7d765b1

See more details on using hashes here.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page