Hugging Face Blog

Same Cluster, 33 Points More Utilization: What Changed Was the Order

8.5内容质量

TL;DR · AI 摘要

约束感知的GPU分配器使利用率提升33%,优先级输出提升105%,证明调度顺序对资源管理有决定性影响。

核心要点

  • GPU利用率提升33个百分点源于调度顺序优化
  • 优先级加权输出最高提升105%来自约束感知算法
  • 训练与实时推理的资源冲突是核心挑战

结构提纲

按章节快速跳转。

  1. 指出当前企业AI的瓶颈已从算力转向资源利用率优化。

  2. 明确GPU分配决策需精确到每个GPU、任务和时间步的二元选择。

  3. 区分训练/批量推理/实时推理/量化四类任务的资源需求差异。

  4. ·FIFO调度的局限性

    固定预留导致实时推理资源浪费,其他任务排队降低整体利用率。

  5. 约束感知算法在七种场景下平均提升利用率33%。

  6. 需解决动态需求预测与长期任务调度的冲突问题。

思维导图

用一张图看清主题之间的关系。

查看大纲文本(无障碍 / 无 JS 友好)
  • GPU资源管理优化
    • 约束感知分配器
      • 33%利用率提升
      • 105%输出提升
    • FIFO调度对比
      • 固定预留机制
      • 资源浪费问题
    • 工作负载类型
      • 训练任务
      • 实时推理
      • 批量推理
      • 量化任务

金句 / Highlights

值得收藏与分享的关键句。

#GPU管理#资源分配#Hugging Face#调度算法
打开原文

同一集群,利用率提升33个百分点:变化的是决策顺序

返回文章列表

[0

团队

]

文章

发布于2026年8月17日

[-1

点赞

16

[

  • +10

Gabriel Pimenta de Freitas Cardoso

GabrielPimenta99

关注

Dharma-AI

Breno de Almeida Beleza

BrenoBeleza

Francisco de Almeida Rocha Alves

falves9101

Bruno Duarte

brunoduarte01

上一篇文章指出,利用率而非智能,才是企业AI下一个真正的瓶颈所在,并提到目前尚未形成成熟的GPU管理实践方法论。本文将提供我们的解决方案。

我们构建了一个具备约束感知能力的GPU分配器,并在七种基准场景下与先进先出(FIFO)调度器进行了对比测试。在相同硬件、相同工作负载的条件下,GPU利用率最高提升了33个百分点,所有场景中优先级加权输出均有所提升,最高达105%。硬件本身没有任何变化,变化的是资源分配决策的顺序。

在开始数据说明前需要强调一点:以下所有提升数据均以相同场景下FIFO调度器的结果为基准进行计算。利用率以百分点为单位表示,价值提升以优先级加权输出的百分比增长表示。

明确的决策定义

"保持GPU持续运行"不是一个系统可执行的决策。真正的决策更为具体且更具挑战性:在每个时间步长内,哪些GPU运行哪些任务,以何种优先级执行。从形式上看,这对应着每个GPU-任务-时间步长组合的一个二进制选择,最终输出是一个网格——在整个调度时间范围内,每个GPU对应单元格中显示任务名称或为空。

四种工作负载类型争夺这个网格资源:训练、实时推理、批量推理和量化。它们分为两种分配形态,而形态的划分正是难点所在。训练、批量推理和量化属于批量型任务:一旦启动就需要持续占用GPU资源直至任务完成。实时推理则相反:具有弹性特征,由随时间步长变化的需求曲线驱动,随着流量波动而扩张或收缩。

同一时间步长内两种不兼容形态争夺相同硬件资源,这是核心问题。此外,单一类型内部还存在异构性:对于相同的基础模型,训练任务的持续时间从数小时到数天不等,所需GPU数量从1个到数十个不等。

FIFO调度器在资源竞争下的代价

全文的对比基准是基于先进先出(FIFO)的调度器:实时推理从固定预留资源中获取,其他所有任务按到达顺序排队,不考虑优先级。

在特定条件下,这种策略是合理的。当集群资源充足时,分配顺序对利用率没有影响,无论任务顺序如何,所有任务都能完全适配,此时FIFO调度器与更复杂的调度算法对资源池的利用率完全相同。但当出现资源竞争时,这种顺序代价就会显现,开始消耗实际资源容量。此时这种代价会以两种方式体现,值得分别探讨。

预留机制。实时推理无法等待资源容量的释放;当流量需要时,GPU必须立即可用。采用按到达顺序分配任务的调度器,缺乏在低谷期释放GPU并在下一个高峰期前重新回收的机制,因此唯一能保证可用性的方法是根据每个实时应用当日的最大需求进行全天候GPU预留。这种成本会体现在所有非高峰期的每个小时。一个在中午需要6个GPU、凌晨4点只需2个GPU的应用,会全天候占用6个GPU,导致其余4个GPU整日无法被任何批处理任务使用。这些GPU既未被使用,也未被释放。这正是在两种以预留机制为主导的场景中,基准线接近集群一半的原因:混合控制场景为51.6%,训练密集型场景为53.6%。约一半的资源池中,大量闲置资源被预留而非释放。无论集群是否处于争用状态,这种成本都会产生——争用状态只会让这种成本更加明显。

任务排序。在真实争用场景下,哪些任务能够被分配,不仅取决于现有容量,还取决于任务的排序。排序不是在容量问题解决后的补充规则,而是容量决策本身。FIFO(先进先出)机制会按任务到达顺序依次分配,既不评估任务价值,也不检查其他任务是否能在时间窗口内完成,因此高优先级任务可能被先到达的低优先级任务阻塞,导致容量被分配给后续任务无法使用的资源。

两者叠加影响。为满足当日最大实时需求而预留的GPU资源,在队列中所有批处理任务的每个小时都完全不可用,剩余资源则按请求到达的先后顺序进行分配。

这相当于航空公司优先为第一个申请包机的客户分配飞机,却发现自己没有剩余飞机执行真正盈利的航线。而全天候为仅持续数小时的峰值预留GPU资源,从字面意义上来说就是停飞的飞机:处于待命状态,毫无收益,也无法被其他任务使用。

[图示:并排分配网格——上方为分配器,下方为FIFO,相同场景]

在针对真实争用场景构建的五个基准测试中,分配器同时提升了两个指标。资源利用率从52-85%提升至72-88%。优先级加权价值增长了24.6%至105.1%,平均增长52%。所有场景、所有指标均无权衡取舍的解释空间。

最显著的单个案例是8 GPU上的训练密集型工作负载:资源利用率从53.6%提升至87.0%,价值增长超过100%,达到105%。通过回收预留的待命资源并按优先级分配,成功恢复了33个点的固定资产价值(该资产本身已处于折旧状态)。(此数据反映单一基准排序情况。)

分配器消除了这两种行为。实时需求被视作曲线而非上限,按每个时间步的需求进行分配,批处理类任务可占据低谷时段,且受实时任务在连续时间步间可交换GPU数量上限的约束。同时,批处理类任务在整个时间窗口内按优先级分配,而非按到达顺序。本文其余部分将具体说明实现方式。

资源利用率是必要的。优先级才是将利用率转化为价值的关键。

利用率衡量的是占用情况:有多少可用的GPU时间被分配给了某个任务。它不提供任何关于这个任务价值的信息。在某种场景下,这两个指标会被完全分开,而差距的方向很容易被忽视。

在规模测试中,30个任务分布在64个GPU上,FIFO调度器和分配器产生的利用率完全相同,均为44.9%,吞吐量也完全相同,30个任务中有27个完成。但分配器实现了15.9%更高的优先级加权价值。所有仪表盘显示的数据都完全一致,但集群实际产出却存在显著差异。

一个不考虑优先级定价的目标,可以让集群达到完全相同的负载水平,完成相同数量的任务,但产出价值却更少。前文已论证过占用率无法准确反映集群产出价值,这是该论点的实测验证。

将问题形式化

替代方案并非只是增加更多启发式规则。某些约束条件只有在全局范围内才有意义,任何局部规则都无法表达:连续的GPU块分配、整个时间范围内可接受的GPU切换预算、运行中的工作永远不被抢占的保证。要满足这些条件,必须将问题作为一个整体进行形式化描述。

合法分配需要满足五个约束条件:

  • 每个GPU在每个时间步只能服务一个任务。
  • 每个任务必须遵守其需求范围,已运行的任务会继承并保持当前状态。
  • 批处理类任务需要占用连续的GPU块,且大小必须是2的幂次方。
  • 实时任务在连续时间步之间切换的GPU数量有硬性上限。
  • 一旦任务开始执行,就不能被中断。

目标函数包含两个部分。将GPU分配给批处理任务可获得的奖励等于其优先级乘以时间衰减权重。未能满足实时需求会产生与缺口规模成比例的惩罚。

这两个权重的相对比例构成了完整的服务等级策略,用一个数字表达。实时惩罚权重是分配权重的5到10倍。因此,一个单位的实时需求未满足成本相当于5到10个同等优先级批处理任务的GPU时间成本。这种不对称性是刻意设计的,这意味着延迟义务会在与批处理任务调度相同的优化过程中得到保障,而不是通过单独的自动扩展器与调度器争夺GPU资源。

这也正是实时需求弹性处理的安全保障。分配器可以在需求低谷时将GPU分配给批处理任务,因为后续未满足的实时需求成本远高于批处理任务所能获得的收益——是惩罚机制而非静态保留,保障了资源可用性。

时间权重在时间范围内衰减的原因只在在线系统中才有意义:到下一次调度运行时,新的任务已经到达。当前使用的容量价值高于未来承诺的容量价值。

已知约束的分配器

形式化模型定义了合法且得分良好的分配应具备的特征。处理新请求是独立的任务,属于独立的组件。这是NP难的组合优化问题,每当有新任务到达时调度器都会被重新调用,因此决策必须在两次API请求之间完成。这个延迟预算就是架构设计的核心约束,因此启发式算法位于关键路径上,而形式化模型则作为规范位于其后,用于指导启发式算法的实现。

该启发式方法并非通用的贪心分配器。其规则是形式化模型的结构约束,这意味着它生成的每个网格都通过构造本身即为合法分配。通常并不有效。但设计上是有效的。

这种设计在整个时间范围内应用,而非逐个处理到达任务,正是这种设计带来了利用率的提升。分配器在放置任何任务之前会看到所有排队的任务,它能够将空闲资源池保持为剩余工作实际可以占用的形状。例如,一个需要特定大小连续块的批量任务在轮到它时仍能找到空间。优先级决定谁先获得该空间的使用权。FIFO(先进先出)没有这种预览能力:它将资源分配给最先请求的任务,而一个稍后到达且需要特定形状的任务可能发现已无合适空间,从而无法调度,其本应消耗的GPU小时数也未被利用。

在五个竞争场景中,该算法运行时间为1至2毫秒,在64个GPU和30个任务场景下为15毫秒——足够快,可以处理每个传入请求。

系统提供了两种模式。快速模式仅运行分配器并返回其网格;这是主要的执行路径。完整模式则以该网格作为形式化模型的起点,模型会尝试对其进行优化——更适合周期性评估,而非每次请求都进行决策。

结果

场景

利用率

价值

价值增长

延迟

混合控制(8个GPU,10个任务)

51.6% → 72.4%

7,093 → 10,980

+54.8%

1毫秒

实时竞争(8个GPU,8个任务)

75.0% → 80.2%

3,233 → 4,029

+24.6%

训练密集型(8个GPU,16个任务)

53.6% → 87.0%

8,553 → 17,545

+105.1%

2毫秒

大型混合(14个GPU,16个任务)

76.8% → 82.7%

13,977 → 20,101

+43.8%

超量分配(8个GPU,9个任务)

85.4% → 87.5%

4,311 → 5,760

+33.6%

规模测试(64个GPU,30个任务)

44.9% → 44.9%

44,233 → 51,248

+15.9%

15毫秒

统一优先级(14个GPU,16个任务)

76.8% → 87.5%

25,219 → 31,052

+23.1%

在所有场景中,除一个场景外利用率均有所提升,其中有一个场景利用率完全持平。所有七个场景的价值均有所提升。

规模测试具有重要意义,因为它在规模上保持稳定:64个GPU、30个任务、15毫秒延迟,价值提升了15.9%。

统一优先级测试也具有重要意义,因为它回应了显而易见的质疑。将所有任务的优先级设为相同,使分配器无法通过优先级区分任何任务,但分配器仍能将利用率从76.8%提升至87.5%,价值提升23.1%。这一提升并非仅仅是优先级排序的产物。跨时间范围的规划放置本身就能带来显著收益。

如果需求数据错误,所有方法均失效

以上所有内容均假设调度器知道每个任务需要多少GPU小时,以及有多少实时流量即将到来。这两者都是预测值,而非输入值,调度器的效果取决于预测的准确性。

单一通用估算器无法奏效,因为四种工作负载类型具有本质上不同的成本驱动因素。这正是前一篇文章中提到的专业化论点再次适用的地方:使特定任务模型优于通用模型的相同逻辑,也适用于为调度器提供数据的估算器。

训练不是一个单一的工作负载。它沿着两个独立且可自由组合的轴线发生变化。策略决定了模型更新的程度(全量微调与参数高效方法如LoRA的对比)。技术决定了优化目标和训练循环(SFT、DPO、RLHF、RLVR、CPT)。这些差异并非微不足道:在相同的基础模型上,LoRA可将可训练参数减少至全量微调的10,000分之一,GPU内存消耗也减少约3倍。DPO则去除了RLHF的奖励模型和采样循环。仅根据模型规模进行估算会平均不同运行之间的数量级差异,而这些差异正是调度器决定的两个关键因素——持续时间和GPU数量。我们的训练预测器基于22个特征进行建模,其中包括一个区分10种具体训练变体的分类变量。

量化是一个可调度的任务,而非后台任务。量化单个大型模型可能需要消耗数小时的GPU时间,而这些硬件资源可能被其他任务等待使用。量化拥有独立的预测模型,该模型根据参数数量从校准层级构建,针对不同算法(bitsandbytes、AWQ、GPTQ)进行差异化处理,并在向上取整到完整GPU小时数前预留安全余量。此前的相关研究完全将量化排除在调度范围之外。

实时推理根本不会按任务单独估算。它被预测为持续重新校准的周需求曲线,该曲线通过每小时流量历史重建,并映射到相同交换成本下的GPU数量(由正式模型强制规定)。因此,预测模型与优化器在计算周转成本时达成一致,而非相互冲突。这种预测正是替代峰值预留的核心。只有通过每时间步的需求曲线,调度器才能在低谷期有把握地释放GPU,确信在下一个峰值到来前能够重新获取。

这使我们回到排序论点的核心。更精确的需求预测正是实现优先级感知调度的前提,不了解任务消耗情况就无法有效排序任务。

优化全天,承诺每小时

对上述所有内容最明显的反对意见是预测可能出错。那又该如何应对?

需要避免的失败模式有一个值得借用的名称:世界尽头效应。一个无法看到自身预测范围之外的优化器,会做出破坏预测范围外时间步的当前决策,因为对模型而言,在预测范围结束后似乎什么都不存在了。

架构设计同时解决了这两个问题。调度器优化24小时预测范围,但仅承诺当前时间步,并每30至60分钟重新运行一次。例如在上午9点运行时,9点的资源分配是真实的;10点至下午5点的计划仅用于确保9点决策的模型知道未来存在。真实的10点分配将来自10点运行时的新数据。

其结果是预测误差通过重新优化被吸收,而非累积。每次运行都会继承当前实际运行状态并固定下来,因此后续计划会更新而非反复震荡。

这还带来了一个次要收益。预测范围本身就是一个预测产品:它能提前揭示实时覆盖风险和可预测的空闲窗口,无论这些具体分配是否最终被承诺,这种信息都有价值。

这也是时间衰减权重存在的原因。到下一次运行时,工作负载组合必然已发生变化。

这种方法的泛化能力

航空公司并未通过计算最佳日程来解决利用率问题。他们通过将操作纪律编码到事件发生的顺序中(周转顺序、维护窗口、机组排班),并让这种纪律产生复利效应来实现目标。

这里发生的情况如出一辙。在硬件相同、工作负载相同的情况下,仅用数毫秒时间,通过将集群物理允许的条件编码到决策顺序中,实现了最密集场景下33个利用率点的提升,平均优先级加权输出提升了52%。结构胜过了复杂性。

前一篇文章论证了专业化和编排是同一问题的两个方面:专业化减少了每个工作负载的需求,而编排决定了差异该去往何处。单独使用任何一方都无法获得回报。当第二部分被构建出来时,它呈现出这样的形态。

这些GPU已经安装、已经投入、正在折旧。收益来自于我们选择如何使用它们的方式。

进一步阅读

  • GPU管理:闲置GPU是新的“停飞飞机”
  • 更新的模型,同样的优势
  • 为什么专业化是不可避免的
  • 专业化胜过规模:大多数AI采购决策忽视的战略变量
  • 文本退化:多数基准测试未追踪的生产故障模式
  • 超越聊天机器人的直接偏好优化

Hugging Face上探索Dharma AI,体验我们的交互式演示,下载开源模型,发现专用AI系统在实际企业应用中如何超越通用模型的表现。

本文提及的模型 1

本文提及的空间 1

更多来自该作者的文章

GPU管理:闲置GPU是新的“停飞飞机”

94

2026年7月30日

更新的模型,同样的优势

57

2026年7月16日

社区

编辑

预览

通过拖拽文本输入框、粘贴或

点击此处

上传图片、音频和视频。

轻点或粘贴此处上传图片

评论

· 注册或登录以发表评论

  • +4

/