DifferentialPrivacyServerSideAdaptiveClipping

class DifferentialPrivacyServerSideAdaptiveClipping(strategy: Strategy, noise_multiplier: float, num_sampled_clients: int, initial_clipping_norm: float = 0.1, target_clipped_quantile: float = 0.5, clip_norm_lr: float = 0.2, clipped_count_stddev: float | None = None)[source]

Bases : Strategy

Strategy wrapper for central DP with server-side adaptive clipping.

Paramètres:
  • strategy (Strategy) – La stratégie à laquelle les fonctionnalités de DP seront ajoutées par ce wrapper.

  • noise_multiplier (float) – Le multiplicateur de bruit pour la mécanique gaussienne pour les mises à jour du modèle.

  • num_sampled_clients (int) – Le nombre de clients échantillonnés à chaque tour.

  • initial_clipping_norm (float) – La valeur initiale de la norme de mise au carré. Par défaut à 0,1. Andrew et al. recommande d’y fixer 0,1.

  • target_clipped_quantile (float) – Le quantile souhaité des mises à jour qui doivent être mis au carré. Par défaut à 0,5.

  • clip_norm_lr (float) – La vitesse d’apprentissage pour l’adaptation de la norme de clipping. Par défaut, 0,2. Andrew et al. recommandent de fixer à 0,2.

  • clipped_count_stddev (float) – The standard deviation of the noise added to the count of updates below the estimate. Andrew et al. recommends to set to expected_num_records/20

Exemples

Créez une stratégie:

strategy = fl.server.strategy.FedAvg( ... )

Wrap the strategy with the DifferentialPrivacyServerSideAdaptiveClipping wrapper:

dp_strategy = DifferentialPrivacyServerSideAdaptiveClipping(
    strategy, cfg.noise_multiplier, cfg.num_sampled_clients, ...
)

Methods

aggregate_evaluate(server_round, results, ...)

Aggregate evaluation losses using the given strategy.

aggregate_fit(server_round, results, failures)

Aggregate training results and update clip norms.

configure_evaluate(server_round, parameters, ...)

Configure the next round of evaluation.

configure_fit(server_round, parameters, ...)

Configure le prochain tour d'entraînement.

evaluate(server_round, parameters)

Evaluate model parameters using an evaluation function from the strategy.

initialize_parameters(client_manager)

Initialize global model parameters using given strategy.

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]][source]

Aggregate evaluation losses using the given strategy.

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 training results and update clip norms.

configure_evaluate(server_round: int, parameters: Parameters, client_manager: ClientManager) list[tuple[ClientProxy, EvaluateIns]][source]

Configure the next round of evaluation.

configure_fit(server_round: int, parameters: Parameters, client_manager: ClientManager) list[tuple[ClientProxy, FitIns]][source]

Configure le prochain tour d’entraînement.

evaluate(server_round: int, parameters: Parameters) tuple[float, dict[str, bool | bytes | float | int | str]] | None[source]

Evaluate model parameters using an evaluation function from the strategy.

initialize_parameters(client_manager: ClientManager) Parameters | None[source]

Initialize global model parameters using given strategy.