首页 > 其他分享 >【联邦学习Fate架构讲解】

【联邦学习Fate架构讲解】

时间:2024-03-19 15:58:05浏览次数:23  
标签:pipeline 架构 Fate Data component add 讲解 output data

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

标签:pipeline,架构,Fate,Data,component,add,讲解,output,data
From: https://blog.csdn.net/qq_45467608/article/details/136829876

相关文章

  • 深度观察2024中国系统架构师大会(SACC)
    今年的中国系统架构师大会(SACC)在我所在的城市广州举办,很荣幸受邀参加。这次能接触到国内最优秀的架构师,学习他们的架构思想和行业经验。对我而言非常有意义。大会分为上下午共4场,我参加了上午的多云多活架构设计专场和下午的AIGC专场。本篇文章就多云多活架构设计专场,我选取几......
  • Python面向对象——架构设计【2】
     练习1:打电话请使用面向对象思想描述下列情景:  小明使用手机打电话,还有可能使用座机....classPeople:def__init__(self,name):self.name=namedefcall_up(self,tool):print(self.name,end="")tool.call()cla......
  • 数据仓库架构
      1、数据仓库ODS层数据仓库ODS层也称为操作数据源层,是数据仓库中的一个核心组成部分。该层主要用于保存原始数据,完成数据积存,通常反映了企业业务系统中的最新操作,同时也是进行数据仓库的基础。数据仓库ODS层通常采用可靠的数据仓库ETL工具为数据仓库提供数据,以此使源数据......
  • Java中的实用类讲解(上篇)
    如果想观看更多Java内容可上我的个人主页关注我,地址子逸爱编程-CSDN博客https://blog.csdn.net/a15766649633?spm=1000.2115.3001.5343使用工具 IntelliJIDEACommunityEdition2023.1.4使用语言Java8 代码能力快速提升小方法,看完代码自己敲一遍,十分有用目录1.Java......
  • Mysql之innodb架构
    Innodb存储引擎的架构内存结构BuferPool缓冲池是主内存中的一个区域,里面可以缓存磁盘上经常操作的真实数据,在执行增删改查操作时,先操作缓冲池中的数据(若缓冲池没有数据,则从磁盘加载并缓存),然后再以一定频率刷新到磁盘,从而减少磁盘IO,加快处理速度。缓冲池以Page页为......
  • 计算机毕业设计-基于Java+SSM架构的学生综合考评管理系统项目开发实战(附论文+源码)
    大家好!我是职场程序猿,感谢您阅读本文,欢迎一键三连哦。......
  • 【详细带你了解软件系统架构的演变】
    带你了解软件系统架构的演变`1.介绍``2.传统的单体架构(MonolithicArchitecture)``3.分层架构(LayeredArchitecture)``4.客户端-服务器架构(Client-ServerArchitecture)``5.服务导向架构(Service-OrientedArchitecture,SOA)``6.微服务架构(MicroservicesArchitecture)``7......
  • 谈谈我对微服务架构的理解&微服务架构有什么作用
    一、谈谈我对微服务架构的理解 微服务架构,一种在现代化软件开发中广泛应用的架构模式,其核心理念在于将大型的、复杂的应用程序拆分为一系列小型的、松耦合的服务。每个服务都围绕着特定的业务功能或领域组件进行构建,并独立地运行在自己的进程中。这些服务通过轻量级的通信机......
  • 2024年企业架构TOGAF认证培训
    企业架构TOGAF培训简介TOGAF证书介绍企业架构可依据业务战略形成顶层设计,帮助企业形成数字化规划。目前,业界最有名的企业架构框架是TOGAF(TheOpenGroupArchitectureFramework)。TOGAF由国际标准权威组织TheOpenGroup制定。TheOpenGroup于1993年开始应客户要求制定系......
  • 浅聊openGauss体系架构
    浅聊openGauss体系架构2020年7月openGauss刚刚开源,我便开始对openGauss数据库的学习。根据以往学习数据库的经验,最先想了解的是openGauss数据库的架构,希望对即将使用的数据库各个模块有所了解。但鉴于时间有限,仅有的资料图是源码doc目录内的“openGauss逻辑结构图......