更新时间:2025-04-30 GMT+08:00

AI负载调度

本文主要介绍Volcano调度器在AI负载调度方面的关键功能,包括弹性调度、任务调度、异构资源调度和任务队列调度。Volcano调度器提供高性能任务调度引擎、高性能异构芯片管理、高性能任务运行管理等通用计算能力,旨在提升AI负载的调度效率和运行性能。

弹性调度

Volcano为应用的扩缩容提供优先级调度能力。

表1 弹性调度

功能

描述

应用扩缩容优先级策略

通过应用扩缩容优先级策略,您可以精确控制Pod在不同类型节点上的扩容与缩容顺序,从而实现资源管理的最优化。应用扩缩容优先级策略共包括两个方面:

  • 扩容:对某工作负载进行扩容时,Volcano调度器将根据节点优先级对调度新建的Pod。
  • 缩容:对某工作负载进行缩容时,Volcano调度器根据节点优先级对该工作负载中的Pod进行打分,并根据分值决定Pod删除顺序。

例如,默认情况下,包周期节点的优先级高于按需计费的节点。在扩容时,Pod将被优先调度到包周期的节点,其次被调度到按需计费的节点。在缩容过程中,系统将优先删除按需计费节点上满足条件的Pod,其次删除包周期节点上满足条件的Pod。

任务调度

Volcano调度器为批量计算的任务提供了公平调度(DRF)和组调度(Gang)的能力。

表2 任务调度

功能

描述

公平调度(DRF)

Volcano调度器支持公平调度(DRF),该功能基于最大最小化公平分配算法(max-min fairness share),旨在确保多用户环境下资源的公平分配。DRF通过为每个用户计算其主导资源(如CPU、内存、存储等)和资源占用比例,从而在调度时尽量保证每个用户根据其需求获得公平的资源份额。

该能力常应用于大批量提交AI训练和大数据作业的场景,可增强集群业务的吞吐量,整体缩短业务执行时间,提高训练性能。

组调度(Gang)

Volcano调度器支持组调度(Gang),满足调度过程中“All or nothing”的调度需求,从而避免Pod的任意调度导致集群资源的浪费。其核心思想为检查Job下的Pod已调度数量是否满足了最小运行数量,当Job的最小运行数量得到满足时,为Job下的所有Pod执行调度动作,否则不执行。

该能力启用后,可以优先解决分布式训练任务之间的资源忙等待和死锁等痛点问题,大幅度提升整体训练性能。

异构资源调度

Volcano调度器为CPU、GPU、NPU等异构资源提供了GPU共享调度、NUMA拓扑感知调度、NPU拓扑调度等能力。

表3 异构资源调度

功能

描述

GPU虚拟化调度

Volcano调度器支持在GPU节点上实现GPU虚拟化调度和隔离能力,并提供两种调度策略用于GPU虚拟化负载的管理:

  • Spread:在GPU节点配置相同的情况下,优先选择运行容器数量最少的节点,从而实现GPU虚拟化负载的均匀分配。
  • Binpack:尽可能将GPU虚拟化负载调度到同一节点,以减少节点使用数量,避免资源碎片化。

NUMA亲和性调度

Volcano调度器支持NUMA亲和性调度能力,该功能优先将Pod调度至跨NUMA节点访问最少的工作节点,从而有减少数据传输开销,优化资源利用率,并提升系统整体性能。

节点内NPU拓扑亲和调度

Volcano调度器支持节点内NPU拓扑感知调度,该功能是一种基于昇腾AI处理器硬件拓扑特性的智能资源管理技术,通过优化资源分配和网络路径选择,有效减少计算资源碎片和网络拥塞,最大化提升NPU算力利用率。该技术可显著提升AI训练和推理任务的执行效率,实现昇腾计算资源的高效调度与管理。

超节点拓扑亲和调度

Volcano调度器支持使用超节点拓扑亲和调度能力。超节点由48个节点组成,其内部NPU采用特定网络连接方式形成一种超平面网络,可以提供更快的网络传输速率。超节点拓扑亲和调度可以将关联度高的Pod调度至同一超节点内,从而有效减少跨节点通信,降低网络延迟,并提高数据传输速度。

任务队列调度

Volcano调度器为AI任务和批量计算任务提供任务队列调度能力。

表4 任务队列调度

功能

描述

队列资源管理调度(Capacity)

队列是Volcano的核心概念之一,用于支持多租户场景下的资源分配与任务调度。通过队列,用户可以实现多租户资源分配、任务优先级控制、资源抢占与回收等功能,显著提升集群的资源利用率和任务调度效率。

层级队列

在实际应用中,不同队列往往隶属于不同部门,部门之间存在层级关系,传统平级队列的资源管理无法满足实际需要。为此,Volcano调度器引入层级队列,通过将队列按层级结构组织,实现不同层级间的资源分配、共享与抢占。通过这一功能,用户可以在层级队列的基础上实现更细粒度的资源配额管理,构建更高效的统一调度平台。