FedML
统一可扩展的联邦学习与分布式训练框架,支持跨组织、跨设备、模拟器三大模式
加载项目详情…
本应用为开源项目,仅供学习研究,请遵守其开源协议。
统一可扩展的联邦学习与分布式训练框架,支持跨组织、跨设备、模拟器三大模式
加载项目详情…
本应用为开源项目,仅供学习研究,请遵守其开源协议。
想象一下:你是一家医院的 AI 工程师,想训练一个诊断模型,但患者的隐私数据分布在十几家医院里,每家都不愿意把原始数据交出来——这是医疗 AI 领域最典型的困境。再或者,你的创业公司只有几块消费级 GPU,但想训练一个参数规模不小的模型,又该怎么办?
FEDML 正是为解决这些问题而生。它是一个统一的、可扩展的机器学习库,能够让训练和部署任务在任何规模、任何硬件、任何场景下运行——从单台笔记本电脑上的简单实验,到跨三大云服务商、数万块 GPU 的大规模分布式训练,全部涵盖。

图1:TensorOpera 系统架构图 — 三层协同的 AI 基础设施全景
FEDML 的诞生源于联邦学习(Federated Learning)领域的实际痛点。联邦学习由 Google 在 2016 年提出,核心理念是"数据不动、模型动"——不需要把所有医院的数据汇集到一处,而是在各医院本地训练模型参数,再将参数聚合起来更新全局模型,从而在保护隐私的同时实现协同学习。
然而,早期的联邦学习框架各自为战:PySyft、Flower、TensorFlow Federated(TFF)等框架接口互不兼容,代码难以复用,部署到生产环境更是困难重重。FedML 团队(后来演变为 TensorOpera AI 公司)从学术研究起步,逐步将框架打磨为工业级产品,2021 年正式发布以来已积累了超过 4000 颗 GitHub 星标,成为该领域最活跃的开源项目之一。
FEDML 的设计哲学是"一个框架,多种范式"。它将分布式机器学习场景抽象为三大类,每类都有对应的模块实现:
适用于机构之间的协作场景,如上述医院案例。每个参与方(silo)持有本地数据,在本地训练模型,然后通过安全聚合协议将参数更新汇聚到中央服务器。FEDML 支持多种安全聚合算法,包括经典的 FedAvg 以及提供差分隐私保护的 LightSecAgg。这种模式的特点是参与方数量少(通常 2-100 个),但每个节点数据量大、计算能力强。
适用于大规模物联网和移动端场景,如数十亿手机用户协同训练一个键盘输入法模型。这种模式参与方数量极多(可达百万级),但每个设备算力和网络条件差异巨大。FEDML 实现了对 MNN(阿里巴巴开源的移动端神经网络推理引擎)的支持,使得模型可以在 Android 和 iOS 设备上高效运行。
不限于联邦学习场景,而是通用的分布式深度学习训练框架。FEDML 可以协调跨多个 GPU 节点、跨多云服务商的大规模训练任务,支持数据并行和模型并行策略。它还与 Weights & Biases(W&B)深度集成,方便追踪实验和可视化训练过程。
从代码结构来看,FEDML 的核心模块分为以下几个层次:
centralized:传统的中心化训练基线,用于对比基准实验。cross_silo:跨机构联邦学习核心实现,包含服务器端(fedmlServer)和客户端(fedmlClient)以及多种安全聚合算法(secagg、lightsecagg)。cross_device:面向移动端和 IoT 设备,包含 MNN 推理引擎集成。distributed:通用分布式训练编排,支持 MPI 通信协议。fa(Federated Analytics):联邦分析模块,扩展到非模型训练的数据分析场景。core:核心算法框架,包含算法抽象层(alg_frame)、数据处理(data)、差分隐私(dp)、同态加密(FHE)等基础设施。cli:命令行工具,提供 login/logout/launch/run/train/federate 等命令,通过 Click 框架实现友好的交互体验。整个项目以 Python 为主要实现语言,依赖 PyTorch 作为深度学习后端,同时支持 TensorFlow 生态(tensorflow、tensorflow_datasets、tensorflow_federated 可作为可选依赖)。此外,它还集成了 ONNX(模型序列化)、FastAPI/Uvicorn(服务化)、Docker SDK(容器编排)、Redis(缓存)、SQLAlchemy(数据库)等组件,形成了完整的 ML 基础设施栈。
FEDML 的安装非常友好——只需一条命令:
pip install fedml
安装完成后,通过 CLI 可以快速启动各种任务。例如,使用 fedml login 登录 TensorOpera 平台,fedml run 提交训练任务,fedml federate 启动联邦学习流程,fedml env 查看当前环境配置。官方还提供了大量 examples,涵盖中心化训练、联邦学习、联邦分析、跨云调度等场景。
不过需要注意的是,FEDML 的完整功能依赖 NVIDIA GPU 和 CUDA 环境(要求 CUDA >= 11.7,PyTorch >= 1.13.1),对于没有 GPU 的用户,仅能在 CPU 模式下体验部分功能。此外,分布式训练和 MPI 场景需要额外配置网络环境。
FEDML 不仅仅是一个技术框架,更代表着 AI 基础设施领域的一个重要趋势——从集中式训练走向分布式协作。随着数据隐私法规(GDPR、中国《数据安全法》等)日趋严格,以及边缘计算和物联网设备的爆发式增长,"数据不出本地"的训练范式正从学术前沿走向工业主流。
GitHub 星标从 2023 年的约 2000 颗增长到如今的 4000+ 颗,反映了社区对这个方向的持续关注。其背后的商业公司 TensorOpera AI 也获得了融资,将开源库与商业云服务(TensorOpera.ai)结合,提供从研究到生产的完整链路。
客观来看,FEDML 也有一些局限性:
无 Docker 支持:项目中缺少 Dockerfile 或 docker-compose.yml,官方虽提供 k8s 安装脚本但并非开箱即用。对于希望快速在隔离环境中运行的用户来说,门槛相对较高。
复杂的依赖环境:对 PyTorch、CUDA、MPI 等底层组件的依赖较多,在非标准环境(如某些 Linux 发行版、ARM 架构)上的安装可能遇到兼容性问题。
无 Web UI:FEDML 是纯 CLI 工具,没有图形化界面,对于不熟悉命令行的用户来说,上手曲线略陡。
商业绑定:TensorOpera AI 公司的商业服务与开源库之间存在一定绑定关系,对于希望完全自主可控的企业用户,需要评估是否接受这种依赖。