据Hugging Face博客8月17日发布的一项研究,一个约束感知的GPU分配器在相同硬件和相同工作负载下,将GPU利用率最高提升了33个百分点,并将优先级加权输出量最高提升105%。该研究对比了传统先来先服务(FIFO)调度器,发现调度决策的顺序直接影响集群的算力利用效率,而非硬件本身。
研究者在七个基准场景下对比了两种调度方式,其中五个场景专门模拟资源竞争。结果显示,在这五个竞争场景中,GPU利用率从FIFO的52%至85%区间提升到新分配器的72%至88%区间;优先级加权输出量增加了24.6%至105.1%不等,平均增长52%。最强的单一案例是一个8卡训练密集型负载:利用率从53.6%升至87.0%,输出量增加超过一倍。
调度器要解决的问题并不是简单的“保持GPU忙碌”,而是需要在每个时间步为每块GPU分配具体任务,同时协调四种工作负载:训练、实时推理、批量推理和量化。前三种属于“批量型”,一旦开始就需要连续占用固定数量的GPU直至结束;实时推理则具有弹性,需求曲线随时间波动。两种不相容的资源占用形态在同一块硬件上竞争,是调度困难的核心。
FIFO调度器处理实时推理的办法,是预留一块固定GPU池以满足其全天最大需求。例如,一个应用中午需要6块GPU、凌晨只需2块,但调度器会为它预留全天6块,导致4块GPU在非高峰时段完全闲置,无法用于任何批量任务。研究指出,在保留策略占主导的两个场景中,FIFO的基准利用率仅为51.6%和53.6%,相当于约一半算力被闲置或锁定。
除了保留造成的浪费,调度顺序本身也会挤压后续任务的空间。FIFO按到达顺序放置任务,不评估任务优先级,也不检查后续尚需放入的任务,导致高优先级任务在低优先级任务之后等待,而一些后续任务无法利用已占用的资源。研究者将这两种效应叠加的现象比喻为“把飞机调配给最先打电话的包机客户,结果没有飞机留给真正赚钱的航线”。
该博客文章强调,没有任何硬件改变,改变的只是调度决策的顺序。这一结果表明,在算力需求紧张时,调度顺序本身就是一种容量决策,而非在容量确定后的排序问题。