Manasavijr/federated-learning
GitHub: Manasavijr/federated-learning
基于 PyTorch 和 Flower 的生产级联邦学习系统,实现了 FedAvg 聚合、差分隐私和非 IID 数据模拟,用于在不共享原始数据的情况下训练机器学习模型。
Stars: 0 | Forks: 0
# 隐私保护联邦学习系统
生产级联邦学习系统,实现 FedAvg 算法、差分隐私、非IID数据模拟,以及集中式与联邦学习准确率对比 —— 基于 PyTorch 和 Flower 构建。
直接借鉴苹果的设备端机器学习和隐私优先AI基础设施。
## 架构
```
┌──────────────────────────────────────────────────────┐
│ FL Server │
│ FedAvg Aggregation + DP Noise Injection │
│ Privacy Accountant (RDP Moments Accountant) │
└───────────────┬──────────────────────────────────────┘
│ broadcast global model
┌───────────┼───────────┐
▼ ▼ ▼
┌────────┐ ┌────────┐ ┌────────┐
│Client 1│ │Client 2│ │Client N│ (up to 50 clients)
│MNIST │ │MNIST │ │MNIST │
│IID or │ │Non-IID │ │Non-IID │
│Non-IID │ │(Dir α) │ │(Dir α) │
└────────┘ └────────┘ └────────┘
│ local gradients (clipped)
└───────────────────────────► FedAvg → DP Noise → Global Update
```
## 核心功能
| 组件 | 实现方式 |
|---|---|
| **联邦平均** | 加权 FedAvg (McMahan et al. 2017) |
| **差分隐私** | 高斯机制 + RDP 矩会计 |
| **数据异质性** | Dirichlet 非IID划分 (α=0.1–10) |
| **隐私预算追踪** | 每轮 (ε, δ)-DP 保证 |
| **对比** | 联邦学习 vs. 集中式准确率曲线 |
| **仪表板** | 实时 FastAPI 仪表板,带 Chart.js 图表 |
| **命令行工具** | 完整实验运行器,支持 JSON 输出 |
## 安装
```
cd federated-learning
python3 -m venv .venv && source .venv/bin/activate
pip install -r requirements.txt
```
## 运行仪表板
```
uvicorn api.main:app --reload --port 8082
# 打开 http://localhost:8082
```
在界面中配置实验:
- 客户端数量、轮次、本地轮数
- IID vs 非IID (Dirichlet α)
- 差分隐私开关 + 噪声乘数
- 实时观察准确率/损失曲线
## 运行命令行实验
```
# 联邦学习 (IID, 无差分隐私)
python experiments/run_experiment.py --mode federated --rounds 20 --clients 10
# 联邦学习 (non-IID, α=0.1, 高度异构)
python experiments/run_experiment.py --mode federated --rounds 20 --no-iid --alpha 0.1
# 带差分隐私 (ε ≈ 3.0, 20轮后)
python experiments/run_experiment.py --mode federated --dp --noise 1.0 --clip 1.0
# 完整对比: 联邦学习 vs 中心化
python experiments/run_experiment.py --mode compare --rounds 20 --clients 10
```
## 运行测试
```
pytest tests/ -v
```
## 结果(典型)
| 设置 | 最佳准确率 | 备注 |
|---|---|---|
| 集中式 | ~99.2% | 全量数据,无隐私保护 |
| 联邦学习 IID | ~98.8% | 与集中式相差 0.4% 以内 |
| 联邦学习 非IID (α=0.5) | ~97.5% | 中等异质性 |
| 联邦学习 非IID (α=0.1) | ~94.0% | 高异质性 |
| 联邦学习 + DP (σ=1.0) | ~96.5% | 20轮后 (ε≈3.2, δ=1e-5)-DP |
## 隐私预算估算
```
ε = RDP(α) + log(1/δ)/(α-1)
σ=0.5, 20 rounds → ε≈12 (weak privacy)
σ=1.0, 20 rounds → ε≈3.2 (moderate privacy)
σ=2.0, 20 rounds → ε≈0.8 (strong privacy, accuracy drops)
```
使用 `/api/v1/privacy/estimate?noise_multiplier=1.0&num_clients=10&rounds=20` 在运行前进行估算。
标签:Apex, AV绕过, Dirichlet分布, FastAPI, FedAvg, Flower, MNIST, Moments Accountant, PyTorch, RDP, 人工智能, 凭据扫描, 分布式训练, 差分隐私, 收敛曲线, 数据隐私, 机器学习, 模型聚合, 深度学习, 用户模式Hook绕过, 网络安全, 联邦学习, 逆向工具, 隐私保护, 非IID数据, 高斯机制