写点什么

KubeFATE: 用云原生技术赋能联邦学习 (一)

用户头像
亨利笔记
关注
发布于: 2020 年 05 月 02 日
KubeFATE: 用云原生技术赋能联邦学习(一)

题图摄于北海公园



本文首发于公众号: 亨利笔记 (ID:henglibiji )



联邦学习是AI领域一个新兴的方向,被认为是 AI 领域最重要的研究和应用趋势之一。联邦学习可在用户之间进行联合建模,构造精确的人工智能模型,同时数据不用离开机构,可以保证双方数据的隐私安全性,应用前景广阔,因此,联邦学习已经得到越来越广泛的关注。



我们 VMware 云原生实验室的团队参与了联邦学习开源项目 FATE 和 KubeFATE 的开发,文后附有作者相关课程的视频。



(本文作者系VMware云原生实验室工程师陈家豪,FATE / KubeFATE开源联邦学习项目的贡献者。)



概述

FATE (Federated AI Technology Enabler) 是由微众银行发起的一个联邦学习框架,能有效帮助多个机构在满足用户隐私保护、数据安全和政府法规的要求下,进行数据使用和建模。由于其系统的分布式特性,使用中存在一定门槛。鉴于此,VMware 联合微众银行一起开发了 KubeFATE 项目,致力于降低 FATE 的使用门槛和系统运维成本。本文将首先分析FATE 的整体架构,帮助读者理解各部件的作用;然后将展示如何从一台 Linux 机器开始,通过 KubeFATE 一步一步来搭建联邦学习的实验环境。 



FATE 整体架构

一个正常工作的 FATE 集群里面包含了若干组件,其中有些负责任务调度、有些负责存储,各个组件各司其职,联合起来一起完成任务。一个 FATE 集群所包含的组件如下图所示。



 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有以下优点:

1.    使用简单,免除缺失依赖软件包的烦恼。

2.    配置方便,一个配置文件就能部署多套集群。

3.    管理灵活,可按需增减集群规模。

4.    适用于云环境。



目前KubeFATE支持使用Docker-Compose和Kubernetes两种方式来部署和管理FATE集群,分别面向了测试开发和生产这两种使用场景。本文主要关注于测试开发的部署,因此在接下来的部署中会使用Docker-Compose这种方式。Kubernetes的方式将另文叙述。



KubeFATE的工作流程主要分成两部分,分别是

  1. 根据用户定义的配置文件生成FATE集群的启动文件。

  2. 拷贝启动文件到指定机器上,并使用docker-compose命令启动容器。



通常,负责生成启动文件的服务器称为部署机,而负责运行容器的服务器称为目标机,部署机和目标机是在逻辑上的划分。在本文中,部署机和目标机为同一台机器。





部署机与目标机关系图



使用KubeFATE和Docker-Compose来部署单节点联邦学习平台

由于KubeFATE使用了容器作为其底层工具,因此在开始使用KubeFATE之前,这里也简单介绍下容器、Docker等相关的概念。



容器也称Linux Container(简称LXC),它是与系统其他部分隔离开的一系列进程,主要由Namespace和Cgroup两大机制来保证实现。其优点是:

1.    高资源利用与隔离

2.    轻量级

3.    跨Linux发行



Docker属于 LXC的一种封装,提供简单易用的容器使用接口。它可以将应用程序与依赖,打包在一个文件里面,而当程序要运行的时候,Docker就为这个程进行一些配置,使得该进程与系统中的其他进程隔离。总体来说,Docker向用户提供了一套简单易用的接口,以至于用户可以很方便使用容器。而Docker-Compose 是对Docker 容器进行编排的工具,通过它用户可以很方便的配置和管理多个容器。至于更多关于Docker的详细资料,请大家参考Docker 官网:https://www.docker.com



(未完待续)



本文首发于公众号: 亨利笔记 (ID:henglibiji )



如果你对联邦学习感兴趣,可申请加入“KubeFATE开源社区群”交流,入群需要真实身份,并改昵称:姓名@单位。请先关注“亨利笔记”公众号,在公众号后台发送"FATE"信息即可。



发布于: 2020 年 05 月 02 日阅读数: 115
用户头像

亨利笔记

关注

自由自在 网际穿行 2020.04.25 加入

公众号:亨利笔记。作者是执着计算机技术爱好者。中国首个CNCF开源项目Harbor镜像仓库创始人。联邦学习FATE开源项目TSC成员。《Harbor权威指南》《区块链技术指南》作者之一。关注云原生、人工智能和区块链等领域。

评论

发布
暂无评论
KubeFATE: 用云原生技术赋能联邦学习(一)