FedML - 联合学习和分析库,可对分散数据进行安全和协作的机器学习

作者:Sec-Labs | 发布时间:

项目地址

https://github.com/FedML-AI/FedML

FedML:在任何地方以任何规模构建开放和协作 AI 的社区

e18113f28e214801

 

在当前阶段,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 功能概述

c0bf908f57214847

 

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。
  • 模型服务 :我们专注于为边缘人工智能提供更好的用户体验。

开源库快速入门

https://github.com/FedML-AI/FedML

安装

首先,让我们先安装 FedML。

pip install fedml

更多安装方法请参考 安装 FedML

代码架构的快速概述

总的来说,FedML 源代码架构遵循 在 NeurIPS 2020(FL 研讨会)上获得最佳论文奖的论文 。 FedML 联合创始人何朝阳博士 现场 视频白皮书 中提出了其最初的想法。

e55474d3da214903

 

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

0c4397afda214923

 

我们的 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) 进行模拟:

使用基于 NCCL 的 MPI 进行模拟(最快的训练):

  • 如果您的跨 GPU 带宽很高(例如,InfiniBand、NVLink、EFA 等),我们建议使用这个基于 NCCL 的 MPI FL 模拟器来加速您的开发。

FedML 八达通示例

横向联邦学习:

分层联邦学习:

  • hierarchy_fedavg_mnist_lr_example :说明如何在数据孤岛(医院、银行等)中运行分层联邦学习的示例。 这里 hierarchical 的意思是,在每个 FL 客户端(数据仓库)内部,有多个 GPU 可以使用 PyTorch DDP 运行本地分布式训练,然后 FL 服务器从所有 FL 客户端接收到的结果进行全局聚合。

FedML 蜂巢示例

智能手机和物联网上的 FedML

| | |

请参阅FedML/android 上的介绍和教程 。

0ded7691f2214939

 

请参阅FedML/iot 上的介绍和教程

MLOps 用户指南

https://open.fedml.ai

目前,基于 FedML Octopus(跨筒仓)和 Beehive(跨设备)开发的项目可以使用 FedML MLOps 顺利部署到现实世界的系统中。

FedML MLOps 平台可在任何地方以任何规模简化联邦学习的工作流程。 它支持零代码、轻量级、跨平台和可证明安全的联合学习。 它可以从各种用户/孤岛/边缘节点的分散数据中进行机器学习,而无需将任何数据集中到云端,从而提供最大的隐私和效率。

e5a1ce0966214951

 

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

ff254b5425215013

 

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}
}

生态系统

18643a7289215030

 

FedML 生态系统促进了不同应用领域的联合学习研究和产品化。 在 FedML Core Framework 的基础支持下,它支持 FedNLP(自然语言处理)、FedCV(计算机视觉)、FedGraphNN(图神经网络)和 FedIoT(物联网)。 有关详细信息,请阅读本指南: https ://doc.fedml.ai/starter/ecosystem.html 。

出版物

FedML 的核心技术得到了多年前沿研究的支持,这些研究在 ML/FL 算法、安全/隐私、系统和应用领域的 50 多篇出版物中都有体现。

  1. 高科学影响的愿景文件
  2. 大规模分布式/联合训练系统
  3. FL 的训练算法
  4. FL 的安全/隐私
  5. AI 应用程序 ML 算法、安全/隐私、系统、应用程序和远见影响方面的全套科学出版物

有关详细信息,请查看 此出版物列表

视频(特邀演讲)

标签:工具分享, 机器学习