Overview
Federated learning enables training machine learning models across multiple decentralized clients without sharing raw data. Neurenix provides a complete framework for implementing federated learning with support for various aggregation strategies, secure aggregation, and differential privacy.Core Components
FederatedClient
TheFederatedClient class represents a client participating in federated learning.
neurenix/federated/client.py:85
FederatedServer
TheFederatedServer class coordinates training across multiple clients.
neurenix/federated/server.py:106
Client Configuration
Basic Configuration
neurenix/federated/client.py:26
FedProx Configuration
FedProx adds a proximal term to handle heterogeneous data:neurenix/federated/client.py:37
Privacy-Preserving Configuration
neurenix/federated/client.py:39
Client Training
Local Training
neurenix/federated/client.py:128
Model Updates
neurenix/federated/client.py:240
Server Configuration
Aggregation Strategies
neurenix/federated/server.py:30
Client Selection
neurenix/federated/server.py:42
Aggregation Strategies
FedAvg (Federated Averaging)
Weighted average of client models based on number of samples:neurenix/federated/strategies.py:34
FedProx (Federated Proximal)
Handles heterogeneous data with proximal term:neurenix/federated/strategies.py:77
FedNova (Federated Normalized Averaging)
Normalizes client updates to handle varying local epochs:neurenix/federated/strategies.py:107
FedAdam (Federated Adam)
Server-side adaptive optimization:neurenix/federated/strategies.py:274
FedYogi (Federated Yogi)
Adaptive server optimization with improved convergence:neurenix/federated/strategies.py:305
Complete Training Example
neurenix/federated/server.py:363
Privacy and Security
Differential Privacy
Add noise to protect individual contributions:neurenix/federated/client.py:40
Secure Aggregation
Encrypt model updates before aggregation:neurenix/federated/client.py:39
Model Compression
Reduce communication overhead:neurenix/federated/client.py:44
Client States
Clients transition through different states during training:neurenix/federated/client.py:17
Server States
Servers also maintain state during coordination:neurenix/federated/server.py:20
Advanced Features
Custom Client Selection
neurenix/federated/server.py:149
Asynchronous Federated Learning
Client Weighting
neurenix/federated/server.py:270
Best Practices
1. Handle Non-IID Data
Use FedProx for heterogeneous client data:2. Communication Efficiency
3. Privacy Budget Management
4. Client Dropout Handling
5. Evaluation Strategy
Performance Optimization
- Batch client updates to reduce server overhead
- Use compression for large models
- Cache model states to avoid repeated serialization
- Parallelize client training when possible
- Use quantization for model updates
- Implement early stopping for fast clients
Related Topics
- Distributed Training - Multi-GPU training
- Differential Privacy - Privacy-preserving techniques
- Model Compression - Reduce communication overhead