联邦学习开源框架FATE

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单机部署指南:联邦学习框架解析](https://wenku.csdn.net/doc/4cyb6wmmc0?utm_source=wenku_answer2doc_content) 部署FATE联邦学习框架并运行,首先需要遵循《FATE单机部署指南:联邦学习框架解析》中提供的详细步骤。在准备阶段,确保你的机器上安装了Docker以及Docker Compose,并且满足了系统要求。 接下来,开始实际部署过程: 1. 克隆FATE的代码仓库到本地,可以通过git命令完成。 2. 进入FATE的部署目录,通常包含一个名为'docker-compose.yaml'的文件,这个文件定义了FATE服务的容器化配置。 3. 根据需要调整'docker-compose.yaml'文件中的配置,以适应你的环境。 4. 执行`docker-compose up`命令启动容器服务。这个命令会根据配置文件中的定义,下载必要的镜像,创建并启动FATE的核心服务组件,包括但不限于FederatedML、FATE Serving和FATEFlow。 5. 启动完成后,你可以通过访问FATE Flow的Web界面来监控和管理联邦学习的整个流程。FATEFlow的端口默认为8080,可以通过浏览器访问 *** 来进行操作。 6. 在FATEFlow中,可以创建pipeline,配置联邦学习任务的各个阶段,包括数据上传、模型训练、模型评估、模型发布等。 7. 使用FATE Flow提供的任务调度功能,可以启动联邦学习任务,并实时监控任务状态。 8. 任务完成后,可以使用FATE Serving来部署训练好的模型。FATE Serving允许用户动态加载模型,并进行在线推理。 通过以上步骤,你可以在单机环境中成功部署FATE,并开始联邦学习的实战之旅。《FATE单机部署指南:联邦学习框架解析》不仅涵盖了部署步骤,还提供对FATE各个核心组件的深入解析,是理解FATE框架的良好起点。掌握这些基础知识后,你可以进一步探索FATE提供的高级特性,如安全计算协议MPC和HE的集成,以及不同联邦学习算法的实现和优化。 参考资源链接:[FATE单机部署指南:联邦学习框架解析](https://wenku.csdn.net/doc/4cyb6wmmc0?utm_source=wenku_answer2doc_content)
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值