⚡ Labs

使用 NVIDIA FLARE 实现 Non-IID CIFAR-10 的 FedAvg 与 FedProx 联邦学习对比指南

使用 NVIDIA FLARE 实现 Non-IID CIFAR-10 的 FedAvg 与 FedProx 联邦学习对比指南

在联邦学习(FL)的实际应用中,客户端数据的非独立同分布(Non-IID)性是影响模型收敛和性能的主要瓶颈之一。本文将介绍如何使用 NVIDIA FLARE(NVIDIA Federated Learning Application Runtime Environment)构建一个高级联邦学习实验,在 Non-IID CIFAR-10 数据集上对比经典的 FedAvg 和改进版的 FedProx 算法。

实验首先通过 Dirichlet 分布(狄利克雷分布,参数 $\alpha = 0.3$)对 CIFAR-10 数据集进行非对称划分,从而在 3 个虚拟客户端之间模拟出高度逼真的标签不平衡(Label Skew)场景。我们将使用 NVFlare 的 Job API 来定义和运行联邦作业,而 Client API 则负责处理本地训练、模型权重交换以及客户端与服务器之间的通信。

在环境准备阶段,我们需要安装所需的依赖库,并初始化全局超参数,包括客户端数量(3个)、训练轮数(5轮)、本地 Epochs(1次)、Dirichlet 因子 alpha(0.3)等,同时在本地安全下载 CIFAR-10 数据集以供所有虚拟客户端共享:

!pip install -q "nvflare>=2.5" torch torchvision matplotlib

在客户端脚本的实现中,我们定义了一个简洁的 CNN 架构,并利用确定性的 Dirichlet 划分算法。所有客户端进程在数据切分时使用相同的随机种子,以确保它们能独立对全局数据集达成一致的划分,避免传统联邦模拟中的数据冲突。

最后,我们在相同的划分数据集上运行 FedAvg 与 FedProx 算法。FedProx 通过引入近端项(Proximal Term),限制了本地更新偏离全局模型的程度,从而在数据高度异构(Non-IID)的环境下展现出了优于 FedAvg 的收敛稳定度与准确率。

【AgentUpdate 深度解析】联邦学习正在迅速成为未来多智能体系统(Multi-Agent Systems)协作进化的安全底层基石。在医疗、金融等隐私敏感的 AI Agent 落地场景中,单一 Agent 极易受困于局部数据的“信息孤岛”。通过 NVIDIA FLARE 联邦框架,异构的 AI Agent 可以在不共享原始用户隐私、不暴露敏感交互日志的前提下,利用 FedProx 等算法对抗本地行为漂移,实现群体智能的联合演进。这种“联邦 Agent 学习”模式,不仅解决了数据合规问题,还通过分布式协同让每个 Agent 动态吸收全局智慧,是构建真正安全、高泛化性多智能体生态的必由之路。

↗ 阅读原文