DifferentialPrivacyClientSideAdaptiveClipping¶
- class DifferentialPrivacyClientSideAdaptiveClipping(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 :
DifferentialPrivacyAdaptiveBaseWrapper stratégique pour le DP centralisé avec une éclissure client adaptative.
Utiliser le modificateur adaptiveclipping_mod côté client.
En comparaison avec DifferentialPrivacyServerSideAdaptiveClipping, qui effectue la mise au carré sur le serveur, DifferentialPrivacyClientSideAdaptiveClipping attend que la mise au carré se produise côté client, généralement en utilisant le modificateur intégré adaptiveclipping_mod.
- 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) – L’écart-type du bruit ajouté au nombre d’actualisations actuellement inférieur à l’estimation. Andrew et al. recommandent de fixer à expected_num_records/20
Exemples
Créez une stratégie:
strategy = fl.serverapp.FedAvg(...)
Enveloppez la stratégie avec le wrapper DifferentialPrivacyClientSideAdaptiveClipping:
dp_strategy = DifferentialPrivacyClientSideAdaptiveClipping( strategy, cfg.noise_multiplier, cfg.num_sampled_clients, ... )
Sur le client, ajoutez le adaptiveclipping_mod aux mods côté-client:
app = fl.client.ClientApp(mods=[adaptiveclipping_mod])
Methods
aggregate_evaluate(server_round, replies)Aggrégation des MetricRecords reçus dans les Messages.
aggregate_train(server_round, replies)Aggrégation des ArrayRecords et des MetricRecords reçus dans les Messages.
configure_evaluate(server_round, arrays, ...)Configuration du prochain tour d'évaluation fédérée.
configure_train(server_round, arrays, ...)Configure le prochain tour d'entraînement.
start(grid, initial_arrays[, num_rounds, ...])Exécution de la stratégie d'apprentissage fédéré.
summary()Loguer la configuration sommaire de la stratégie.
- aggregate_evaluate(server_round: int, replies: Iterable[Message]) MetricRecord | None¶
Aggrégation des MetricRecords reçus dans les Messages.
- aggregate_train(server_round: int, replies: Iterable[Message]) tuple[ArrayRecord | None, MetricRecord | None][source]¶
Aggrégation des ArrayRecords et des MetricRecords reçus dans les Messages.
- configure_evaluate(server_round: int, arrays: ArrayRecord, config: ConfigRecord, grid: Grid) Iterable[Message]¶
Configuration du prochain tour d’évaluation fédérée.
- configure_train(server_round: int, arrays: ArrayRecord, config: ConfigRecord, grid: Grid) Iterable[Message][source]¶
Configure le prochain tour d’entraînement.
- start(grid: Grid, initial_arrays: ArrayRecord, num_rounds: int = 3, timeout: float = 3600, train_config: ConfigRecord | None = None, evaluate_config: ConfigRecord | None = None, evaluate_fn: Callable[[int, ArrayRecord], MetricRecord | None] | None = None) Result¶
Exécution de la stratégie d’apprentissage fédéré.
Exécuter le flux de travail complet d’apprentissage fédéré pour un nombre spécifié de tours, y compris l’entraînement, l’évaluation et l’évaluation centralisée facultative.
- Paramètres:
grid (Grid) – Instance du Grid utilisée pour envoyer/recevoir des Messages à partir de nœuds exécutant une application ClientApp.
initial_arrays (ArrayRecord) – Paramètres initiaux du modèle (tableaux) à utiliser pour l’apprentissage fédéré.
num_rounds (int (default: 3)) – Nombre de tours d’apprentissage fédéré à exécuter.
timeout (float (default: 3600)) – Délai en secondes pour attendre les réponses des nœuds.
train_config (ConfigRecord, optional) – Configuration à envoyer aux nœuds pendant les tours d’entraînement. Si non défini, un ConfigRecord vide sera utilisé.
evaluate_config (ConfigRecord, optional) – Configuration à envoyer aux nœuds pendant les tours d’évaluation. Si non défini, un ConfigRecord vide sera utilisé.
evaluate_fn (Callable[[int, ArrayRecord], Optional[MetricRecord]], optional) – Fonction facultative pour l’évaluation centralisée du modèle global. Prend le numéro de tour serveur et le record tableau, retourne un MetricRecord ou None. Si fourni, sera appelé avant la première ronde et après chaque ronde. Par défaut à None.
- Renvoie:
Résultats contenant les tableaux de modèles finaux ainsi que les métriques d’entraînement, les métriques d’évaluation et les métriques d’évaluation globales (si fourni) de toutes les rondes.
- Type renvoyé:
Results