Refactoring Aggregator
Aggregator
class may need some refactoring: indeed, Aggregator
responsibility is not very clear.
In this proposal, we commit that Aggregator
responsibility is only about aggregating parameters received from Nodes on the Researcher. There is no optimization steps involved. An example of Aggregator
is FedAvg
, whereas fedprox and scaffold are not Aggregator
, but rather Optimizers
built uponFedAvg
.
In the following issue, we propose a way to specify in the Experiment
the Aggregator
and the Researcher Optimizer
:
- introduce a new class
AggregationPolicy
that will be responsible of theAggregator
, the secure aggregation, and theOptimizer
. Hence
aggregation_policy = AggregationPolicy(
aggregation_method=FedAverage(),
secagg=True,
optimizer= Optimizer()
)
exp = Experiment(...,
aggregator=aggregaton_policy,
....)
- updates
Experiment
class wrt the changes
Please check !220 - !220 (comment 836500) for more details
strategy refactoring: please see