本文整理自张凯在2024云栖大会的演讲
引言
2018年北美西雅图KubeCon上,阿里云容器服务团队为Kubernetes社区分享了业界第一套开源的GPU容器共享调度方案。从那以后,容器服务和GPU集群调度、深度学习、AI训练推理、大模型,这些热点技术走的越来越近。
2021年,容器服务开始在CNCF社区推广云原生AI的概念和参考架构,参与建设Kubeflow云原生机器学习开源社区,推动Kubernetes调度器框架支持batch任务调度,创建Kube-queue任务队列,和Fluid数据集编排加速等开源项目。
2023年,在CNCF社区发表Cloud Native AI白皮书之前,容器服务ACK云原生AI套件产品已商业化上线。同年云栖大会容器场,我们分享了容器产品在云原生AI领域的关键技术。通过支持PAI灵骏产品和客户的AIGC/LLM应用,容器进入到AI智算和大模型领域。
2024年云栖大会,我们总结过往支持AI智算基础底座的实践经验、发现与思考,给出《容器服务在AI智算场景的创新与实践》的演讲。不仅希望将所做所想与客户和社区分享,也期待引出更多云原生AI领域的交流和共建。
TL;DR
阿里云容器服务,聚焦智算和大模型场景需求,在云原生AI系统分层架构中,提供若干优化,以增强Kubernetes支持AI负载的稳定性、弹性、效率和开放性。主要工作包括:
1. 增强GPU的可观测性,实时Profiling和故障自愈能力;
2. AI任务在多集群、跨地域GPU资源池上统一调度,缓解GPU资源紧缺问题;
3. 优化vLLM,Kserve等开源大模型推理引擎在容器部署和管理实践;
4. 支持灵活的弹性伸缩策略,降低大模型推理冷启动延时,优化AI推理服务的性能和成本;
5. 集成Ray,Slurm等更多分布式计算和任务调度系统,优秀的LLM应用架构方案,比如Dify,Flowise,FastGPT等RAG方案,以及Nvidia NIM大模型推理加速方案等,优化它们与阿里云服务的集成方案,为客户的云原生AI系统提供与社区更广更深的连接。
容器服务支撑AI智算基础底座
经过10年发展,Kubernetes容器技术已经成为管理业务应用和微服务实际意义上的基础技术底座。人们常将Kubernetes类比为云时代的分布式操作系统。
在AI时代,Kubernetes继续快速演进,拓展出了新的云原生AI领域。用户可以在Kubernetes集群中管理调度GPU、NPU、RDMA等高性能异构资源,以容器化方式开发、运行AI、大数据任务,部署AI推理服务。
阿里云容器服务,通过托管Kubernetes集群和一系列面向云原生AI领域的创新能力扩展,构筑起云原生AI基础底座,支撑用户的AI智算生产系统。
多年来,容器服务ACK支持了大量客户的AI大数据负载和GPU集群调度的需求,我们将生产实践经验沉淀为ACK云原生AI套件产品,并在2023年正式商业化上线。
云原生AI套件兼容标准Kubernetes,支持ACK Pro,Edge,One,灵骏等各种集群类型,以及全新的ACS容器计算服务。已经在自动驾驶、AI for science、互联网、金融、大模型服务等众多领域客户生产落地。
同时,容器服务也在业界首先提出了云原生AI系统分层架构。面向不同角色,提供了从底层异构资源统一管理,任务编排调度,AI框架支持,到AI任务生命周期管理和性能优化,再通过标准API,与广泛的开源AI社区集成。
希望通过云原生AI套件,为AI/ML客户与社区,提供一整套工程效率高、成本低,可定制化组装的端到端解决方案。帮助用户的Kubernetes集群,30分钟构建起云原生AI平台的基础底座。
云原生AI套件及ACK产品帮助文档:
https://help.aliyun.com/zh/ack/cloud-native-ai-suite/
https://help.aliyun.com/zh/ack/ack-managed-and-ack-dedicated/product-overview/what-is-ack
聚焦大模型场景优化
回顾过去一年,大语言模型和AIGC领域的跨越式发展,极大推动了AI分布式训练和推理技术,以及大规模GPU智算集群调度管理技术的快速演进。
在这样的背景下,ACK云原生AI套件聚焦大模型场景,提供了一系列基础能力优化和创新实践。
大模型给底层基础服务带来了非常多挑战和需求,比如大规模GPU资源需求挑战,集群稳定性挑战,任务弹性策略和性能优化挑战,以及快速发展的模型和计算框架生态集成的需求。
云原生AI套件聚焦这些需求,在分层架构中逐层优化:
重点增强GPU的可观测性和故障自愈能力;
实现AI任务在多集群跨地域GPU资源池上统一调度,解决资源紧缺的问题;
内置基于vLLM,Kserve等开源大模型推理引擎的最佳实践;
通过更灵活的弹性伸缩策略,优化AI推理服务的性能和成本;
集成了Ray,Slurm等更多分布式计算和任务调度系统,也集成了众多优秀的LLM应用架构方案,比如Dify,Flowise等RAG方案,以及Nvidia NIM大模型推理加速方案,为客户的云原生AI系统提供与社区更广更深的连接。
下面将对ACK云原生AI套件的这些新能力做更详细的介绍。
首先,实时观测和分析GPU资源利用率和GPU任务的性能表现,对于洞察和优化AI智算系统的效率至关重要。
在监控方面,ACK GPU监控大盘默认支持40余种指标,覆盖了资源利用率和任务性能的不同视角。
在诊断方面,ACK新增了基于eBPF技术的实时GPU profiling能力。支持在AI任务运行过程中,动态开启,无侵入地持续追踪任务执行过程。
将CPU进程,系统调用,Python和Pytorch方法调度,CUDA算子,以及NCCL通信和Data IO操作的运行过程,关联在一致的Timeline上统一分析,可以更直观、更快地定位线上AI任务的性能瓶颈。
相较于NSight, Pytorch profiler等离线诊断工具,基于eBPF的实时GPU profiling方案,更加轻量级,可在不需要中断任务的情况下,动态开启。
更容易在线上出现问题的时候,动态发起诊断,及时发现优化点。帮助ACK上的AI任务性能诊断效率提升20%。
比如上面这个例子中,通过CUDA算子和torch训练代码的调用耗时的分析,很直观看到训练数据的加载耗时远大于训练计算,这里存在明确的优化空间。
AI智算集群的稳定性很大程度上影响了模型训练和推理的效率与成本。
Meta训练Llama3.1 405B模型的案例中,54天训练,发生了417非预期中断,其中58.7%中断是GPU相关的故障。
Llama3.1能够完成训练,故障的自动处理至关重要。Meta的技术报告中看到,除了3次人工处理介入,其他故障全部实现自动化处理。
在容器智算场景,ACK提供了CIS智能诊断自愈系统。支持GPU、节点池、Kubernetes Addons等组件自由扩展特定故障类型,自定义故障诊断和恢复工具与脚本。通过集成ACK AI助手,借助LLM知识库,加快故障根因分析。形成从发现故障到自愈的全流程自动化处理。
ACK将GPU资源故障自动处理流程,与AI任务的错误恢复能力相结合。在发现GPU故障之后,一方面通知底层IaaS进行资源诊断、迁移、维修,另一方面Kubernetes调度会自动隔离故障资源,防止影响新任务。同时结合训练框架启动模型快速checkpoint,并在合适的条件下,重新调度任务,恢复训练。
大模型scaling law,支撑了GPU算力需求持续增长。单个数据中心或云的单个地域可能无法满足大任务对GPU资源量的需求。业界已经在尝试多地域、多集群资源和AI任务统一调度的方案。
然而,多地域任务分发和数据同步,带来了一致性、效率和复杂度挑战。
容器服务增强ACK One的计算与数据协同调度能力,实现多Kubernetes集群跨地域统一调度AI负载。支持以库存优先,成本优化等策略,缓解GPU 资源供给挑战。进一步,还需要动态观测和调整AI作业分布,持续平衡GPU资源与AI负载的最优匹配。
需要注意到,大模型体积大的特点,会影响多地域部署模型服务的成本和性能。通过自动预热和缓存模型到不同地域,加速LLM推理服务在多集群中的启动和弹性伸缩,优化GPU资源使用效率和成本。
同时,也需要结合跨地域模型服务请求流量的统一管理,简化多集群环境下的用户体验复杂度。
AI推理服务也像很多在线业务一样,存在访问峰谷变化的特征。在云上,弹性伸缩是应对服务流量变化的最佳实践。
容器服务支持根据QPS,请求Latency,GPU利用率,token请求队列长度等自定义指标,实现AI推理服务的自动弹性扩缩容。
为了提供更加及时、精准的资源弹性,容器服务提供 AHPA,由时序数据预测算法加持的智能弹性策略,精准控制扩缩容时机和幅度。
同时,结合Knative,也支持AI推理实例缩容到零的能力,极致优化资源成本。
然而,使用推理服务的弹性伸缩能力,在大模型场景下,实际存在更多Scale上的挑战。比如:
大模型加载慢,推理服务冷启动延迟大;
无法及时应对AI请求峰谷变化,导致弹性伸缩失效;
并发加载模型,访问存储聚合带宽压力大,成本高。
ACK云原生AI套件,将Fluid数据集缓存加速能力,扩展到大模型推理领域。通过Fluid Dataset和 Preload实现自动预热远程大模型参数到本地page cache,通过Fluid SDK并发加载到GPU显存。
端到端的模型缓存和预热优化,帮助LLM/AIGC推理服务冷启动延迟降低85%以上。既能支持 ECS/EGS,裸金属实例上的模型服务容器加速,也能支持ECI/ACS serverless实例上的加速。有效支持大模型推理服务弹性伸缩的可行性和实际价值。
Fluid是阿里云联合南京大学、Alluxio等组织共同创立的云原生数据集编排和加速开源项目。Fluid定义了Kubernetes中应用访问各类异构数据源,使用数据的标准接口。Fluid提出了Dataset抽象,对任务使用数据的过程建模。支持分布式缓存技术加速访问 Dataset,以及极简的Dataset Centric的数据处理流水线。
Fluid既可以用于加速分布式训练任务读取训练数据,也可以用于加速大模型推理服务启动。可以通过Fluid DataProcess,自定义编排推理服务模型下载 - 预处理 - 部署流程。比如支持TensorRT-LLM自动执行convert model > build engine > serving 的操作。
很多客户的IT系统架构演进路径中,智算、超算、大数据应用云原生一体化正在形成趋势。社区在推动增强Kubernetes,成为管理和运行各种数据计算类工作负载的统一基础平台。
在ACK的Kubernetes集群上,用户已经可以便捷高效地运行AI训练任务,推理服务,以及Spark/Flink大数据任务。
此外,ACK新增加了对分布式计算框架Ray,和对传统HPC领域Slurm任务调度能力的支持。提出Ray on ACK和Slurm on ACK的产品化方案,通过标准的Operator机制管理Ray,Slurm的集群和任务。重点集合云和容器的优势,统一优化调度、弹性、混部、可观测、安全、数据访问加速等能力。同时,无缝兼容Ray和Slurm原生的用户体验。
容器服务也在积极推动上游开源社区,在Kubernetes体系下,定义支持各类计算框架和任务类型的云原生任务标准API和生命周期。帮助用户可以在Kubernetes集群上以统一的标准和接口,管理调度各类数据计算类工作负载。
ACK扩展了Kube-scheduler framework,与Slurm调度系统打通,即支持节点池维度的分节点调度,也支持共享节点资源的混部调度。借助Kube-queue,可以对Kubernetes jobs和Slurm jobs统一排队管理。
ACK还实现了Kubernetes资源和Slurm资源状态双向同步,通过可自定义的扩缩容策略判断,动态调整Slurm节点,实现Slurm集群的弹性伸缩。是的传统的HPC集群调度,也能利用云的弹性优势。
而对于HPC用户来说,不用关心底层的调度细节,依然保持了通过登陆节点提交sbatch,srun作业的原生体验。
开源开放,对于云原生和AI社区都是最重要的发展路径和驱动力。无论训练框架,推理引擎,分布式计算软件,还是开源模型以及新的AI应用架构,容器服务始终以开放架构和开源标准,持续帮助用户快速高效地集成到Kubernetes集群中。更重要的是,ACK会重点优化开源能力和生态方案的“弹性,调度能力,可观测,稳定性,安全性”,通过内置与阿里云服务的整合,提升可生产落地的成熟度。
我们将容器服务在AI智算场景的创新能力和实践经验,沉淀为开放的云原生AI参考架构。通过ACK云原生AI套件产品,帮助客户持续优化异构资源效率和AI工程效率,改善云原生AI的落地和使用成本。以开放的架构和实现,给客户AI业务最大的灵活度。帮助客户的云原生AI系统可持续演进。
诚邀共建
阿里云容器团队诚招内转【开发&SRE】【产品经理】【PDSA】- 杭州、北京、深圳的岗位均可,欢迎大家帮助推荐。
也欢迎大家加入云原生AI技术和产品交流群,持续关注、共建与合作。
钉钉扫一扫群二维码,立即加入群聊
(2025.09.27前有效)