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

本文涉及的产品
云原生大数据计算服务 MaxCompute,5000CU*H 100GB 3个月
云原生大数据计算服务MaxCompute,500CU*H 100GB 3个月
函数计算FC,每月15万CU 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搭建和管理企业级网站应用
目录
相关文章
|
4天前
|
机器学习/深度学习 人工智能 自然语言处理
探索AI在文本生成中的应用与挑战自动化测试框架的搭建与实践
【8月更文挑战第27天】本文将深入探讨人工智能(AI)在文本生成领域的应用,包括其技术原理、实际应用案例以及面临的主要挑战。通过分析AI文本生成的工作原理和实际效果,我们将揭示这项技术如何改变内容创作、新闻撰写、对话系统等多个领域。同时,我们也将讨论AI文本生成带来的伦理和质量问题,以及如何平衡创新与风险,确保技术的健康发展。
|
15天前
|
人工智能 PyTorch 算法框架/工具
Xinference实战指南:全面解析LLM大模型部署流程,携手Dify打造高效AI应用实践案例,加速AI项目落地进程
【8月更文挑战第6天】Xinference实战指南:全面解析LLM大模型部署流程,携手Dify打造高效AI应用实践案例,加速AI项目落地进程
Xinference实战指南:全面解析LLM大模型部署流程,携手Dify打造高效AI应用实践案例,加速AI项目落地进程
|
5天前
|
人工智能 分布式计算 数据处理
Big Data for AI实践:面向AI大模型开发和应用的大规模数据处理套件
文叙述的 Big Data for AI 最佳实践,基于阿里云人工智能平台PAI、MaxCompute自研分布式计算框架MaxFrame、Data-Juicer等产品和工具,实现了大模型数据采集、清洗、增强及合成大模型数据的全链路,解决企业级大模型开发应用场景的数据处理难题。
|
10天前
|
人工智能 自然语言处理 搜索推荐
阿里云Elasticsearch AI搜索实践
本文介绍了阿里云 Elasticsearch 在AI 搜索方面的技术实践与探索。
18672 8
|
7天前
|
分布式计算 搜索推荐 物联网
大数据及AI典型场景实践问题之通过KafKa+OTS+MaxCompute完成物联网系统技术重构如何解决
大数据及AI典型场景实践问题之通过KafKa+OTS+MaxCompute完成物联网系统技术重构如何解决
|
7天前
|
人工智能 分布式计算 架构师
大数据及AI典型场景实践问题之基于MaxCompute构建Noxmobi全球化精准营销系统如何解决
大数据及AI典型场景实践问题之基于MaxCompute构建Noxmobi全球化精准营销系统如何解决
|
9天前
|
存储 人工智能 API
阿里云百炼应用实践系列-10分钟在企业微信中集成一个 AI 助手
在阿里云平台上,您只需十分钟,无需任何编码,即可在企业微信上为您的组织集成一个具备大模型能力的AI助手。此助手可24小时响应用户咨询,解答各类问题,尤其擅长处理私域问题,从而成为您企业的专属助手,有效提升用户体验及业务竞争力。
|
14天前
|
机器学习/深度学习 人工智能 负载均衡
【AI大模型】分布式训练:深入探索与实践优化
在人工智能的浩瀚宇宙中,AI大模型以其惊人的性能和广泛的应用前景,正引领着技术创新的浪潮。然而,随着模型参数的指数级增长,传统的单机训练方式已难以满足需求。分布式训练作为应对这一挑战的关键技术,正逐渐成为AI研发中的标配。
87 5
|
15天前
|
机器学习/深度学习 人工智能 算法
AI在医疗影像识别中的应用与实践
本文综述了人工智能在医疗影像分析的应用,涵盖了基础理论、操作流程、关键算法及实践案例。通过探讨卷积神经网络等技术,展示了如何构建医疗影像分析系统并提高诊断精度和效率,为医疗行业的创新发展提供了有力支持。
|
7天前
|
人工智能 分布式计算 大数据
大数据及AI典型场景实践问题之“开发者藏经阁计划”的定义如何解决
大数据及AI典型场景实践问题之“开发者藏经阁计划”的定义如何解决
下一篇
云函数