adap / flower

Flower: A Friendly Federated Learning Framework
https://flower.ai
Apache License 2.0
4.77k stars 827 forks source link

Add Flower Baseline: FedHe #2497

Open yashmaurya01 opened 10 months ago

yashmaurya01 commented 10 months ago

Paper

FedHe: Heterogeneous Models and Communication-Efficient Federated Learning

Link

https://arxiv.org/abs/2110.09910

Maybe give motivations about why the paper should be implemented as a baseline.

FL typically assumes that all edge devices share the same machine learning model during training, such as an identical neural network architecture. However, in reality, the computational and storage capabilities of various devices may differ. Furthermore, minimizing communication overhead is a challenging task but crucial for enhancing training efficiency in FL. In their research, the authors introduce a novel FL technique known as FedHe, which draws inspiration from knowledge distillation. This approach enables the training of diverse models and facilitates asynchronous training processes while significantly reducing communication overhead. The analysis and experimental results presented in their paper indicate that their method outperforms state-of-the-art algorithms in terms of both communication overhead and model accuracy.

Key Points:

  1. Supports heterogenous models (model architectures can stay private and vary depending on compute power of device)
  2. Massive reduction in communication cost (reduced load on network)
  3. Improved accuracy over previous state-of-the-art algorithms

Is there something else you want to add?

No response

Implementation

To implement this baseline, it is recommended to do the following items in that order:

For first time contributors

Prepare - understand the scope

Implement - make it work

Align - make it converge

jafermarq commented 9 months ago

Hi @yashmaurya01 , how is it going? Let me know if I can help to kickstart the process of creating the FedHe baseline. We have detailed instructions on how to create a new Flower Baseline in the documentation: https://flower.dev/docs/baselines/how-to-contribute-baselines.html