在Ai2的AI基础设施团队,有一组数字被反复提起:基于已提交的工作负载,任何时刻,尚未满足的GPU请求都是可用GPU数量的2到3倍。换句话说,每一块可用的GPU小时,背后都有两三个不同的研究任务在竞争。
他们管理着数千块NVIDIA H100、B200和B300,分布在88到1024块不等的集群里,服务约150名内部研究员。工作负载覆盖LLM和VLM训练、机器人强化学习仿真,以及科学智能体的后训练。需求远超供给,是这里的常态。
旧调度器的三种病
过去他们用基于优先级的调度器,并允许任务选择"不可抢占"。每个团队对不可抢占任务有并发GPU上限,可抢占任务则能在空闲GPU上超限运行。这套策略很快长出三种典型病症。
- GPU占坑:用户挂上无实际运算的空转任务,需要时再连上去,因为低延迟启动调试任务根本做不到。
- 优先级通胀:最终100%的已调度任务都标成了HIGH优先级,低优先级彻底分不到GPU时间。
- 运维谈判:由于可抢占是可选功能,值班工程师大部分工单响应时间都花在协商关停那些跑在已知故障主机上的不可抢占任务。
问题出现时,他们并没有立刻找到根因。最初的应对是收紧优先级设定规则,甚至绕开调度器,直接把GPU独占权分配给重要项目。事后回看,这恰好搭出了一个观察"公地悲剧"的完美实验室:个体争夺稀缺共享资源,各自追求最优,整体结果却非最优,底层资源也被滥用。
从分GPU到分时间
公地悲剧的经典解法是私有化。给团队分配GPU独占权,他们确实做过,但颗粒度太粗。研究有季节性,各团队准备跑实验和训练的时间点不同,独占会导致某些时段GPU闲置,而另一个团队还在等容量。这等于手工解一个背包问题,想把动态变化的研究需求塞进静态排期。
他们决定迭代所有权模型:不发GPU,改发GPU时间。预测未来需求需要预知新科学实验的结果,无法精确;但研究之间的优先级是战略问题,可以提前讨论决定。于是管理层像投资人一样思考——在工作负载出现之前,先根据对研究潜在影响力的判断,决定用多少GPU时间去资助它。调度器随后依据这些信息,为到达的任务排定优先级。
在此基础上,他们搭起一套分层系统,管理者可以按比例把GPU时间分配给下属的项目和研究员。关于"每个研究项目该拿多少GPU时间"的争论,也从一次次个案式的运维协调,变成了一场透明的行政预算流程。
这套新系统的核心,是GPU时间预算、分层公平分享分配,以及一份时间切片契约。它替换掉了原来的优先级调度器,也把资源分配的决策权,从值班工程师的工单里,交回到了管理层的预算桌上。
热门跟贴