This repo is the pytorch implementation of ICML2023 paper "FedDisco: Federated Learning with Discrepancy-Aware Collaboration". PMLR Link
-
Python 3.9
-
CUDA 11.3
-
Pytorch 1.10.2
-
Torchvision 0.11.3
Please refer to
requirements.txtfor more details. This code should work on most builds.
The argument --datadir in args.py specifies the location of dataset.
The argument --model has three valid values: resnet18_gn , simple-cnn and simple-cnn-mnist . The first one is ResNet for HAM10000 dataset while other two are simple CNN networks for small-scale dataset with RGB or grayscale images.
We provide several shell scripts for training in several settings. The format is
sh disco_sh/$DATASET_$PARTITION.shFor example, to train on Fashion-MNIST dataset with NIID-1 partition, run
sh disco_sh/fmnist_1.shTo train on CIFAR-10 dataset with NIID-2 partition, run
sh disco_sh/cifar10_2.shNote that --alg specifies an algorithm.
To run the experiments of baselines, please keep --disco=0. To integrate with our FedDisco, let --disco=1 and change the value of --disco_a and --disco_b.
Please cite our paper if you find the repository helpful. See other projects and papers at Rui Ye's Homepage.
@article{ye2023feddisco,
title={FedDisco: Federated Learning with Discrepancy-Aware Collaboration},
author={Ye, Rui and Xu, Mingkai and Wang, Jianyu and Xu, Chenxin and Chen, Siheng and Wang, Yanfeng},
journal={arXiv preprint arXiv:2305.19229},
year={2023}
}