nvflare.app_common.aggregators package¶
Submodules¶
- nvflare.app_common.aggregators.accumulate_model_aggregator module
- nvflare.app_common.aggregators.assembler module
- nvflare.app_common.aggregators.collect_and_assemble_aggregator module
- nvflare.app_common.aggregators.dxo_aggregator module
- nvflare.app_common.aggregators.dxo_collector module
- nvflare.app_common.aggregators.intime_accumulate_model_aggregator module
- nvflare.app_common.aggregators.lazy module
- nvflare.app_common.aggregators.model_aggregator module
ModelAggregatorModelAggregator.accept()ModelAggregator.accept_model()ModelAggregator.aggregate()ModelAggregator.aggregate_model()ModelAggregator.error()ModelAggregator.exception()ModelAggregator.handle_event()ModelAggregator.info()ModelAggregator.reset()ModelAggregator.reset_stats()ModelAggregator.warning()
- nvflare.app_common.aggregators.weighted_aggregation_helper module
Module contents¶
- AccumulateWeightedAggregator(exclude_vars: str | Dict[str, str] | None = None, aggregation_weights: Dict[str, Any] | Dict[str, Dict[str, Any]] | None = None, expected_data_kind: DataKind | Dict[str, DataKind] = DataKind.WEIGHT_DIFF, weigh_by_local_iter: bool = True)[source]¶
- class CollectAndAssembleAggregator(assembler_id: str)[source]¶
Bases:
AggregatorPerform collection and flexible assemble aggregation
This is used for methods needing a special assemble mechanism on the client submissions. It first collects all submissions from clients, then delegates the assembling functionality to assembler, which is specific to a particular algorithm. Note that the aggregation in this case is not in-time, since the assembling function may not be arithmetic mean.
Init FLComponent.
The FLComponent is the base class of all FL Components. (executors, controllers, responders, filters, aggregators, and widgets are all FLComponents)
FLComponents have the capability to handle and fire events and contain various methods for logging.
- class InTimeAccumulateWeightedAggregator(exclude_vars: str | Dict[str, str] | None = None, aggregation_weights: Dict[str, Any] | Dict[str, Dict[str, Any]] | None = None, expected_data_kind: DataKind | Dict[str, DataKind] = DataKind.WEIGHT_DIFF, weigh_by_local_iter: bool = True)[source]¶
Bases:
AggregatorPerform accumulated weighted aggregation.
This is often used as the default aggregation method and can be used for FedAvg. It parses the shareable and aggregates the contained DXO(s).
- Parameters:
exclude_vars (Union[str, Dict[str, str]], optional) – Regular expression string to match excluded vars during aggregation. Defaults to None. Can be one string or a dict of {dxo_name: regex strings} corresponding to each aggregated DXO when processing a DXO of DataKind.COLLECTION.
aggregation_weights (Union[Dict[str, Any], Dict[str, Dict[str, Any]]], optional) – Aggregation weight for each contributor. Defaults to None. Can be one dict of {contrib_name: aggr_weight} or a dict of dicts corresponding to each aggregated DXO when processing a DXO of DataKind.COLLECTION.
expected_data_kind (Union[DataKind, Dict[str, DataKind]]) – DataKind for DXO. Defaults to DataKind.WEIGHT_DIFF Can be one DataKind or a dict of {dxo_name: DataKind} corresponding to each aggregated DXO when processing a DXO of DataKind.COLLECTION. Only the keys in this dict will be processed.
weigh_by_local_iter (bool, optional) – Whether to weight the contributions by the number of iterations performed in local training in the current round. Defaults to True. Setting it to False can be useful in applications such as homomorphic encryption to reduce the number of computations on encrypted ciphertext. The aggregated sum will still be divided by the provided weights and aggregation_weights for the resulting weighted sum to be valid.
- accept(shareable: Shareable, fl_ctx: FLContext) bool[source]¶
Store shareable and update aggregator’s internal state
- Parameters:
shareable – information from contributor
fl_ctx – context provided by workflow
- Returns:
The first boolean indicates if this shareable is accepted. The second boolean indicates if aggregate can be called.