FedLCM:统一的联邦学习生命周期管理平台

news2024/11/24 19:09:35

VMware 云原生实验室团队在上周开源发布了联邦学习的生命周期管理项目 FedLCM 并贡献到 LF AI & DATA 基金会和 FATE 开源社区。

联邦学习是人工智能与数据领域中最为火热的方向之一,作为社区期待已久的项目,FedLCM 从包含多个参与方的联邦的维度,借助云原生技术极大地简化了联邦学习系统部署维护和使用的复杂度,赋能跨云、跨边缘设备等场景下的联邦学习应用。本文对 FedLCM 的设计、功能、使用方式等进行了详细的介绍,也期待项目的开源能够进一步促进相关领域的创新发展和生产实践。

背景

随着联邦学习相关领域的研究和应用不断的发展,越来越多的用户投入到了以 FATE 为代表的联邦学习系统的开发和使用之中,相关社区生态也在进一步的壮大。联邦学习系统天然有着分布式的特性,部署和使用都有一定的门槛,为此,FATE 社区提供了包括 KubeFATE 和 AnsibleFATE 等项目来帮助用户完成 FATE 系统在一个站点,即一个参与方内部的部署和运维管理等任务。而联邦学习需要有多个参与方,因此各方都需要在本方环境中进行 FATE 的部署安装管理,并配置各方的互联信息,才能形成一个可以运行真正训练任务的 “联邦 “。此外,当前的部署解决方案(包括 KubeFATE 和 AnsibleFATE)是基于命令行的,需要用户有一定基础知识,在进行 FATE 系统部署时的步骤也较为复杂,对很多用户来说仍然有一些负担。

为了应对以上挑战,并进一步降低 FATE 系统的使用门槛,VMware 云原生实验室开发了 FedLCM (Federation Lifecycle Manager)项目,并开源贡献到 FATE 社区。FedLCM 是一个从联邦维度对 FATE 系统各方进行统一管理的解决方案,提供基于网页图形化界面的 FATE 联邦和集群部署管理平台。

FedLCM 简介

A.FedLCM 的基本功能

顾名思义,FedLCM 的核心功能是 Lifecycle Manager 服务:即 FATE 联邦与集群部署的生命周期管理。通过使用 Lifecycle Manager 的图形化界面,用户可以在几分钟内轻松部署 FATE Exchange 以及各个参与方的 FATE 系统组件,如 FATE-Flow、各个基础引擎等。除了简化部署流程之外,FedLCM 还包含其他生命周期管理功能,如自动更新各方的路由配置以快速组建起 FATE 联邦、证书签发与安装、多个联邦多个部署实例的安装卸载等等。需要说明的是,FedLCM 并不是 KubeFATE 或其他部署方案的替代者,而是基于这些面向单方的方案,来完成在多个参与方部署的流程。

同时,FedLCM 项目也为用户提供了一个站点管理平台 - Site Portal ,这是一个图形化的联邦学习任务管理服务,Site Portal 的用户通过简单的操作就可以发起或加入一个联邦学习任务,并提供了包括项目、数据、模型等等的联邦学习要素的管理功能(在 FedLCM 的 v0.1.0 版本中,Site Portal 服务需与 FATE v1.6.1 一起使用)。

B.FedLCM 的核心概念

在这里插入图片描述

上图是 Lifecycle Manager 服务的核心元素和它们之间的关联关系,具体来说,它包括以下几个核心概念:

  1.  基础设施 (Infrastructure):底层的基础设施资源是一切生命周期管理的基础,例如 Kubernetes 集群、单机 / VM 或其他设备等,目前 FedLCM 支持的基础设施是 Kubernetes,FATE 系统会以容器的形式运行在用户配置的 Kubernetes 基础设施之上。
    
  2.  服务端点 (Endpoint) :在基础设施上运行的,面向该基础设施的部署管理服务,Lifecycle Manager 可以对其进行安装卸载等管理,并基于它来完成在对应的基础设施上的 FATE 系统的安装管理。目前 FedLCM 支持的服务端点种类即是 K8s 模式下的 KubeFATE 服务。
    
  3.  联邦 (Federation) :即一个可以由多个联邦学习参与者加入的联邦学习网络。是 Lifecycle Manager 架构中用户使用的最顶层的实体。
    
  4.  联邦学习参与方 (Participant) :即联邦内的一个参与方。它可以是一个 FATE Exchange,或者是一个 FATE 系统(也被称为 FATE Cluster)。在一个联邦下允许创建一个 Exchange 和多个 Cluster,也可以引入外部通过其他方式安装的 Exchange 和 Cluster,以便于与其他方互联。
    

Lifecycle Manager 服务设计的初衷是尽量灵活,它可以支持部署与管理多个联邦、不同类型的基础设施、服务端点等,且联邦学习参与方可以部署在以上任何一个实例上。除了以上核心概念之外,还有其他的一些实体与服务扮演着重要的角色,例如: Chart 服务管理着用于部署 FATE 参与方的 Helm Chart,这是与 KubeFATE 配合时不可或缺的资源;事件(Event) 服务记录相关实体的重要事件与信息;证书 (Certificate) 服务在 FATE 部署中为一些需要 TLS 的服务颁发证书等等。这些服务与核心实体相关联,用于整个生命周期管理的工作流,一起组成 Lifecycle Manager 的主要功能。

除此之外,Lifecycle Manager 还可以部署一些其他重要服务,包括可用于颁发证书的 CA 服务,以及前文所述的,可以与各个参与方的 FATE 实例同时运行的站点管理服务 Site Portal。该服务可以帮助管理各个站点信息与联邦学习任务,用户可通过网页界面来管理 FATE 任务、模型、数据等,加速联邦学习任务的工作流程。这几个服务的部署场景如下图示例所示。

在这里插入图片描述

如何使用 FedLCM

A. 部署 FedLCM

FedLCM 本身可以以容器的方式,通过 docker-compose 或者 Kubernetes 部署运行。具体部署步骤可以参考 GitHub 仓库中的 README.md 文档。

(地址是:https://github.com/FederatedAI/FedLCM/blob/main/README_zh.md)

B. 使用 Lifecycle Manager

成功部署 FedLCM 后,用户可以通过它的网页进行后续的所有操作。一个使用 FedLCM 的最基本流程大概有下面几步骤:

配置 CA:FedLCM 服务可以使用一个证书颁发机构来向各组件签发证书。FedLCM 集成了流行的开源 CA 服务 StepCA, 在 docker-compose 和 K8s 部署方案中都默认内置一个可以直接使用的 StepCA 服务,方便用户快速开始。如果有需要,用户也可以接入已经存在的外部 StepCA 服务。当然,FedLCM 也支持不配置任何 CA,此时,用户需要手动为需要部署的 FATE 组件等签发证书。

添加基础设施:FedLCM 服务计划支持多种基础设施, 比如 VM 或者 Kubernetes 集群。目前用户可以通过提交一个 kubeconfig 文件将 K8s 集群添加为基础设施,目前 FedLCM 也支持为基础设施设置自定义镜像仓库等配置。

在这里插入图片描述

安装服务端点: FedLCM 目前支持部署的服务端点的类型是 KubeFATE。用户可以一步步按照提示在 Kubernetes 基础设施上安装 KubeFATE。同时 FedLCM 也支持在安装服务端点同时自动安装 Ingress Controller 服务。

在这里插入图片描述

创建联邦:用户只需要提供简单的信息就可以创建一个联邦。其中的 “主域名” 将会作为该联邦中各个服务的域名的基础。

在这里插入图片描述

创建参与方:用户可以在当前联邦下创建 Exchange 和 Cluster(即 FATE-Flow 和各个基础引擎组成的集群), 也支持将其他联邦下的 Exchange 或 Cluster 引入当前联邦,以便于 FedLCM 更新其他参与方的路由表信息。创建 Exchange 与 Cluster 的步骤相似,用户只要按照步骤提示就可快速完成创建。

在这里插入图片描述

完成以上流程后,我们就拥有了一个联邦并管理着多个参与方。

  • 在联邦页面,我们可以看到整个联邦的详情,包括各个参与方的状态等:

在这里插入图片描述

  • 参与方 Cluster 详情:在 Ingress 信息一栏可以看到多个服务的网络信息,其中 client 提供 Jupyter notebook 服务来创建 FATE job,fateboard 提供监控 FATE job 的服务。通过修改 hosts 文件或者配置 DNS 服务器后可访问到相应服务。如果使用 1.6.1 版本的 chart 创建 FATE cluster, 用户也可以使用 Site Portal 服务来创建 FATE Job, 下一章节将简单介绍此服务。

在这里插入图片描述

在 FedLCM 的开源仓库中,有上述步骤的详细文档,请参阅如下文档:https://github.com/FederatedAI/FedLCM/blob/main/doc/Getting_Started_FATE_zh.md 。

C. 使用 Site Portal

  • 如果使用 1.6.1 版本的 chart 创建 FATE cluster, 部署成功后在 “公开服务 “一栏会包含 Site Portal 服务,点击即可跳转到当前参与方的站点管理系统。

在这里插入图片描述

  • 进入 Site Portal 后,用户可以通过配置站点信息连接到 FML Manager 和 FATE-Flow 服务。

在这里插入图片描述

用户可上传数据到系统并创建一个项目,并邀请同一联邦下的参与方加入项目。

(Site-1 邀请 Site-2 加入 project)

Site Portal 支持创建模型训练,预测和 PSI 任务。当参与方向项目中关联数据后,就可以发起一个 FATE 训练任务。目前 Site Portal 支持 Json 模板模式及拖拽交互模式来构建 FATE 训练任务 Pipeline 并生成 DSL。
训练任务创建并完成后会生成最终模型。各个参与方可以用此模型进行之后的预测任务。

由于篇幅原因,以上只是 Site Portal 简单的功能介绍。关于 Site Portal 详尽使用说明请阅读 FedLCM 项目库的相关文档,包括:

  1. 整体使用指南:https://github.com/FederatedAI/FedLCM/blob/main/doc/Site_Portal_In_FedLCM_Configuration_Guide_zh.md

  2. 训练任务创建说明:https://github.com/FederatedAI/FedLCM/blob/main/doc/Site_Portal_Create_Job_Guide_zh.md

结语

至此我们就完成从部署 FedLCM、部署 FATE 集群到发起 FATE Job 的一整套流程。FedLCM 以图形化的方式帮助用户高效、安全地完成联邦学习中的各个步骤,也方便用户更好地管理联邦学习中的各个元素。FedLCM 开源项目的地址在: https://github.com/FederatedAI/FedLCM 或点击阅读原文查看 。

欢迎大家使用并向我们提出宝贵意见,更欢迎参与贡献到 FedLCM 的开源项目中。

内容来源|公众号:VMware 中国研发中心

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/333668.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

尚硅谷电商数仓5.0(华为云服务器)主机初期基本配置

文章目录服务器配置信息:注意事项:1.购买注意事项:2.后期使用注意事项:三台主机的基本配置服务器配置信息: 使用了两个账号,账号1买了两个服务器,一台4核8G,一台2核4G,账…

ESP32设备驱动-LED控制器生成PWM信号

LED控制器生成PWM信号 文章目录 LED控制器生成PWM信号1、LED控制器介绍2、软件准备3、硬件准备4、代码实现PWM 是一种在数字引脚上获取类似模拟信号的方法。PWM实际上是一个在高电平和低电平之间切换的方波信号,在 0V 和 3.3V 之间。 当信号为 HIGH 和 LOW 时,这种连续的 HIG…

【物联网开发教程】机智云App远程和开发板聊天

一、实现的功能描述 小程序远程和开发板相互发送字符串信息。 电脑端串口调试助手发送字符串 --> 开发板 --> 小程序小程序发送字符串 --> 开发板 --> 电脑端串口调试助手二、 UI配置描述 本例程中所包含的UI配置代码如下: UI "[0_RecvText][…

前端插件重磅来袭

“你值得拥有”专栏系列上新啦,今日推出“手写前端插件”项目,作为一个前端中高级工程师,手写前端树形菜单插件、弹出层插件、日历插件、分页插件、选项卡插件、进度条插件等是必备的技能,让你的前端技术百尺竿头更进一步&#xf…

2022年饮用水行业电商销售数据:年销额近30亿,头部品牌份额超85%

近日,农夫山泉发布了一则涨价通知。根据通知,农夫山泉上调了杭州市部分规格桶装水售价,涨幅10%。此前,农夫山泉也曾在上海地区对桶装水进行提价。对于本次提价原因,农夫山泉表示主要是物价、原材料、人工及运费等成本不…

MySQl学习(从入门到精通15)

MySQl学习(从入门到精通15)第 18 章_MySQL 8 其它新特性1. MySQL 8 新特性概述1. 1 MySQL 8. 0 新增特性1. 2 MySQL 8. 0 移除的旧特性2. 新特性 1 :窗口函数2. 1 使用窗口函数前后对比2. 2 窗口函数分类2. 3 语法结构2. 4 分类讲解1. 序号函…

JavaScript 面向对象编程

js 实例对象与 new 命令js 对象的继承es6 classes6 class的继承 1 面向对象编程 面向对象编程(Object Oriented Programming,缩写为 OOP)是目前主流的编程范式。 它将真实世界各种复杂的关系,抽象为一个个对象,然后由…

第四章.误差反向传播法—ReLU/Sigmoid/Affine/Softmax-with-Loss层的实现

第四章.误差反向传播法 4.2 ReLU/Sigmoid/Affine/Softmax-with-Loss层的实现 1.ReLU层 1).公式 2).导数&#xff1a; 3).计算图&#xff1a; 4).实现&#xff1a; class ReLU:def __init__(self):self.mask None# 正向传播def forward(self, x):self.mask (x < 0) # 输入…

【深度学习基础7】预训练、激活函数、权重初始化、块归一化

一、Unsupervised Pre-training 得益于 Hinton and Salakhutdinov 在 2006 年的开创性工作— 无监督预训(unsupervised pre-training);在《Reducing the dimensionality of data with neural networks.》这篇论文中,他们在 RBMs 中引入无监督预训练,下面我们将在Autoenco…

RapperBot僵尸网络最新进化:删除恶意软件后仍能访问主机

自 2022 年 6 月中旬以来&#xff0c;研究人员一直在跟踪一个快速发展的 IoT 僵尸网络 RapperBot。该僵尸网络大量借鉴了 Mirai 的源代码&#xff0c;新的样本增加了持久化的功能&#xff0c;保证即使在设备重新启动或者删除恶意软件后&#xff0c;攻击者仍然可以通过 SSH 继续…

Qml学习——基本控件

最近在学习Qml&#xff0c;但对Qml的各种用法都不太熟悉&#xff0c;总是会搞忘&#xff0c;所以写几篇文章对学习过程中的遇到的东西做一个记录。 学习参考视频&#xff1a;https://www.bilibili.com/video/BV1Ay4y1W7xd?p1&vd_source0b527ff208c63f0b1150450fd7023fd8 目…

电视剧《狂飙》数据分析,正片有效播放市场占有率达65.7%

哈喽大家好&#xff0c;春节已经过去了&#xff0c;朋友们也都陆陆续续开工了&#xff0c;小编在这里祝大家开工大吉&#xff01;春节期间&#xff0c;一大批电视剧和网剧上映播出&#xff0c;其中电视剧《狂飙》以不可阻挡之势成功成为“开年剧王”。这里小编整理了一些《狂飙…

数据存储技术复习(三)未完

module4智能存储系统是功能丰富且可提供高度优化的I/o处理能力的RAID阵列。请绘制智能存储系统架构&#xff0c;并说明其各个关键组件的主要功能。前端缓存后端物理磁盘2&#xff0e;智能存储系统中&#xff0c;使用缓存进行的写入操作与直接写入到磁盘相比&#xff0c;可以带来…

2023年房地产投资-折价因子研究报告

一、折价因子分析 1.户型不好 一些楼盘的户型不是很理想&#xff0c;可能存在格局与面积分配不合理&#xff0c;浪费面积过多的情况。比如&#xff1a;入户无玄关、入户门正对卫生间、厨房卫生间没窗、长走廊、局部空间太小…… 2.楼层不合适&#xff0c;采光差 非电梯房的…

设计模式(七)----创建型模式之建造者模式

1、概述 将一个复杂对象的构建与表示分离&#xff0c;使得同样的构建过程可以创建不同的表示。 分离了部件的构造(由Builder来负责)和装配(由Director负责)。 从而可以构造出复杂的对象。这个模式适用于&#xff1a;某个对象的构建过程复杂的情况。 由于实现了构建和装配的解…

【本地项目】上传到【GitLab】流程详解

文章目录1、安装Git2、创建GitLab项目文件夹3、创建密钥4、向GitLab上传项目注意&#xff1a;本篇文章中提到的上传流程所需要的命令&#xff0c;几乎在GitLab的Command line instructions中都有所记载 1、安装Git 具体安装流程这里不做过多说明&#xff0c;安装流程可以参考…

JavaEE进阶第四课:Bean 作用域和生命周期

上篇文章介绍了Spring更简单的对象存储和取出&#xff0c;这篇文章我们将会介绍Bean 作用域和生命周期 目录1.作用域1.1引例1.2Bean的六种作用域1.3设置作用域2.生命周期2.1Spring 执行流程2.2Bean的生命周期结束语1.作用域 1.1引例 首先这里的作用域和我们之前java学到变量的…

2023-02-09 - 3 Java客户端的使用

1 Java客户端的使用 为了演示RestHighLevelClient的使用&#xff0c;需要创建一个Spring Boot Web项目。该项目的依赖配置如下&#xff1a; <dependencies> <!--Spring Boot Web依赖--> <dependency> <groupId>org.springframework.boot</gro…

tcp的理解

1、源端口号&#xff1a;发送方端口号2、目的端口号&#xff1a;接收方端口号3、序列号&#xff1a;报文段的数据的第一个字节的序号3、确认序号&#xff1a;期望收到对方下一个报文段的第一个数据字节的序号4、首部长度(数据偏移)&#xff1a;TCP报文段的数据起始距离TCP报文段…

List、ArrayList与顺序表的介绍(数据结构系列3)

目录 前言&#xff1a; 1.List 1.1什么是List 1.2List的使用 2.ArrayList 2.1线性表 2.2ArrayList的方法 2.3ArrayList的模拟实现 2.4ArrayList的使用 2.5ArrayList的三种遍历方式 2.5.1for循环遍历 2.5.2for-each遍历 2.5.3使用迭代器遍历 结束语&#xff1a; 前…