FedML - 联合学习和分析库,可对分散数据进行安全和协作的机器学习
作者:Sec-Labs | 发布时间:
项目地址
https://github.com/FedML-AI/FedML
FedML:在任何地方以任何规模构建开放和协作 AI 的社区

在当前阶段,FedML 库为任何地方、任何规模的联合/分布式机器学习提供了一个研究和生产集成的边缘云平台。
FedML 主页: https:
//fedml.ai/ FedML 开源: https
://github.com/FedML-AI FedML 平台: https
://open.fedml.ai FedML 用例: https://open.fedml。 ai/platform/appStore
FedML 文档: https
://doc.fedml.ai FedML 博客: https
://medium.com/@FedML FedML 研究: https
: //fedml.ai/research-papers/ FedML 产品概述: https ://medium.com/@FedML/fedml-ai-platform-releases-the-worlds-federated-learning-open-platform-on-public-cloud-with-an-8024e68a70b6
加入社区:
Slack: https
: //join.slack.com/t/fedml/shared_invite/zt-havwx1ee-a1xfOUrATNfc9DFqU~r34w Discord: https ://discord.gg/9xkW8ae6RV
消息
- [2022/08/01](产品介绍) FedML AI平台发布全球公有云联邦学习开放平台,深度介绍产品和技术! 请访问 此博客 了解详细信息。
- [2022/03/15](筹款) :FedML, Inc. 已完成第一轮筹款。 我们得到了来自美国加利福尼亚湾区的专注于人工智能、SaaS 和区块链/Web3/加密的顶级 VC 的支持。
- [2022/02/14](公司) :FedML 升级为特拉华州注册的 C-Corp 公司。 我们的总部位于美国加利福尼亚州。 两位联合创始人分别是 CEO Salman Avestimehr ( https://www.avestimehr.com/ ) 和 CTO Chaoyang He ( https://chaoyanghe.com )。 我们欢迎世界各地的贡献者。
- [2021/02/01](获奖) :#NeurIPS 2020#FedML 在 2020 年 NeurIPS 联合学习研讨会上获得 最佳论文奖
职业生涯
FedML 正在招聘! 快来加入我们 吧!
FedML 功能概述

FedML 徽标反映了 FedML Inc. 的使命。FedML 旨在构建简单而通用的 API,用于在任何地方以任何规模运行的机器学习。 换句话说,FedML 既支持数据孤岛的联邦学习,也支持通过 MLOps 和开源支持进行加速的分布式训练,涵盖前沿的学术界研究和工业级用例。
- FedML Cheetah - 通过用户友好的分布式训练加速模型训练
- FedML Parrot - 在现实世界中模拟联邦学习(1)使用单个进程模拟 FL(2)基于 MPI 的 FL 模拟器(3)基于 NCCL 的 FL 模拟器(最快)
- FedML Octopus - 用于跨组织/帐户培训的跨筒仓联合学习,包括基于 Python 的边缘 SDK。
- FedML Beehive - 智能手机和物联网的跨设备联合学习,包括适用于 Android/iOS 和嵌入式 Linux 的边缘 SDK。
- FedML MLOps :FedML 的机器学习操作管道,用于在任何地方以任何规模运行的 AI。
- 模型服务 :我们专注于为边缘人工智能提供更好的用户体验。
开源库快速入门
安装
首先,让我们先安装 FedML。
pip install fedml
更多安装方法请参考 安装 FedML 。
代码架构的快速概述
总的来说,FedML 源代码架构遵循 在 NeurIPS 2020(FL 研讨会)上获得最佳论文奖的论文 。 FedML 联合创始人何朝阳博士 在 现场 视频 和 白皮书 中提出了其最初的想法。

2022 年 3 月之后,FedML 已升级为一家 AI 公司,旨在提供任何地方、任何规模的机器学习能力。 现在FedML的python版本 https://github.com/FedML-AI/FedML-/tree/master/python 重组如下:
core :FedML 低级 API 包。 该包通过 MPI、NCCL、MQTT、gRPC、PyTorch RPC 等通信后端实现分布式计算,还支持拓扑管理。 还支持与安全和隐私相关的其他低级 API。 所有算法和场景都是基于“核心”包构建的。
data :FedML 将提供一些默认数据集供用户入门。 还提供了自定义模板。
模型 :FedML 模型动物园。
device :FedML 计算资源管理。
模拟 :FedML parrot 可以支持(1)使用单个进程模拟 FL(2)基于 MPI 的 FL 模拟器(3)基于 NCCL 的 FL 模拟器(最快)
cross_silo :用于跨组织/帐户培训的跨筒仓联邦学习
cross_device :智能手机和物联网的跨设备联合学习
分布式 :分布式训练:使用轻量级 Cheetah 加速模型训练
serve :模型服务,为边缘推理量身定制
mlops : 机器学习操作平台相关的API(open.fedml.ai)
集中 :一些用于基准测试的集中培训代码示例。
utils :其他模块共享的通用实用程序。
简化的 API

我们的 API 设计理念是尽可能减少 API 的数量,同时保持灵活性。
对于简单性,FedML Parrot 只有一行 API,如下例所示 fedml_config.yaml (示例如下: https ://github.com/FedML-AI/FedML/blob/master/python/examples/simulation/sp_fedavg_mnist_lr_example/fedml_config.yaml )
# main.py
import fedml
if __name__ == "__main__":
fedml.run_simulation()
python main.py
您将获得以下输出:
[FedML-Server(0) @device-id-0] [Sun, 01 May 2022 14:59:28] [INFO] [__init__.py:30:init] args = {'yaml_config_file': '', 'run_id': '0', 'rank': 0, 'yaml_paths': ['/Users/chaoyanghe/opt/anaconda3/envs/mnn37/lib/python3.7/site-packages/fedml-0.7.8-py3.7.egg/fedml/config/simulation_sp/fedml_config.yaml'], 'training_type': 'simulation', 'using_mlops': False, 'random_seed': 0, 'dataset': 'mnist', 'data_cache_dir': './data/mnist', 'partition_method': 'hetero', 'partition_alpha': 0.5, 'model': 'lr', 'federated_optimizer': 'FedAvg', 'client_id_list': '[]', 'client_num_in_total': 1000, 'client_num_per_round': 10, 'comm_round': 200, 'epochs': 1, 'batch_size': 10, 'client_optimizer': 'sgd', 'learning_rate': 0.03, 'weight_decay': 0.001, 'frequency_of_the_test': 5, 'using_gpu': False, 'gpu_id': 0, 'backend': 'single_process', 'log_file_dir': './log', 'enable_wandb': False}
[FedML-Server(0) @device-id-0] [Sun, 01 May 2022 14:59:28] [INFO] [device.py:14:get_device] device = cpu
[FedML-Server(0) @device-id-0] [Sun, 01 May 2022 14:59:28] [INFO] [data_loader.py:22:download_mnist] ./data/mnist/MNIST.zip
[FedML-Server(0) @device-id-0] [Sun, 01 May 2022 14:59:31] [INFO] [data_loader.py:57:load_synthetic_data] load_data. dataset_name = mnist
...
您还可以使用 自定义超参数 fedml_config.yaml 。 有关详细信息,请查看 本教程以获取单行示例 。
为灵活起见,也可以将一行 API 扩展为五行 API。 为了说明这一点,现在让我们以 FedML Octopus(跨筒仓联邦学习)为例(源代码: https ://github.com/FedML-AI/FedML/tree/master/python/examples/cross_silo/mqtt_s3_fedavg_mnist_lr_example )。
在此示例中,FL 客户端 API 如下:
import fedml
from fedml.cross_silo import Client
if __name__ == "__main__":
args = fedml.init()
# init device
device = fedml.device.get_device(args)
# load data
dataset, output_dim = fedml.data.load(args)
# load model
model = fedml.model.create(args, output_dim)
# start training
client = Client(args, device, dataset, model)
client.run()
使用这些 API,您只需使用配置文件调整超参数 fedml_config.yaml 。 一个例子如下:
common_args:
training_type: "cross_silo"
random_seed: 0
data_args:
dataset: "mnist"
data_cache_dir: "./../../../data"
partition_method: "hetero"
partition_alpha: 0.5
model_args:
model: "lr"
model_file_cache_folder: "./model_file_cache" # will be filled by the server automatically
global_model_file_path: "./model_file_cache/global_model.pt"
train_args:
federated_optimizer: "FedAvg"
client_id_list:
client_num_in_total: 1000
client_num_per_round: 2
comm_round: 50
epochs: 1
batch_size: 10
client_optimizer: sgd
learning_rate: 0.03
weight_decay: 0.001
validation_args:
frequency_of_the_test: 5
device_args:
worker_num: 2
using_gpu: false
gpu_mapping_file: config/gpu_mapping.yaml
gpu_mapping_key: mapping_default
comm_args:
backend: "MQTT_S3"
mqtt_config_path: config/mqtt_config.yaml
s3_config_path: config/s3_config.yaml
tracking_args:
log_file_dir: ./log
enable_wandb: false
现在让我们运行一些示例,以了解 FedML 如何在不同的现实世界环境中简化联邦学习。
FedML 鹦鹉示例
单进程模拟(独立):
- sp_fedavg_mnist_lr_example :使用个人笔记本电脑或服务器中的单个进程模拟 FL。 当研究人员希望在小型合成数据集(MNIST、莎士比亚等)和小型模型(ResNet-18、Logistic Regression 等)中尝试快速算法思想时,这很有帮助。
使用消息传递接口 (MPI) 进行模拟:
- mpi_torch_fedavg_mnist_lr_example :用于跨 GPU/CPU 服务器的基于 MPI 的联合学习。
使用基于 NCCL 的 MPI 进行模拟(最快的训练):
- 如果您的跨 GPU 带宽很高(例如,InfiniBand、NVLink、EFA 等),我们建议使用这个基于 NCCL 的 MPI FL 模拟器来加速您的开发。
FedML 八达通示例
横向联邦学习:
- mqtt_s3_fedavg_mnist_lr_example :说明如何在数据孤岛(医院、银行等)中运行水平联邦学习的示例
分层联邦学习:
- hierarchy_fedavg_mnist_lr_example :说明如何在数据孤岛(医院、银行等)中运行分层联邦学习的示例。 这里
hierarchical的意思是,在每个 FL 客户端(数据仓库)内部,有多个 GPU 可以使用 PyTorch DDP 运行本地分布式训练,然后 FL 服务器从所有 FL 客户端接收到的结果进行全局聚合。
FedML 蜂巢示例
智能手机和物联网上的 FedML
| | |
请参阅FedML/android 上的介绍和教程 。

请参阅FedML/iot 上的介绍和教程
MLOps 用户指南
目前,基于 FedML Octopus(跨筒仓)和 Beehive(跨设备)开发的项目可以使用 FedML MLOps 顺利部署到现实世界的系统中。
FedML MLOps 平台可在任何地方以任何规模简化联邦学习的工作流程。 它支持零代码、轻量级、跨平台和可证明安全的联合学习。 它可以从各种用户/孤岛/边缘节点的分散数据中进行机器学习,而无需将任何数据集中到云端,从而提供最大的隐私和效率。

上图显示了工作流程。 这样的工作流由 Web UI 处理,无需处理复杂的部署。 详情请查看以下现场演示:

3 分钟介绍: https ://www.youtube.com/watch?v=E1k05jd1Tyw
有关 MLOps 的详细指南,请参阅 FedML MLOps 用户指南 。
更多资源
参考
@article{chaoyanghe2020fedml,
Author = {He, Chaoyang and Li, Songze and So, Jinhyun and Zhang, Mi and Wang, Hongyi and Wang, Xiaoyang and Vepakomma, Praneeth and Singh, Abhishek and Qiu, Hang and Shen, Li and Zhao, Peilin and Kang, Yan and Liu, Yang and Raskar, Ramesh and Yang, Qiang and Annavaram, Murali and Avestimehr, Salman},
Journal = {Advances in Neural Information Processing Systems, Best Paper Award at Federate Learning Workshop},
Title = {FedML: A Research Library and Benchmark for Federated Machine Learning},
Year = {2020}
}
生态系统

FedML 生态系统促进了不同应用领域的联合学习研究和产品化。 在 FedML Core Framework 的基础支持下,它支持 FedNLP(自然语言处理)、FedCV(计算机视觉)、FedGraphNN(图神经网络)和 FedIoT(物联网)。 有关详细信息,请阅读本指南: https ://doc.fedml.ai/starter/ecosystem.html 。
出版物
FedML 的核心技术得到了多年前沿研究的支持,这些研究在 ML/FL 算法、安全/隐私、系统和应用领域的 50 多篇出版物中都有体现。
- 高科学影响的愿景文件
- 大规模分布式/联合训练系统
- FL 的训练算法
- FL 的安全/隐私
- AI 应用程序 ML 算法、安全/隐私、系统、应用程序和远见影响方面的全套科学出版物
有关详细信息,请查看 此出版物列表 。
视频(特邀演讲)
- 可信赖且可扩展的联邦学习 。 联合学习一个世界研讨会 (FLOW)。 萨尔曼·阿维斯泰米尔
- 用于联邦学习的分布式 ML 壮举 。 朝阳贺。 斯坦福 MLSys 研讨会。 作者:何朝阳
- FedML 库的贡献演讲 。 NeurIPS 2020 联邦学习研讨会最佳论文奖。 作者:何朝阳