FedAvgM¶
- class FedAvgM(*, fraction_fit: float = 1.0, fraction_evaluate: float = 1.0, min_fit_clients: int = 2, min_evaluate_clients: int = 2, min_available_clients: int = 2, evaluate_fn: Callable[[int, list[ndarray[Any, dtype[Any]]], dict[str, bool | bytes | float | int | str]], tuple[float, dict[str, bool | bytes | float | int | str]] | None] | None = None, on_fit_config_fn: Callable[[int], dict[str, bool | bytes | float | int | str]] | None = None, on_evaluate_config_fn: Callable[[int], dict[str, bool | bytes | float | int | str]] | None = None, accept_failures: bool = True, initial_parameters: Parameters | None = None, fit_metrics_aggregation_fn: Callable[[list[tuple[int, dict[str, bool | bytes | float | int | str]]]], dict[str, bool | bytes | float | int | str]] | None = None, evaluate_metrics_aggregation_fn: Callable[[list[tuple[int, dict[str, bool | bytes | float | int | str]]]], dict[str, bool | bytes | float | int | str]] | None = None, server_learning_rate: float = 1.0, server_momentum: float = 0.0)[source]¶
- Bases: - FedAvg- Federated Averaging with Momentum strategy. - Implementation based on https://arxiv.org/abs/1909.06335 - Parameters:
- fraction_fit (float, optional) – Fraction of clients used during training. Defaults to 1.0. 
- fraction_evaluate (float, optional) – Fraction of clients used during validation. Defaults to 1.0. 
- min_fit_clients (int, optional) – Minimum number of clients used during training. Defaults to 2. 
- min_evaluate_clients (int, optional) – Minimum number of clients used during validation. Defaults to 2. 
- min_available_clients (int, optional) – Minimum number of total clients in the system. Defaults to 2. 
- evaluate_fn (Optional[Callable[[int, NDArrays, Dict[str, Scalar]], Optional[Tuple[float, Dict[str, Scalar]]]]]) – Optional function used for validation. Defaults to None. 
- on_fit_config_fn (Callable[[int], Dict[str, Scalar]], optional) – Function used to configure training. Defaults to None. 
- on_evaluate_config_fn (Callable[[int], Dict[str, Scalar]], optional) – Function used to configure validation. Defaults to None. 
- accept_failures (bool, optional) – Whether or not accept rounds containing failures. Defaults to True. 
- initial_parameters (Parameters, optional) – Initial global model parameters. 
- server_learning_rate (float) – Server-side learning rate used in server-side optimization. Defaults to 1.0. 
- server_momentum (float) – Server-side momentum factor used for FedAvgM. Defaults to 0.0. 
 
 - Methods - aggregate_evaluate(server_round, results, ...)- Aggregate evaluation losses using weighted average. - aggregate_fit(server_round, results, failures)- Aggregate fit results using weighted average. - configure_evaluate(server_round, parameters, ...)- Configure the next round of evaluation. - configure_fit(server_round, parameters, ...)- Configure the next round of training. - evaluate(server_round, parameters)- Evaluate model parameters using an evaluation function. - initialize_parameters(client_manager)- Initialize global model parameters. - num_evaluation_clients(num_available_clients)- Use a fraction of available clients for evaluation. - num_fit_clients(num_available_clients)- Return the sample size and the required number of available clients. - aggregate_evaluate(server_round: int, results: list[tuple[ClientProxy, EvaluateRes]], failures: list[tuple[ClientProxy, EvaluateRes] | BaseException]) tuple[float | None, dict[str, bool | bytes | float | int | str]]¶
- Aggregate evaluation losses using weighted average. 
 - aggregate_fit(server_round: int, results: list[tuple[ClientProxy, FitRes]], failures: list[tuple[ClientProxy, FitRes] | BaseException]) tuple[Parameters | None, dict[str, bool | bytes | float | int | str]][source]¶
- Aggregate fit results using weighted average. 
 - configure_evaluate(server_round: int, parameters: Parameters, client_manager: ClientManager) list[tuple[ClientProxy, EvaluateIns]]¶
- Configure the next round of evaluation. 
 - configure_fit(server_round: int, parameters: Parameters, client_manager: ClientManager) list[tuple[ClientProxy, FitIns]]¶
- Configure the next round of training. 
 - evaluate(server_round: int, parameters: Parameters) tuple[float, dict[str, bool | bytes | float | int | str]] | None¶
- Evaluate model parameters using an evaluation function. 
 - initialize_parameters(client_manager: ClientManager) Parameters | None[source]¶
- Initialize global model parameters. 
 - num_evaluation_clients(num_available_clients: int) tuple[int, int]¶
- Use a fraction of available clients for evaluation. 
 - num_fit_clients(num_available_clients: int) tuple[int, int]¶
- Return the sample size and the required number of available clients.