KubeSphere 开源社区的小伙伴们,大家好。我是微众银行大数据平台的工程师周可,接下来给大家分享的是基于 WeDataSphere 和 KubeSphere 这两个开源社区的产品去构建一个云原生机器学习平台 Prophecis。
Prophecis 是什么?
首先我介绍一下什么是 Prophecis (Prophecy In WeDataSphere)?它的中文含意就是预言的意思。
Prophecis 是微众银行大数据平台团队开发的一站式机器学习平台,咱们是基于 KubeSphere 治理的这一套多租户的容器化的高性能计算平台之上,搭建了咱们提供给数据迷信和算法工程师,以及咱们的 IT 运维去应用的机器学习平台。
在交互界面层,大家能够看到最下面咱们是有面向普通用户的一套机器学习利用开发界面,以及面向咱们运维管理员的一套治理界面,其中管理员的界面基本上就是基于 KubeSpehre 之上做了一些定制和开发;两头的服务层是咱们机器学习平台的几个要害服务,次要为:
- Prophecis Machine Learning Flow:机器学习分布式建模工具,具备单机和分布式模式模型训练能力,反对 Tensorflow、Pytorch、XGBoost 等多种机器学习框架,反对从机器学习建模到部署的残缺 Pipeline;
- Prophecis MLLabis:机器学习开发摸索工具,提供开发摸索服务,是一款基于 Jupyter Lab 的在线 IDE,同时反对 GPU 及 Hadoop 集群的机器学习建模工作,反对 Python、R、Julia 多种语言,集成 Debug、TensorBoard 多种插件;
- Prophecis Model Factory:机器学习模型工厂,提供机器学习模型存储、模型部署测试、模型治理等服务;
- Prophecis Data Factory:机器学习数据工厂,提供特色工程工具、数据标注工具和物料治理等服务;
- Prophecis Application Factory:机器学习利用工厂,由微众银行大数据平台团队和 AI 部门联结共建,基于青云 (QingCloud) 开源的 KubeSphere 定制开发,提供 CI/CD 和 DevOps 工具,GPU 集群的监控及告警能力。
最底层的根底平台就是 KubeSphere 治理的高性能容器化计算平台。
咱们去构建这样一套面向咱们以后金融场景或者互联网场景的机器学习平台的时候,咱们有两个思考的点:
第一个点是一站式,就是工具要全,从整个机器学习利用开发的整体的 Pipeline 去提供一个残缺的生态链工具给到用户去应用;
另外一个关注点是全联通,咱们去做咱们去做机学习利用开发的时候有一个很大的痛点,大家可能之前看到 Google 有一张图,可能 90% 的工作都是在做机器学习之外的工作,而后真正去做模型调参这些货色的时候,可能就 10% 的工作。
因为后面的数据处理其实是有很大工作量的。咱们去做的一个工作就是,通过插件化接入的形式把咱们的 Prophecis 的服务组件,跟咱们 WeDataSphere 下面目前曾经提供的调度零碎 Schedulis、数据中间件 DataMap、计算中间件 Linkis、还有面向数据利用开发门户的 DataSphere Stduio 这一整套工具链进行买通,构建一个全联通的机器学习平台。
Prophecis 性能组件简介
接下来,简略介绍一下咱们机器学习平台 Prophecis 的各个组件的性能。
第一个是咱们目前曾经放到开源社区的组件叫 MLLabis,其实跟 AWS 的提供给机器学习开发人员去用的 SageMaker Studio 差不多。
咱们在 Jupyter Notebook 做了一些定制开发,总体的架构其实就是左上角的这张图,其实次要的外围有两个组件,一个是 Notebook Server (Restful Server),提供 Notebook 生命周期治理的各种 API 接口;另外一个是 Notebook Controller (Jupyter Notebook CRD),治理 Notebook 的状态。
用户创立 Notebook 的时候,他只须要抉择有权限的命名空间 (Kubernetes Namespace),而后去设置 Notebook 运行时须要的一些参数,比如说 CPU、内存、GPU 或者是它要挂载的存储,如果一切正常,这个 Notebook 容器组就会在对应的 Namespace 启动并提供服务。
咱们在这里做了一个比拟增强的性能,就是提供一个叫 LinkisMagic 的组件。如果理解到咱们的 WeDataSphere 开源产品的话,有个组件叫 Linkis,它提供大数据平台计算治理能力,买通各个底层的计算、存储组件,而后给到下层去构建数据利用。
咱们的 LinkisMagic 通过调用 Linkis 的接口,就能够将 Jupyter Notebook 中写好的数据处理的代码提交到大数据平台下来执行;咱们能够把解决好的特色数据通过 Linkis 的数据下载接口拉到 Notebook 的挂载存储中去,这样咱们就能够在咱们的容器平台外面用 GPU 去做一些减速的训练。
存储方面,目前 MLLabis 提供两种数据存储,一种是 Ceph;一种是咱们的大数据平台 HDFS,对于 HDFS 这里提一句,咱们其实就是把 HDFS Client 和 HDFS 的配置文件通过 Mount 到容器中,并且管制好权限,就能够在容器内跟 HDFS 交互了。
这是咱们 MLLabis 的 Notebook 列表页面;
这是咱们从列表页面进到 Notebook 的界面。
接下来,介绍咱们另外一个组件 MLFlow。
咱们构建了一个分布式的机器学习试验治理服务。它既能够治理单个建模工作,也能够通过跟咱们 WeDataSphere 一站式数据开发门户 DataSphere Studio 买通,构建一个残缺的机器学习试验。这里的试验工作通过 Job Controller (tf-operator、pytorch-operator、xgboost-operator 等)治理运行在容器平台上,也能够通过 Linkis 提及到数据平台运行。
这里再阐明一下,MLFlow 与 DataSphere Studio 之间通过 AppJoint 的形式交互,这样既能够复用 DSS 曾经提供的工作流治理能力,又能够将 MLFlow 试验作为子工作流接入到 DSS 这个大的数据工作流中去,这样构建一个从数据预处理到机器学习利用开发的 Pipeline。
这个是咱们数据处理和机器学习试验组成的实现数据迷信工作流。
这个是 MLFlow 的机器学习试验 DAG 界面,目前提供 GPU 和 CPU 两种工作类型,反对 TensorFlow、PyTorch、xgboost 等机器学习框架工作的单机和分布式执行。
接下来给大家介绍咱们的机器学习模型工厂:Model Factory。咱们模型建好之后,咱们怎么去治理这些模型,它的模型的版本怎么治理,它的部署怎么治理,模型的校验怎么做,咱们用的就是 Model Factory。
这个服务咱们次要是基于 Seldon Core 进行二次开发,提供模型解释、模型存储、模型部署三块的能力。要强调的一点是这一块的服务接口咱们也能够接入到 MLFlow 中去,作为一个 Node 接入到机器学习试验中,这样训练好的模型,能够通过界面配置疾速部署,而后进行模型验证。
另外一个要阐明的是,如果咱们只是单模型的验证,咱们次要是应用 MF 提供的基于 Helm 的部署能力。如果是构建一个简单的生产可用的推理引擎,咱们还是会用 KubeSphere 提供的 CI/CD、微服务治理能力去构建和治理模型推理服务。
接着要介绍的组件是咱们数据工厂 Data Factory。
咱们这个数据工厂的话,咱们通过数据发现服务从 Hive、MySQL、HBase、Kafka 等数据组件中获取根底的元数据,并提供数据预览和数据血统剖析能力,通知咱们数据迷信和建模人员,他要应用的数据是长什么样子的,能够怎么用。将来也会提供一些数据标注的工具,或者是数据众包的工具,让咱们的数据开发同学来实现数据标注的这块的工作。
最初一个要介绍的组件,就是机器学习利用工厂 Application Factory。
就是方才说的,咱们如果对一些简单的模型去构建一些简单的 Inference Sevice 的时候,其实咱们用一个简略的单容器服务其实是不够的,咱们要去形成一整套的相似于 DAG 的一个推理的过程,这个时候其实咱们就须要更简单的容器利用的治理的能力。
Application Factory 这一块咱们就是基于 KubeSphere 去做的,咱们在后面做好这些模型的筹备之后,咱们会应用 KubeSphere 提供的 CI/CD 工作流去实现整体的模型利用公布流程,模型服务上线之后,应用 KubeSphere 提供的各种 OPS 工具去运维和治理各个业务方的服务。
KubeSphere 利用实际
接下来进入到 KubeSphere 在咱们微众银行利用实际局部。
咱们在引入 KubeSphere 之前,其实咱们面对的问题,次要还是一些运维的问题。过后,咱们外部也有用咱们本人写的一些脚本或者是 Ansible Playbook 去治理咱们这一套或者几套 K8s 集群,包含咱们在私有云下面的开发测试集群,以及行内公有云的几套生产 K8s 集群。然而这一块的话,因为咱们的运维人力无限,去治理这块货色的时候其实是非常复杂的;咱们的建好的模型是面向银行业务应用,有的是跟风控相干的,对于整体服务的可用性的要求还是很高的,咱们如何做好各个业务方的租户治理、资源应用管控、以及怎么去形成一个残缺的监控体系,也是咱们去须要重点关注的;还有就是自身 Kubernetes Dashboard 基本上没什么能够治理的能力,所以咱们还是心愿有一套好用的治理界面给了咱们的运维人员,让他们的运维效率更高一些。
因而,咱们构建这样一个基于 KubeSphere 为根底运维治理基座的机器学习容器平台。
整体的服务架构根本是跟 KubeSphere 以后的 API 架构差不多,用户的申请进来之后,它通过 API Gateway 定位要拜访服务,这些服务就是方才介绍那些组件,Gateway 将申请散发到对应的微服务当中去。各个服务依赖的那些容器平台的治理,就是 KubeSphere 这一套能力去给咱们提供的能力:CI/CD、监控、日志治理,还有代码扫描工具等,而后咱们在这一套解决方案之上做了一些革新点,但总体来说革新的货色也不是特地多,因为以后开源的 KubeSphere 提供的这些能力基本上能满足咱们的需要。
咱们外部应用的版本是 KubeSphere 的 v2.1.1,咱们革新次要如下:
- 监控和告警:咱们把 KubeSphere Notification 和咱们行内的监控告警心态进行了买通,同时将容器实例的配置信息和咱们的 CMDB 零碎中治理的业务信息进行关联,这样某个容器出现异常就能够通过咱们告警信息收回告警音讯,并通知咱们影响的是哪个业务零碎;
- 资源管理:咱们在 KubeSphere Namespace 资源配额治理上做了一点小小的拓展,反对 Namespace 的 GPU 资源配额治理,能够限度各个租户能够用应用的根底 GPU 资源和最大 GPU 资源;
- 长久化存储:咱们将容器的内的要害服务存储都挂载到咱们行内的高可用的分布式存储 (Ceph) 和数据库 (MySQL) 上,保障数据存储的安全性和稳定性。
这是咱们测试环境的一个治理界面。
而后这个是咱们方才说的,其实咱们这一块的话做两个事件,一个事件是说咱们把整个监控的对象跟咱们行内的这一套 CMDB 零碎进行一个联合。告警的时候,咱们通过跟这套 CMDB 零碎去做配置关联的,咱们能够晓得这一个告警实例它影响了的业务零碎是哪些,而后一旦出现异常的时候,咱们就会通过调用咱们的告警零碎,这里是一个企业微信的一个告警信息,当然它也能够发微信,也能够打电话,也能够发邮件。
以上这一块是咱们做的 GPU 资源配额定制。
这一块是咱们基于 KubeSphere 的日志查问界面。
接下来说下将来的瞻望,其实说到这里的话,咱们以后因为咱们人力十分无限,而后各个组件开发的压力也比拟大,而后目前的话咱们还是基于之前的 KubeSphere v2.1.1 的版本去做的,咱们接下来的话会去思考会把 KubeSphere 3.0 这块的货色去跟咱们现有开发的一些能力做联合和适配。
第二,目前 KubeSphere 还是没有 GPU 监控和统计指标治理的一些能力,咱们也会思考去把咱们之前做的一些货色或者一些界面能力迁徙到 KubeSphere Console 外面去。
最初一个是咱们整个 WeDataSphere 各个的组件基于 KubeSphere 的容器化适配和革新,咱们最终是心愿各个组件都实现容器化,进一步升高运维治理老本和晋升资源利用率。
对于 WeDataSphere
说到这里,我就简略再介绍一下咱们微众银行大数据平台 WeDataSphere。
WeDataSphere 是咱们大数据平台实现的一整套金融级的一站式机器学习大数据平台套件。它提供从数据利用开发、到中间件、在到底层的各个组件性能能力,还有包含咱们的整个平台的运维治理门户、到咱们的一些平安管控、还有运维反对的这块一整套的经营管控能力。
目前的话,这些组件当中没有置灰的这部分曾经开源了,如果大家感兴趣的话能够关注一下。
再瞻望一下,咱们 WeDataSpehre 跟 KubeSphere 的将来,目前咱们两个社区曾经官宣开源单干。
咱们打算把咱们 WeDataSphere 大数据平台这些组件全副能容器化,而后奉献到 KubeSpehre 利用商店中,帮忙咱们用户去疾速和高效的实现咱们这些组件与利用的生命周期治理、公布。
欢送大家关注咱们 Prophecis 这个开源我的项目以及咱们 WeDataSphere 开源社区助手,如果大家对这套开源的云原生机器学习平台有任何问题,能够跟咱们进一步交换,谢谢大家。
对于 KubeSphere
KubeSphere 是在 Kubernetes 之上构建的容器混合云,提供全栈的 IT 自动化运维的能力,简化企业的 DevOps 工作流。
KubeSphere 已被 Aqara 智能家居、原本生存、新浪、中国人保寿险、华夏银行、浦发硅谷银行、四川航空、国药团体、微众银行、紫金保险、Radore、ZaloPay 等海内外数千家企业采纳。KubeSphere 提供了运维敌对的向导式操作界面和丰盛的企业级性能,包含多云与多集群治理、Kubernetes 资源管理、DevOps (CI/CD)、利用生命周期治理、微服务治理 (Service Mesh)、多租户治理、监控日志、告警告诉、存储与网络管理、GPU support 等性能,帮忙企业疾速构建一个弱小和功能丰富的容器云平台。
KubeSphere 官网:https://kubesphere.io/
KubeSphere GitHub:https://github.com/kubesphere…
本文由博客一文多发平台 OpenWrite 公布!