fedn.network.combiner.aggregators package
The aggregator package is responsible for aggregating models from multiple clients. It’s called both in fedn.network.combiner.Combiner
and fedn.network.controller.Controller
to aggregate models from clients.
Submodules
fedn.network.combiner.aggregators.aggregator module
fedn.network.combiner.aggregators.aggregatorbase module
- class fedn.network.combiner.aggregators.aggregatorbase.AggregatorBase(storage, server, modelservice, round_handler)[source]
Bases:
ABC
Abstract class defining an aggregator.
- Parameters:
id (str) – A reference to id of :class: fedn.network.combiner.Combiner
storage (class: fedn.common.storage.s3.s3repo.S3ModelRepository) – Model repository for :class: fedn.network.combiner.Combiner
server (class: fedn.network.combiner.Combiner) – A handle to the Combiner class :class: fedn.network.combiner.Combiner
modelservice (class: fedn.network.combiner.modelservice.ModelService) – A handle to the model service :class: fedn.network.combiner.modelservice.ModelService
control (class: fedn.network.combiner.roundhandler.RoundHandler) – A handle to the :class: fedn.network.combiner.roundhandler.RoundHandler
- abstract combine_models(nr_expected_models=None, nr_required_models=1, helper=None, timeout=180, delete_models=True)[source]
Routine for combining model updates. Implemented in subclass.
- Parameters:
nr_expected_models (int) – Number of expected models. If None, wait for all models.
nr_required_models (int) – Number of required models to combine.
helper – A helper object.
timeout (int) – Timeout in seconds to wait for models to be combined.
delete_models (bool) – Delete client models after combining.
- Returns:
A combined model.
- get_state()[source]
Get the state of the aggregator’s queue, including the number of model updates.
- load_model_update(model_update, helper)[source]
Load the memory representation of the model update.
Load the model update paramters and the associate metadata into memory.
- Parameters:
model_update (fedn.network.grpc.fedn.proto.ModelUpdate) – The model update.
helper (fedn.utils.helpers.helperbase.Helper) – A helper object.
- Returns:
A tuple of (parameters, metadata)
- Return type:
- fedn.network.combiner.aggregators.aggregatorbase.get_aggregator(aggregator_module_name, storage, server, modelservice, control)[source]
Return an instance of the helper class.
- Parameters:
helper_module_name (str) – The name of the helper plugin module.
storage (class: fedn.common.storage.s3.s3repo.S3ModelRepository) – Model repository for :class: fedn.network.combiner.Combiner
server (class: fedn.network.combiner.Combiner) – A handle to the Combiner class :class: fedn.network.combiner.Combiner
modelservice (class: fedn.network.combiner.modelservice.ModelService) – A handle to the model service :class: fedn.network.combiner.modelservice.ModelService
control (class: fedn.network.combiner.roundhandler.RoundHandler) – A handle to the :class: fedn.network.combiner.roundhandler.RoundHandler
- Returns:
An aggregator instance.
- Return type:
class: fedn.combiner.aggregators.AggregatorBase
fedn.network.combiner.aggregators.fedavg module
- class fedn.network.combiner.aggregators.fedavg.Aggregator(storage, server, modelservice, round_handler)[source]
Bases:
AggregatorBase
- Local SGD / Federated Averaging (FedAvg) aggregator. Computes a weighted mean
of parameter updates.
- Parameters:
id (str) – A reference to id of :class: fedn.network.combiner.Combiner
storage (class: fedn.common.storage.s3.s3repo.S3ModelRepository) – Model repository for :class: fedn.network.combiner.Combiner
server (class: fedn.network.combiner.Combiner) – A handle to the Combiner class :class: fedn.network.combiner.Combiner
modelservice (class: fedn.network.combiner.modelservice.ModelService) – A handle to the model service :class: fedn.network.combiner.modelservice.ModelService
control (class: fedn.network.combiner.roundhandler.RoundHandler) – A handle to the :class: fedn.network.combiner.roundhandler.RoundHandler
- combine_models(helper=None, delete_models=True)[source]
Aggregate all model updates in the queue by computing an incremental weighted average of model parameters.
- Parameters:
helper (class: fedn.utils.helpers.helpers.HelperBase, optional) – An instance of :class: fedn.utils.helpers.helpers.HelperBase, ML framework specific helper, defaults to None
time_window (int, optional) – The time window for model aggregation, defaults to 180
max_nr_models (int, optional) – The maximum number of updates aggregated, defaults to 100
delete_models (bool, optional) – Delete models from storage after aggregation, defaults to True
- Returns:
The global model and metadata
- Return type:
fedn.network.combiner.aggregators.fedopt module
- class fedn.network.combiner.aggregators.fedopt.Aggregator(storage, server, modelservice, round_handler)[source]
Bases:
AggregatorBase
Federated Optimization (FedOpt) aggregator.
Implmentation following: https://arxiv.org/pdf/2003.00295.pdf
Aggregate pseudo gradients computed by subtracting the model update from the global model weights from the previous round.
- Parameters:
id (str) – A reference to id of :class: fedn.network.combiner.Combiner
storage (class: fedn.common.storage.s3.s3repo.S3ModelRepository) – Model repository for :class: fedn.network.combiner.Combiner
server (class: fedn.network.combiner.Combiner) – A handle to the Combiner class :class: fedn.network.combiner.Combiner
modelservice (class: fedn.network.combiner.modelservice.ModelService) – A handle to the model service :class: fedn.network.combiner.modelservice.ModelService
control (class: fedn.network.combiner.roundhandler.RoundHandler) – A handle to the :class: fedn.network.combiner.roundhandler.RoundHandler
- combine_models(helper=None, delete_models=True)[source]
Compute pseudo gradients using model updates in the queue.
- Parameters:
helper (class: fedn.utils.helpers.helpers.HelperBase, optional) – An instance of :class: fedn.utils.helpers.helpers.HelperBase, ML framework specific helper, defaults to None
time_window (int, optional) – The time window for model aggregation, defaults to 180
max_nr_models (int, optional) – The maximum number of updates aggregated, defaults to 100
delete_models (bool, optional) – Delete models from storage after aggregation, defaults to True
- Returns:
The global model and metadata
- Return type: