KubeDL 加入 CNCF Sandbox,加速 AI 产业云原生化

简介: 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 算法的研发外还需要大量基础架构层面的系统支持,包括数据收集和清理、分布式训练引擎、资源调度与编排、模型管理,推理服务调优,可观测等。如以下经典图例所展示,众多系统组件的协同组成了完整的机器学习流水线。

kubeDL.png

与此同时,以 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 之上。

2.png

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 提供了简单的作业提交、作业管理、事件/日志查看、集群资源视图等功能,以极低的学习门槛帮助机器学习用户上手实验。

3.png

2、推理服务规格调优

4.png

GPU 虚拟化与分时复用技术的发展和成熟,让我们有机会在一块 GPU 上同时运行多个推理服务,显著降低成本。然而如何为推理服务选择合适的 GPU 资源规格,尤其是不可压缩的显存资源,成为一个关键难题。一方面,频繁的模型迭代让算法工程师无暇去精确估计每个模型的资源需求,流量的动态变化也让资源评估变得不准确,因此他们倾向于配置较多的 GPU 资源冗余,在稳定性和效率之间选择牺牲后者,造成大量浪费;另一方面,由于 Tensorflow 等机器学习框架倾向于占满所有空闲的显存,站在集群管理者的角度,根据显存的历史用量来估计推理业务的资源需求也非常不准确。在 KubeDL-Morphling 这个组件中我们实现了推理服务的自动规格调优,通过主动压测的方式,对服务在不同资源配置下进行性能画像,最终给出最合适的容器规格推荐。画像过程高度智能化:为了避免穷举方式的规格点采样,我们采用贝叶斯优化作为画像采样算法的内部核心驱动,通过不断细化拟合函数,以低采样率(<20%)的压测开销,给出接近最优的容器规格推荐结果。

3、模型管理与推理服务

5.png

模型是训练的产物,是计算与算法结合后的浓缩精华,通常收集与维护模型的方式是托管在云存储上,通过组织文件系统的方式来实现统一管理。这样的管理方式依赖于严格的流程规范与权限控制,没有从系统层面实现模型管理的不可变,而容器镜像的诞生解决的就是 RootFS 的构建-分发-不可变等问题,KubeDL 将两者进行结合,实现了基于镜像的模型管理。训练成功结束后,通过 Job Spec 中指定的 ModelVersion 会自动触发模型镜像的构建。用户可以在 ModelVersion.Spec 中约定模型的存储路径,目标的镜像 Registry 等基本信息,将每次的训练输出 Push 到对应的镜像仓库。

6.png

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

KubeDL 分布式训练在公有云上的实践

  • PAI-DLC

7.png

随着云计算的深入人心以及越来越多的业务都用云原生的方式进行,阿里云计算平台 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 标杆性产品。

原文链接
本文为阿里云原创内容,未经允许不得转载。 

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/512646.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

预登录握手失败_英雄联盟手游登录问题汇总

1、出现“无法安装完成”的情况已经获取了资格&#xff0c;但出现“无法安装完成”的情况&#xff0c;譬如谷歌商店的下载界面一直闪退、下载没进度、卡在安装中、卡在等待中怎么办?可前往第三方下载软件&#xff0c;(推荐介绍GamesToday)下载游戏。2、提示&#xff1a;目前还…

云云协同解决方案全景图发布 华为云助力科技企业云上创新

12月29日&#xff0c;以“云云协同 共创云上新价值”为主题的华为云&华为终端云服务创新峰会2022在京圆满召开。华为云与产业专家和企业代表们共同探讨了在产业数字化机遇与挑战并存的新形势下&#xff0c;如何推动产业升级&#xff0c;共创新价值。 会上&#xff0c;面向科…

解密万亿参数M6模型预训练背后的分布式框架Whale

简介&#xff1a; 最近&#xff0c;阿里云PAI团队和达摩院智能计算实验室一起发布“低碳版”巨模型M6&#xff0c;大幅降低万亿参数超大模型训练能耗。借助我们自研的Whale框架仅使用480卡GPU&#xff0c;即训练出了规模达人类神经元10倍的万亿参数多模态大模型M6&#xff0c;与…

居然之家:核心业务系统全面上云,采用PolarDB替代传统商业数据库

简介&#xff1a; 国内家居零售龙头企业居然之家完成7大核心业务系统全面上云工作&#xff0c;并实现ERP等核心业务系统从传统商业数据库向阿里云PolarDB云数据库的替换&#xff0c;助力业务系统整体处理能力提升50%以上&#xff0c;弹性能力提升3倍以上&#xff0c;大幅提升应…

c oracle实体模型,ADO.NET实体数据模型详细介绍

OleDbConnection&#xff0c;OracleConnection 或者SqlConnection这种连接&#xff0c;直接执行sql语句。现在的连接方式执行sql语句有了很大的不同&#xff0c;下面先看看简单的单表的增删改查操作&#xff0c;然后再看多表的关联查询&#xff0c;带参数查询等。一、ADO.NET E…

面向工业场景,如何实现绿色智能?

从瓦特的蒸汽机开始轰鸣&#xff0c;到爱迪生的电灯照亮黑暗&#xff0c;从埃尼阿克把0和1变成通用的语言&#xff0c;再到人工智能的无处不在。一次工业革命&#xff0c;会带来一次社会的演进&#xff0c;而每一次技术升级的背后&#xff0c;产业升级也几乎是必然。但产业发展…

云原生,开发者的黄金时代

简介&#xff1a; 如果说云是一种信仰&#xff0c;那么云原生就是一种态度&#xff0c;时代呼唤人人都应成为云原生开发者。 作者 | 丁宇&#xff08;叔同&#xff09;&#xff0c;阿里巴巴研究员&#xff0c;阿里云云原生应用平台负责人 对开发者而言&#xff0c;这是一个最…

如何玩转 WebGL 并行计算

简介&#xff1a; 如今在 Web 端使用 WebGL 进行高性能计算已有不少实践&#xff0c;例如在端智能领域中的 tensorflow.js&#xff0c;再比如可视化领域中的 Stardust.js。 作者 | 沧东 来源 | 阿里技术公众号 如今在 Web 端使用 WebGL 进行高性能计算已有不少实践&#xff0c…

数字孪生+交通,到底有啥用?

作者 | 小枣君来源 | 鲜枣课堂这些年来&#xff0c;信息技术的发展有了明显变化。以云计算、大数据、人工智能为代表的算力技术演进&#xff0c;以及以全光网络、4G/5G、Wi-Fi 6为代表的联接力技术飞跃&#xff0c;使得人们对数字技术提出了更高的期望。人们希望在信息化的基础…

万物智联时代的终端智能「管家」 重磅升级:混合云IoT一体机

简介&#xff1a; 「混合云IoT一体机」边缘部署、开箱即用、安全稳定、智管易用&#xff0c;通过定制软件和硬件相结合&#xff0c;预先定制、集成、测试和优化&#xff0c;实现快速部署和远程运维&#xff0c;并提升后续系统可用性和运维效率&#xff0c;是万物互联时代企业数…

今天来聊聊 Redis 的主从复制

作者 | 阿Q来源 | 阿Q说代码今天我们就从配置文件、设计原理、面试真题三个方面来聊一聊 Redis 的主从复制。在 Redis 复制的基础上&#xff0c;使用和配置主从复制非常简单&#xff0c;能使得从 Redis 服务器&#xff08;下文称 replica&#xff09;能精确的复制主 Redis 服务…

基于英特尔® 优化分析包(OAP)的 Spark 性能优化方案

简介&#xff1a; Spark SQL 作为 Spark 用来处理结构化数据的一个基本模块&#xff0c;已经成为多数企业构建大数据应用的重要选择。但是&#xff0c;在大规模连接&#xff08;Join&#xff09;、聚合&#xff08;Aggregate&#xff09;等工作负载下&#xff0c;Spark 性能会面…

表格长度_知道你的成绩单是怎么打印的吗?超长Excel表格1页打印,拯救A4纸

中小学的成绩单&#xff0c;红色的一张榜真实的魔鬼&#xff01;每次都得瞄半小时才找得到自己的全部科目成绩&#xff0c;不知道是不是为了节省A4纸~到了大学我才知道A4纸的珍贵&#xff0c;字小算什么&#xff0c;打印论文恨不得双面打印。要是能八号字打印更好了~到了工作的…

苹果电脑上使用linux环境变量,mac系统下修改环境变量

苹果电脑使用率越来越高&#xff0c;在mac系统下研发&#xff0c;性能要比在windows下快不少&#xff0c;既然要开发&#xff0c;免不了要配置环境变量.下面是学习啦小编收集整理的mac系统下修改环境变量&#xff0c;希望对大家有帮助~~mac系统下修改环境变量的方法工具/原料os…

提升代码质量的方法:领域模型、设计原则、设计模式

简介&#xff1a; 我们可以列举出非常多质量差的代码的表现现象&#xff0c;其中最影响代码质量的两个表现是命名名不副实、逻辑可扩展性差&#xff0c;当一个新人阅读代码时&#xff0c;有时发现方法命名与实际逻辑对不上&#xff0c;这就让人感到非常疑惑&#xff0c;这种现象…

SphereEx 完成近千万美元 Pre-A 轮融资,连接企业数据与应用,构建新一代数据库生态引擎

2022年1月4日&#xff0c;创新型数据库基础软件提供商 SphereEx 宣布完成近千万美元 Pre-A 轮融资&#xff0c;本轮融资由嘉御资本领投&#xff0c;红杉中国种子基金、初心资本、指数创投跟投。指数资本担任独家财务顾问。这是继 2021 年 5 月份以来&#xff0c;SphereEx 完成的…

Javascript 机器学习的四个层次

简介&#xff1a; Atwood定律说&#xff0c;凡是可以用Javascript实现的应用&#xff0c;最终都会用Javascript实现掉。作为最热门的机器学习领域&#xff0c;服务端是Python的主场&#xff0c;但是到了手机端呢&#xff1f;Android和iOS里默认都没有Python。但是有浏览器的地方…

运维监控再添新品,F5联合智维数据推出应用质量主动拨测解决方案

一直以来&#xff0c;业务的稳定性和客户体验是企业各个部门都关注的重点&#xff0c;也是企业数字化转型的重要支撑。但在实际的运维环境中&#xff0c;如果只从服务端的视角进行监控&#xff0c;往往会出现数据中心内部监控体系显示设备状态正常&#xff0c;但却收到了客户端…

排查指南 | 两个案例学会从埋点排查 iOS 离线包

简介&#xff1a; 首次打开离线包白屏以及报错“-1009”等该如何处理呢&#xff1f; 离线包原理 以一次启动离线包的流程为例&#xff0c;离线包的加载流程分为两种场景&#xff0c;第一种是离线包下载好的场景&#xff0c;流程如图1所示&#xff0c;第二种是离线包没下载好的…

如何设计可靠的灰度方案

简介&#xff1a; 一个较大的业务或系统改动&#xff0c;往往会影响整个产品的用户体验或操作流程。为了控制影响面&#xff0c;可以选取一批特定用户、流程、单据等&#xff0c;只允许这一部分用户或数据按照变更后的新逻辑在系统中流转&#xff0c;而另一部分用户仍然执行变更…