摘要:随着机器学习模型应用到生活生产中,如何获得更多的数据训练更好的模型成为了关键,而有助于解决该问题的联邦学习也就受到越来越多的关注。而FATE作为联邦学习全球首个工业级开源框架,其支持多种主流算法,为机器学习、深度学习、迁移学习提供高性能联邦学习机制,FATE本身还支持多种多方安全计算协议,如同态加密、秘密共享、哈希散列等,具有友好的跨域交互信息管理方案。
FATE 最主要的特征和优势在于,它源自微众银行进行大数据风控建模的实际场景,因此 FATE 是一个生产系统,它的可扩展性非常优秀。其自带一个分布式计算框架,它的稳定性肯定比一般的研究型项目好很多,而且预测和训练也都集成在了一起,当然,FATE还带了一些经典算法,包括线性回归、提升树和其它分类模型等,这些都得到了大量实践证明,是工业上很常见的方法,所以如果开发者不愿意从头构建,那么就可以直接使用这些方法,或者在这些方法上做修改。
正文:
10月31日,FATE v1.1版本正式发布了,在这个版本中,FATE联合VMware中国研发云原生实验室的团队一起搞了个“大事”——发布了KubeFATE项目,通过把FATE的所有组件用容器的形式封装,实现了使用Docker Compose或Kubernetes(Helm Charts)来部署,现代应用以DevOps方式开发,基于容器部署应用的优势相当明显,应用不仅可以无差别地运行在支持容器的平台上,还可以按需灵活地实现多实例水平扩展。该项目现已发布在github:https://github.com/FederatedAI/KubeFATE
目前主流的云平台,如国外的AWS,Azure,国内的阿里云、腾讯云等,都有基于容器和Kubernetes的云原生服务,使得容器应用的部署和运行已经标准化和商品化。通过KubeFATE项目,开发者轻松地可以在公有云或私有云中部署和使用FATE项目。
在这一版本之前,如果开发者要使用FATE项目提供的联邦学习基础框架,需要从源代码开始编译构建然后使用。编译源码和构建可执行文件的工作涉及到C++,Java,Python等异构语言环境,开发者需要具备这些方面的能力才能理解并排除编译中出现的问题,对自身要求较高。其次,编译过程中需要从互联网下载大量依赖的软件包(GB级别),网络环境不佳的话耗时将会巨大,并且可能因为网络原因构建失败。
另外,在编译构建之后,部署FATE的过程需要对系统各个模块进行配置,如果配置有误,系统将无法正常工作。因为FATE是个分布式系统,排错的成本比较高。
事实上,许多开发者的初步要求只是能够使用FATE,因此从源码开始的编译工作是不必要的,这也阻碍了部分开发者来认识FATE。而直接使用FATE v1.1版本中打包好的Docker容器镜像,则可以跳过前期步骤,大大降低了FATE的使用门槛,避免开发者“倒在起跑线上”。如果是企业开发者,还可以发现离线部署FATE的能力也得到了提升,借助 Harbor 开源容器镜像仓库,可以自动同步网上的镜像,为运维减压了。
新增多个联邦算法,适用性再次提升
除了和Vmware联手推出的KubeFATE项目外,v1.1版本还提供了横向通用框架,增加了多个联邦算法。详情可前往GitHub查看:https://github.com/FederatedAI/FATE
具体来说,新版本中提供了横向联邦学习通用算法框架,支持Secure Aggregation,通过封装横向联邦学习的主要流程,开发者能够简单地实现横向联邦学习算法。比如利用这一框架,可以实现横向神经网络算法。
除了横向联邦学习框架外,新版本中FATE还新增了对纵向线性回归、纵向泊松回归等联邦算法的支持,前者在预测连续标签等应用场景上非常有力,而后者则能更好的协助开发者预测次数与频率,如在购买保险和评估意外发生风险等场景里,泊松回归都能对频率进行预测。这一版本开始,FATE也正式开始支持多方纵向联邦建模,可以实现纵向场景下的多个数据提供方共同训练联邦模型。
其次,FATE也对连接Spark进行了尝试,FATE v1.1支持已有Spark集群的开发者直接复用现有资源,可以选择Spark作为计算引擎,根据实际情况灵活配置。而在FATE-Serving模块,FATE也首次支持在线上使用训练好的Secureboost模型进行推理预测。同时,FATE-Serving新增服务治理功能,在线将部署多台相同服务器,如有任一服务器出现问题,那么进程将会在剩下的服务器之间切换,防止因为单一服务器故障而出现数据丢失等情况。
以下再分模块详细介绍下FATE v1.1的提升:
FederatedML:提供易扩展的横向算法框架支持横向算法开发
在新版本中,FATE的开发更加轻松,开发者可以更关注于算法具体本身,而将更多通用的通信传输内容交给框架。通过提供易扩展的横向算法框架,方便了不同横向算法的开发,有助于提高整体开发效率。对用户而言,也能更方便理解和把握整体的算法思路,从而更好地使用和参与到社区建设中来。
此外,FATE v1.1版本中还提供了横向DNN、线性回归、泊松回归等算法的支持,以及更多算法支持多方联邦建模,丰富了更多的建模场景,提升了FATE的实用性。
FATEFlow:高性能联邦学习pipeline生产服务
FATEFlow是联邦学习建模Pipeline 调度和生命周期管理工具,为用户构建端到端的联邦学习pipeline生产服务。v1.1版本中,FATEFlow主要在稳定性及易用性上进行了提升,例如:
上传下载文件支持查看作业状态,对于大文件和对接其他系统有较大帮助;
支持取消等待中的作业;
支持对作业设置超时时间;
优化作业日志,统一存放于以作业ID命名的日志文件夹,提高排查问题效率;
FATEBoard:简单高效,联邦学习建模过程可视化
FATEBoard是联邦学习建模的可视化工具,为终端用户可视化和度量模型训练的全过程,帮助用户更简单而高效地进行模型探索和模型理解。新版本中,job工作流展示进一步优化,并支持组件数据与模型的输入输出端口分离,提供更直观的数据传输与模型传输展示;
另外,现已支持模型训练过程中的评估结果可视化,便于实时关注与跟踪中间训练过程和结果;更提供secureboost树模型的可视化展示,不仅可以清晰地观测模型中每颗决策树,还能查看不同标签下的树模型。
FATEServing:服务治理,重启自动恢复模型
在v 1.1版本以前,不存在高可用,模型保存在内存中没有持久化,在重启之后会丢失模型。
而在新版本中,模型加载成功后会在本地文件中保存,在重启之后会从本地文件中恢复之前加载的模型。
此外,v1.1版本引入zookeeper作为注册中心,提供了有限的服务治理功能,能够动态的注册grpc接口,在某些机器宕机的情况下,能够自动的切换流量 。
KubeFATE:Docker-Compose部署支持、Kubernetes的Helm Chart部署、Harbor容器镜像仓库集成
前边介绍了KubeFATE的整体,这里主要说说KubeFATE主要提供的Docker compose和Kubernetes(Helm Chart)两种部署方式。
Docker-Compose可以将FATE的所有组件部署在单个节点中,并且支持多个合作方的部署。开发者无需编译代码,可使用Docker compose迅速搭建测试环境。当前Docker compose将FATE部署在一个节点中,有利于开发者对FATE功能的熟悉和了解。
Docker-Compose的单节点部署方式定位于测试。在生产环境中,往往需要多节点部署,此时采用Kubernetes的方式更佳。KubeFATE提供了Helm Charts来把FATE部署到Kubernetes方法,可在支持Kubernetes的云上直接部署FATE,并且可以按照需求定制部署的细节,例如把计算模块部署在有GPU的节点上等等。
Harbor是开源镜像仓库,提供镜像的访问控制、远程同步、安全漏洞扫描等强大能力,国内的用户绝大部分使用Harbor管理镜像。KubeFATE项目将Harbor集成到其中,可提供本地镜像管理能力,无需依赖Docker Hub等云服务,大大提高了效率和安全性。此外,Harbor还能复制远程的镜像,可把镜像在公有云或数据中心之间双向复制,遇到故障可自动恢复,从而简化运维复杂度。
总的来说,FATE V1.1版本增加了多个联邦算法的支持,为联邦学习建模带来更丰富更强大的功能,同时联合Vmware推出KubeFATE,简化FATE使用门槛,对初接触开发者更为友好。我们欢迎对联邦学习有兴趣的同仁一起贡献代码,提交 Issues 或者 Pull Requests。详情可查阅 FATE项目贡献指南:
https://github.com/FederatedAI/FATE/blob/master/CONTRIBUTING.md
(责任编辑:mzcy898)