本文作者系VMware云原生实验室工程师 陈家豪
概述
FATE(Federated AI Technology)是一个联邦学习框架,能有效帮助多个机构在满足用户隐私保护、数据安全和政府法规的要求下,进行数据使用和建模。但由于其系统的分布式特性,导致使用存在一定门槛。鉴于此,VMware联合微众银行一起开发了KubeFATE项目,致力于降低FATE的使用门槛和系统运维成本。本文将首先分析FATE的整体架构,帮助读者理解各部件的作用;然后将展示如何从一台Linux机器开始,通过KubeFATE一步一步来搭建联邦学习的实验环境。
FATE整体架构
一个正常工作的FATE集群里面包含了若干组件,其中有些负责任务调度、有些负责存储,各个组件各司其职,联合起来一起完成任务。一个FATE集群所包含的组件如下图所示。
图1 FATE整体架构图
各个服务的功能描述如下:
- FATE Flow:该服务分为Client和Server两部分,其中Client部分由用户使用,用于向FATE集群提交联邦学习任务;FATE Flow Server是FATE集群对外提供服务的入口,同时它也负责调度、执行用户提交的任务请求和协调任务参与方。
- MySQL:与任务相关的一些元数据,如创建时间,状态都会存在MySQL中。
- EGG/ROLL:向训练任务提供了分布式计算和存储能力。
- Meta Service:一组数据或一个文件,可以被切片并分布在不同的Egg上,Meta service负责管理和定位文件的切片信息。
- Federation:由于联邦学习的特殊性质,在训练中,各个参与方之间往往会进行若干次数据互换。该服务为训练任务提供发送和接受数据的功能。
- Proxy:该服务是一个反向代理,是FATE集群对外(训练其他参与方)的唯一入口。
- FATE Board:向用户提供训练任务的可视化。
- FATE Serving:在线推理服务,用户可以把训练好模型推送到该服务后作在线推理。
KubeFATE简介
由于FATE集群包含了众多服务,并且每一个服务的启动都需要不同的配置和依赖,以至于使用存在一定门槛。此外由于多个服务之间有相互依赖,一个服务的失败可能导致整个集群的不可用,这给系统的运维也带来了一定的挑战。基于这个出发点,VMware和微众联合开发了KubeFATE项目,致力于解决联邦学习的使用门槛和降低运维的成本。目前,KubeFATE和FATE最新的版本为1.3.0,本文后续所有与它们相关的操作都将基于此版本。
由于KubeFATE使用了容器技术对FATE进行了封装,因此相对于传统的安装部署,使用KubeFATE有以下优点:
- 使用简单,免除缺失依赖软件包的烦恼。
- 配置方便,一个配置文件就能部署多套集群。
- 管理灵活,可按需增减集群规模。
- 适用于云环境。
目前KubeFATE支持使用Docker-Compose和Kubernetes两种方式来部署和管理FATE集群,分别面向了测试开发和生产这两种使用场景。本文主要关注于测试开发的部署,因此在接下来的部署中会使用Docker-Compose这种方式。