您的浏览器禁用了JavaScript(一种计算机语言,用以实现您与网页的交互),请解除该禁用,或者联系我们。[网易]:Kubeflow产品化落地的设计与思考 - 发现报告
当前位置:首页/其他报告/报告详情/

Kubeflow产品化落地的设计与思考

2023-03-09网易路***
Kubeflow产品化落地的设计与思考

Kubeflow产品化落地的设计与思考 汪勇武 网易数帆-智能计算团队 当今IT界最活跃的两大技术: 1.以Kubenetes为代表的云计算 2.以tensorflow、pytorch为代表的机器学习 Kubeflow作为桥梁将当今最炙手可热的两大技术结合在一起。 重点: 1.Toolkit(工具集) 2.simple、portable、scalable(简单、可移植和可扩展。一句话云原生) 3.todeploybest-of-breedopen-sourcesystems(我们不生产水,我们是大自然的搬运工) 4.AnywhereyouarerunningKubernetes,youshouldbeabletorunKubeflow.(还是云原生) 一句话描述:用云原生的手段把社区最优秀的AI框架集成在一起。 那我们来看看Kubeflow都集成了哪些优秀的开源框架 EasyAIKernel 网易/公有云GPU/CPUKubernetes AlgorithmEngine(大规模稀疏、图神经网络、分布式计算、计算框架服务) Infrastructure(产品化基础架构) 国产AI计算生态的Kubernetes 高性能计算集群 数据产 品 用户中心 为AI开发者打造的一站式、高性能分析建模平台,满足人工智能业务场景需求。 用户画像 营销推荐 社交推荐 风险管控 CRM管理 工业智造 游戏发行 特征平台 (推荐垂域) 可视化建模 免编码拖拽建模 数据源管理 模型/教程市场 自定义算子 交互式建模 专家开发环境 Jupyter交互式建模 Jupyter模型市场 EasyAIOS 训练服务 训练可视化 作业管理 在线服务 弹性扩缩容多种部署方式模型性能监控 镜像中心 代码服 务 数据中心 权限管 理 大数据基础架构 6 音乐广告 音乐推荐 Lofter推荐 智慧企业NLP 杭研数据服务部 eHR人力资源 有道 严选 传媒 智慧企业定位 网易支付 易现 ----服务70+模型,峰值近万QPS 7 Copyright©2020byNetEase Copyright©2020byNetEase NotebookServers NotebookServersKubeflow对Notebookserver进行了云 Notebook- server Notebook- server - server Namespace2 - server Notebook Notebook Notebook- controller Notebook- service Api-server jupyter-web-app Notebook- service Istio-gateway Namespace1 原生的改造,引入了一个CRDnotebook来进行对notebookserver的管控 NotebookCRD Notebook- server Notebook- server watch NotebookServers Kubeflow原生的Notebook在工业场景有什么问题: 1.如何支持数据和算法工程师需要的大量框架 2.如何打通公司的数据平台 3.如何不改变工程师原有的工作模式 开发前:统一的资源和环境管控 开发中:沉浸式编程体验 开发后:任务提交及任务监控 为AI开发者提供的交互式建模环境,支持TensorFlow、Pytorch、spark等计算框架,覆盖环境安装、代码编写调试、任务提交等多个开发环节。 ——统一镜像中心,预发布AI+GPU镜像 ——基于K8s架构统一管控CPU、GPU硬 件资源。 在线推理引擎 ——数据产品的无缝对接 ——支持定义Hadoop集群 ——集成jupyterlab,支持多计算框架。 ——支持与本地IDE无缝互通 ——支持专家级开发环境 ——一键式任务提交 ——任务实时监控 统一镜像中心 Noteboo k 开发环境 训练环境 12 Copyright©2020byNetEase 环境、资源配置代码编辑本地IDE互通 13 KubeflowFairing •KubeflowFairing是一个Pythonpackage,用于帮助用户在不同平台下高效构建、训练、部署一个训练任务 •KubeflowFairing的设计目标: •方便用户打包训练任务:让用户可以很容易地将训练程序,依赖的库打包成docker镜像 •方便扩展到多云平台:提供high-levelAPI,方便用户在云平台上提交训练任务,而不用关心底层实现 Serving (kubernetescluster) Training (kubernetescluster) 业务模块-Fairing 运行作业 构建镜像并推送 KubeflowFairing 预处理 local KubeflowFairing Notebook (local、kubeflow) •原生FairingSDK对用户代码具有侵入性,易用性不足。平台基于SDK封装了Client,用户编写yaml格式配置文件即可提交任务。 •支持使用GPU设备,并选择特定GPU型号 •深度学习平台集群中有多种型号的GPU,如1080-Ti,P40,K40m等。如果用户任务对GPU型号有要求,比如网络模型特别大,要GPU显存较大,那么可以配置任务使用P40显卡。 •tfjob编排模式 •binpack模式,多个ps,worker进程会尽量调度到同一个节点,以降低通信代价。 •spread模式,多个ps,worker进程会尽量分散到不同的节点,以降低节点的计算压力。 •独占节点 •在一些业务中,用户有独占节点的需求 •任务跨机房调度,同一个任务的多个pod调度到同一个集群中,避免跨机房通信的性能损失。 •扩展MPI-Job模块,支持用户提交MPI任务。 到Kubeflow1.1默认安装的训练框架有: 1.MPITraining 2.MXNetTraining 3.PyTorchTraining 4.TensorflowTraining 社区还集成了其他的训练框架: 1.XGBoost 2.Caffe2 到Kubeflow1.1默认安装的训练框架有: 1.MPITraining 2.MXNetTraining 3.PyTorchTraining 4.TensorflowTraining 社区还集成了其他的训练框架: 1.XGBoost 2.Caffe2 •EasyAIStudio、EasyAIDev提 交训练任务的CR给K8S •相关的训练框架operatorwatchCR资源并构建相应的训练任务 •支持tensoflow、pytorch训练 框架 •支持ALLReduce和PS分布式训练架构 赋能: 1.统一训练镜像集成常用的训练框架 2.打通猛犸数据平台 3.添加资源监控和报警 分享:后续会在km就Kubeflow常用的训练框架进行专题的技术分享(源码、常见问题解决等) 功能异常丰富,用上了大量的云原生的技术,可以在上面讲很多的故事。 问题: 1.层次结构这么深,性能问题如何解决 2.需要专业的团队来维护上面所有的技术栈。 SeldonCore和BentoML都是社区开源的开箱即用的推理框架,支持各类框架训 练的模型。感兴趣的话可以自行去社区深入研究。 最终方案中在LB和服务之间加了nginx来实现grpc的7层负载均衡。基于sidecar、consul、consul-template来实现服务副本发生变化后nginx的动态感知。 在线模型服务(EasyAIServing)-低延迟高并发推理引擎 模块定位: 在线模型及推理服务的管控中心,和业务系统对接,提供高并发低延时推理服务。 多类别模型支持 支持机器学习模型、深度学习模型。支持TF-serving、PMML、Dockerimage等多种部署方式。无缝对接可视化建模板块,一键式模型部署。 多版本服务支持 可视化建模 业务系统 在线推 理服务 交互式建模 26 支持模型的多版本管理,以及在线服务的平滑升级,支持服务回滚。 弹性扩缩容 针对流量高峰低谷,支持服务资源弹性扩缩。目前平台稳定运行2年以上,部分模型峰值上万QPS。 高并发低延迟 高并发高吞吐,服务毫秒级响应时长;广告业务峰值带宽 40Gbps+,超时率万分位。 开放架构 方便外部业务系统对接,例如对接决策引擎系统。 熟悉网易有数大数据平台的同学对数据开发中的Pipeline肯定不会陌生,其实KubeFlow的Pipeline和大数据平台的Pipeline没有本质区别。KubeFlowPipeline就是云原生的Pipeline,基于云原生的argc来实现DAG的调度。 KubeFLowPipeline的使用方式: 1.基于Pipeline的SDK构造Pipeline 2.将自己写的代码通过UI上传到PipeLine,argc会将代码渲染成DAG图。 3.点击执行 熟悉网易有数大数据平台的同学可能发现了,这不就是和网易有数大数据平台的使用方式一模一样吗。 KubeflowPipeLine的设计思想: 1.KubeflowPipeLine有3个核心的概念: •实验(Experiment) •运行(run) •Metadata(数据集、训练代码、模型、训练环境、超参等) 实验是一个资源的集合,运行是一次执行pipeline,而且每次run都会记录包括运行过程产生的各种Metadata。方便对历史的run进行管理和对比。 有点类似进程和线程的关系。 为AI开发者提供的可视化建模环境,基于内置算子、用户自定义算子,低门槛帮助用户实现AI模型构建,同时帮助用户轻松完成数据预处理、模型训练、模型上线等整个建模流程的串流及调度。 案例示意图 无缝对接大数据资产 (EasyAIDataAcc 深度集成大e数s据s资)产,统一的数据管理和权限管控。 实验管理及复用 (EasyAIExperiment实)验粒度,进行建模流程统一 管控和分享,快速复用。 快速的模型部署 (EasyAIDeploym提供模型部e署n算t子)、模型导入导出等。 全链路调度执行 (EasyAIFlow) 无缝对接大数据工作流、支持建模全流程串流。 场景化模板市场 (EasyAIMarket) 基于特定场景,抽样通用化行业模板,快速构建业务模型。 低代码机器学习建模 (EasyAIProgrammi n基g于)模板及内置算子快速构 建业务模型。 29 无缝对接大数据资产 算子列表,支持自定义 一键模型部署 实验画布: 实验保存为模版,快速复用 与notebook无缝互通灵活的代码编辑 统一建模流程管理 灵活的任务串联和调度 Copyright©2020byNetEase T+1批处理场景: 完成数据采集、数据处理、算法建模、模型预测全流程。 实时预测场景:完成数据采集、数 据处理、算法建模、 模型上线流程。 全流程建模的自动化调度 建模流程引用 Kubeflow/katib •支持任何语言,多种训练框架(tensorflow/pytorch/mxnet/keras等) •支持超参优化、网络结构搜索 •支持kubeflow任务组件如jobtfjobmpijob等,支持分布式训练 •支持random、grid、hyperband、贝叶斯优化、tpe等超参调优算法。 K8s原生调度器无法满足越来越多的场景的调度需求,需要对调度器进行扩展。 扩展方式有两种: •调度器扩展(SchedulerExtender):性能差,扩展点有限,不够灵活;开发维 护成本低 •多调度器(Multipleschedulers):开发维护成本高,存在节点资源冲突问题; 性能好 •结合以上两种扩展方式的优势,社区推出K