关于存储:KubeDL-加入-CNCF-Sandbox加速-AI-产业云原生化

32次阅读

共计 5904 个字符,预计需要花费 15 分钟才能阅读完成。

简介:2021 年 6 月 23 日,云原生计算基金会(CNCF)发表通过寰球 TOC 投票接收 KubeDL 成为 CNCF Sandbox 我的项目。KubeDL 是阿里开源的基于 Kubernetes 的 AI 工作负载治理框架,取自 ”Kubernetes-Deep-Learning” 的缩写,心愿可能依靠阿里巴巴的场景,将大规模机器学习作业调度与治理的教训反哺社区。

作者 | KubeDL 团队

2021 年 6 月 23 日,云原生计算基金会(CNCF)发表通过寰球 TOC 投票接收 KubeDL 成为 CNCF Sandbox 我的项目。KubeDL 是阿里开源的基于 Kubernetes 的 AI 工作负载治理框架,取自 ”Kubernetes-Deep-Learning” 的缩写,心愿可能依靠阿里巴巴的场景,将大规模机器学习作业调度与治理的教训反哺社区。

我的项目地址:http://kubedl.io

我的项目介绍

随着 TensorFlow, PyTorch,XGBoost 等支流 AI 框架的一直成熟,和以 GPU/TPU 为代表的多种 AI 异构计算芯片的井喷式涌现,人工智能正疾速进入“大规模工业化”落地的阶段。从算法工程师着手设计第一层神经网络构造,到最终上线服务于实在的利用场景,除 AI 算法的研发外还须要大量基础架构层面的零碎反对,包含数据收集和清理、分布式训练引擎、资源调度与编排、模型治理,推理服务调优,可观测等。如以下经典图例所展现,泛滥零碎组件的协同组成了残缺的机器学习流水线。

与此同时,以 Kubernetes 为代表的云原生技术蓬勃发展,通过优良的形象和弱小的可扩展性,将应用层与 IaaS(Infrastructure as a Service)层的基础设施完满解耦:利用可能以“云”的范式按需应用资源,无需关注底层基础设施的复杂性,从而解放生产力并专一于本身畛域的翻新。

Kubernetes 的呈现解决了云资源如何高效交付的问题,但对于 AI 这类自身具备高度复杂性的工作负载还无奈做到很好地原生反对,如何整合各类框架的差别并保留其通用性,同时围绕 AI 工作负载的运行时去建设一系列欠缺的周边生态及工具,业界还在一直摸索与尝试。在实践中,咱们发现了 AI 负载运行在 Kubernetes 生态中面临着如下挑战:

  • 机器学习框架百花齐放,各自有不同的优化方向和实用场景,但在分布式训练作业的生命周期治理上又存在着诸多共性,同时针对一些高级个性也有雷同的诉求(如网络模式,镜像代码拆散,元数据长久化,缓存减速等)。为每类框架的负载独自实现 operater,各自独立过程无奈共享 state,不足全局视角,使得全局 Job 层面的调度以及队列机制难以实现。此外,不利于性能的形象和复用,在代码层面存在重复劳动。
  • 原生 Kubernetes 无奈满足离线工作多样的调度需要。Kubernetes 面向 Pod 调度的模型人造实用于微服务等 Long Running 的工作负载,但针对离线工作的高吞吐,Gang Scheduling 调度(All-Or-Nothing),Elastic Capacity 等多种调度诉求,社区演进出了多种调度计划。以机器学习分布式训练作业调度场景中极为常见的 Gang Scheduling 为例,社区目前就有 YuniKorn,Volcano,Coscheduling 等调度器实现,提供不同的交互协定,咱们须要有插件化的伎俩来启用对应的调度协定。同时,像 PS/worker 这类依据业务特有属性,不同 role 之间有启动依赖的 DAG 编排诉求,须要在控制器中实现;
  • 分布式训练的后果往往以模型作为 output,并存储在分布式文件系统中如 (阿里云 OSS/NAS),但如何从训练作业的视角去治理模型,像容器镜像那样成为 AI 服务的“不可变基础设施”并实现简略且清晰的版本治理与追溯,业界还不足最佳实际。同时,“训练”与“推理”两个阶段绝对独立,算法科学家视角中的“训练 -> 模型 -> 推理”机器学习流水线不足断层,而“模型”作为两者的两头产物正好可能充当那个“承前启后”的角色;
  • 分布式训练尚能鼎力出奇观,但推理服务的规格配置却是一个精密活。显存量、CPU 核数、BatchSize、线程数等变量都可能影响推理服务的品质。纯正基于资源水位的容量预估无奈反映业务的实在资源需要,因为某些引擎如 TensorFlow 会对显存进行预占。实践上存在一个服务质量与资源效力的最优平衡点,但它就像光明中的幽灵,明晓得它的存在却难以推敲。随着 GPU 虚拟化技术的成熟,这个平衡点的价值越来越凸显,更优的规格能显著提供单 GPU 卡的部署密度,节约大量的老本。
  • 推理服务自身是一种非凡的 long running 微服务状态,除了根底的 deployment 外,针对不同的推理场景还欠缺一些实例与流量的管理策略,如:

    1) 算法科学家通常会同时部署两个甚至多个不同版本的模型实例进行 A/B Test 以验证最佳的服务成果,须要基于权重的精细化流量管制;

    2) 可能依据流量申请程度和以后推理服务的 metrics 来主动触发实例的扩缩,在充沛保障服务可用性的前提下最小化资源老本等等。

KubeDL

针对上述难题,阿里巴巴云原生,集群治理和 PAI 团队将治理大规模机器学习工作负载的教训积淀为通用的运行时治理框架——KubeDL,涵盖分布式训练,模型治理,推理服务等机器学习流水线的各阶段,使工作负载可能高效地运行在 Kubernetes 之上。

1、分布式训练

KubeDL 反对了支流的机器学习分布式训练框架(TensorFlow / PyTorch / MPI / XGBoost / Mars 等),其中 Mars 是阿里巴巴计算平台开源的基于张量的大规模数据计算框架,可能分布式地减速 numpy,pandas 等数据处理框架的效率,帮忙 Mars 作业以更 native 的形式集成进云原生大数据生态中。

咱们将各类训练作业生命周期治理中的独特局部进行形象,成为一层通用的运行时库,被各分布式训练作业控制器复用,同时用户也能够在此基础上疾速扩大出自定义的 workload 控制器并复用现有的能力。借助申明式 API 与 Kubernetes 网络 / 存储模型,KubeDL 可能进行计算资源的申请 / 回收,各 Job Role 之间的服务发现与通信,运行时的 Fail-over 等,算法模型的开发者只需申明好此次训练依赖的 Job Role 及各自的正本数,计算资源 / 异构资源数量等,而后提交工作。另外,咱们针对训练畛域的痛点也做了诸多的个性设计来晋升训练的效率与体验:

  • 不同的训练框架往往蕴含不同的 Job Role,如 TensorFlow 中的 PS/Chief/Worker 和 PyTorch 中的 Master/Worker,Role 与 Role 之间往往隐含着依赖关系,如 Worker 依赖 Master 启动之后能力失常开始计算,错乱的启动程序不仅容易造成资源长时间空转,甚至可能引发 Job 间接失败。KubeDL 设计了基于 DAG(Direct Acyclic Graph)的调度编排控制流,很好地解决了 Role 之间的启动依赖程序,并可能灵便扩大。
  • 大模型的训练时长往往受制于计算节点间的通信效率,RDMA 等高性能网络技术的利用将极大地晋升了数据的传输速度,但这些定制网络往往须要计算节点应用 Hostnetwork 进行相互通信,同时有些时候因为环境限度无奈提供基于 Service 模式的服务发现机制。这就须要作业管理引擎可能反对 Host 网络模式下的服务发现机制,解决好各计算节点的网络端口调配,并与各训练框架的个性联合来解决节点 Fail-over 后的网络连通性,KubeDL 反对了 Host 网络模式下的高性能分布式训练。
  • Gang Scheduling 是分布式训练作业调度场景中的常见需要,组成单个训练作业的一簇 Pod 往往要求同时被调度,防止在集群容量缓和时因作业间的资源竞争呈现活锁,但 Kubernetes 弱小的可扩展性也使得不同的调度器实现了不同的 Gang Scheduling 协定,如 YuniKorn, KubeBatch 等。为了防止与具体调度器实现的耦合,适应不同用户环境的差别,KubeDL 将 Gang Scheduling 的协定实现插件化,按需启用对应的插件即可与调度器相互协作,实现作业的批量调度。
  • Job 是一次性的,但在理论的生产利用中咱们常常会遇到重复训练 / 定时训练的场景,如每日拉取某一时间区间的离线表并进行数据荡涤以及模型的 Re-train,KubeDL 提供了一类独自的工作负载—Cron 来解决定时的训练申请,并反对任意类型的训练作业(如 TFJob,PyTorchJob 等),用户能够提交 cron tab 格调的定时命令及作业模板,并在 Cron 资源的状态中追踪训练作业的历史及以后进行中的作业。

针对海量离线作业元数据须要长时间保留(Job CRD 被删除后元数据即从 etcd 销毁)的诉求,KubeDL 还内置了元数据的长久化,实时监听 Job/Pod/Events 等资源对象的变动,转化成对应的 Databse Schema Object 并长久化到存储后端中。存储后端的设计也是插件化的,用户能够依据本人的线上环境来实现存储插件并在部署时 enable。在 KubeDL 中 Job/Pod 默认反对了 Mysql 的存储协定,以及将 Events 收集到阿里云 SLS 服务中。

同时咱们还提供了管控套件:KubeDL-Dashboard,用户不须要去了解 Kubernetes 的泛滥 API 并在各种 kubectl 命令中挣扎,即可界面化地上手简略易用的机器学习作业。长久化的元数据也能够间接被 Dashboard 生产应用。Dashboard 提供了简略的作业提交、作业管理、事件 / 日志查看、集群资源视图等性能,以极低的学习门槛帮忙机器学习用户上手试验。

2、推理服务规格调优

GPU 虚拟化与分时复用技术的倒退和成熟,让咱们有机会在一块 GPU 上同时运行多个推理服务,显著降低成本。然而如何为推理服务抉择适合的 GPU 资源规格,尤其是不可压缩的显存资源,成为一个要害难题。一方面,频繁的模型迭代让算法工程师得空去准确预计每个模型的资源需要,流量的动态变化也让资源评估变得不精确,因而他们偏向于配置较多的 GPU 资源冗余,在稳定性和效率之间抉择就义后者,造成大量节约;另一方面,因为 Tensorflow 等机器学习框架偏向于占满所有闲暇的显存,站在集群管理者的角度,依据显存的历史用量来预计推理业务的资源需要也十分不精确。在 KubeDL-Morphling 这个组件中咱们实现了推理服务的主动规格调优,通过被动压测的形式,对服务在不同资源配置下进行性能画像,最终给出最合适的容器规格举荐。画像过程高度智能化:为了防止穷举形式的规格点采样,咱们采纳贝叶斯优化作为画像采样算法的外部外围驱动,通过一直细化拟合函数,以低采样率(<20%)的压测开销,给出靠近最优的容器规格举荐后果。

3、模型治理与推理服务

模型是训练的产物,是计算与算法联合后的稀释精髓,通常收集与保护模型的形式是托管在云存储上,通过组织文件系统的形式来实现对立治理。这样的治理形式依赖于严格的流程标准与权限管制,没有从零碎层面实现模型治理的不可变,而容器镜像的诞生解决的就是 RootFS 的构建 - 散发 - 不可变等问题,KubeDL 将两者进行联合,实现了基于镜像的模型治理。训练胜利完结后,通过 Job Spec 中指定的 ModelVersion 会主动触发模型镜像的构建。用户能够在 ModelVersion.Spec 中约定模型的存储门路,指标的镜像 Registry 等根本信息,将每次的训练输入 Push 到对应的镜像仓库。

同时镜像作为训练的输入,以及推理服务的输出,很好地串联起了两个阶段,也借此实现了分布式训练 -> 模型构建与治理 -> 推理服务部署的残缺机器学习流水线。KubeDL 提供了 Inference 资源对象提供推理服务的部署与运行时管制,一个残缺的 Inference 服务能够由单个或多个 Predictor 组成,每个 Predictor 对应前序训练输入的模型,模型会被主动拉取并挂载到主容器 Volume 中。当多个不同模型版本的 Predictor 并存时,能够依据调配的权重进行流量的散发与管制,达到 A/B Test 的对照试验成果,后续咱们还会在 Batching 批量推理和 AutoScale 上针对推理服务场景做更多的摸索。

KubeDL 分布式训练在私有云上的实际

  • PAI-DLC

随着云计算的深入人心以及越来越多的业务都用云原生的形式进行,阿里云计算平台 PAI 机器学习团队推出了 DLC(Deep Learning Cloud)这一深度学习平台产品。DLC 采纳全新的云原生架构,底层采纳 Kubernetes 作为资源底座反对,而训练局部全面采纳 KubeDL 进行治理,是 KubeDL 在深度学习云计算场景中的大规模实际。

DLC 在阿里团体外部内宽泛撑持了泛滥的业务,包含淘系安全部达摩院的图像视频、自然语言、语音、多模态了解、主动驾驶等泛滥业务部门的深度学习计算需要。在服务于深度学习驱动的前沿业务生产中,PAI 团队在框架和平台建设方面积攒了许多的教训,积淀了兼容社区(eg,TensorFlow/PyTorch)并且具备显明特色的大规模工业界实际过的框架平台能力,如万亿规模参数的 M6 模型的训练、工业级图神经网络系统 Graph-Learn、极致资源管理和复用能力等等。

现在,PAI-DLC 的能力也在全面拥抱私有云,为开发者和企业提供的云原生一站式的深度学习训练平台,一个灵便、稳固、易用和高性能的机器学习训练环境,以及全面反对反对多种社区和 PAI 深度优化的算法框架,高性能且稳固的运行超大规模分布式深度学习工作,为开发者和企业降本增效。

私有云的 DLC 作为阿里巴巴团体机器学习平台最佳实际的透出,在产品细节、框架优化、平台服务等方面都汲取了工程实际中的贵重的教训。除此之外,DLC 产品在设计之初就充沛考量了私有云场景中的独特属性,提供了竞价实例、主动 Fail-Over、弹性扩缩等性能,为客户致力升高 AI 算力老本。

进一步的,DLC 也与 PAI 的其余私有云产品相结合,比如说服务于算法工程师建模的 DSW、服务于企业级 AI 全流程的、自动化的 AutoML、在线推理服务 EAS 等,打造全流程的 AI 标杆性产品。

版权申明: 本文内容由阿里云实名注册用户自发奉献,版权归原作者所有,阿里云开发者社区不领有其著作权,亦不承当相应法律责任。具体规定请查看《阿里云开发者社区用户服务协定》和《阿里云开发者社区知识产权爱护指引》。如果您发现本社区中有涉嫌剽窃的内容,填写侵权投诉表单进行举报,一经查实,本社区将立即删除涉嫌侵权内容。

正文完
 0