All Projects → morningD → GrouProx

morningD / GrouProx

Licence: other
FedGroup, A Clustered Federated Learning framework based on Tensorflow

Programming Languages

python
139335 projects - #7 most used programming language
Jupyter Notebook
11667 projects
shell
77523 projects

Projects that are alternatives of or similar to GrouProx

G-SimCLR
This is the code base for paper "G-SimCLR : Self-Supervised Contrastive Learning with Guided Projection via Pseudo Labelling" by Souradip Chakraborty, Aritra Roy Gosthipaty and Sayak Paul.
Stars: ✭ 69 (+245%)
Mutual labels:  clustering, tensorflow2
Tensorflow-YOLACT
Implementation of the paper "YOLACT Real-time Instance Segmentation" in Tensorflow 2
Stars: ✭ 97 (+385%)
Mutual labels:  tensorflow2
mae-scalable-vision-learners
A TensorFlow 2.x implementation of Masked Autoencoders Are Scalable Vision Learners
Stars: ✭ 54 (+170%)
Mutual labels:  tensorflow2
federated-learning-poc
Proof of Concept of a Federated Learning framework that maintains the privacy of the participants involved.
Stars: ✭ 13 (-35%)
Mutual labels:  federated-learning
UnitBox
UnitBox: An Advanced Object Detection Network
Stars: ✭ 23 (+15%)
Mutual labels:  tensorflow2
Machine-Learning-Specialization
Project work and Assignments for Machine learning specialization course on Coursera by University of washington
Stars: ✭ 27 (+35%)
Mutual labels:  clustering
datascienv
datascienv is package that helps you to setup your environment in single line of code with all dependency and it is also include pyforest that provide single line of import all required ml libraries
Stars: ✭ 53 (+165%)
Mutual labels:  tensorflow2
decentralized-ml
Full stack service enabling decentralized machine learning on private data
Stars: ✭ 50 (+150%)
Mutual labels:  federated-learning
point-cloud-clusters
A catkin workspace in ROS which uses DBSCAN to identify which points in a point cloud belong to the same object.
Stars: ✭ 43 (+115%)
Mutual labels:  clustering
pyclustertend
A python package to assess cluster tendency
Stars: ✭ 38 (+90%)
Mutual labels:  clustering
Federated-Learning-and-Split-Learning-with-raspberry-pi
SRDS 2020: End-to-End Evaluation of Federated Learning and Split Learning for Internet of Things
Stars: ✭ 54 (+170%)
Mutual labels:  federated-learning
muzero
A clean implementation of MuZero and AlphaZero following the AlphaZero General framework. Train and Pit both algorithms against each other, and investigate reliability of learned MuZero MDP models.
Stars: ✭ 126 (+530%)
Mutual labels:  tensorflow2
Tensorflow2-ObjectDetectionAPI-Colab-Hands-On
Tensorflow2 Object Detection APIのハンズオン用資料です(Hands-on documentation for the Tensorflow2 Object Detection API)
Stars: ✭ 33 (+65%)
Mutual labels:  tensorflow2
inet ssh dist
SSH distribution for erlang
Stars: ✭ 46 (+130%)
Mutual labels:  clustering
communication-in-cross-silo-fl
Official code for "Throughput-Optimal Topology Design for Cross-Silo Federated Learning" (NeurIPS'20)
Stars: ✭ 19 (-5%)
Mutual labels:  federated-learning
topometry
A comprehensive dimensional reduction framework to recover the latent topology from high-dimensional data.
Stars: ✭ 64 (+220%)
Mutual labels:  clustering
autoplait
Python implementation of AutoPlait (SIGMOD'14) without smoothing algorithm. NOTE: This repository is for my personal use.
Stars: ✭ 24 (+20%)
Mutual labels:  clustering
Deep-multimodal-subspace-clustering-networks
Tensorflow implementation of "Deep Multimodal Subspace Clustering Networks"
Stars: ✭ 62 (+210%)
Mutual labels:  clustering
spectral normalization-tf2
🌈 Spectral Normalization implemented as Tensorflow 2
Stars: ✭ 36 (+80%)
Mutual labels:  tensorflow2
deep autoviml
Build tensorflow keras model pipelines in a single line of code. Now with mlflow tracking. Created by Ram Seshadri. Collaborators welcome. Permission granted upon request.
Stars: ✭ 98 (+390%)
Mutual labels:  tensorflow2

FedGroup

The source code of the Arxiv preprint article:

FedGroup: Efficient Clustered Federated Learning via Decomposed Data-Driven Measure

NOTE: The code base of FedGroup is FedProx.

🎁 Why not try the wholly new FlexCFL, which added many exciting improvements and technical fixes.

Overview

FedGroup can simulate following (Clustered) Federated Learning framework:

Requirement

Python packages:

  • Tensorflow (>2.0)
  • Jupyter Notebook
  • scikit-learn
  • matplotlib
  • tqdm

You need to download the dataset (e.g. FEMNIST, MNIST, Sent140, Synthetic) and specify a GPU id follow the guidelines of FedProx.

The directory structure of the datasets should look like this:

GrouProx-->data-->mnist-->data-->train--> ***train.json
               |              |->test--> ***test.json
               |
               |->nist-->data-->train--> ***train.json
               |                     |-> ***test.json
               |
               |->sent140--> ...
               |
               ...

Quick Start

Just run GrouProx_notebook.ipynb.

You can modify the configurations by directly modifying the code of GrouProx_notebook.ipynb. The common hyperparameters of FedGroup is:

# Name of dataset, should be list in GrouProx-->data-->...
params['dataset'] = 'sent140' 

# Name of model, should be list in GrouProx-->flearn-->models-->params['dataset']-->...
params['model'] = 'stacked_lstm'

# Name of optimizer, should be one of ['fedavg', 'fedprox', 'grouprox']
params['optimizer'] = 'grouprox'

# The dropout rate as demonstrated in the FedProx paper
params['drop_percent'] = 0

# Total communication rounds
params['num_rounds'] = 200

# Local epoch E, same as FedProx
params['num_epochs'] = 20

# Local mini-batch size, same as FedProx
params['batch_size'] = 10

# Evaluate the group model every $params['eval_every'] rounds
params['eval_every'] = 1

# The number of clients K selected per round
params['clients_per_round'] = 20

# Random seed
params['seed'] = 233

# Inter-group learning rate
params['agg_lr'] = 0.01

# Number of 'Groups'
params['num_group'] = 5

# Some specific hyperparameters of FedGroup
if params['optimizer']  == 'grouprox':
  # Whether to use Proximal method, True for FedGrouProx
  params['proximal'] = False

  # Radomly Assign Clients and Random Cluster Centers strategy, please see the paper for details 
  params['RAC'] = False
  params['RCC'] = False

  # The Group may be empty if True
  params['allow_empty'] = True
  
  # We implement IFCA and FeSEM base on grouprox
  # Set 'ifca' or 'fesem' to True to enable it. 
  params['ifca'] = False
  params['fesem'] = False

Experimental Results

All evaluation results will save in the GrouProx-->results-->... directory as csv format files.

Reference

Please cite the preprint version of FedGroup if the code helped your research 😊

BibTeX

@article{duan2020fedgroup,
  title={FedGroup: Efficient Clustered Federated Learning via Decomposed Data-Driven Measure},
  author={Duan, Moming and Liu, Duo and Ji, Xinyuan and Liu, Renping and Liang, Liang and Chen, Xianzhang and Tan, Yujuan},
  journal={arXiv preprint arXiv:2010.06870},
  year={2020}
}
Note that the project description data, including the texts, logos, images, and/or trademarks, for each open source project belongs to its rightful owner. If you wish to add or remove any projects, please contact us at [email protected].