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

本文涉及的产品
云原生大数据计算服务MaxCompute,500CU*H 100GB 3个月
函数计算FC,每月15万CU 3个月
云原生大数据计算服务 MaxCompute,5000CU*H 100GB 3个月
简介: 根据在[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倍成本下降。

相关实践学习
通过Ingress进行灰度发布
本场景您将运行一个简单的应用,部署一个新的应用用于新的发布,并通过Ingress能力实现灰度发布。
容器应用与集群管理
欢迎来到《容器应用与集群管理》课程,本课程是“云原生容器Clouder认证“系列中的第二阶段。课程将向您介绍与容器集群相关的概念和技术,这些概念和技术可以帮助您了解阿里云容器服务ACK/ACK Serverless的使用。同时,本课程也会向您介绍可以采取的工具、方法和可操作步骤,以帮助您了解如何基于容器服务ACK Serverless构建和管理企业级应用。 学习完本课程后,您将能够: 掌握容器集群、容器编排的基本概念 掌握Kubernetes的基础概念及核心思想 掌握阿里云容器服务ACK/ACK Serverless概念及使用方法 基于容器服务ACK Serverless搭建和管理企业级网站应用
目录
相关文章
|
3月前
|
SQL 分布式计算 运维
如何对付一个耗时6h+的ODPS任务:慢节点优化实践
本文描述了大数据处理任务(特别是涉及大量JOIN操作的任务)中遇到的性能瓶颈问题及其优化过程。
|
2月前
|
机器学习/深度学习 算法 搜索推荐
从理论到实践,Python算法复杂度分析一站式教程,助你轻松驾驭大数据挑战!
【10月更文挑战第4天】在大数据时代,算法效率至关重要。本文从理论入手,介绍时间复杂度和空间复杂度两个核心概念,并通过冒泡排序和快速排序的Python实现详细分析其复杂度。冒泡排序的时间复杂度为O(n^2),空间复杂度为O(1);快速排序平均时间复杂度为O(n log n),空间复杂度为O(log n)。文章还介绍了算法选择、分而治之及空间换时间等优化策略,帮助你在大数据挑战中游刃有余。
63 4
|
2月前
|
人工智能 Kubernetes 监控
Kubernetes 故障诊断 AI 助手
【10月更文挑战第6天】
|
22天前
|
存储 人工智能 分布式计算
大数据& AI 产品月刊【2024年10月】
大数据& AI 产品技术月刊【2024年10月】,涵盖本月技术速递、产品和功能发布、市场和客户应用实践等内容,帮助您快速了解阿里云大数据& AI 方面最新动态。
|
27天前
|
边缘计算 人工智能 搜索推荐
大数据与零售业:精准营销的实践
【10月更文挑战第31天】在信息化社会,大数据技术正成为推动零售业革新的重要驱动力。本文探讨了大数据在零售业中的应用,包括客户细分、个性化推荐、动态定价、营销自动化、预测性分析、忠诚度管理和社交网络洞察等方面,通过实际案例展示了大数据如何帮助商家洞悉消费者行为,优化决策,实现精准营销。同时,文章也讨论了大数据面临的挑战和未来展望。
|
2月前
|
机器学习/深度学习 人工智能 运维
智能运维:大数据与AI的融合之道###
【10月更文挑战第20天】 运维领域正经历一场静悄悄的变革,大数据与人工智能的深度融合正重塑着传统的运维模式。本文探讨了智能运维如何借助大数据分析和机器学习算法,实现从被动响应到主动预防的转变,提升系统稳定性和效率的同时,降低了运维成本。通过实例解析,揭示智能运维在现代IT架构中的核心价值,为读者提供一份关于未来运维趋势的深刻洞察。 ###
87 10
|
2月前
|
人工智能 分布式计算 大数据
大数据&AI产品月刊【2024年9月】
大数据& AI 产品技术月刊【2024年9月】,涵盖本月技术速递、2024云栖大会实录、产品和功能发布、市场和客户应用实践等内容,帮助您快速了解阿里云大数据& AI 方面最新动态。
|
2月前
|
SQL 消息中间件 分布式计算
大数据-143 - ClickHouse 集群 SQL 超详细实践记录!(一)
大数据-143 - ClickHouse 集群 SQL 超详细实践记录!(一)
82 0
|
2月前
|
SQL 大数据
大数据-143 - ClickHouse 集群 SQL 超详细实践记录!(二)
大数据-143 - ClickHouse 集群 SQL 超详细实践记录!(二)
62 0
|
2月前
|
SQL 消息中间件 分布式计算
大数据-130 - Flink CEP 详解 - CEP开发流程 与 案例实践:恶意登录检测实现
大数据-130 - Flink CEP 详解 - CEP开发流程 与 案例实践:恶意登录检测实现
48 0