联邦学习开源框架FATE

联邦学习开源框架FATE,第1张

联邦学习开源框架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支持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。

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-Flow架构解析

官方架构图:

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

FATE-Flow联邦学习Pipeline

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


​​​​​​​

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/zaji/5604994.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-12-15
下一篇 2022-12-15

发表评论

登录后才能评论

评论列表(0条)

保存