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倍成本下降。

相关实践学习
深入解析Docker容器化技术
Docker是一个开源的应用容器引擎,让开发者可以打包他们的应用以及依赖包到一个可移植的容器中,然后发布到任何流行的Linux机器上,也可以实现虚拟化,容器是完全使用沙箱机制,相互之间不会有任何接口。Docker是世界领先的软件容器平台。开发人员利用Docker可以消除协作编码时“在我的机器上可正常工作”的问题。运维人员利用Docker可以在隔离容器中并行运行和管理应用,获得更好的计算密度。企业利用Docker可以构建敏捷的软件交付管道,以更快的速度、更高的安全性和可靠的信誉为Linux和Windows Server应用发布新功能。 在本套课程中,我们将全面的讲解Docker技术栈,从环境安装到容器、镜像操作以及生产环境如何部署开发的微服务应用。本课程由黑马程序员提供。 &nbsp; &nbsp; 相关的阿里云产品:容器服务 ACK 容器服务 Kubernetes 版(简称 ACK)提供高性能可伸缩的容器应用管理能力,支持企业级容器化应用的全生命周期管理。整合阿里云虚拟化、存储、网络和安全能力,打造云端最佳容器化应用运行环境。 了解产品详情: https://www.aliyun.com/product/kubernetes
目录
相关文章
|
11月前
|
人工智能 IDE Java
AI Coding实践:CodeFuse + prompt 从系分到代码
在蚂蚁国际信贷业务系统建设过程中,技术团队始终面临双重考验:一方面需应对日益加速的需求迭代周期,满足严苛的代码质量规范与金融安全合规要求;另一方面,跨地域研发团队的协同效率与代码标准统一性,在传统开发模式下逐渐显现瓶颈。为突破效率制约、提升交付质量,我们积极探索人工智能辅助代码生成技术(AI Coding)的应用实践。本文基于蚂蚁国际信贷技术团队近期的实际项目经验,梳理AI辅助开发在金融级系统快速迭代场景中的实施要点并分享阶段性实践心得。
2250 25
AI Coding实践:CodeFuse + prompt 从系分到代码
|
11月前
|
人工智能 自然语言处理 测试技术
从人工到AI驱动:天猫测试全流程自动化变革实践
天猫技术质量团队探索AI在测试全流程的落地应用,覆盖需求解析、用例生成、数据构造、执行验证等核心环节。通过AI+自然语言驱动,实现测试自动化、可溯化与可管理化,在用例生成、数据构造和执行校验中显著提效,推动测试体系从人工迈向AI全流程自动化,提升效率40%以上,用例覆盖超70%,并构建行业级知识资产沉淀平台。
从人工到AI驱动:天猫测试全流程自动化变革实践
|
11月前
|
人工智能 新制造
TsingtaoAI受邀参加宁波AI海曙科创训练营并分享技术落地实践
10月12日至15日,由宁波市海曙区组织部主办的AI海曙科创训练营在宁波成功举办。作为受邀企业代表,TsingtaoAI团队深入参与了多项活动,与政府领导、行业专家及科创企业代表围绕AI技术在制造业、成果转化等领域的实际应用展开交流,用真实案例诠释了“技术扎根产业”的价值逻辑。
251 2
|
11月前
|
数据采集 存储 人工智能
从0到1:天猫AI测试用例生成的实践与突破
本文系统阐述了天猫技术团队在AI赋能测试领域的深度实践与探索,讲述了智能测试用例生成的落地路径。
从0到1:天猫AI测试用例生成的实践与突破
|
人工智能 自然语言处理 前端开发
产品经理也能“开发”需求?淘宝信息流从需求到上线的AI端到端实践
淘宝推荐信息流业务,常年被“需求多、技术栈杂、协作慢”困扰,需求上线周期动辄一周。WaterFlow——一套 AI 驱动的端到端开发新实践,让部分需求两天内上线,甚至产品经理也能“自产自销”需求。短短数月,已落地 30+ 需求、自动生成 5.4 万行代码,大幅提升研发效率。接下来,我们将揭秘它是如何落地并改变协作模式的。
1556 37
产品经理也能“开发”需求?淘宝信息流从需求到上线的AI端到端实践
|
11月前
|
人工智能 安全 开发工具
C3仓库AI代码门禁通用实践:基于Qwen3-Coder+RAG的代码评审
本文介绍基于Qwen3-Coder、RAG与Iflow在C3级代码仓库落地LLM代码评审的实践,实现AI辅助人工评审。通过CI流水线自动触发,结合私域知识库与生产代码同仓管理,已成功拦截数十次高危缺陷,显著提升评审效率与质量,具备向各类代码门禁平台复用推广的价值。(239字)
1878 24
|
11月前
|
人工智能 算法 调度
阿里云ACK托管集群Pro版共享GPU调度操作指南
本文介绍在阿里云ACK托管集群Pro版中,如何通过共享GPU调度实现显存与算力的精细化分配,涵盖前提条件、使用限制、节点池配置及任务部署全流程,提升GPU资源利用率,适用于AI训练与推理场景。
830 1
|
11月前
|
弹性计算 监控 调度
ACK One 注册集群云端节点池升级:IDC 集群一键接入云端 GPU 算力,接入效率提升 80%
ACK One注册集群节点池实现“一键接入”,免去手动编写脚本与GPU驱动安装,支持自动扩缩容与多场景调度,大幅提升K8s集群管理效率。
585 89
|
资源调度 Kubernetes 调度
从单集群到多集群的快速无损转型:ACK One 多集群应用分发
ACK One 的多集群应用分发,可以最小成本地结合您已有的单集群 CD 系统,无需对原先应用资源 YAML 进行修改,即可快速构建成多集群的 CD 系统,并同时获得强大的多集群资源调度和分发的能力。
1181 9

热门文章

最新文章

推荐镜像

更多