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 服务的核心元素和它们之间的关联关系,具体来说,它包括以下几个核心概念:
-
基础设施 (Infrastructure):底层的基础设施资源是一切生命周期管理的基础,例如 Kubernetes 集群、单机 / VM 或其他设备等,目前 FedLCM 支持的基础设施是 Kubernetes,FATE 系统会以容器的形式运行在用户配置的 Kubernetes 基础设施之上。
-
服务端点 (Endpoint) :在基础设施上运行的,面向该基础设施的部署管理服务,Lifecycle Manager 可以对其进行安装卸载等管理,并基于它来完成在对应的基础设施上的 FATE 系统的安装管理。目前 FedLCM 支持的服务端点种类即是 K8s 模式下的 KubeFATE 服务。
-
联邦 (Federation) :即一个可以由多个联邦学习参与者加入的联邦学习网络。是 Lifecycle Manager 架构中用户使用的最顶层的实体。
-
联邦学习参与方 (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 项目库的相关文档,包括:
-
整体使用指南:https://github.com/FederatedAI/FedLCM/blob/main/doc/Site_Portal_In_FedLCM_Configuration_Guide_zh.md
-
训练任务创建说明: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 中国研发中心