FedScale
可扩展联邦学习平台:数据不动模型动,分布式训练+聚合,支持CV/NLP/语音多模态基准测试
加载项目详情…
本应用为开源项目,仅供学习研究,请遵守其开源协议。
可扩展联邦学习平台:数据不动模型动,分布式训练+聚合,支持CV/NLP/语音多模态基准测试
加载项目详情…
本应用为开源项目,仅供学习研究,请遵守其开源协议。
想象这样一个场景:一家三甲医院想让 AI 模型学习病人的影像数据来提升诊断准确率,但卫健委法规明确要求患者隐私数据不得离开医院内网。传统的集中式机器学习方案在这里彻底失效——要么违规,要么放弃 AI 升级。联邦学习(Federated Learning) 正是为解决这一矛盾而生的技术范式:由 Google 于 2017 年在移动端模型训练中首次提出,核心思想是"数据不动,模型动"——让模型带着算法去数据所在地训练,只将梯度参数传回中央服务器聚合,从根本上规避了数据隐私风险。
FedScale(SymbioticLab/FedScale,Apache-2.0 许可)正是这一理念的开源工程实现,由密歇根大学 Oort 原班团队在 ICML 2022 和 OSDI 2021 论文基础上打造,是一个可扩展、高性能的联邦学习平台与基准测试系统。它不仅包含 FL 训练引擎本身,更自带业界最大的 FL 基准测试数据集,覆盖 CV、NLP、语音等多模态任务,致力于让研究者能真实复现和评估 FL 算法在实际部署环境中的表现。
FedScale 的架构遵循典型的中央协调器 + 分布式执行器模式,核心组件包括:
运行在中央节点的 aggregator.py(约 1100 行)是整个系统的神经中枢。它通过 gRPC 高性能 RPC 框架与所有执行器保持长连接,负责:
核心聚合逻辑以 TorchServerOptimizer 类的形式实现,支持多种优化器策略。默认使用 Federated Averaging(FedAvg)算法——每轮随机选取部分客户端在本地执行若干轮 SGD,然后将更新后的模型参数传回服务器取平均值。FedProx 则在此基础上增加了近端项正则化来处理客户端数据异构性问题,FedYoGi 引入了自适应梯度控制来处理非独立同分布(Non-IID)数据。
运行在边缘节点的 executor.py 是实际执行本地训练的 worker 进程。每个 Executor 通过 gRPC 与 Aggregator 双向通信:
Executor 适配了多种后端:
dataloaders/ 模块是 FedScale 的数据入口,支持 20+ 大规模 FL 数据集。数据分区逻辑(divide_data.py)实现了 DataPartitioner,负责将原始数据集按策略分配给不同客户端。典型的 Non-IID 分区方式包括按标签分布倾斜、按数据量不均衡等方式,真实模拟了生产环境中各客户端数据分布差异。
FedScale 的核心差异化价值之一在于其规模和多样性的基准测试能力:
每种任务都配有预定义的训练配置(YAML 格式),研究者可以直接引用基准配置进行实验对比。
FedScale 提供了 3 层 Dockerfile 体系:
python:3.7-buster,安装 Conda 环境 + 核心依赖(PyTorch、TensorFlow、gRPC 等)这套容器体系支持 Kubernetes 部署(kubernetes 依赖已包含在 environment.yml 中),适合大规模集群场景。但需要注意的是,项目未提供 docker-compose.yml,无法通过 docker-compose up 一键启动完整的 FL 集群,需要手动管理各容器的启动顺序和网络配置。
FedScale 的依赖树非常重,environment.yml 中列出了 40+ 依赖包,涵盖:
此外安装脚本会拉取 Anaconda3-2020.11 和 CUDA 10.2,总安装体积保守估计超过 10GB。
CUDA 10.2+ 是可选但强烈推荐安装的组件(./install.sh --cuda),Executor 在有 GPU 的节点上会显著加速训练。内存方面,Aggregator 需要持有全局模型(ResNet 等大型模型可能需要数 GB 显存),Executor 同样需要足够显存支撑本地训练。
FedScale 提供了两种安装方式:
./install.sh 自动完成 Conda 环境创建 + 依赖安装conda env create -f environment.yml → pip install -e .安装后通过 fedscale.sh alias 启动,或直接 python -m fedscale.cloud.aggregation.aggregator 等方式运行。
所有运行时参数(数据集、模型、FL 算法、超参数等)通过 YAML 配置文件传入,支持多种预设配置(见 benchmark/configs/)。关键配置项包括:
task:任务类型(cv/nlp/rl/voice)data_set:数据集名称model:模型架构gradient_policy:FL 算法(fedavg/fedprox/fedyogi 等)num_of_clients:每轮参与的客户端数量local_steps:每个客户端本地训练的步数python=3.7,与 2024 年后的主流 AI 生态(Python 3.10+)脱节,新版 PyTorch/TensorFlow 已逐步放弃 3.7 支持,依赖版本兼容性存在隐患fedscale/cloud/ 下未找到相关 K8s 部署 YAML 文档,实际生产使用有一定门槛FedScale 的论文(ICML 2022)在发表后获得了学术界的广泛关注,被引用量持续增长。它代表了近年来 FL 系统领域的一个重要方向:将 FL 算法研究与大规模系统评估结合,而不只是在小规模玩具数据集上验证。
从技术演进趋势看,FedScale 的后续方向可能包括:
对于企业级部署,建议关注其与 Oort 客户端选择策略的集成——在边缘设备异构、数据分布高度倾斜的真实场景中,智能客户端采样对训练效率的影响可能比算法本身更为关键。