Simple Python implementation of Federated Dual Coordinate Descent (FedDCD) and Federated Dual Averaging (FedDualAvg). Federated Averaging (FedAvg) is used as a baseline for comparison.
Note: some utility functions (argument parsing, tensorboard functionality) have been adapted from https://github.com/yjlee22/FedShare
Modules:
options.pyargument parser that takes in algorithm and model hyperparametersutils.pycontains functions for computing local quadratic objectives and selecting clients
Scripts and Notebooks:
fed_avg.pygeneralized federated averaging algorithmfed_dual_avg.pyfederated dual averaging using soft thresholding (l1 regularization)fed_dcd.pyfederated dual coordinate descent using approximate descent directionsfigures.ipynbgenerates the paper figures
$ pip install requirements.txtTo perform each of the four experiments we run the following shell scripts:
$ participation_experiment.sh
$ noise_experiment.sh
$ sparsity_experiment.sh
$ distr_experiment.shNext running the figures.ipynb notebook will load the parameter and objective distances from each run (assuming they are saved to the correct directory), allowing the user to generate each figure.