FATE (Federated AI Technology Enabler) 是微众银行AI部门发起的全球首个联邦学习工业级开源框架,可以让企业和机构在保护数据安全和数据隐私的前提下进行数据协作。 FATE项目使用多方安全计算 (MPC) 以及同态加密 (HE) 技术构建底层安全计算协议,以此支持不同种类的机器学习的安全计算,包括逻辑回归、基于树的算法、深度学习和迁移学习等。

FATE于2019年2月首次对外开源,并于2019年6月由微众银行捐献给Linux基金会,并成立 FATE TSC 对FATE社区进行开源治理,成员包含国内主要云计算和金融服务企业。

FATE官方网站:https://fate.fedai.org/
FATE教程:https://fate.readthedocs.io/en/latest/zh/
开源地址:https://github.com/FederatedAI/

一、FATE中的联邦学习算法

FATE目前支持三种类型联邦学习算法:横向联邦学习、纵向联邦学习以及迁移学习。

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

  • 联邦统计: 包括隐私交集计算,并集计算,皮尔逊系数等
  • 联邦特征工程:包括联邦采样,联邦特征分箱,联邦特征选择等。
  • 联邦机器学习算法:包括横向和纵向的联邦LR, GBDT, DNN,迁移学习等
  • 模型评估:提供对二分类,多分类,回归评估,联邦和单边对比评估
  • 安全协议:提供了多种安全协议,以进行更安全的多方交互计算。

算法清单:https://github.com/FederatedAI/DOC-CHN/tree/master/Federatedmlhttps://github.com/FederatedAI/DOC-CHN/tree/master/Federatedmlhttps://github.com/FederatedAI/DOC-CHN/tree/master/Federatedml

二、FATE技术架构

FATE技术架构的底层是Tensorflow / Pytorch(深度学习)、EggRoll /Spark(分布式计算框架)和多方联邦通信网络,上层为联邦安全协议,并在安全协议的基础上构建联邦学习算法库。围绕实际场景,FATE在技术架构顶层构建了联邦区块链、联邦多云管理、联邦模型可视化平台、联邦建模pipeline调度、联邦在线推理等。

FATE联邦算法组件已发展至30余个,实现工业界主流场景算法全覆盖和工业界主流多方安全计算协议全覆盖,涉及数据输入输出、纵向联邦统计、纵向联邦特征工程、纵向联邦学习算法、横向联邦学习算法、模型评估、安全计算等算法方案。

三、安装教程

FATE支持Linux或Mac操作系统,当前FATE支持:

  • Native部署: 单机部署和集群部署;
  • KubeFATE部署

Native部署

运行环境:jdk1.8+、Python3.6、python virtualenv、mysql5.6+、redis-5.0.2

1、单机部署

FATE为开发人员提供了单机部署架构版本。单机部署版本可以帮助开发人员快速开发以及测试FATE。

该版本支持两种类型:

  • Docker;
  • 手动编译。

单机版提供三种部署方式,可以根据实际情况选择:

  • 使用Docker镜像安装FATE(推荐)
  • 在主机中安装FATE
  • 使用Docker从源代码构建FATE(需要40分钟或更长时间)

1) 使用Docker镜像安装FATE(推荐)

建议使用docker镜像,这样可以大大降低遇到问题的可能性。

主机需要能够访问外部网络,从公共网络中拉取安装包和docker镜像。

依赖docker和docker-compose,docker建议版本为18.09,docker-compose建议版本为1.24.0,您可以使用以下命令验证docker环境:docker –version和docker-compose –version,docker的起停和其他操作请参考docker –help。

执行之前,请检查8080、9060和9080端口是否已被占用。 如果要再次执行,请使用docker命令删除以前的容器和镜像。

请按照以下步骤操作:
#获取安装包

wget https://webank-ai-1251170195.cos.ap-guangzhou.myqcloud.com/docker_standalone-fate-1.4.0.tar.gz
tar -xzvf docker_standalone-fate-1.4.0.tar.gz

#执行部署

cd docker_standalone-fate-1.4.0
bash install_standalone_docker.sh

#验证和测试

CONTAINER_ID=`docker ps -aqf "name=fate_python"`
docker exec -t -i ${CONTAINER_ID} bash
bash ./federatedml/test/run_test.sh

有些用例算法在 examples 文件夹下, 请尝试使用。

您还可以通过浏览器体验算法过程看板,访问:Http://hostip:8080。

在docker中安装fate1.7.0版本:

1、通过镜像包拉取镜像

wget https://webank-ai-1251170195.cos.ap-guangzhou.myqcloud.com/fate/1.7.0/release/standalone_fate_docker_image_1.7.0_release.tar
docker load < standalone_fate_docker_image_1.7.0_release.tar

使用docker images能看到fate对应1.7.0的镜像则镜像下载成功

2、启动

docker run -d --name standalone_fate -p 8080:8080 federatedai/standalone_fate:1.7.0

使用docker ps能看到fate对应1.7.0的容器运行中则启动成功

3、进入容器

docker exec -it $(docker ps -aqf "name=standalone_fate") bash
#或者
docker exec -it standalone_fate bash

4、查看fateBoard

打开fateBoard配置文件fate/fateboard/conf/application.properties

server.board.login.username=admin
server.board.login.password=admin

使用配置文件中的账号密码登录 http://localhost:8080

2) 在主机中安装FATE

检查本地8080、9360、9380端口是否被占用。

netstat -apln|grep 8080
netstat -apln|grep 9360
netstat -apln|grep 9380

下载独立版本的压缩包并解压缩。

wget https://webank-ai-1251170195.cos.ap-guangzhou.myqcloud.com/standalone-fate-master-1.4.0.tar.gz
tar -xzvf  standalone-fate-master-1.4.0.tar.gz

进入FATE目录并执行init.sh.

cd standalone-fate-master-1.4.0
source init.sh init

执行测试.

cd standalone-fate-master-1.4.0
bash ./federatedml/test/run_test.sh

3) 使用Docker从源代码构建FATE

主机需要能够访问外部网络,从公共网络中拉取安装包和docker镜像。

依赖docker和docker-compose,docker建议版本为18.09,docker-compose建议版本为1.24.0,您可以使用以下命令验证docker环境:docker –version和docker-compose –version,docker的起停和其他操作请参考docker –help。

执行之前,请检查8080、9060和9080端口是否已被占用。 如果要再次执行,请使用docker命令删除以前的容器和镜像。

大约需要40分钟才能执行完成,请耐心等待。

请按照以下步骤操作:

#获取安装包

git clone https://github.com/FederatedAI/FATE.git

#执行部署

cd FATE/standalone-deploy
bash build_standalone_docker.sh init

#验证和测试

CONTAINER_ID=`docker ps -aqf "name=fate_python"`
docker exec -t -i ${CONTAINER_ID} bash
bash ./federatedml/test/run_test.sh

请忽略以下提示:

WARNING: Image for service mysql was built because it did not already exist. To rebuild this image you must use docker-compose build or docker-compose up –build.
debconf: delaying package configuration, since apt-utils is not installed.
WARNING: You are using pip version 19.2.1, however version 19.2.2 is available.You should consider upgrading via the ‘pip install –upgrade pip’ command.
WARNING: Image for service xxx was built because it did not already exist. To rebuild this image you must use docker-compose build or docker-compose up –build.

简单介绍几个重要目录和文件:

  • fate_flow:联邦学习模块运行和管理的主要模块,用于提交任务、解析参数、生成作业、执行作业、保存和查询日志等功能
  • federatedml:联邦机器学习的主要实现模块,包括各类特征预处理、横向/纵向场景的机器学习等,这个模块是我们后面需要详细了解的
  • arch:由于我们的框架可以进行分布式计算,所以fate对后台的计算框架进行了api层面的封装,如基础的数据表计算和存储操作、变量数据传输的封装
  • eggroll:微众开发的一个分布式计算框架,fate同时支持eggroll和fate作为后端的计算框架

2、集群部署

FATE同样为大数据场景提供了分布式运行部署架构版本。从单机部署迁移到集群部署仅需要更改配置文件,不需要更改算法。

集群部署指南:https://github.com/FederatedAI/DOC-CHN/blob/master/部署/FATE-Cluster-step-by-step部署指南.rsthttps://github.com/FederatedAI/DOC-CHN/blob/master/部署/FATE-Cluster-step-by-step部署指南.rsthttps://github.com/FederatedAI/DOC-CHN/blob/master/%E9%83%A8%E7%BD%B2/FATE-Cluster-step-by-step%E9%83%A8%E7%BD%B2%E6%8C%87%E5%8D%97.rst

KubeFATE部署

通过 KubeFATE, 我们可以使用 docker-compose或者 Kubernetes方式部署FATE:

  • 如果是开发或者测试场景, 推荐使用docker-compose部署方式. 这种模式仅仅需要 Docker 环境。 更多细节请参考 FATE Docker Compose部署.
  • 如果生产环境或者大规模部署, 推荐使用Kubernetes方式来管理FATE系统 。更多细节请参考FATE Kubernetes部署.

更多使用说明请见KubeFATE。

运行测试

./federatedml/test 文件夹中提供了所有单元测试的脚本。

安装FATE后,可以使用以下命令运行测试:

sh ./federatedml/test/run_test.sh

如果FATE被正确安装,那么所有单元测试都将成功通过。

示例程序

快速开始

我们提供了一个用于快速搭建训练任务的python脚本作为示例。该脚本位于:FATE/examples/federatedml-1.x-examples

获取模型并检查结果

FATE提供了名为 fate-flow 的工具用来跟踪组件输出模型或日志。fate-flow的部署和使用可以在 这里 找到。

四、项目结构

  • 算法框架FATE:算法功能组件,包括常见机器学习算法联邦化实现。所有模块均采用模块化的解耦的方式进行开发,从而增强可扩展性。目前1.6版本支持横向联邦学习、纵向联邦学习以及迁移学习,去耦的模块化结构支持多样化联邦特征工程与建模。

  • 建模调度框架FATE-Flow:联邦学习框架FATE的作业调度系统,实现联邦学习作业生命周期的完整管理,其中包括数据输入、训练作业调度、指标追踪、模型中心等功能。协同多方任务调度,同时提供任务流程DAG解析。

  • 联邦模型可视化平台FATE-Board:联邦学习建模的可视化工具,为终端用户可视化和度量模型训练的全过程。支持对模型训练过程全流程的跟踪、统计和监控等,并为模型运行状态、模型输出、日志追踪等提供了丰富的可视化呈现,帮助用户简单而高效地深入探索模型与理解模型。

  • 联邦在线推理FATE-Serving:提供实时在线联合单笔或批次预测,同时提供可视化的集群操作界面,集成模型管理、集群监控、服务治理等功能。

  • 工业级云服务FATE-Cloud:实现多云管理FATE,提供安全可靠、合规的企业级数据合作网络构建解决方案。

  • 轻量级视觉横向框架FedVision:内置PaddleFL/PaddleDetection插件,支持多种常用的视觉检测模型, 助力视觉联邦场景快速落地。

  • 一体化部署KubeFATE:简便的Docker环境部署方案,方便开发者快速开发或测试FATE。

五、FATE-Flow架构解析

官方架构图:

FATE-Flow提供了client和board两种客户端,访问fate的flow server完成了任务flow的调度。整个任务流官网也很中肯的定义为Pipeline。Pipeline有点像开发常用的jenkins,一个任务完成后触发后续任务,直到所有任务结束。

FATE-Flow联邦学习Pipeline

FATE-Flow是用于联邦学习的端到端Pipeline系统,它由一系列高度灵活的组件构成,专为高性能的联邦学习任务而设计。其中包括数据处理、建模、训练、验证、发布和在线推理等功能。官方示例图如下:

联邦学习开源框架FATE相关推荐

  1. 联邦学习开源框架FATE助力腾讯神盾沙箱,携手打造数据安全合作生态

    近日,微众银行联邦学习FATE开源社区迎来了两位新贡献者--来自腾讯的刘洋及秦姝琦,作为云计算安全领域的专家,两位为FATE构造了新的功能点,并在Github上提交修复了相关漏洞.(Github项目地 ...

  2. 联邦学习开源框架方案选型

    无知者:[联邦学习开源框架]FedLab - 加速FL算法验证 联邦学习开源框架FedLab相关 FATE 单位:微众银行 github: https://github.com/FederatedAI ...

  3. 联邦学习开源框架简介

    0.FATE平台 该平台是微众银行开发的,是全球第一个联邦学习工业级开源框架.不管是对初级人门者,还是联邦学习产品级系统的开发人员,FATE都是一个非常合适的选择.相比于利用Python从零开发,FA ...

  4. 联邦学习开源框架调研

    文章目录 1. FATE 1.1 FederatedML 算法列表 1.2 FATE Serving 1.3 FATEFlow 1.4 FATEBoard 1.5 Federated Network ...

  5. FATE:工业级联邦学习开源平台

    下载论文请点击:FATE:工业级联邦学习开源平台https://mp.weixin.qq.com/s/mTtbiASU5ZT6XOpwza_GHA 近年来,联邦学习飞速发展,成为解决数据孤岛和用户隐私 ...

  6. FATE:工业级联邦学习开源生态建设经验分享

    6月23日,由北京金融科技产业联盟秘书处与中国银联联合推出的线上直播栏目"金融科技慕课学院"第三期开播.在本期直播中,深圳前海微众银行股份有限公司人工智能资深研究员范涛以<F ...

  7. 启智平台发布联邦学习开源数据协作项目 OpenI 纵横

    --新一代人工智能开源开放平台基础全面确立 2019年6月18日, OpenI启智新一代人工智能开源开放平台技术委员会2019年第二次会议在鹏城实验室举行,OpenI技术委员会主席黄铁军同鹏城实验室. ...

  8. 飞桨深度学习开源框架2.0抢先看:成熟完备的动态图开发模式

    百度飞桨于近期宣布,深度学习开源框架2.0抢先版本正式发布,进入2.0时代.其中一项重大升级,就是推出更加成熟完备的命令式编程模式,即通常说的动态图模式.同时在该版本中将默认的开发模式定为动态图模式, ...

  9. Karpathy更新深度学习开源框架排名:TensorFlow第一,PyTorch第二

    上周,Keras作者.谷歌研究科学家François Chollet晒出一张图,他使用Google Search Index,展示了过去三个月,ArXiv上提到的深度学习框架排行,新智元也做了报道: ...

最新文章

  1. avalon2学习教程04显示隐藏处理
  2. bow 折叠键盘 linux,bow便携折叠蓝牙键盘体验
  3. 嵌入式Linux系统编程学习之五gcc/g++编译器
  4. 实战开发经验:是什么阻碍了我们跨平台
  5. R语言 | 构建信用评分卡模型
  6. springmvc入门程序
  7. Ubuntu 16.04虚拟环境virtualenv搭建
  8. 平衡二叉树的插入与调整
  9. Open XML应用安全(3)隐藏数据
  10. QQ所有文件和目录详细分析
  11. vdbench安装及使用
  12. PC读写西门子PLC寄存器的值
  13. jsp学习—虚拟主机
  14. 求模 和 求余 的区别
  15. 关于Mifare Classic Tool (MTC)工具的秘钥包
  16. 当a=1,b=2,c=3时,if(ac)b=a;a=c;c=b;的执行结果详解
  17. 【简书 DC谢老师】JMeter + jenkins + SVN 接口自动化之简单 demo​​​​​​​
  18. Java中Double和Long互相转换
  19. 如何用命令查看服务器raid信息,查看服务器RAID卡信息的SHELL脚本和命令介绍
  20. SpringBoot自定义注解+AOP+redis实现防接口幂等性重复提交,从概念到实战

热门文章

  1. Latex最后一页文本或参考文献左右对齐(平衡)
  2. 五个温度带的分界线_中国划分为哪五个个温度带
  3. java中关键字缺省(default)
  4. [DP]JZOJ 5804 简单的序列
  5. MapReduce的执行流程
  6. 微信域名防拦截的最新方案,域名防举报投诉原理
  7. 入门文献复现——Murphy C K——Combining belief functions when evidence conflicts
  8. 深入探析CAN收发器各项参数
  9. vue 打包之后不兼容ie_vue项目打包后在IE浏览器报错,页面显示空白
  10. 诺贝丽斯宣布成功完成收购爱励铝业