3 月 19 日,微众银行联合VMware及机器之心开设的公开课《联邦学习 FATE 入门与应用实战》 第四讲结课,VMware CTO 办公室资深研究员彭麟为大家介绍了使用 KubeFATE 部署生产环境的联邦学习 Kubernetes 集群。第四讲回顾视频:
【联邦学习FATE课程第四期】使用KubeFATE部署生产环境的联邦学习
本周,我们将迎来本系列公开课的第 5 讲和第 6 讲,详情如下:
课程主题:FATE 整体架构介绍与系统实践
课程时间:3 月 24 日 20:00 主题演讲+项目实践+在线答疑
课程讲师:曾纪策 微众银行人工智能部系统架构师
讲师简介:联邦学习开源项目 FATE 工程研发负责人,曾主导业界领先的智能运维感知平台,推动人工智能在 Ops 领域的落地,加入微众前,在百度负责大规模流量分析调度系统,运维大数据平台等项目,在机器学习、大数据数据处理方面有丰富的实践经验。
课程摘要:FATE 作为一个面向生产环境的联邦学习框架,在系统架构方面,FATE 支持灵活的算法流、高弹性作业调度、分布式存储、高性能计算、跨站点传输以及高性能在线推理,包含了机器学习生命周期中诸如数据处理、模型训练、模型管理、在线推理等绝大部分功能。本次课程将介绍 FATE 整体架构、系统关键数据流以及如何实践
实践内容:
FATE 整体架构介绍
端到端的联邦学习 Pipeline 介绍与实现
高可用高性能联邦学习在线推理服务
完整的机器学习生命周期实践
课前准备:
python2.7 环境
fate 代码
可运行的 fate 环境,不限制版本,Standalone、Cluster 等版本均可
实践部分会涉及一般命名操作
课程主题:联邦推荐算法及其应用
课程时间:3 月 26 日 20:00 主题讲解+在线答疑
课程讲师:谭奔 微众银行人工智能部高级研究员
讲师简介:博士毕业于香港科技大学,主要研究方向为迁移学习、推荐系统、机器学习等,目前在微众银行人工智能部门负责推荐算法研发工作,曾就职于腾讯,负责广告转化率预估、商品推荐等工作。在 KDD、AAAI、SDM、TIST 等国际学术期刊会议上发表论文 10 余篇,多次在国际数据挖掘大赛中名列前茅。
课程摘要:课程主要介绍联邦推荐系统背景、联邦推荐系统分类以及现有工作、联邦推荐算法实现和联邦推荐在新闻推荐的应用。
问题 1:生产环境是多个机构一起部署的,生产环境是多个机构一起部署的,需要对方机构提供什么样的权限?
在正式的生产环境,多个机构应该独立部署自己的FATE集群,然后通过FATE-Cloud连接起来一起进行联邦学习。FATE-Cloud还在开发完善中。
KubeFATE在部署的时候尽量保证采用通用方案,所以只要保证网络通道,可以按照各组织的安全部门要求,加上安全保护。
问题2:gRPC访问失败的原因是?
gRPC访问失败的可能原因很多,很难一概而论。按照我们的经验,可以观察下报的时间点。如果是一开始执行就报错,很可能是proxy的route_table配置错误,可以检查下。如果是如本课那样,由kubeFATE部署的Kubernetes集群,就是你的cluster.yaml里有写错的地方;如果任务已经顺利跑起来,显示任务正在运行,突然跳出一堆gRPC错误,那很可能是egg的processor起的过多,资源不够。可以参考:https://github.com/FederatedAI/KubeFATE/wiki/KubeFATE#1-running-toy-example-failed里改小eggroll.computing.processor.session.max.count的配置;还有其他原因引起gRPC错误,譬如网络真的出现问题。
所以gRPC错误具体问题具体分析去解决。
问题3:Native部署与k8s部署优劣?
目前FATE的部署可以划分为四种方案,都各有优缺点和适应的场景。我主观的想法是:
如果您想很快体验一下FATE,或者跑的模型和数据在单台机器就够了,建议使用第二节课介绍的KubeFATE ->Docker-Compose的部署方案。这是门槛最低,最简单的部署方案,因为你不需要解决依赖环境带来的种种安装困难,唯一需要的只是装一个Docker;
第二种是standalone的方案,我觉得如果您只是想开发算法,需要如第三节课那样用Python去开发,而开发机器性能又不高,也想去测试底层的egg那些模块,那standalone是很方便的方案;
然后是今天介绍的KubeFATE -> Kubernetes的部署方案。这是你对FATE的使用需求因数据集和模型变大,需要扩容,并且里面有数据需要维护一个FATE集群,所以考虑集群管理高级功能自然的需求;
最后是Native的集群部署方案。除非是因为特殊原因,譬如组织内部无法部署Kubernetes,或者需要对FATE的部署进行自己的二次开发,否则我个人不是很推荐这个方案。即使使用这个方案,也推荐结合其他编排工具,譬如Ansible,Puppet类的来辅助,因为大规模部署我们需要讲究一致性。
问题4:企业一般用的部署方式是什么呢?
这是个选型问题。我个人比较推荐企业使用KubeFATE的Kubernetes方案来部署。一来,这样可以对集群以一个整体去运维;二来Kubernetes也是主流跑分布式任务的事实标准,社区也有很多可以使用的工具辅助管理。
问题5:k8s部署不需要java、python吗?
这就是container部署的优势,这些依赖包都已经打包在了镜像里面。
问题6:不太明白为什么会用k8s管理? 由一个机构批量部署其他机构的环境?
一个机构不会部署别的机构环境。但是:
1、FATE本身就是个复杂的分布式系统,有横向扩容等需求,所以Kubernetes可以很好解决这些问题;
2、一个机构内部可以有多个FATE的集群,譬如一个是开发用的,一个是生产用的;或者不同部门使用不同的FATE集群,也有可能有多个版本的FATE集群同时在跑。这些依托Kubernetes的namespace都可以很好的去解决。
问题7:每个机构独立部署自己的kubefate吗?还是不同机构的kubefate协同完成联邦?
对,每个机构部署自己的KubeFATE。不同机构可以用FATE-Cloud来协同,而FATE-Cloud会调用KubeFATE。
问题8:联邦需要做免密吗?
这其实是安全问题,是不能简单的做免密的。这个FATE-Cloud会解决,大家可以期待一下。
提前添加FATE开源社区助手(FATEZS001),锁定【联邦学习FATE开源社区】,第一时间加入《联邦学习FATE入门与应用实战》课程学习。连续四周,6节课程,为你全方位讲解《联邦学习FATE入门与应用实战》课程。主题讲解、项目实践、在线答疑,干货满满哦!