使用KubeFATE在Kubernetes上部署联邦学习集群

*本文作者系VMware CTO办公室资深研究员彭麟

背景及KubeFATE架构

之前我们在文章《使用KubeFATE快速部署联邦学习实验开发环境(一)》、《使用KubeFATE快速部署联邦学习实验开发环境(二)》和《使用FATE进行图片识别的深度神经网络联邦学习》中介绍过如何使用KubeFATE部署一个基于Docker Compose的FATE联邦学习集群,以便于快速尝试体验联邦学习。但随着联邦学习的正式投入使用,训练集、模型都会逐渐变大。在生产环境里,我们会遇到以下问题:

FATE集群如何适应企业组织内部各种安全、合规要求,以及网络、安全域等IT环境;

一台服务器已经无法支撑联邦学习的算力需求,如何部署多计算节点,并易于管理;

某些节点出现问题,是否有自愈能力,保证服务的可靠性;

能否实现横向扩展,适应业务的成长;

FATE版本能否很好的升级管理;

一个组织内是否可以有不同的联邦集群,对应不同的业务、合作伙伴、应用场景需要,如何管理多个集群。

Kubernetes是目前最流行的基础设施平台,大量的实践证明,Kubernetes很适合作为企业内部运维大规模分布式系统的平台。根据Ovum的统计,截至2019年底,一半的大数据负载都运行在Kubrenetes之上。我们团队也推荐Kubernetes作为运行FATE联邦学习集群生产环境的平台。KubeFATE提供了在Kubernetes部署运维FATE的解决方案。

在这里插入图片描述

KubeFATE的Kubernetes部署两大模块:

  1. KubeFATE命令行工具:KubeFATE的命令行是一个可执行的二进制文件,用户可以用它快速初始化、部署、管理FATE集群。KubeFATE的命令行可以运行在Kubernetes外,与KubeFATE服务交互。中间使用https协议,可以进行SSL加密,并适配企业的防火墙规则。它的功能模块如下图所示:

在这里插入图片描述

  1. KubeFATE服务:KubeFATE服务作为应用部署在Kubernetes上,对外提供Restful APIs,可以容易与企业已有的网管运维等系统进行整合。

快速使用KubeFATE在一台Linux服务器上
基于MiniKube部署两方联邦学习

为了更好的体验KubeFATE的功能,下面我们会一步一步演示如何使用KubeFATE部署一个两方的联邦学习集群并进行验证。最终的部署结构如下图:

在这里插入图片描述

本文共出现两台机器:

用来做Demo的机器,是一台Linux机器,参照前置条件第一点;

使用浏览器访问FATE-Board的机器,要求可以访问用来执行Demo的机器。

前置条件

  1. 一台Linux的服务器,我们测试好的OS版本是Ubuntu 18.04
    LTS,由于需要跑多方计算,服务器的推荐配置为:8核,16G内存以上;

  2. 两个域名分别给KubeFATE服务和FATE-board使用。如果没有DNS解析条件,可以通过设置hosts方式,后面的介绍基于这种情况;

  3. Linux服务器需要预先安装好Docker环境,具体参考Install Docker in Ubuntu;

  4. 要保证安装机器可以正常访问Docker Hub,以及Google存储;

  5. 预先创建一个目录,以便整个过程使用该目录作为工作目录,命令如下:

cd ~ && mkdir demo && cd demo

注意:下文介绍的MiniKube机器IP地址是10.160.112.145。请修改为你准备的实验机器IP地址!!!

安装需要的工具

为了使用KubeFATE部署FATE,我们需要以下工具:

  1. MiniKube v1.7.3,如果我们已经有Kubernetes环境,可以直接跳转到部署KubeFATE服务;

  2. kubectl v1.17.3:Kubernetes的命令行,需要与具体Kubernetes版本对应,这里的版本是对应MiniKube v1.7.3;

  3. KubeFATE:

    - Release: v1.3.1-a
    
    - 服务版本:v1.0.2
    
    - 命令行版本:v1.0.2
    

安装kubectl

curl -LO https://storage.googleapis.com/kubernetes-release/release/v1.17.3/bin/linux/amd64/kubectl && chmod +x ./kubectl && sudo mv ./kubectl /usr/bin

执行完后可以验证是否成功,

layne@machine:~/demo$ kubectl version

Client Version: version.Info{Major:"1", Minor:"17", GitVersion:"v1.17.3", GitCommit:"06ad960bfd03b39c8310aaf92d1e7c12ce618213", GitTreeState:"clean", BuildDate:"2020-02-11T18:14:22Z", GoVersion:"go1.13.6", Compiler:"gc", Platform:"linux/amd64"}

The connection to the server localhost:8080 was refused - did you specify the right host or port?

安装MiniKube

curl -
  • 0
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值