Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Created the basic support for personalized federated learning in Plato #363

Merged
merged 438 commits into from
Nov 2, 2023

Conversation

CSJDeveloper
Copy link
Collaborator

This PR created the basic support for personalized federated learning (FL) in Plato, thereby providing a fundamental platform to perform the research on the personalized FL domain. Based on this platform, different types of personalized FL algorithms can be implemented not only easily but also quickly. There are two key points of this platform.

First, this platform is easy to use as major components of this platform are merged into the module registry of Plato; thus, it can be accessed by simply putting the name under the corresponding blocks of the configuration file.

Second, this platform provides fairness and reproducibility guarantees when performing experiments to compare different personalized FL algorithms.

Finally, based on this platform, we offer nine personalized FL algorithms, encompassing the most widely employed learning mechanisms.

Additionally, with this platform, we also implemented eight personalized FL algorithms built upon self-supervised learning.

Description

The personalized FL platform includes three core components:

  • plato/servers/fedavg_personalized.py. A personalized federated learning server that starts with a number of regular rounds of federated learning. In these regular rounds, only a subset of the total clients can be selected to perform the local update (the ratio of which is a configuration setting). After all regular rounds are completed, it starts a final round of personalization, where a selected subset of clients perform local training using their local dataset.

  • plato/clients/fedavg_personalized.py. A personalized federated learning client that saves its local layers before sending the shared global
    model to the server after local training

  • plato/algorithms/fedavg_personalized.py. A personalized federate learning algorithm that loads and saves local layers of a model.

How has this been tested?

Types of changes

  • Bug fix (non-breaking change which fixes an issue) Fixes #
  • New feature (non-breaking change which adds functionality)
  • Breaking change (fix or feature that would cause existing functionality to not work as expected)

Checklist:

  • My code has been formatted using Black and checked using PyLint.
  • My change requires a change to the documentation.
  • I have updated the documentation accordingly.

dixiyao and others added 30 commits November 1, 2023 15:16
dixiyao and others added 27 commits November 2, 2023 16:27
Copy link

netlify bot commented Nov 2, 2023

Deploy Preview for platodocs ready!

Name Link
🔨 Latest commit b395663
🔍 Latest deploy log https://app.netlify.com/sites/platodocs/deploys/6544287027f237000780364b
😎 Deploy Preview https://deploy-preview-363--platodocs.netlify.app
📱 Preview on mobile
Toggle QR Code...

QR Code

Use your smartphone camera to open QR code link.

To edit notification comments on pull requests, go to your Netlify site configuration.

@baochunli baochunli merged commit 9d7a86b into main Nov 2, 2023
6 checks passed
@baochunli baochunli deleted the pflbases_redesign_final branch November 2, 2023 22:54
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

Successfully merging this pull request may close these issues.

8 participants