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
目录
相关文章
|
存储 数据采集 搜索推荐
Java 大视界 -- Java 大数据在智慧文旅旅游景区游客情感分析与服务改进中的应用实践(226)
本篇文章探讨了 Java 大数据在智慧文旅景区中的创新应用,重点分析了如何通过数据采集、情感分析与可视化等技术,挖掘游客情感需求,进而优化景区服务。文章结合实际案例,展示了 Java 在数据处理与智能推荐等方面的强大能力,为文旅行业的智慧化升级提供了可行路径。
Java 大视界 -- Java 大数据在智慧文旅旅游景区游客情感分析与服务改进中的应用实践(226)
|
数据采集 SQL 搜索推荐
大数据之路:阿里巴巴大数据实践——OneData数据中台体系
OneData是阿里巴巴内部实现数据整合与管理的方法体系与工具,旨在解决指标混乱、数据孤岛等问题。通过规范定义、模型设计与工具平台三层架构,实现数据标准化与高效开发,提升数据质量与应用效率。
4075 0
大数据之路:阿里巴巴大数据实践——OneData数据中台体系
|
数据采集 存储 大数据
大数据之路:阿里巴巴大数据实践——日志采集与数据同步
本资料全面介绍大数据处理技术架构,涵盖数据采集、同步、计算与服务全流程。内容包括Web/App端日志采集方案、数据同步工具DataX与TimeTunnel、离线与实时数仓架构、OneData方法论及元数据管理等核心内容,适用于构建企业级数据平台体系。
1353 1
|
数据采集 分布式计算 DataWorks
ODPS在某公共数据项目上的实践
本项目基于公共数据定义及ODPS与DataWorks技术,构建一体化智能化数据平台,涵盖数据目录、归集、治理、共享与开放六大目标。通过十大子系统实现全流程管理,强化数据安全与流通,提升业务效率与决策能力,助力数字化改革。
487 4
|
分布式计算 监控 大数据
大数据之路:阿里巴巴大数据实践——离线数据开发
该平台提供一站式大数据开发与治理服务,涵盖数据存储计算、任务调度、质量监控及安全管控。基于MaxCompute实现海量数据处理,结合D2与DataWorks进行任务开发与运维,通过SQLSCAN与DQC保障代码质量与数据准确性。任务调度系统支持定时、周期、手动运行等多种模式,确保高效稳定的数据生产流程。
623 0
大数据之路:阿里巴巴大数据实践——离线数据开发
|
分布式计算 DataWorks 数据处理
在数据浪潮中前行:记录一次我与ODPS的实践、思考与展望
本文详细介绍了在 AI 时代背景下,如何利用阿里云 ODPS 平台(尤其是 MaxCompute)进行分布式多模态数据处理的实践过程。内容涵盖技术架构解析、完整操作流程、实际部署步骤以及未来发展方向,同时结合 CSDN 博文深入探讨了多模态数据处理的技术挑战与创新路径,为企业提供高效、低成本的大规模数据处理方案。
586 3
|
机器学习/深度学习 存储 分布式计算
ODPS驱动电商仓储革命:动态需求预测系统的落地实践
本方案基于ODPS构建“预测-仿真-决策”闭环系统,解决传统仓储中滞销积压与爆款缺货问题。通过动态特征工程、时空融合模型与库存仿真引擎,实现库存周转天数下降42%,缺货率下降65%,年损减少5000万以上,显著提升运营效率与GMV。
1228 1
|
存储 SQL 分布式计算
大数据之路:阿里巴巴大数据实践——元数据与计算管理
本内容系统讲解了大数据体系中的元数据管理与计算优化。元数据部分涵盖技术、业务与管理元数据的分类及平台工具,并介绍血缘捕获、智能推荐与冷热分级等技术创新。元数据应用于数据标签、门户管理与建模分析。计算管理方面,深入探讨资源调度失衡、数据倾斜、小文件及长尾任务等问题,提出HBO与CBO优化策略及任务治理方案,全面提升资源利用率与任务执行效率。
890 0
|
SQL 人工智能 分布式计算
在数据浪潮中前行:我与ODPS的实践、思考与展望
在数据驱动决策的时代,企业如何高效处理海量数据成为数字化转型关键。本文结合作者实践,深入解析阿里云自研大数据平台 ODPS 的技术优势与应用场景,涵盖 MaxCompute、DataWorks、Hologres 等核心产品,分享从数据治理到实时分析的落地经验,并展望其在 AI 与向量数据时代的发展前景。
633 70
|
11月前
|
人工智能 Cloud Native 算法
拔俗云原生 AI 临床大数据平台:赋能医学科研的开发者实践
AI临床大数据科研平台依托阿里云、腾讯云,打通医疗数据孤岛,提供从数据治理到模型落地的全链路支持。通过联邦学习、弹性算力与安全合规技术,实现跨机构协作与高效训练,助力开发者提升科研效率,推动医学AI创新落地。(238字)
694 7

热门文章

最新文章

推荐镜像

更多