本文主要介绍任务调度和异构资源调度,帮助用户了解提升智算集群的资源利用率和作业运行效率的措施。
任务调度
任务调度为AI/ML任务提供了Gang scheduling和Capacity Scheduling调度能力。
功能 描述 Gang scheduling 在分布式计算场景需要一组Pod紧密协作,Gang scheduling策略可在并发系统中将多个相关联的进程调度到不同处理器上同时运行。最主要的原则是保证所有相关联的进程能够同时启动,防止部分进程的异常,避免整个关联进程组的阻塞。这种All-or-Nothing调度场景,就被称作Gang scheduling。CCSE提供Gang scheduling功能保障相关联的进程的同时启动和失败,防止因部分失败导致整个任务阻塞的情况。 Capacity Scheduling 在多用户共用集群的环境,如果仅仅依赖于Kubernetes的ResourceQuota机制来划分固定资源,由于每个用户对资源的需求和使用模式各异,这往往会导致集群资源未能被充分利用,从而降低了资源的整体使用效率。为了解决这一问题,CCSE创新性地引入了弹性配额组的概念。这种Capacity Scheduling功能在保障各用户获得其所需资源的同时,通过资源的动态共享,有效地提升了整个集群的资源使用效率。
异构资源调度
GPU共享调度、GPU/CPU拓扑感知调度等能力。
功能 描述 共享GPU调度 通过实施GPU的共享调度,可以实现多个Pod共享使用GPU卡,可以有效减少对GPU资源的投入,常用于模型推理等场景。 GPU/CPU拓扑感知调度 调度器基于异构资源的拓扑信息,比如GPU卡之间的NVLink、PcieSwitch等通信方式、CPU的NUMA拓扑结构等,调度的时候选择最优的GPU/CPU组合,为工作负载提供更好的性能。