图1 fate整体架构图
1.Eggroll
1.1.架构图
图2 eggroll 架构图
1.2.测试结果
命令:python -m unittest test_roll_pair.TestRollPairCluster -集群模式
图3 eggroll部署完成测试结果图
1.3.重要模块及描述
1.3.1.Rollsite
新版本该模块拥有老版proxy+federation两个组件
主要功能1、用于host与guest之间的通信协调,当guest提交任务之后,通过rollsite通知host同步进行数据的加密以及相关模型训练工作。
功能2、当双方完成数据的加密以及交融之后,通过rollsite交换数据,取得双方所需的数据。
1.3.2.Roll
通过图1 fate整体架构图和图2 eggroll 架构图可以看出,一个节点包括一个clustermanager管理器,和多个nodemanger 资源管理器,然后每个nodemanger会有一套roll和egg组件,roll在其中主要作用是用于数据的计算,以及资源的调度和聚合操作。此步骤的计算过程主要有后续的fate_flow的dsl配置的算法详情定义,另联邦学习的同态加密也在此不走进行。
1.3.3.Egg
在1.3.2中已经介绍一个nodemanger 会有一套roll和egg组件,roll主要功能已经做过介绍,egg在中主要的作用是计算和存储数据引擎。
1.3.4.Clustermanager
在图1中可以看到Clustermanager,在fate_flow在发起任务之后通知Clustermanager进行调度资源,Clustermanager把收到的算法运行信息分发给不同的Nodemanger节点,进行资源分配,然后🧍各个节点进行计算,另在fate_flow发起upload任务时,会先把数据表信息通过Clustermanager通知到Nodemanger的eggroll把数据转成后续算法可执行的DTable格式
1.3.5.Nodemanger
Nodemanger在接受Clustermanager任务之后,执行算法执行内容,对数据进行所需的计算,得出结果后与Clustermanager同步,使Nodemanger同步信息,合理使用资源,这里计算使用eggroll的算子,就如同spark的算子,每个算子都有着自己的不同的功能,同时算子的作用也可以达到快速运行的效果。
2.FATE_Flow
2.1.简介
FATE-Flow是用于联邦学习的端到端Pipeline系统,它由一系列高度灵活的组件构成,专为高性能的联邦学习任务而设计。其中包括数据处理、建模、训练、验证、发布和在线推理等功能.
2.2.架构图
图4 Fate_Flow架构图
2.3.业务运行图
图5 Fate_Flow业务双方模型运行示例图
2.4.任务进行步骤
2.4.1.用户含义
- arbiter是用来辅助多方完成联合建模的,它的主要作用是聚合梯度或者模型。比如纵向lr里面,各方将自己一半的梯度发送给arbiter,然后arbiter再联合优化等等。
- guest代表数据应用方。
- host是数据提供方。
- local是指本地任务, 该角色仅用于upload和download阶段中。
2.4.2.上传数据
python fate_flow_client.py -f upload -c examples/upload_guest.json
结果信息:
图6 Fate_Flow guest端上传数据示例图
python fate_flow_client.py -f upload -c examples/upload_host.json
结果信息:
图7 Fate_Flow host端上传数据示例图
该步是首先把数据上传到eggroll,后续在FederatedML的作用下把数据格式转换成DTable。此用户为local。
2.4.2.1.upload_homo_guest.json信息内容
{
"file": "examples/data/breast_homo_guest.csv",
"head": 1,
"partition": 10,
"work_mode": 1,
"namespace": "fate_flow_test_breast_homo",
"table_name": "breast_homo_guest"
}
此文件主要配置,数据上传的信息,以及数据上传到eggroll的表的信息,这里配置的namespace和table_name在后续任务的调用的过程需要用到,work_mode 表示系统的环境,0代表单机,1代表集群
2.4.2.2.upload_homo_host.json信息内容
{
"file": "exampl