Dharma AI GPU 管理:通过约束感知分配提高集群利用率
Dharma AI 推出了一种约束感知的 GPU 分配器,旨在优化集群利用率和优先级加权输出。通过改变分配决策的顺序而非硬件,该系统在七个基准测试场景中,与先进先出 (FIFO) 调度器相比,将 GPU 利用率提高了多达 33 个百分点,并将优先级加权输出提高了多达 105%。
核心问题:不兼容的工作负载形状
GPU 调度因两种根本不同的分配形状之间的竞争而变得复杂:
- 批处理类工作负载:训练、批处理推理和量化。这些工作需要连续的 GPU 块,并在完成前保持占用且不中断。
- 弹性工作负载:实时推理,由每个时间步长不断波动的需求曲线驱动。
当这些不兼容的形状竞争相同的硬件时,传统的 FIFO 调度器会产生显著的低效。FIFO 调度器通常依赖于实时推理的固定预留来保证可用性,这意味着 GPU 在流量低谷期会被占用,且无法提供给批处理任务,从而导致利用率低下。
约束感知分配 vs. FIFO
FIFO 调度在容量方面有两个主要的成本:通过在非高峰时段让 GPU 闲置的静态预留,以及通过忽略任务优先级和未来容量需求的排序过程。
相比之下,Dharma AI 分配器将实时需求视为一条曲线而非一个上限。它根据每个时间步长的需求分配 GPU,并允许批处理类工作占用低谷期。为了确保安全性,系统对实时任务在连续时间步长之间可以交换的 GPU 数量实施了上限限制。
性能基准测试
在五个高竞争场景下,该分配器同时提高了利用率和优先级加权价值:
- 利用率:从 52–85% 的区间提高到 72–88% 的区间。
- 优先级加权价值:增长了 24.6% 至 105.1%,平均增长 52%。
在 8 个 GPU 的训练密集型工作负载中,利用率从 53.6% 上升到 87.0%,价值增加了 105%。值得注意的是,在 64 个 GPU 和 30 个任务的规模测试中,该分配器在利用率 (44.9%) 和吞吐量 (27/30 任务) 与 FIFO 基准线一致的情况下,提供了多出 15.9% 的优先级加权价值,证明了优先级感知分配对于价值生成至关重要。
技术实现与约束
为了避免局部启发式规则的局限性,该分配器使用正式模型根据五个约束来定义合法分配:
- 每个 GPU 在每个时间步长内最多服务一个任务。
- 每个任务都遵循其需求范围,且正在运行的工作会被继承并保持。
- 批处理类任务占用连续的 GPU 块(大小为 2 的幂次)。
- 实时任务在连续时间步长之间进行 GPU 交换的次数受到硬性上限限制。
- 已开始的任务不能被中断。
目标函数
系统使用包含两个项的目标函数:为批处理类任务分配 GPU 的奖励(优先级乘以时间衰减权重)以及未能满足实时需求的惩罚。实时需求的惩罚权重比分配奖励高出 5 到 10 倍,确保了在无需静态预留的情况下,延迟义务优先于批处理工作。
启发式执行
由于组合分配是 NP-hard 问题,系统在热路径上采用启发式算法以确保低延迟。在竞争场景下,分配器运行时间为 1 到 2 毫秒,对于 64-GPU 集群,运行时间为 15 毫秒,这使其运行速度足以应对每一个进入的请求。
需求预测与专业化
Dharma AI 利用专门的评估器来处理不同类型的工作负载:
- 训练:使用包含 22 个特征的预测器,包括 10 种具体的训练变体(例如,LoRA vs. full fine-tuning),以解释 GPU 显存和持续时间的巨大差异。
- 量化:基于参数量和算法(例如,AWQ, GPTQ)的校准层级的专门预测。
- 实时推理:通过每小时流量历史记录不断重新校准的每周需求概况。
运营策略:优化全天,提交当前小时
为了减轻预测误差,调度器优化 24 小时范围内的决策,但仅提交当前时间步长。系统每 30 到 60 分钟重新运行一次,允许通过重新优化而非累积误差来吸收预测误差。这种方法防止了“世界末日效应”,即优化器因为无法看到其视野范围之外的情况而做出错误的当前决策。
Sources
相关
- Dispatch
- 项目
- 项目
- 项目
- Dispatch