Skip to main content

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

The FederatedClient class represents a client participating in federated learning.
Reference: neurenix/federated/client.py:85

FederatedServer

The FederatedServer class coordinates training across multiple clients.
Reference: neurenix/federated/server.py:106

Client Configuration

Basic Configuration

Reference: neurenix/federated/client.py:26

FedProx Configuration

FedProx adds a proximal term to handle heterogeneous data:
Reference: neurenix/federated/client.py:37

Privacy-Preserving Configuration

Reference: neurenix/federated/client.py:39

Client Training

Local Training

Reference: neurenix/federated/client.py:128

Model Updates

Reference: neurenix/federated/client.py:240

Server Configuration

Aggregation Strategies

Reference: neurenix/federated/server.py:30

Client Selection

Reference: neurenix/federated/server.py:42

Aggregation Strategies

FedAvg (Federated Averaging)

Weighted average of client models based on number of samples:
Reference: neurenix/federated/strategies.py:34

FedProx (Federated Proximal)

Handles heterogeneous data with proximal term:
Reference: neurenix/federated/strategies.py:77

FedNova (Federated Normalized Averaging)

Normalizes client updates to handle varying local epochs:
Reference: neurenix/federated/strategies.py:107

FedAdam (Federated Adam)

Server-side adaptive optimization:
Reference: neurenix/federated/strategies.py:274

FedYogi (Federated Yogi)

Adaptive server optimization with improved convergence:
Reference: neurenix/federated/strategies.py:305

Complete Training Example

Reference: neurenix/federated/server.py:363

Privacy and Security

Differential Privacy

Add noise to protect individual contributions:
Reference: neurenix/federated/client.py:40

Secure Aggregation

Encrypt model updates before aggregation:
Reference: neurenix/federated/client.py:39

Model Compression

Reduce communication overhead:
Reference: neurenix/federated/client.py:44

Client States

Clients transition through different states during training:
Reference: neurenix/federated/client.py:17

Server States

Servers also maintain state during coordination:
Reference: neurenix/federated/server.py:20

Advanced Features

Custom Client Selection

Reference: neurenix/federated/server.py:149

Asynchronous Federated Learning

Client Weighting

Reference: 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

  1. Batch client updates to reduce server overhead
  2. Use compression for large models
  3. Cache model states to avoid repeated serialization
  4. Parallelize client training when possible
  5. Use quantization for model updates
  6. Implement early stopping for fast clients