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目前支持三种类型联邦学习算法:横向联邦学习、纵向联邦学习以及迁移学习。
Federatedml模块包括许多常见机器学习算法联邦化实现。所有模块均采用去耦的模块化方法开发,以增强模块的可扩展性。具体来说,我们提供:
算法清单: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技术架构的底层是Tensorflow / Pytorch(深度学习)、EggRoll /Spark(分布式计算框架)和多方联邦通信网络,上层为联邦安全协议,并在安全协议的基础上构建联邦学习算法库。围绕实际场景,FATE在技术架构顶层构建了联邦区块链、联邦多云管理、联邦模型可视化平台、联邦建模pipeline调度、联邦在线推理等。
FATE联邦算法组件已发展至30余个,实现工业界主流场景算法全覆盖和工业界主流多方安全计算协议全覆盖,涉及数据输入输出、纵向联邦统计、纵向联邦特征工程、纵向联邦学习算法、横向联邦学习算法、模型评估、安全计算等算法方案。
FATE支持Linux或Mac操作系统,当前FATE支持:
运行环境:jdk1.8+、Python3.6、python virtualenv、mysql5.6+、redis-5.0.2
FATE为开发人员提供了单机部署架构版本。单机部署版本可以帮助开发人员快速开发以及测试FATE。
该版本支持两种类型:
单机版提供三种部署方式,可以根据实际情况选择:
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同样为大数据场景提供了分布式运行部署架构版本。从单机部署迁移到集群部署仅需要更改配置文件,不需要更改算法。
集群部署指南: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, 我们可以使用 docker-compose或者 Kubernetes方式部署FATE:
更多使用说明请见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提供了client和board两种客户端,访问fate的flow server完成了任务flow的调度。整个任务流官网也很中肯的定义为Pipeline。Pipeline有点像开发常用的jenkins,一个任务完成后触发后续任务,直到所有任务结束。
FATE-Flow是用于联邦学习的端到端Pipeline系统,它由一系列高度灵活的组件构成,专为高性能的联邦学习任务而设计。其中包括数据处理、建模、训练、验证、发布和在线推理等功能。官方示例图如下: