网络热点新闻

usdt自动充提教程网(www.6allbet.com):云原生联邦学习平台 KubeFATE 原理详解

来源:申博官方网 发布时间:2021-01-25 浏览次数:

USDT官网

菜宝钱包(caibao.it)是使用TRC-20协议的Usdt第三方支付平台,Usdt收款平台、Usdt自动充提平台、usdt跑分平台。免费提供入金通道、Usdt钱包支付接口、Usdt自动充值接口、Usdt无需实名寄售回收。菜宝Usdt钱包一键生成Usdt钱包、一键调用API接口、一键无实名出售Usdt。

原题目:云原生联邦学习平台 KubeFATE 原理详解

VMware招聘联邦学习、隐私盘算开发工程师

FATE 是一个联邦学习的开源项目,旨在提供一个平安的盘算框架来支持团结AI生态系统。它实现了 ,以实现相符数据珍爱律例的大数据协作。通过模块化的可扩展建模管道,清晰的可视界面和天真的调剂系统,FATE 可以接见即用型可用性和精彩的运营性能。

Kubernetes 是开源的一个 ,它支持自动化部署、大规模可伸缩、应用容器化治理。在生产环境中部署一个应用程序时,通常要部署该应用的多个实例以便对应用请求举行负载平衡。

在 Kubernetes 中,我们可以建立多个容器,每个容器内里运行一个应用实例,然后通过内置的负载平衡计谋,实现对这一组应用实例的治理、发现、接见,而这些细节都不需要运维职员去举行庞大的手工设置和处置。

但随着联邦学习的正式投入使用,训练集、模子都市逐渐变大。在生产环境里,我们会遇到以下问题

  1. 一台服务器已经无法支持联邦学习的算力需求,若何部署多盘算节点,并易于治理;
  2. 某些节点出现问题,是否有自愈能力,保证服务的可靠性;
  3. 能否实现横向扩展,顺应营业的发展;
  4. FATE 版本能否很好的升级治理;
  5. 一个组织内是否可以有差别的联邦集群,对应差别的营业、合作伙伴、应用场景需要,若何治理多个集群。

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

在领会若何在 Kubernetes 上部署 FATE 之前呢,你最好先领会 Kubernetes 和 FATE 的基本原理。

KubeFATE 是 FATE 的容器化部署的支持项目,主要包罗 FATE 的 docker-compose部署和 Kubernetes 部署,Juypter Notebook 支持等。

部署 FATE 可以通过下令行或者 I 来操作,可以操作的资源如下:

cluster是 的主要资源, 每乐成部署一个FATE就会天生一个cluster,每一个 cluster 对应一组 Kubernetes 的资源,包罗FATE (Training) 和 FATE-Serving 两种类型。

下令行和 API 主要有 install update delete describe list 五种操作。

job是 部署 cluster 的时刻发生的中心资源,卖力完成 cluster 在 Kubernetes 上对应的操作,包罗三种类型 Install、Update 和 Delete。

执行的基本历程分四步:

下令行和 API 主要有 list, delete, describe 三种操作。

chart是 存储差别类型差别版本的 FATE 的Yaml模板文件,是 Helm Chart 的超集,相比通俗 Helm Chart 多了一个 values-template 文件。所有的chart 文件可以从这里下载:

下令行和 API 主要有 upload, list, delete三种操作。

是 对下令行的认证信息的体现。

安装包可以从 GitHub 的 KubeFATE release 下载

$ version=v1.5.0

$ wget https://github.com/FederatedAI/KubeFATE/releases/download/ /kubefate-k8s- .tar.gz

解压之后安装就可以使用:

$ mkdir -p kubefate

$ tar -zxvf -C kubefate kubefate-k8s- .tar.gz

$ chmod x ./kubefate sudo mv ./kubefate /usr/bin

解压之后获得这些文件:

$ ls

cluster-serving.yaml cluster-spark.yaml cluster.yaml config.yaml examples kubefate kubefate.yaml rbac-config.yaml

使用之前你需要在 Kubernetes 上部署 server。

这部门包罗 server的 namespace 和 RBAC 权限,官方默认的权限是cluster-admin,对 Kubernetes 的 RBAC 机制对照领会的可以自己修改。

还包罗 所使用的秘钥,MySQL 的用户名密码和 的用户名密码,部署之前建议先修改一下。

$ kubectl apply -f rbac-config.yaml

接下来就可以部署 server了。

这个部署包罗两部门: 和 MariaDB(MySQL),总共包罗 5 个 Kubernetes组件,分别是 和 MariaDB 的Deployment 与 Service、 kubefate 的Ingress。

$ kubectl apply -f kubefate.yaml

deployment.apps/kubefate created

deployment.apps/mariadb created

service/mariadb created

service/kubefate created

ingress.networking.k8s.io/kubefate created

可以看到5个 Kubernetes 组件乐成建立,若是 deployment 建立的 pod 状态正常那么说明 server已经部署乐成。

下令行是 server的API挪用实现,通过架构图我们知道 部署 FATE 是 server 通过call Kubernetes API 来实现的, 下令行与 server 的通讯是通过 Ingress 露出的 URL 来实现,以是 下令行可以在随便一台可以接见 Ingress 入口的机械使用,只需要设置 hosts 文件即可。

例如:

/etc/hosts

192.168.100.123 是 ingress 的入口 IP地址。

使用下令 kubefate version 检查是否连通。

$ kubefate version

kubefate service version=v1.2.0

kubefate commandLine version=v1.2.0

这里报错,缘故原由一样平常有两点:

  1. 没有 ingress-controller ;
  2. KubeFATE 的 pod 没有乐成运行(第一次运行初始化数据库会需要一点时间)。

KubeFATE 服务部署乐成就可以使用 kubefate 下令来部署 FATE 了。

使用 kubefate cluster install 下令,可以用 kubefate 安装一个指定FATE集群。使用 --help 参数可以更好的使用 kubefate 下令。

在安装之前,集群的参数可以通过设置 cluster.yaml 实现。详细的设置可以看设置先容部门。

$ kubefate cluster install -f cluster.yaml

create job success, job id=94107328-958e-4fa6-8fa7-9a2b975114de

kubefate 对集群的安装更改删除都市天生一个job,使用 kubefate job describe <job_id> 可以查看对应操作的进度。

kubefate 的 job 分为三种:install、 update、 delete。

检查是否部署乐成 查看 job 状态

通过查看 job 的信息,可以知道对应 FATE 集群安装的进度

$ kubefate job describe 94107328-958e-4fa6-8fa7-9a2b975114de

StartTime 2020-11-25 03:03:41

EndTime 2020-11-25 03:05:38

Duration 117s

Status Success

Creator admin

ClusterId 9e693e93-bf2a-4229-8485-ea922ed33dcf

Result Cluster install success

SubJobs mysql PodStatus: Running, SubJobStatus: Success, Duration: 83s, StartTime: 2020-11-25 03:03:41, EndTime: 2020-11-25 03:05:05

,

usdt支付接口

菜宝钱包(caibao.it)是使用TRC-20协议的Usdt第三方支付平台,Usdt收款平台、Usdt自动充提平台、usdt跑分平台。免费提供入金通道、Usdt钱包支付接口、Usdt自动充值接口、Usdt无需实名寄售回收。菜宝Usdt钱包一键生成Usdt钱包、一键调用API接口、一键无实名出售Usdt。

,

nodemanager-0 PodStatus: Running, SubJobStatus: Success, Duration: 11s, StartTime: 2020-11-25 03:03:41, EndTime: 2020-11-25 03:03:53

nodemanager-1 PodStatus: Running, SubJobStatus: Success, Duration: 11s, StartTime: 2020-11-25 03:03:41, EndTime: 2020-11-25 03:03:53

python PodStatus: Running, SubJobStatus: Success, Duration: 116s, StartTime: 2020-11-25 03:03:41, EndTime: 2020-11-25 03:05:38

rollsite PodStatus: Running, SubJobStatus: Success, Duration: 11s, StartTime: 2020-11-25 03:03:41, EndTime: 2020-11-25 03:03:53

client PodStatus: Running, SubJobStatus: Success, Duration: 116s, StartTime: 2020-11-25 03:03:41, EndTime: 2020-11-25 03:05:38

clustermanager PodStatus: Running, SubJobStatus: Success, Duration: 11s, StartTime: 2020-11-25 03:03:41, EndTime: 2020-11-25 03:03:53

fateboard PodStatus: Running, SubJobStatus: Success, Duration: 116s, StartTime: 2020-11-25 03:03:41, EndTime: 2020-11-25 03:05:38

当 job 的状态酿成 Success ,代表部署义务乐成。

subjob 示意当前 job 中每个组件的子 job 的状态。

通过下令 kubefate cluster describe <cluster_id> 可以查看部署的FATE集群的信息

$ kubefate cluster describe 9e693e93-bf2a-4229-8485-ea922ed33dcf

Name fate-10000

NameSpace fate-10000

ChartName fate

ChartVersion v1.5.0

Revision 1

Age 9m3s

Status Running

Spec backend: eggroll

chartName: fate

chartVersion: v1.5.0

istio:

enabled:

modules:

- rollsite

- clustermanager

- nodemanager

- mysql

- python

- fateboard

- client

name: fate-10000

namespace: fate-10000

partyId: 10000

persistence:

pullPolicy: null

python:

grpcNodePort: 30102

httpNodePort: 30107

type: NodePort

registry:

rollsite:

nodePort: 30101

partyList:

- partyId: 9999

partyIp: 192.168.9.1

partyPort: 30091

type: NodePort

servingIp: 192.168.10.1

servingPort: 30105

Info dashboard:

- 10000.notebook.kubefate.net

- 10000.fateboard.kubefate.net

ip: 192.168.10.2

pod:

- clustermanager-76bb7d4dd4-hhpw6

- mysql-57b7d859bc-pw4x5

- nodemanager-0-8d85fd46c-pwcz2

- nodemanager-1-6d67b96bc-qp4bx

- python-9c857bbcc-lgx2d

- rollsite-6b685d468d-bcrzw

status:

modules:

client: Running

clustermanager: Running

fateboard: Running

mysql: Running

nodemanager-0: Running

nodemanager-1: Running

python: Running

rollsite: Running

当Status是"Running"的时刻示意部署的FATE已经正常运行。

集群的其他信息:

  • Name、NameSpace、 ChartName、 ChartVersion 这些是基本信息与设置文件字段对应
  • Status 代表部署的 FATE 的状态("Running"示意正常运行)
  • Revision 代表 update 的次数,建立乐成也算一次。
  • Spec 对应部署的时刻的 cluster.yaml
  • Info 当前 FATE 的特有信息
    • dashboard 是部署FATE包罗的ingress入口
    • ip 示意可以 Kubernetes 使用 NodePort 的一个 Node 的 IP 地址
    • pod 示意当前 FATE 集群在kubernetes 内里所有 pod
    • status 示意当前 FATE 集群所有 container 的状态

要检查 FATE 是否成可以运行 FATE 的一些测试义务,详细若何使用可以参考 FATE examples,也可以参考。

FATE 联邦学习的实现依赖多个 Party 的数据交换,多个 Party 的互联有两种方式,分别是直连模式(网状)和 exchange(星型)。

直连模式(网状):

exchange(星型):

  • PartyID partyID部署FATE的时刻必须指定,
  • IP rollsite对外是通过NodePort的方式露出,以是IP就是NodeIP(通过查看cluster的详细信息也可以获得 Info.ip ),
  • Port 就是设置的 rollsite.nodePort 。

直连模式是指在一个联邦网络内某个Party包罗了他需要毗邻的所有party的集群入口信息(PartyID、IP、Port),对应的对方Party也必须包罗它的信息。

当某个新的Party想要加入网络,需要设置一个网络内唯一的PartyID,还需要在 的设置项增添以是需要关联的Party的信息,而且对方也需要在自己的 增添己方的信息。

也叫星型部署模式,所有的 Party 只需要设置 exchange 集群的信息,就可以通过exchange毗邻其他的Party,exchange卖力治理所有Party的集群信息。

若是使用exchange模式部署,只需要设置 即可毗邻exchange集群。exchange集群则需要设置各方的Party信息([exchange集群设置](#FATE exchange))。

当FATE使用 Spark 盘算引擎,集群的毗邻方式差别于之前,类似于直连模式,不外互联要包罗两个组件 nginx 和 rabbitmq。

FATE使用Spark 的 party 之间互联就需要设置 nginx 的 route_table 和 rabbitmq 的route_table。

  • nginx 的 route_table 需要设置对方集群的 nginx 和 python 的 grpcNodePort。
  • rabbitmq 的 route_table 则需要设置对方集群的rabbitmq。

联邦学习平台 KubeFATE 部署 FATE 的设置说明

  • KubeFATE: https://github.com/FederatedAI/KubeFATE
  • FATE: https://github.com/FederatedAI/FATE
  • Kubernetes: https://kubernetes.io/
发表评论
请自觉遵守互联网相关的政策法规,严禁发布色情、暴力、反动的言论。
评价:
表情:
用户名: 验证码:点击我更换图片