p2pfl.learning.aggregators.scaffold moduleΒΆ

Callback for SCAFFOLD operations.

class p2pfl.learning.aggregators.scaffold.Scaffold(node_name='unknown', global_lr=0.1)[source]ΒΆ

Bases: Aggregator

SCAFFOLD Aggregator.

Paper: https://arxiv.org/pdf/1910.06378 The aggregator acts like the server in centralized learning, handling both model and control variate updates.

Due to the complete decentralization of the enviroment, a global model is also maintained in the aggregator. This consumes additional bandwidth.

::todo:: Improve efficiency by estimating the global model.

REQUIRED_INFO_KEYS = ['delta_y_i', 'delta_c_i']ΒΆ
aggregate(models)[source]ΒΆ

Aggregate the models and control variates from clients.

Parameters:

models (List[P2PFLModel]) – List of models to aggregate.

Return type:

P2PFLModel

get_required_callbacks()[source]ΒΆ

Retrieve the list of required callback keys for this aggregator.

Return type:

List[str]