联邦学习开源框架FATE
FATE (Federated AI Technology Enabler) 是微众银⾏AI部门发起的全球⾸个联邦学习⼯业级开源框架,可以让企业和机构在保护数据安全和数据隐私的前提下进⾏数据协作。 FATE项⽬使⽤多⽅安全计算 (MPC) 以及同态加密 (HE) 技术构建底层安全计算协议,以此⽀持不同种类的机器学习的安全计算,包括逻辑回归、基于树的算法、深度学习和迁移学习等。
FATE于2019年2⽉⾸次对外开源,并于2019年6⽉由微众银⾏捐献给Linux基⾦会,并成⽴ FATE TSC 对FATE社区进⾏开源治理,成员包含国内主要云计算和⾦融服务企业。
⼀、FATE中的联邦学习算法
FATE⽬前⽀持三种类型联邦学习算法:横向联邦学习、纵向联邦学习以及迁移学习。
Federatedml模块包括许多常见机器学习算法联邦化实现。所有模块均采⽤去耦的模块化⽅法开发,以增强模块的可扩展性。具体来说,我们提供:
联邦统计: 包括隐私交集计算,并集计算,⽪尔逊系数等
联邦特征⼯程:包括联邦采样,联邦特征分箱,联邦特征选择等。
联邦机器学习算法:包括横向和纵向的联邦LR, GBDT, DNN,迁移学习等
模型评估:提供对⼆分类,多分类,回归评估,联邦和单边对⽐评估
安全协议:提供了多种安全协议,以进⾏更安全的多⽅交互计算。
⼆、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 qcloud/docker_standalone-fate-1.4.
tar -xzvf docker_standalone-fate-1.4.
#执⾏部署
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 ⽂件夹下, 请尝试使⽤。
在docker中安装fate1.7.0版本:
1、通过镜像包拉取镜像
wget qcloud/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
2) 在主机中安装FATE
检查本地8080、9360、9380端⼝是否被占⽤。
netstat -apln|grep 8080
netstat -apln|grep 9360
netstat -apln|grep 9380
下载独⽴版本的压缩包并解压缩。
wget qcloud/standalone-fate-master-1.4.
源代码下载开源社区tar -xzvf  standalone-fate-master-1.4.
进⼊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 github/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同样为⼤数据场景提供了分布式运⾏部署架构版本。从单机部署迁移到集部署仅需要更改配置⽂件,不需要更改算法。KubeFATE部署
通过 KubeFATE, 我们可以使⽤ docker-compose或者 Kubernetes⽅式部署FATE:
如果是开发或者测试场景, 推荐使⽤docker-compose部署⽅式. 这种模式仅仅需要 Docker 环境。 更多细节请参考 .
如果⽣产环境或者⼤规模部署, 推荐使⽤Kubernetes⽅式来管理FATE系统 。更多细节请参考.
更多使⽤说明请见。
运⾏测试
./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架构解析
官⽅架构图:

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。