概述在前面的文章中(点我前往阅读),我们介绍过如何使用KubeFATE来部署一个单节点的FATE联邦学习集群。在真实的应用场景中,联邦学习往往需要多个参与方联合起来一起完成任务。基于此,本文将讲述如何通过KubeFATE和Docker-Compose来部署两个参与方的FATE集群,并在集群上运行一些简单的测试以验证其功能的完整性。
FATE集群的组网方式
联邦学习的训练任务需要多方参与,如图1所示,每一个party node都是一方,并且每个party node都有各自的一套FATE集群。而party node和party node之间的发现方式有两种。分别是点对点和星型。默认情况下,使用KubeFATE部署的多方集群会通过点对点的方式组网,但KubeFATE也可以单独部署Exchange服务以支持星型组网。
图 1 FATE集群组网方式
部署两方训练的集群
使用KubeFATE和Docker-Compose部署两方训练的集群
KubeFATE的使用分成两部分,第一部分是生成FATE集群的启动文件(docker-compose.yaml),第二个部分是通过docker-compose的方式去启动FATE集群。从逻辑上可将进行这两部分工作的机器分别称为部署机和目标机器。
Figure 1部署机目标机关系图
目标
两个可以互通的FATE实例,每个实例均包括FATE所有组件,实例分别部署在不同的两台机器上。
准备工作
-
两个主机(物理机或者虚拟机,Ubuntu或Centos7系统,允许以root用户登录);
-
所有主机安装Docker 版本 : 18+;
-
所有主机安装Docker-Compose 版本: 1.24+;
-
部署机可以联网,所以主机相互之间可以网络互通;
-
运行机已经下载FATE 的各组件镜像
Docker的安装以及FATE镜像的下载请参考前文,接下来我们将把两台主机划分为workspace1和workspace2。其中workspace1既作为部署机也作为目标机,而workspace2则作为目标机,每个机器运行一个FATE实例。这里两台主机的IP分别为192.168.7.1和192.168.7.2。用户需要根据实际情况做出修改。具体部署架构如图2所示。
图2 部署架构图
以下操作需在workspace1上并以root用户进行。
下载并解压Kubefate1.3的kubefate-docker-compose.tar.gz资源包
# curl -OL
https://github.com/FederatedAI/KubeFATE/releases/download/v1.3.0/kubefate-docker-compose.tar.gz
# tar -xzf kubefate-docker-compose.tar.gz
定义需要部署的实例数目
进入docker-deploy目录
# cd docker-deploy/
编辑parties.conf如下
# vi parties.conf
user=root