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数据, 高斯机制