Kubernetes在AI/大数据领域的 最新进展与大规模实践

本文涉及的产品
简介: 根据在[CNCC 2022开源分布式云原生系统技术发展](https://ccf.org.cn/cncc2022/schedule_d_4075)论坛的演讲整理。![](https://ata2-img.oss-cn-zhangjiakou.aliyuncs.com/neweditor/08cde176-d1d3-49ae-a1f7-cc025d3f06f3.png)在云计算技术快速发展的过

根据在CNCC 2022开源分布式云原生系统技术发展论坛的演讲整理。


在云计算技术快速发展的过程中, Kubernetes 已经成为云原生时代的操作系统。K8s向下屏蔽了底层架构差异性,可以高效调度与编排多样化的异构算力;向上为分布式应用提供了标准化的API。基于阿里云容器平台,我们实现了阿里集团100%业务云原生上云。
我们可以看到,从无状态的微服务应用到AI、大数据应用,越来越多的工作负载开始运行到容器平台之中。在The Data on Kubernetes Community 2022调查报告中,90%的受访者认为Kubernetes已经可以很好支持数据库、大数据分析和AI等有状态应用,其中70%的受访者已经将其运行在生产环境。Gartner 预测到 2023 年,70% AI 任务会通过容器、Serverless 等计算模型构建。Kubernetes 必将成为数字化、智能化应用的云原生平台。


AI/大数据应用的云原生化面临着三个主要的技术挑战:

  1. Kubernetes缺失任务调度能力的支持。AI和大数据类型的计算任务与普通应用不同,任务内部存在关联与依赖;任务调度器需要具备大规模、高并发、低延迟的能力。
  2. 存算分离架构通过资源池化有效降低了计算和存储成本,提升了计算弹性。但是存算分离也带来数据访问延迟的增加,影响了计算效率。
  3. 新一代算力持续涌现。GPU,NPU,DPU,RDMA等加速设备在AI、大数据场景中扮演越来越重要的角色。K8s需要具备更加灵活的异构算力调度能力,帮助上层应用提升资源效率和计算效率。

Kubernetes作为一个分布式集群管理系统,必须要解决AI/大数据任务调度的复杂性。

  1. 对多形态异构资源的支持,今天应用所需的计算资源不只是简单的CPU,内存等,而且包括多样化的加速设备,比如GPU、RDMA等。为了考虑到计算效率的最优化,需要考虑到计算资源之间的拓扑,比如CPU core在numa节点间的布局,GPU设备间NVLink拓扑等。此外随着高性能网络的的发展,GPU池化、内存池化等相继出现,给资源调度带来更多的动态性和复杂性。
  2. 是对多样化的工作负载的支持。从Stateless的Web应用、微服务应用,到有状态的中间件和数据应用,再到AI、大数据、HPC等计算任务类应用。他们对资源申请和使用的方式有不同的需求。
  3. 是是对多维度的业务需求的支持。调度系统在满足应用对资源的需求的同时,也要满足不同的业务需求,比如计算效率,稳定性,利用率、弹性等等。


阿里云团队和K8s 社区展开了很多合作,在Kubernetes架构上实现了原生的批量任务调度元语,完善了Scheduler framework并贡献了关键的调度插件实现,来满足计算类任务应用对资源效率、任务特征与业务需求等的特殊性。

  • 提升资源利用率:比如,通过CoScheduling,当一个任务中所有子任务的资源需求都得到满足时再分配资源,否则不分配任何资源。这样可以避免资源死锁,大任务挤占小任务。
  • 提供多租户配额管理:通过Capacity Scheduling,在保障租户最低资源需求分配的基础上,通过弹性配额共享来提升整体资源利用率。
  • 保障任务公平性:阿里云团队参与并推动K8s社区云原生队列系统Kube-queue的问世,提供了面向作业的优先级排队能力,减少资源竞争,提升了任务公平性和资源效率。


随着深度学习模型复杂度和训练数据量提升,多 GPU 卡分布式训练已经很非常普遍。对于使用梯度下降优化的算法,多 GPU 卡之间需要频繁传输数据,数据通信带宽往往成为限制 GPU 计算性能的瓶颈。
我们也在K8s上实现了GPU 拓扑感知调度功能,当调度器为多卡训练任务选择 GPU 资源时,根据 NVLINK,PCIe Switch,以及 RDMA 网卡等互联链路的拓扑信息,自动选择出能够提供最大通信带宽的 GPU 卡组合,有效提升了计算效率。对ResNet,VGG等典型CV类模型训练有1-3倍加速。

更进一步,我们希望可以利用K8s的编排调度能力,充分利用多种应用负载之间的消峰填谷效应,让工作负载以更稳定、更高效、更低成本的方式去使用资源。这也是大家常说的“混部”能力。
阿里巴巴早在 2016 年就启动了云原生混部技术研发,历经多轮技术架构升级和“双11”锤炼,目前已实现全业务规模超千万核的云原生混部,日常CPU利用率在 50% 左右。
基于阿里集团内部超大规模生产实践经验,阿里云今年开源了云原生混部项目 Koordinator,它在 K8s 之上提供了对编排调度能力的增强。它包含三大核心能力:

  1. 提供了差异化 SLO 保障:在 Kubernetes 之上抽象一套面向 QoS 的资源调度机制,比如延迟敏感型的在线类交易应用,和 Best effort 类型可抢占的Spark计算任务。通过对不同QoS应用的合理调度,可以在保障应用的稳定性的同时,提升资源利用率。
  2. 提供了QoS 感知调度和重调度能力:包括 CPU、GPU 拓扑感知、资源画像、热点打散等精细调度能力,帮助应用优化运行时性能效率,提升稳定性。
  3. 支持任务调度:集成了刚才介绍过的大数据与 AI 相关的任务调度能力,可以在同一集群中对不同类型的工作负载实现统一调度。

Koordinator 项目完全兼容上游标准的 K8s,无需做任何侵入式修改。我们也非常欢迎和期待大家一起参与社区共建。

Koordinator 提供了若干预定义的 QoS 类别,用于区分延迟敏感业务和延迟不敏感业务对运行时资源的差异化需求。Koordinator 通过资源画像算法预测,对高优先级应用已分配但尚未使用的资源,可以超售给低优先级的计算任务,当高优先级应用需要更多资源时,对低优先级任务进行资源抢占和驱逐。这样可以有效提升节点资源的利用率。
这里保障资源超售场景下的应用稳定性是其中最大的挑战。在运行态,Koordinator 节点侧组件结合CPU微架构、OS、容器等多维度的资源隔离、干扰检测与抑制手段,让低优先级的任务对延迟敏感型任务的影响 < 5%。
这里面除了利用操作系统内核 cgroup的能力之外;也针对新一代云原生芯片进行优化。比如,通过CPU微架构的拓扑感知,优化进程排布,提升缓存命中率,降低跨NUMA内存访问等。在Intel芯片之上,我们可以通过引入RDT, HWDRC等技术可以根据用户应用的QoS,动态调整L3缓存带宽,降低由于内存带宽争抢导致的性能波动。

此外,在K8s集群中的工作负载是持续变化,弹性伸缩的。随着时间的推移,集群中的节点资源利用率状态可能会失去平衡,出现负载热点,导致该节点上应用响应延迟大幅增长。
一方面, Koordinator 提供了负载感知的调度能力,可以根据资源分配率和实际资源利用情况,在调度打分阶段进行综合决策,避免将负载调度到热点的节点上导致性能受损或雪崩。
同时,Koordinator 在社区的经验基础上,为用户提供了可扩展的、负载感知的重调度框架,可以保障节点间负载均衡和应用执行效率的优化。
下图显示了经过 Koordinator QoS感知调度和重调度,让集群中节点资源实际利用率相对均衡,消除了热点。

AI和大数据应用是典型的数据密集型应用,他们在云原生化过程中存在三个主要挑战

  • 第一是异构数据源带来的多样性挑战:企业中不同应用所依赖的存储实现各不相同,有HDFS,NAS, S3/OSS等等。随着业务场景的发展,经常需要联合处理来自不同存储系统的数据,这样带来了异构数据源访问的复杂性。
  • 第二是存算分离架构导致的I/O延迟和吞吐的挑战: 计算存储分离架构可以大大降低存储成本,并且提升计算弹性。但数据访问延时的增加与带宽的限制,会导致计算性能的下降,降低CPU/GPU等资源的实际利用率。
  • 第三是跨作业数据共享的挑战:通过对AI模型训练集群的观察,我们发现很多训练任务使用同样的数据集。同一作业流水线上的不同步骤也可能需要访问相同的数据。但是由于这些数据访问特征无法被调度系统感知,导致数据被反复拉取,不但降低了整体计算效率,也加剧了对I/O资源的争抢。


为了能够更好的解决数据密集型应用在云原生环境上的问题,我们对“计算任务使用数据的过程”进行抽象,提出了弹性数据集Dataset的概念,并作为“first class citizen”在Kubernetes中实现。
数据集Dataset,可以实现对异构数据源的统一管理和统一访问抽象
系统可以根据数据集的访问模式,优化数据缓存的生命周期策略,比如通过自动化缓存扩容和智能预取来实现数据加速;
调度系统可以自动感知多任务之间的数据集关联,通过数据缓存共享来优化作业调度。

Fluid是南京大学、阿里云容器服务团队和Alluxio联合发起的开源项目,已经进入CNCF的 Sandbox进行孵化。此外,来自中国电信,SAP,百度,腾讯的伙伴都在Fluid社区中积极贡献。Fluid在架构上有几个特点:

  • 零侵入 – 无缝融合Kubernetes生态
  • 可扩展 – 支持多种缓存引擎,比如阿里云JindoFS,腾讯云 GooseFS,开源的Alluxio, JuiceFS等等
  • 高弹性 – 除了支持经典的K8s之外,对Serverless容器也进行支持,支持缓存I/O吞吐的水平扩展。

这个领域也是非常新的一个领域,希望大家能够一起在社区参与创新。

在数据密集型应用,通过Fluid可以有效实现计算加速。
比如在Resnet50图像分类模型训练中。如果直接使用OSSFS对对象存储进行数据访问,在多机训练环境中会受到OSS bucket带宽的限制,训练性能出现衰减。利用 Fluid缓存加速,可以对分布式模型训练实现线性的横向扩展能力。与原方案相比,在16节点128卡环境下,性能提升80%。

越来越多的AI模型推理和训练任务运行在Serverless K8s平台上,可以充分利用云的弹性算力。然而,分布式存储的 I/O 带宽会限制规模化Serverless应用对于数据访问的需求。
针对上述挑战,Fluid在Serverless容器中支持数据缓存加速,还可以根据算力规模按需扩容分布式缓存,让I/O吞吐随着算力横向扩展,从而有效优化计算效率,降低计算成本。
在测试场景下,我们并行扩容200个阿里云弹性容器实例这样的Serverless容器来执行AI推理任务,每个应用实例从JuiceFS加载一个约10GB的文件。实验结果表明,通过Fluid的缓存的方案可以实现10倍成本下降。

相关实践学习
容器服务Serverless版ACK Serverless 快速入门:在线魔方应用部署和监控
通过本实验,您将了解到容器服务Serverless版ACK Serverless 的基本产品能力,即可以实现快速部署一个在线魔方应用,并借助阿里云容器服务成熟的产品生态,实现在线应用的企业级监控,提升应用稳定性。
云原生实践公开课
课程大纲 开篇:如何学习并实践云原生技术 基础篇: 5 步上手 Kubernetes 进阶篇:生产环境下的 K8s 实践 相关的阿里云产品:容器服务&nbsp;ACK 容器服务&nbsp;Kubernetes&nbsp;版(简称&nbsp;ACK)提供高性能可伸缩的容器应用管理能力,支持企业级容器化应用的全生命周期管理。整合阿里云虚拟化、存储、网络和安全能力,打造云端最佳容器化应用运行环境。 了解产品详情:&nbsp;https://www.aliyun.com/product/kubernetes
目录
相关文章
|
1天前
|
数据采集 监控 算法
利用大数据和API优化电商决策:商品性能分析实践
在数据驱动的电子商务时代,大数据分析已成为企业提升运营效率、增强市场竞争力的关键工具。通过精确收集和分析商品性能数据,企业能够洞察市场趋势,实现库存优化,提升顾客满意度,并显著增加销售额。本文将探讨如何通过API收集商品数据,并将这些数据转化为对电商平台有价值的洞察。
|
12天前
|
人工智能 NoSQL Serverless
基于函数计算3.0 Stable Diffusion Serverless API 的AI艺术字头像生成应用搭建与实践的报告
本文主要分享了自己基于函数计算3.0 Stable Diffusion Serverless API 的AI艺术字头像生成应用搭建与实践的报告
52 6
基于函数计算3.0 Stable Diffusion Serverless API 的AI艺术字头像生成应用搭建与实践的报告
|
18天前
|
人工智能 分布式计算 大数据
重磅!阿里云在海外市场推出系列AI大数据产品
重磅!阿里云在海外市场推出系列AI大数据产品
31 1
|
20天前
|
人工智能 分布式计算 DataWorks
大数据&AI产品月刊【2024年1月】
大数据&AI产品技术月刊【2024年1月】,涵盖本月技术速递、产品和功能发布、市场和客户应用实践等内容,帮助您快速了解阿里云大数据&AI方面最新动态。
|
20天前
|
机器学习/深度学习 人工智能 自然语言处理
【AI 现况分析】AI 如何提高开发效率,在生产中的实践
【1月更文挑战第27天】【AI 现况分析】AI 如何提高开发效率,在生产中的实践
|
22天前
|
人工智能 搜索推荐 开发者
AI编程助手 Amazon CodeWhisperer 全面解析与实践
AI编程助手 Amazon CodeWhisperer 全面解析与实践
10 0
AI编程助手 Amazon CodeWhisperer 全面解析与实践
|
28天前
|
人工智能 大数据 Anolis
龙蜥多款镜像登陆阿里云 ACR 制品中心 AI /大数据镜像专场推荐榜
龙蜥社区作为 ACR 制品中心的重要合作伙伴,持续贡献丰富、安全、便捷、稳定的容器镜像,所贡献的镜像连续上榜 ACR 制品中心!
|
1月前
|
人工智能 运维 Kubernetes
期待已久!阿里云容器服务 ACK AI 助手正式上线
期待已久!阿里云容器服务 ACK AI 助手正式上线
|
1月前
|
人工智能 自然语言处理 大数据
AI大数据智能导诊系统源码 Springboot框架
智能导诊系统是在医院中使用的引导患者自助就诊挂号,在就诊的过程中有许多患者不知道需要挂什么号,要看什么病,通过智慧导诊系统,可输入自身疾病的症状表现,或选择身体部位,再经由智能导诊系统多维度计算,AI智能引擎分析、准确推荐科室,引导患者挂号就诊,实现科学就诊,不用担心挂错号。
32 0
|
1月前
|
数据可视化 大数据 数据挖掘
瓴羊荣获2023虎啸奖“年度十大AI&大数据服务公司”“数智营销案例铜奖”双重大奖
瓴羊荣获2023虎啸奖“年度十大AI&大数据服务公司”“数智营销案例铜奖”双重大奖