【联邦学习Fate架构讲解】

1.联邦学习的网络架构

在这里插入图片描述

  • P2P网络
    • 网络中的每个成员建议通信
  • Star网络
    • 网络中的每个成员只需要和中心的exchange交换信息

2. FATE中的架构

在这里插入图片描述

2.1 EggRoll分布式计算和存储

在这里插入图片描述

  • Egg Roll分布式计算和存储
    • 存储部分 storage service
    • 计算部分 processor
    • 管理 egg manager

2.2 FateBoard联邦建模可视化看板

在这里插入图片描述

2.3 FateFlow联邦任务调度

在这里插入图片描述

2.4 FederatedML联邦机器学习

在这里插入图片描述

2.5 FateServing联邦模型服务

在这里插入图片描述

2.6 PipeLine交互式客户端(重点)

  • 类keras的用户建模编程界面,接口简单
  • 与旧的通过配置json DSL方式比,对开发者友好,搭建Logistic Regression等经典应用核心代码十行内

2.6.1 导入使用的模块

from pipline.component import DataIO
from pipline.component import HeteroPoisson
from pipline.component import Intersection
from pipline.component import Reader

2.6.2 初始化组件的设置

  • Component init:
    • name:标记这个组件的别名,如不设置,则由系统自动分配
    • Object(param1=,param2=,…)。此类参数代表所有的参与方使用同样的参数配置
    • get_party_instance(role,party_id=int or list).component_param,表示单独设置某个参与方的参数
dataio_0 = DataIO(name='dataio_0',data_type='float',output_format='dense')
dataio_0.get_party_instance(role='guest',party_id=9999).component_param(
	with_label = True,
	label_name = "doctorco",
	label_type = "float"
)
dataio_0.get_party_instance(role='host',party_id=10000).component_param(
	with_label = False
)

2.6.3 设置任务的驱动

  • set_initator(role,party_id):设置任务发起方
  • set_roles:设置任务参与方及partyid
from pipeline.backend.pipeline import PipeLine
pipeline = PipeLine().set_initiator(role='guest',party_id=9999).\
	set_roles(guest=9999,host=10000,arbiter=10001)

2.6.4 构建运行的DAG图

  • DAG图通过Data和Model进行关联,其中Data表示输入数据依赖,Model表示模型依赖
  • Pipeline().add_component(component,data=Data(),model=Model()),表示增加组件,数据依赖关系,模型依赖关系
from pipeline.interface import Data
from pipeline.interface import Model
pipeline.add_component(reader_0)
pipeline.add_component(reader_1)
pipeline.add_component(dataio_0,data=Data(data=reader_0.output.data))
pipeline.add_component(dataio_1,data=Data(data=reader_1.output.data),model=Model(dataio_0.output.model))
pipeline.add_component(intersection_0,data=Data(data=dataio_0.output.data))
pipeline.add_component(intersect_1,data=Data(data=dataio_1.output.data))
pipeline.add_component(hetero_poisson_0,data=Data(train_data=intersection_0.output.data,validate_data=intersect_1.output.data,))

2.6.5 编译&运行

  • Pipeline.compile():调用pipeline编译接口,构造训练的dsl以及构造任务运行时的参数配置
  • JobParameters:设置运行时的环境参数,包括后端执行运行,执行方式(单机、并行)、并发度等
  • pipeline.fit():执行训练流程
from pipeline.runtime.entity import JobParameters
pipline.compile()
job_parameters = JobParameters(backend=0, work_mode=1)
pipeline.fit(job_parameters)

2.6.6 获取训练相关信息

  • pipeline.get_component(component_name) #获取某个组件的任务信息task_info
  • task_info.get_summary()#获取组件的汇总信息
  • task_info.get_model_param()#获取组件的模型输出
  • task_info.get_output_data()#获取组件的数据输出
summary = pipeline.get_component("hetero_poisson_0").get_summary()
model_param = pipeline.get_component("hetero_poisson_0").get_model_param()

2.6.7 模型部署和保存

  • pipeline.deploy_component(component_list)#通过该接口指定参与离线预测的组件
  • pipeline.dump(pipeline_model_path)#将训练的pipeline(模型)保存到指定的模型文件
pipeline.deploy_component(["dataio_0","intersection_0","hetero_poisson_0"])
pipeline.dump("pipeline_saved.pkl")

2.6.8 训练模型的恢复和查看

  • PipeLine.load_model_file(restore_model_path)#恢复保存的pipeline
  • pipeline.describe()#获取pipeline的相关描述,包括阶段、创建时间、构造的dsl等
train_pipeline = PipeLine.load_model_file("pipeline_saved.pkl")
train_pipeline.describe()

2.6.9 模型预测

  • add_component#支持将训练pipeline部署后的模型作为一个整体进行增加
    • pipeline作为整体输入时,使用predict_input=dict来进行数据传递(可能有多组件需要数据)
    • 支持在训练部署模型前后增加新的组件
  • pipeline.predict()#执行预测流程
predict_pipeline = PipeLine()
predict_pipeline.add_component(reader_predict)
predict_pipeline.add_component(train_pipeline,data=Data(predict_input={train_pipeline.dataio_0.input.data:reader_predict.output.data}))
predict_pipeline.add_component(evaluation_0,data=Data(data=train_pipeline.hetero_poisson_0.output.data))
predict_pipeline.predict(JobParameters(backend=0,work_mode=1))s

3. FATE Serving Architecture(FATE在线服务架构)

在这里插入图片描述

  • Serving Server
    • 负责模型的加载和缓存
    • 在线推理
  • Serving Proxy
    • 在线服务的网络出口
    • 对接业务系统和负载均衡等功能
  • zookeeper
    • 在线服务的发现和高可用
  • FATE Flow
    • 负责将模型从Roll中读出来的分发到Serving Server
  • Roll
    • 分布式计算和存储

参考:
https://docs.qq.com/doc/DU3ZQb1h1ZnZqTUFy
https://www.bilibili.com/video/BV1hf4y1F7yg/?spm_id_from=333.337.search-card.all.click&vd_source=312881934a549c75f4267ec434cf8ea9

  • 38
    点赞
  • 29
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值