This is a TFF implmentation of the RFA algorithm, a federated learning algorithm robust to corruptions in client updates. As detailed here, the robust aggregation is achieved by computing an approximate Geometric median with the smoothed Weiszfeld algorithm. See the paper for details.
This directory gives a function build_robust_federated_aggregation_process
which builds a federated aggregation process implementing the RFA algorithm. It
works as a drop-in replacement to
tff.learning.build_federated_averaging_process
for vanilla FedAvg. It can be
used in the
TFF EMIST tutorial
as follows:
from federated_research.robust_aggregation import build_robust_federated_aggregation_process
# dataset setup, model setup, etc. from tutorial
....
# change definition of iterative process from
# iterative_process = tff.learning.build_federated_averaging_process(model_fn)
# to
iterative_process = build_robust_federated_aggregation_process(model_fn)
# Rest of the code remains unchanged
In addition, the directory gives a standalone function
build_stateless_robust_aggregation
build a robust aggregation oracle as an
instance of tff.utils.StatefulAggregateFn
.
To reproduce experimental results from the paper, see the official repository.
If you find this implementation useful, please cite the following paper:
@article{pillutla2019robust,
title={{R}obust {A}ggregation for {F}ederated {L}earning},
author={Pillutla, Krishna and Kakade, Sham M. and Harchaoui, Zaid},
journal={Preprint},
year={2019}
}