云原生AI通过对于任务的编排和异构资源虚拟化的方式提高异构平台的资源使用效率和AI工程交付速度。本文介绍云原生AI的主要功能。

说明 云原生AI有两种用户角色:
  • 管理员:负责搭建AI基础架构和日常管理。更多信息,请参见部署云原生AI套件管理用户
  • 数据科学家:使用云原生AI提交任务。更多信息,请参见训练

异构资源效率优化

  • GPU共享调度和算力隔离:支持丰富的GPU设备分配策略。单Pod单GPU卡共享和隔离,常用于支持模型推理场景;单Pod多GPU卡共享和隔离,常用于支持分布式模型训练代码的开发;按GPU卡的Binpack和Spread分配策略,可以针对GPU卡的使用密度和出现坏卡时高可用性的平衡。
    • 丰富的共享策略:阿里云自研的GPU共享调度能力将多个模型推理应用运行在同一个GPU上,显著降低成本。
    • 隔离保稳定:通过阿里云自研cGPU方案,在无需修改应用容器的前提下,提供了GPU显存和算力的隔离。
  • GPU拓扑感知调度:通过Node节点获取异构计算资源的拓扑结构,调度器端基于节点的拓扑信息,完成调度决策,考虑包括NVLINK,PcleSwitch, QPI以及RDMA NIC,提供最佳的调度选择,实现最优的运行性能。
  • GPU资源的全方位监控: 提供节点和应用视角的监控指标,设备(软硬件)异常自动检测和告警;支持独占GPU和共享GPU不同场景。

数据访问性能提升

在计算和存储分离的大背景驱动下,开源软件Fluid的目标是为AI与大数据云原生应用提供一层高效便捷的数据抽象,将数据从存储抽象出来,通过以Alluxio和JIndoFS为缓存引擎,以便达到以下目的:

  • 通过数据亲和性调度和分布式缓存引擎加速,实现数据和计算之间的融合,从而加速计算对数据的访问。
  • 将数据独立于存储进行管理,并且通过Kubernetes的命名空间进行资源隔离,实现数据的安全隔离。
  • 将来自不同存储的数据联合起来进行运算,从而有机会打破不同存储的差异性带来的数据孤岛效应。

任务和容量调度

在批任务的调度过程中需要通过Spread调度或Binpack调度,减少资源碎片,提升GPU的利用率:

  • 批量任务:作业的所有子任务都能满足资源需求才整体分配,否则不分配任务资源。防止由于资源死锁,导致大作业挤占小作业。
  • Spread调度:作业均匀分配在各个节点,集群利用率较平均。
  • Binpack调度:作业优先集中分配在某个节点,当节点资源不足时,依次在下一节点集中分配,适合单机多卡训练任务,避免跨机数据传输。防止资源碎片。

异构资源弹性伸缩

通过智能的削峰填谷,避免不必要的云上资源消费;支持弹性模型训练和模型推理。

  • 弹性训练:支持容错和弹性调度的分布式深度学习,可以极大提升集群的总体利用率,同时显著减少用户提交作业之后等待作业启动的时间。
  • 弹性推理:结合阿里云丰富的弹性能力,包括停机不回收、弹性资源池、定时弹性、竞价实例弹性、Spotfleet模式及自动扩缩容AI推理任务。

集群任务和资源的可观测性

提供如下图所示的任务和资源的观测大盘,能有效帮助您合理评估投入产出。

K-AI-1