联邦学习开源框架调研

联邦学习开源框架调研,第1张

联邦学习开源框架调研

文章目录

1. FATE

1.1 FederatedML

算法列表 1.2 FATE Serving1.3 FATEFlow1.4 FATEBoard1.5 Federated Network1.6 KubeFATE 2. PySyft3. Rosetta4. PaddleFL5. FedLearner6. TFF7. FedML8. Flower

1. FATE

FATE 是微众银行人工智能部门发起的一个开源项目,旨在提供一个安全的计算框架来支持联合人工智能生态系统。它实现了多种安全计算协议,以实现大数据协作与数据保护法规合规性。凭借模块化的可扩展建模流水线、清晰的可视化界面和灵活的调度系统,FATE 获得了开箱即用的可用性和出色的运行性能。

FATE项目使用多方安全计算 (MPC) 以及同态加密 (HE) 技术构建底层安全计算协议,以此支持不同种类的机器学习的安全计算,包括逻辑回归、基于树的算法、深度学习和迁移学习等。

功能:全面,同时覆盖横向、纵向、迁移联邦学习,包含联邦学习的整体流程;实现了样本安全匹配,样本切分(1.5版本),特征处理和筛选、LR/XGB/DNN等常用算法,模型评估与评分卡,模型预测(serving),联邦推荐等。

易用:一般;虽然文档很丰富,但是难抵配置多;cluster模式下配置很多,各种端口,又因为期望兼容多种后端存储和计算,导致依赖较多,系统整体比较重,前期部署较困难;而且python、java、scala等多种语言混合在同一项目,上手相对不容易,排查问题更是头疼。不过,使用docker化部署会比本地化部署会更容易些。

1.1 FederatedML

Federatedml 包括许多常见机器学习算法以及必要的实用工具的实现。所有模块均采用解耦模块化方法开发,以增强可扩展性。具体来说,我们提供:

    FML 算法:用于 DataIO、数据预处理、特征工程和建模的联合机器学习算法。下面列出了更多详细信息。

    实用工具:启用联邦学习的工具,如加密工具、统计模块、参数定义和传输变量自动生成器等。

    框架:用于开发新算法模块的工具包和基础模型。框架提供可重用的功能来标准化模块并使其紧凑。

    安全协议:提供多种安全协议,多方交互计算更安全。

算法列表

(1)数据IO
该组件通常是建模任务的第一个组件。它将用户上传的日期转换为可用于以下组件的实例对象。

对应模块名称:DataIO数据输入:DTable,值是原始数据。数据输出:转换后的 DTable,值是在 federatedml/feature/instance.py 中定义的数据实例

(2)相交
计算两方的相交数据集,而不会泄露差异集信息。主要用于异类场景任务。

对应模块名称:Intersection数据输入:DTable数据输出:DTable 双方都出现了哪些键。

(3)联合抽样
联合采样数据,使其分布在各方平衡。该模块支持联合和独立版本

对应模块名称:FederatedSample数据输入:DTable数据输出:抽样数据,支持随机抽样和分层抽样。

(4)特征量表
用于特征缩放和标准化的模块。

对应模块名称:FeatureScale数据输入:DTable,其值为实例。数据输出:转换后的 DTable。模型输出:最小/最大、平均值/标准等变换因子。

(5)异质特征分箱
使用 binning 输入数据,根据 binned 信息计算每列的 iv 和 woe 并转换数据。

对应模块名称:HeteroFeatureBinning数据输入:DTable,在 guest 中带有 y,在 host 中没有 y。数据输出:转换后的 DTable。模型输出:每列的 iv/woe、分割点、事件计数、非事件计数等。

(6)oneHot 编码器
将列转换为 one-hot 格式。

对应模块名称:OneHotEncoder数据输入:输入 DTable。数据输出:带有新标题的转换 DTable。模型输出:原始标题和新标题映射的特征值。

(7)异质特征选择
提供5种过滤器。每个过滤器都可以根据用户配置选择列。

对应模块名称:HeteroFeatureSelection数据输入:输入 DTable。数据输出:具有新标题和过滤数据实例的转换 DTable。模型输出:每列是否左。模型输入:如果使用了 iv 过滤器,则需要 hetero_binning 模型。

(8)异构逻辑回归
通过多方构建异类逻辑回归模块。

对应模块名称:HeteroLR数据输入:输入 DTable。模型输出:逻辑回归模型。

(9)异构线性回归

通过多方构建异线性回归模块。

对应模块名称:HeteroLinR数据输入:输入 DTable。模型输出:线性回归模型。

(10)异构泊松回归
通过多方构建异泊松回归模块。

对应模块名称:HeteroPoisson数据输入:输入 DTable。模型输出:泊松回归模型。

(11)同质LR
通过多方构建同源逻辑回归模块。

对应模块名称:HomoLR数据输入:输入 DTable。模型输出:逻辑回归模型。

(12)人工神经网络

通过多方构建同源神经网络模块。

对应模块名称:HomoNN数据输入:输入 DTable。模型输出:神经网络模型。

(13)异构安全增强
通过多方构建异质安全助推模型。

对应模块名称:HeteroSecureBoost数据输入:DTable,值是实例。模型输出:SecureBoost 模型,由模型元和模型参数组成

(14)评估
输出用户的模型评估指标。

对应模块名称:evaluation 1.2 FATE Serving

FATE-Serving 是一个用于联邦学习模型的高性能工业化服务系统,专为生产环境而设计。

FATE-Serving 现在支持

高性能在线联邦学习算法。联邦学习在线推理管道。动态加载联邦学习模型。可以服务于多个模型,或同一模型的多个版本。支持A/B测试实验模型。使用联邦学习模型进行实时推理。支持远程方联合推理结果的多级缓存。支持生产部署的预处理、后处理和数据访问适配器。

1.3 FATEFlow

1.4 FATEBoard

FATEBoard 作为联邦学习建模的可视化工具套件,旨在深入探索模型并轻松有效地理解模型。

为了更容易理解、跟踪、调试和探索联邦学习建模,以及检查、评估和比较各种联邦学习模型。FATEBoard 提供了一种可视化的模型探测方式,您可以从中有效地重塑和改进模型。

1.5 Federated Network

1.6 KubeFATE

联邦学习涉及多方协作训练机器学习模型,因此它通常基于分布式系统。KubeteFATE 使用容器等云原生技术管理联邦学习工作负载。KubeFATE 使联合学习作业能够跨公共、私有和混合云环境运行。

目前,KubeFATE 支持通过 Docker Compose 和 Kubernetes部署FATE 。
FATE 组件的容器镜像
FATE 版本的所有组件都预构建在 Docker 映像中。它们可以直接从 Docker Hub 中提取。这是安装 FATE 的首选方法。它节省了大量从源代码构建 FATE 的时间。

Harbor可以用作本地注册表来存储和提供 FATE 的图像。它可以从 Docker Hub 复制容器映像以用于本地环境。Harbor 显着提高了性能并减少了网络消耗,因此建议用于使用容器的环境。

要从源代码构建 FATE 组件的映像,请参阅构建 FATE 映像。要为您的环境设置 Harbor 注册表,请参阅本指南。

使用 Docker Composew 进行部署
Docker Compose 可以在单个主机上部署 FATE 组件。通过使用 Docker Compose,可以为以联合方式协作的多方环境设置 FATE。有关详细信息,请参阅Docker Compose 部署。

在 Kubernetes 中部署
要将 FATE 部署在云端或多节点环境中,一种便捷的方法是使用 Kubernetes 集群作为底层基础设施。Helm Charts 可用于在 Kubernetes 上部署 FATE。详情请参阅Kubernetes 部署。

注意“.env”的使用
默认情况下,安装脚本会在部署期间从Docker Hub拉取镜像。用户还可以修改 .env 以指定本地注册表(例如 Harbor)以从中提取图像。

2. PySyft

单位:OpenMind
PySyft 在主要深度学习框架(如 PyTorch 和 TensorFlow)中使用联邦学习、差分隐私和加密计算(如多方计算 (MPC) 和同态加密 (HE))将私有数据与模型训练分离。

https://github.com/OpenMined/PySyft/tree/syft_0.2.x/examples/tutorials
该链接里有详细的教程。

PySyft 可用于将隐私和去中心化引入深度学习生态系统的所有方法

3. Rosetta

单位:LatticeX Foundation

概述:Rosetta 是一个基于TensorFlow开发的隐私计算框架,它将陆续集成密码学、联邦学习和可信执行环境等主流的隐私计算技术。Rosetta 旨在为人工智能快速提供隐私保护技术解决方案,不需要用户掌握任何密码学、联邦学习和硬件安全执行环境领域的专业知识。Rosetta 在用户接口层复用了 TensorFlow 的对外 API 从而使得用户可以以最低的改造成本将隐私保护功能集成到现有的 TensorFlow 程序中。github:https://link.zhihu.com/?target=https%3A//github.com/LatticeX-Foundation/Rosetta
功能 :实现了大量底层算子,包括四则运算、逻辑比较、位运算、聚合、幂指运算、常用激活函数,并包含相关算子等梯度算子。但是部分高级优化器仍未实现;另外,该项目仅仅可作为一个library来对待,联邦学习常用的功能需要自己通过Rosetta 提供的API来实现。离直接的联邦学习系统,还有一定差距

易用 :项目定位清晰,简单轻量易上手,文档基本覆盖常见问题;与tensorflow结合非常好,直接将tensorflow业务模型进行简单修改就可使用,简直就是tensorflow量身打造的插件库。

开发 :因为该项目目前只能在ubuntu下运行,所以在mac下无法直接开发,需要通过pycharm配置docker进行远程debug方式进行;结合tensorflow进行算法开发比较方便,但对于树模型或bagging&boosting等模型没有较好实现方案

代码结构 :整体架构层次清晰,底层通信、加密、协议、算子、tensorflow注册、具体算法实现层层递进,较容易扩展和修改

4. PaddleFL

单位:百度

概述:PaddleFL是一个基于PaddlePaddle的开源联邦学习框架。研究人员可以很轻松地用PaddleFL复制和比较不同的联邦学习算法。开发人员也可以从paddleFL中获益,因为用PaddleFL在大规模分布式集群中部署联邦学习系统很容易。PaddleFL提供很多联邦学习策略及其在计算机视觉、自然语言处理、推荐算法等领域的应用。此外,PaddleFL还将提供传统机器学习训练策略的应用,例如多任务学习、联邦学习环境下的迁移学习。

功能 :也是采用MPC方案实现联邦学习,底层同样实现了大量算子,但相对Rosetta,它不是一个简单的library,PaddleFL实现了联邦学习系统的外围功能,可同时实现横向和纵向联邦学习,并适用于大规模的分布式联邦学习计算

易用 :初学者较难上手,文档理解困难;将联邦学习任务分为编译时和运行时两套流程,机器角色分配多。另外系统与PaddlePaddle绑定,增加系统复杂性。

开发 :底层的mpc协议部分来自百度自家的研究,相关资料少,代码理解更加困难。

代码结构 :另外代码的目录结构一般,比如你会看到“mobile”和“mpc”处于同一个目录结构。

5. FedLearner

单位:字节跳动
概述:Fedlearner 是协作式机器学习框架,可以对机构之间分布的数据进行联合建模。
作为分布式的机器学习范式,联邦学习能够有效解决数据孤岛问题,让参与方在不共享数据的基础上联合建模,挖掘数据价值。

据介绍,字节跳动联邦学习平台 Fedlearner 已经在电商、金融、教育等行业多个落地场景实际应用。字节跳动联邦学习技术负责人吴迪在接受 InfoQ 专访时表示,联邦学习面临的困难更多是如何为客户争取可感知的最大商业价值,不同行业的伙伴,其产品特点和价值诉求各不相同。

得益于字节跳动在推荐和广告领域长期积累的机器学习建模技术,字节跳动联邦学习找到了帮助企业客户取得可感知商业价值的方向,即基于字节跳动的个性化推荐算法、模型优势,探索、寻找落地场景。例如在电商广告场景的落地案例中,Fedlearner 已经帮助合作方取得了 10% 以上的投放效率增长,跑量消耗提升 15%+,电商平台 ROI 提升 20%+。

6. TFF

单位:Google, Tensorflow官方

7. FedML

单位:USC
homepage:http://fedml.ai/

联邦学习是机器学习领域中一个快速发展的研究领域。尽管已经进行了大量的研究工作,但现有的库无法充分支持多样化的算法开发(例如,多样化的拓扑和灵活的消息交换),并且实验中不一致的数据集和模型使用使得公平比较变得困难。在这项工作中,我们引入了 FedML,这是一个开放的研究库和基准,可促进新的联邦学习算法的开发和公平的性能比较。 FedML 支持三种计算范式(分布式训练、移动端训练和单机模拟),供用户在不同系统环境下进行实验。 FedML 还通过灵活和通用的 API 设计和参考基线实现促进了多样化的算法研究。非 I.I.D 设置的策划和综合基准数据集旨在进行公平比较。我们相信 FedML 可以为联邦学习研究社区提供一种高效且可重复的方法来开发和评估算法。我们在 https://FedML.ai 维护源代码、文档和用户社区。

8. Flower

单位:剑桥大学

联邦学习 (FL) 已成为边缘设备协作学习共享预测模型的一种有前途的技术,同时将训练数据保留在设备上,从而将机器学习的能力与将数据存储在云中的需求脱钩。然而,从规模和系统异质性方面来看,FL 难以实际实施。尽管有许多研究框架可用于模拟 FL 算法,但它们不支持研究异构边缘设备上的可扩展 FL 工作负载。
在本文中,我们介绍了 Flower——一个全面的 FL 框架,它通过提供新的设施来执行大规模的 FL 实验并考虑丰富的异构 FL 设备场景,从而将自己与现有平台区分开来。我们的实验表明,Flower 仅使用一对高端 GPU 就可以在客户端大小上执行高达 15M 的 FL 实验。然后,研究人员可以将实验无缝迁移到真实设备,以检查设计空间的其他部分。我们相信 Flower 为社区提供了一个重要的 FL 研究和开发新工具。https://github.com/adap/flower

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/zaji/5715831.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-12-18
下一篇 2022-12-17

发表评论

登录后才能评论

评论列表(0条)

保存