Ai2 在10月9日的报告中公布了更换 GPU 集群调度器的结果。基于优先级的调度器被 GPU 时间预算、分层公平份额(fair-share)和时间分片契约取代。
部署自7月底起逐个集群推进;在报告的30天内,各团队拿到了应得 GPU 时间的98%。应得时间是按小时以实际需求为上限的配额。
集群占用率在变更前后均为98%。这是运营方的观测,不是独立基准测试。
起点是旧方案的瓶颈。在需求达到供给2~3倍的情况下,没有成本的 HIGH 优先级最终覆盖了100%的作业,一些用户还用空作业占住 GPU。
按时间而非机器分配的分层公平份额
Ai2 的做法是给团队分配 GPU 时间份额,而不是直接分配 GPU。管理者按比例把预算分给项目和研究者,调度器在默认7天的滑动回看窗口内跟踪占用。
使用低于配额的组的作业排在使用超额的组之前。时间预算是一段窗口内的使用权,不是持续预留同一批设备。
Ai2 自己也说算法并不新。Slurm 的 Fair Tree 在账号树中比较同一父节点下兄弟项的份额与用量。
Ai2 只是引用了这一脉络,没有证据表明其调度器运行的是 Slurm 的实现。
最短运行时间契约与抢占边界
作业提交时声明取得有意义进展所需的最短运行时间,在此期间免于抢占。Ai2 设定的保护上限是8小时。
保护窗口结束后,可恢复的作业会自动重新排队。最短时间设为0即表示未分配时间,不计入任何预算,从一开始就可被抢占。
借助这一契约,故障主机也能在作业达到最短运行时间时自动清空。Ai2 报告需要人工介入的维修减少了74%。
易失的交互会话则较吃亏:在8小时保护后被抢占,状态只能手动重建。Ai2 还在调查可能拉长最大规模作业等待时间的容量碎片化。
保护时长与重启成本的取舍
设计问题在于把可恢复工作单位定为多大。窗口越短,重新分配的机会越多;但如果每次重启都丢掉进展,这些机会的价值就会下降。
较长的窗口给作业留出推进空间,却会推迟等待同一硬件的其他作业。仅凭占用率似乎无法在两者之间做出选择。
更现实的试点会在队列延迟旁边记录检查点耗时、重启时间和中断造成的工作损失。把交互式与可恢复工作负载分开统计,比较才成立。
通过运营指标确认抢占原因
Ai2 的报告没有公开用于检查的命令或配置键。因此检查只能停留在运营指标层面。
对类似政策来说,首要检查点似乎是能否在同一视图中看到各组的已交付与配额时间、作业变为可抢占的时刻以及被计费的预算。
谁来分配预算、份额不足时如何申诉,同样重要。即使公式透明,若分配决策不透明,也难以建立运营上的信任。
98% 无法说明的内容
这里有三个独立的问题:可用硬件是否已分配,各组是否拿到了应得时间,这些时间是否转化为有用计算。
占用率回答第一个,以需求为上限的交付率回答第二个。两者都不能证明第三个,本文也没有复现 Ai2 的调度器或模拟。
比起集群满载,抢占之后仍能保留的进展才是这个调度器真正的成绩单。
