Skip to main content

A blazing-fast and lightweight simulation framework for Federated Learning.

Project description

A blazing-fast and lightweight simulation framework for Federated Learning

uv PyPI Version License Python Versions

Why Choose BlazeFL?

  • 🚀 High Performance: Optimized for single-node simulations, BlazeFL allows you to adjust the degree of parallelism. For example, if you want to simulate 100 clients on a single node but lack the resources to run them all concurrently, you can configure 10 parallel processes to manage the simulation efficiently. Additionally, BlazeFL enhances performance by storing shared parameters on disk instead of using shared memory, simplifying memory management and reducing overhead.

  • 🔧 Extensibility: BlazeFL provides interfaces solely for communication and parallelization, avoiding excessive abstraction. This design ensures that the framework remains flexible and adaptable to various use cases.

  • 📦 Minimal Dependencies: Minimal Dependencies: The core components of BlazeFL rely only on PyTorch, ensuring a lightweight and straightforward setup.

  • 🔄 Robust Reproducibility: Even in multi-process environments, BlazeFL offers utilities to save and restore seed states, ensuring consistent and reproducible results across simulations.

  • 🏷️ Type Hint Support: The framework fully supports type hints, enhancing code readability and maintainability.

  • 🔗 Loose Compatibility with FedLab: Inspired by FedLab, BlazeFL maintains a degree of compatibility, facilitating an easy transition to production-level implementations when necessary.

Quick Start

Installation

BlazeFL is available on PyPI and can be installed using your preferred package manager.

For example:

uv add blazefl
# or
poetry add blazefl
# or
pip install blazefl

Running Examples

Example code is available in the examples/quickstart-fedavg directory.

FL Simulation Benchmarks

Benchmarks were conducted using Google Cloud’s Compute Engine with the following specifications:

Machine Configuration
  • Machine Type: a2-highgpu-1g (vCPU count: 12, VM memory: 85 GB)
  • CPU Platform: Intel Cascade Lake
  • GPU: 1 x NVIDIA A100 40GB
  • Boot Disk: 250 GB SSD
Benchmark Setup
  • Algorithm: FedAvg
  • Dataset: CIFAR-10
  • Number of Clients: 100
  • Communication Rounds: 5
  • Local Training: 5 epochs, Learning Rate: 0.1, Batch Size: 50
  • Role
    • Server: Aggregation
    • Clients: Training and Evaluation (80% training, 20% evaluation)
  • Models

For benchmarking purposes, we utilized Flower’s Quickstart Example as a baseline to evaluate BlazeFL’s performance and efficiency.

CNN ResNet18

Contributing

We welcome contributions from the community! If you'd like to contribute to this project, please follow these guidelines:

Issues

If you encounter a bug, have a feature request, or would like to suggest an improvement, please open an issue on the GitHub repository. Make sure to provide detailed information about the problem or suggestion.

Pull Requests

We gladly accept pull requests! Before submitting a pull request, please ensure the following:

  1. Fork the repository and create your branch from main.
  2. Ensure your code adheres to the project's coding standards.
  3. Test your changes thoroughly.
  4. Make sure your commits are descriptive and well-documented.
  5. Update the README and any relevant documentation if necessary.

Code of Conduct

Please note that this project is governed by our Code of Conduct. By participating, you are expected to uphold this code. Please report any unacceptable behavior.

Thank you for contributing to our project!

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

blazefl-0.1.0rc1.tar.gz (310.0 kB view details)

Uploaded Source

Built Distribution

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

blazefl-0.1.0rc1-py3-none-any.whl (14.9 kB view details)

Uploaded Python 3

File details

Details for the file blazefl-0.1.0rc1.tar.gz.

File metadata

  • Download URL: blazefl-0.1.0rc1.tar.gz
  • Upload date:
  • Size: 310.0 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/6.0.1 CPython/3.12.8

File hashes

Hashes for blazefl-0.1.0rc1.tar.gz
Algorithm Hash digest
SHA256 34f1d9ca1d46a2b15ca48b3bd3b9b7edb2dfcebf74ad7d85d365e3a3ff194619
MD5 69abe61041995c35fc77bc6394511fe1
BLAKE2b-256 a6bb1572488d8c7b65ba4fdbe6c7502ed457d76bc8ee5bb6a45d4a2be2e1b9db

See more details on using hashes here.

Provenance

The following attestation bundles were made for blazefl-0.1.0rc1.tar.gz:

Publisher: publish.yaml on kitsuya0828/BlazeFL

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file blazefl-0.1.0rc1-py3-none-any.whl.

File metadata

  • Download URL: blazefl-0.1.0rc1-py3-none-any.whl
  • Upload date:
  • Size: 14.9 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/6.0.1 CPython/3.12.8

File hashes

Hashes for blazefl-0.1.0rc1-py3-none-any.whl
Algorithm Hash digest
SHA256 f15cf8ce045bee45f37f88cd2724cbcbdab0a14961457245af0875245b746593
MD5 ee39d57f73c0522c38ded0b974e39872
BLAKE2b-256 fb5daf45a0f23ce85fc4669c232dee9173dc4df995d416d489242b0f2b338766

See more details on using hashes here.

Provenance

The following attestation bundles were made for blazefl-0.1.0rc1-py3-none-any.whl:

Publisher: publish.yaml on kitsuya0828/BlazeFL

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

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