联邦学习框架FATE简介
所属分类 FATE
浏览量 831
FATE (Federated AI Technology Enabler) 联邦学习开源框架
让企业和机构在保护数据安全和数据隐私的前提下进行数据协作
FATE 使用多方安全计算 (MPC) 和 同态加密 (HE) 技术构建底层安全计算协议,
以此支持不同种类的机器学习的安全计算,包括逻辑回归、基于树的算法、深度学习和迁移学习等
Federated learning(also known ascollaborative learning) is a machine learning technique
that trains an algorithm across multiple decentralized edge devices or servers holding local data samples, without exchanging them.
This approach stands in contrast to traditional centralized machine learning techniques where all the local datasets are uploaded to one server,
as well as to more classical decentralized approaches which often assume that local data samples are identically distributed.
联邦学习 federated learning 是分布式加密机器学习新范式,在保护数据隐私的前提下实现跨机构AI协作,
成为继安全多方计算和集中加密计算之后的“第三代隐私计算技术”
Fate 是一个联邦学习框架,可以联合多方的数据,共同构建一个模型
隐私计算3种技术实现 TEE/MPC/联邦学习
TEE和MPC都是面向通用计算模式,但联邦学习是专门针对机器学习模型训练这个场景设计优化
机器学习训练分布式化后天然具备隐私保护的特点,比较容易地做到 "原始数据不动 模型动"
机器学习本身是复杂模型的近似计算,虽然联邦学习已经进入非常实用的阶段
但是它是用来做近似计算的
整体架构
flow board serving
FederatedML Federated machine learning core componenet
secure protocals
computing Federation storage
FederatedML
横向 纵向 迁移 联邦学习 联邦统计 联邦特征工程 PIR PSI
secure protocals
HE / SS / OT / RSA / DH ...
computing
tensorflow / pytorch AI
eggroll / spark
Federation
rollsite / pulsar / rabbitMQ
storage
HDFS / HIVE / mysql / localFS
FATE Flow
任务的管理和调度
单机 (standalone) 和 集群(cluster) 模式
单机模式 数据的存储以及计算都在 FATE Flow 本地执行
集群模式 数据的存储和计算 分发到分布式集群执行
FATE 默认支持使用 eggroll 作为计算和存储的集群
eggroll 本身是一个相对独立的集群,它对外提供一个统一的入口以及一组 API,
外部应用 通过 RPC 把任务发送到 eggroll 集群上执行
eggroll 支持横向扩展
计算引擎
eggroll spark
Table
rollpair 跟 eggroll 集群交互
pyspark 中的 rdd 跟 spark集群交互
eggroll
ClusterManager (CM) 管理集群的物理资源,管理session信息
NodeManager (NM) 管理一个机器节点上的物理资源
RollSite 管理跨站点通信
CM和NM都是无状态的,非常轻量级,易于管理
横向学习,对应样本融合,一般适用于同行业;纵向学习,对应特征融合,一般适用于跨行业
Guest 数据应用方 纵向联邦时是拥有标签的一方
Host 数据提供方 纵向联邦中不含label的建模方
Arbiter 协作者,中立第三方,作用是聚合多方模型
Federated Network FATE合作方之间的跨站点通信
EggRoll 分布式存储和计算
Fate Federated ML 联邦学习算法功能组件,实现了机器学习常用算法
Fate-Flow 联邦学习建模pipeline, 模型计算调用入口
Fate-Board 联邦学习建模看板,展现模型的pipeline, 部分中间结果,模型进度以及模型日志
Fate-Serving 支持联邦学习联合模型部署和在线预测
KubeFate 基于 Docker-Compose 和 Kubernetes 部署Fate集群
FATE 通过 fateflow 启动建模任务
fateflow 以 fate-dsl 定义模型的pipeline
整个模型的pipeline定义分为两个配置文件
dsl.json 定义模型的流程
conf.json 定义模型各个模块的参数
FATE Flow 单机 (standalone) 和 集群(cluster) 模式
单机模式中,数据的存储以及计算都在 本地执行 ,因此无法有效扩展,主要用于学习及测试
集群模式中,数据的存储以及计算 下发到分布式的集群中执行,集群的大小可以根据实际的业务需求来进行伸缩
FATE 默认支持使用 eggroll 作为计算和存储的集群
eggroll 本身是一个相对独立的集群,它对外提供一个统一的入口以及一组API,
外部应用通过 RPC 调用的方式把任务发送到 eggroll 集群上执行,
eggroll 本身支持横向扩展 ,可根据实际场景调整集群的规模
FATE 现状
github 热度最高,社区活跃,应用较为普遍,行业接受度高
多次迭代 ,架构主键清晰 稳定
功能全面,同时覆盖横向、纵向、迁移联邦学习,包含联邦学习的整体流程
实现了样本安全匹配,样本切分(1.5版本),特征处理和筛选、LR/XGB/DNN等常用算法,模型评估与评分卡,模型预测(serving),联邦推荐等
文档很丰富,但是配置复杂 ,cluster模式下配置很多,各种端口,
因为要兼容多种后端存储和计算,导致依赖较多,架构重,前期部署较困难
python、java、scala等多种语言混合在同一项目,上手较难,排查问题困难
standalone模式下开发的算法模块,基本上能直接在cluster模式下运行
数据较大时 通信 map-reduce 可能会有问题
隐私计算简介
隐私计算技术点和术语
联邦学习简介
联邦学习入门笔记
机器学习一般流程
机器学习基础
上一篇
下一篇
Docker三剑客
特定类型文件复制功能 java实现
Python3中的 pyi 文件
Python3虚拟环境venv
pip 常用命令
fate1.8 源码笔记